From 5c2a0a860d0863a80ef8245e91d943f19f698a90 Mon Sep 17 00:00:00 2001 From: GonzaDDV Date: Thu, 17 Nov 2022 15:58:17 -0300 Subject: [PATCH 1/5] IPFS upload, Solana signature and micropayments --- .../migrations/0002_auto_20221023_1147.py | 25 +++ .../migrations/0002_auto_20221023_1147.py | 20 +++ .../migrations/0002_auto_20221023_1147.py | 100 +++++++++++ .../migrations/0004_auto_20221023_1147.py | 81 +++++++++ .../migrations/0005_auto_20221025_1620.py | 25 +++ ...0006_subscriberarticle_solana_signature.py | 20 +++ .../migrations/0007_auto_20221117_0804.py | 25 +++ portal/apps/core/admin.py | 39 ++++- .../migrations/0002_auto_20221023_1147.py | 20 +++ .../migrations/0027_auto_20221025_1620.py | 25 +++ .../0028_article_solana_signature.py | 20 +++ .../migrations/0029_auto_20221117_0804.py | 25 +++ portal/apps/core/models.py | 41 ++++- .../apps/core/templates/article/detail.html | 61 +++++-- .../article/paywall/pw_auth_wo_credits.html | 156 ++++++++++++++++++ .../migrations/0002_auto_20221023_1147.py | 20 +++ .../migrations/0002_auto_20221023_1147.py | 36 ++++ .../faq/migrations/0002_auto_20221023_1147.py | 45 +++++ .../migrations/0002_auto_20221023_1147.py | 37 +++++ .../migrations/0002_auto_20221023_1147.py | 20 +++ .../migrations/0003_auto_20221023_1147.py | 25 +++ portal/apps/thedaily/admin.py | 2 + portal/apps/thedaily/context_processors.py | 5 +- .../migrations/0006_auto_20221023_1147.py | 35 ++++ .../0007_subscriber_articles_bought.py | 21 +++ portal/apps/thedaily/models.py | 3 +- .../thedaily/templatetags/thedaily_tags.py | 5 + portal/apps/thedaily/urls.py | 3 + portal/apps/thedaily/views.py | 14 ++ .../migrations/0002_auto_20221023_1147.py | 60 +++++++ portal/local_settings_sample.py | 7 + portal/migration_settings.py | 3 +- portal/requirements.txt | 1 + portal/settings.py | 9 +- .../admin/core/article/solana_signature.html | 98 +++++++++++ static/css/toastify.min.css | 8 + static/img/solana_logo.svg | 24 +++ static/img/solana_logo_mark.svg | 13 ++ static/js/buffer-polyfill/index.js | 8 + static/js/solanaPay/index.js | 125 ++++++++++++++ static/js/splToken/index.js | 127 ++++++++++++++ static/js/splToken/index.js.map | 7 + static/js/toastify.custom.js | 64 +++++++ static/js/toastify.js | 8 + static/sass/_utopia_all.scss | 18 ++ 45 files changed, 1515 insertions(+), 19 deletions(-) create mode 100644 portal/apps/adzone/migrations/0002_auto_20221023_1147.py create mode 100644 portal/apps/audiologue/migrations/0002_auto_20221023_1147.py create mode 100644 portal/apps/cartelera/migrations/0002_auto_20221023_1147.py create mode 100644 portal/apps/comunidad/migrations/0004_auto_20221023_1147.py create mode 100644 portal/apps/comunidad/migrations/0005_auto_20221025_1620.py create mode 100644 portal/apps/comunidad/migrations/0006_subscriberarticle_solana_signature.py create mode 100644 portal/apps/comunidad/migrations/0007_auto_20221117_0804.py create mode 100644 portal/apps/core/attachments/migrations/0002_auto_20221023_1147.py create mode 100644 portal/apps/core/migrations/0027_auto_20221025_1620.py create mode 100644 portal/apps/core/migrations/0028_article_solana_signature.py create mode 100644 portal/apps/core/migrations/0029_auto_20221117_0804.py create mode 100644 portal/apps/epubparser/migrations/0002_auto_20221023_1147.py create mode 100644 portal/apps/exchange/migrations/0002_auto_20221023_1147.py create mode 100644 portal/apps/faq/migrations/0002_auto_20221023_1147.py create mode 100644 portal/apps/generator/migrations/0002_auto_20221023_1147.py create mode 100644 portal/apps/notification/migrations/0002_auto_20221023_1147.py create mode 100644 portal/apps/photologue_ladiaria/migrations/0003_auto_20221023_1147.py create mode 100644 portal/apps/thedaily/migrations/0006_auto_20221023_1147.py create mode 100644 portal/apps/thedaily/migrations/0007_subscriber_articles_bought.py create mode 100644 portal/apps/videologue/migrations/0002_auto_20221023_1147.py create mode 100644 portal/templates/admin/core/article/solana_signature.html create mode 100644 static/css/toastify.min.css create mode 100644 static/img/solana_logo.svg create mode 100644 static/img/solana_logo_mark.svg create mode 100644 static/js/buffer-polyfill/index.js create mode 100644 static/js/solanaPay/index.js create mode 100644 static/js/splToken/index.js create mode 100644 static/js/splToken/index.js.map create mode 100644 static/js/toastify.custom.js create mode 100644 static/js/toastify.js diff --git a/portal/apps/adzone/migrations/0002_auto_20221023_1147.py b/portal/apps/adzone/migrations/0002_auto_20221023_1147.py new file mode 100644 index 00000000..c79a208f --- /dev/null +++ b/portal/apps/adzone/migrations/0002_auto_20221023_1147.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-23 11:47 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('adzone', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='bannerad', + name='content', + field=models.ImageField(help_text='Dimensiones: 970×250px
Tamaño máximo permitido: 150kb
Formato: JPG, GIF, PNG', upload_to='adzone/bannerads/', verbose_name='Banner escritorio'), + ), + migrations.AlterField( + model_name='bannerad', + name='mobile_content', + field=models.ImageField(blank=True, help_text='Dimensiones: 300×250px
Tamaño máximo permitido: 150kb
Formato: JPG, GIF, PNG', null=True, upload_to='adzone/bannerads/', verbose_name='Banner móvil'), + ), + ] diff --git a/portal/apps/audiologue/migrations/0002_auto_20221023_1147.py b/portal/apps/audiologue/migrations/0002_auto_20221023_1147.py new file mode 100644 index 00000000..15791a8b --- /dev/null +++ b/portal/apps/audiologue/migrations/0002_auto_20221023_1147.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-23 11:47 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('audiologue', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='audio', + name='file', + field=models.FileField(upload_to='audiologue', verbose_name='audio'), + ), + ] diff --git a/portal/apps/cartelera/migrations/0002_auto_20221023_1147.py b/portal/apps/cartelera/migrations/0002_auto_20221023_1147.py new file mode 100644 index 00000000..36ebe936 --- /dev/null +++ b/portal/apps/cartelera/migrations/0002_auto_20221023_1147.py @@ -0,0 +1,100 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-23 11:47 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cartelera', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='archivedevent', + name='access_type', + field=models.CharField(choices=[('f', 'Gratuito'), ('s', 'Para suscripciones pagas')], default='s', max_length=1, verbose_name='acceso al evento'), + ), + migrations.AlterField( + model_name='categoriaevento', + name='nombre', + field=models.CharField(blank=True, max_length=100, null=True, verbose_name='nombre'), + ), + migrations.AlterField( + model_name='cine', + name='address', + field=models.TextField(blank=True, null=True, verbose_name='dirección'), + ), + migrations.AlterField( + model_name='cine', + name='nombre', + field=models.CharField(blank=True, max_length=100, null=True, verbose_name='nombre'), + ), + migrations.AlterField( + model_name='cine', + name='phones', + field=models.CharField(max_length=250, verbose_name='telefonos'), + ), + migrations.AlterField( + model_name='eventobase', + name='description', + field=models.TextField(blank=True, null=True, verbose_name='descripción'), + ), + migrations.AlterField( + model_name='eventobase', + name='end', + field=models.DateTimeField(verbose_name='fin'), + ), + migrations.AlterField( + model_name='eventobase', + name='poster', + field=models.ImageField(blank=True, null=True, upload_to='cartelera/posters'), + ), + migrations.AlterField( + model_name='eventobase', + name='precio', + field=models.CharField(max_length=250, verbose_name='precio'), + ), + migrations.AlterField( + model_name='eventobase', + name='start', + field=models.DateTimeField(verbose_name='comienzo'), + ), + migrations.AlterField( + model_name='eventobase', + name='title', + field=models.CharField(max_length=250, verbose_name='titulo'), + ), + migrations.AlterField( + model_name='liveembedevent', + name='access_type', + field=models.CharField(choices=[('f', 'Gratuito'), ('s', 'Para suscripciones pagas')], default='s', max_length=1, verbose_name='acceso al evento'), + ), + migrations.AlterField( + model_name='obraenteatro', + name='horarios', + field=models.TextField(blank=True, null=True, verbose_name='horarios'), + ), + migrations.AlterField( + model_name='peliculaencine', + name='horarios', + field=models.TextField(blank=True, null=True, verbose_name='horarios'), + ), + migrations.AlterField( + model_name='teatro', + name='address', + field=models.TextField(blank=True, null=True, verbose_name='dirección'), + ), + migrations.AlterField( + model_name='teatro', + name='nombre', + field=models.CharField(blank=True, max_length=100, null=True, verbose_name='nombre'), + ), + migrations.AlterField( + model_name='teatro', + name='phones', + field=models.CharField(max_length=250, verbose_name='telefonos'), + ), + ] diff --git a/portal/apps/comunidad/migrations/0004_auto_20221023_1147.py b/portal/apps/comunidad/migrations/0004_auto_20221023_1147.py new file mode 100644 index 00000000..5ad4df67 --- /dev/null +++ b/portal/apps/comunidad/migrations/0004_auto_20221023_1147.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-23 11:47 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('comunidad', '0003_auto_20211203_1142'), + ] + + operations = [ + migrations.AlterField( + model_name='beneficio', + name='limit', + field=models.PositiveIntegerField(blank=True, null=True, verbose_name='cupo general'), + ), + migrations.AlterField( + model_name='beneficio', + name='name', + field=models.CharField(max_length=255, verbose_name='nombre'), + ), + migrations.AlterField( + model_name='beneficio', + name='quota', + field=models.PositiveIntegerField(default=1, verbose_name='cupo por suscriptor'), + ), + migrations.AlterField( + model_name='circuito', + name='name', + field=models.CharField(max_length=64, verbose_name='nombre'), + ), + migrations.AlterField( + model_name='recommendation', + name='comment', + field=models.TextField(verbose_name='comentario'), + ), + migrations.AlterField( + model_name='recommendation', + name='name', + field=models.CharField(max_length=128, unique=True, verbose_name='nombre'), + ), + migrations.AlterField( + model_name='registro', + name='benefit', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='comunidad.Beneficio', verbose_name='beneficio'), + ), + migrations.AlterField( + model_name='registro', + name='used', + field=models.DateTimeField(auto_now_add=True, verbose_name='utilizado'), + ), + migrations.AlterField( + model_name='subscriberarticle', + name='header_display', + field=models.CharField(blank=True, choices=[('FW', 'Ancho completo'), ('BG', 'Grande')], default='BG', max_length=2, null=True, verbose_name='tipo de cabezal'), + ), + migrations.AlterField( + model_name='subscriberarticle', + name='home_display', + field=models.CharField(blank=True, choices=[('I', 'Imagen'), ('A', 'Audio'), ('V', 'Video')], max_length=2, null=True, verbose_name='mostrar en portada'), + ), + migrations.AlterField( + model_name='subscriberarticle', + name='home_header_display', + field=models.CharField(blank=True, choices=[('FW', 'Ancho completo'), ('FF', 'Medio y medio'), ('SM', 'Chico')], default='SM', max_length=2, null=True, verbose_name='tipo de cabezal cuando es portada'), + ), + migrations.AlterField( + model_name='subscriberarticle', + name='type', + field=models.CharField(blank=True, choices=[('NE', 'Noticia'), ('OP', 'Opinión'), ('PA', 'Fotografía'), ('HT', 'HTML'), ('CM', 'COMUNIDAD')], db_index=True, max_length=2, null=True, verbose_name='tipo'), + ), + migrations.AlterField( + model_name='topuser', + name='type', + field=models.CharField(choices=[('WEEK', 'WEEK'), ('MONTH', 'MONTH'), ('YEAR', 'YEAR')], max_length=20), + ), + ] diff --git a/portal/apps/comunidad/migrations/0005_auto_20221025_1620.py b/portal/apps/comunidad/migrations/0005_auto_20221025_1620.py new file mode 100644 index 00000000..da818e69 --- /dev/null +++ b/portal/apps/comunidad/migrations/0005_auto_20221025_1620.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-25 16:20 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('comunidad', '0004_auto_20221023_1147'), + ] + + operations = [ + migrations.AddField( + model_name='subscriberarticle', + name='ipfs_cid', + field=models.TextField(blank=True, help_text='CID de la nota en IPFS', null=True, verbose_name='id de IPFS'), + ), + migrations.AddField( + model_name='subscriberarticle', + name='ipfs_upload', + field=models.BooleanField(default=True, verbose_name='Publicar en IPFS'), + ), + ] diff --git a/portal/apps/comunidad/migrations/0006_subscriberarticle_solana_signature.py b/portal/apps/comunidad/migrations/0006_subscriberarticle_solana_signature.py new file mode 100644 index 00000000..20e903f4 --- /dev/null +++ b/portal/apps/comunidad/migrations/0006_subscriberarticle_solana_signature.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-11-13 19:30 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('comunidad', '0005_auto_20221025_1620'), + ] + + operations = [ + migrations.AddField( + model_name='subscriberarticle', + name='solana_signature', + field=models.TextField(blank=True, help_text='Firma del autor desde su wallet en Solana', null=True, verbose_name='Firma de Solana'), + ), + ] diff --git a/portal/apps/comunidad/migrations/0007_auto_20221117_0804.py b/portal/apps/comunidad/migrations/0007_auto_20221117_0804.py new file mode 100644 index 00000000..c8ce7b99 --- /dev/null +++ b/portal/apps/comunidad/migrations/0007_auto_20221117_0804.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-11-17 08:04 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('comunidad', '0006_subscriberarticle_solana_signature'), + ] + + operations = [ + migrations.AddField( + model_name='subscriberarticle', + name='solana_signature_address', + field=models.TextField(blank=True, help_text='Wallet autora de la firma en Solana', null=True, verbose_name='Wallet de Solana'), + ), + migrations.AlterField( + model_name='subscriberarticle', + name='solana_signature', + field=models.TextField(blank=True, help_text='Firma del autor en Solana', null=True, verbose_name='Firma de Solana'), + ), + ] diff --git a/portal/apps/core/admin.py b/portal/apps/core/admin.py index f44e50ca..06900d76 100644 --- a/portal/apps/core/admin.py +++ b/portal/apps/core/admin.py @@ -26,7 +26,7 @@ from django.contrib.messages import constants as messages from django.contrib.admin import ModelAdmin, TabularInline, site, widgets from django.contrib.admin.options import get_ul_class -from django.forms import ModelForm, ValidationError, ChoiceField, RadioSelect, TypedChoiceField, Textarea +from django.forms import ModelForm, ValidationError, ChoiceField, RadioSelect, TypedChoiceField, Field, Textarea, Widget from django.forms.models import BaseInlineFormSet, inlineformset_factory from django.utils import timezone from django.forms.fields import CharField, IntegerField @@ -36,6 +36,9 @@ from django.utils.text import Truncator from django.utils.translation import ugettext as _ +from django.template import loader +from django.utils.safestring import mark_safe + from core.templatetags.ldml import ldmarkup, cleanhtml from .models import ( @@ -283,8 +286,37 @@ class ArticleEditionInline(TabularInline): extra = 1 +class SolanaSignatureWidget(Widget): + template_name = 'admin/core/article/solana_signature.html' + + def __init__(self, *args, **kwargs): + kwargs['attrs'] = {'readonly': True} + super(SolanaSignatureWidget, self).__init__(*args, **kwargs) + + def get_context(self, name, value, attrs=None): + return {'widget': { + 'name': name, + 'value': value, + }} + + def render(self, name, value, attrs=None): + context = self.get_context(name, value, attrs) + template = loader.get_template(self.template_name).render(context) + return mark_safe(template) + +class SolanaSignatureField(Field): + def __init__(self, field, *args, **kwargs): + self.field = field + kwargs["widget"] = SolanaSignatureWidget + + super(SolanaSignatureField, self).__init__(*args, **kwargs) + + def clean(self, value): + return value + class ArticleAdminModelForm(ModelForm): body = CharField(widget=MarkdownWidget()) + solana_signature_address = SolanaSignatureField(u"Firma con Solana", label='Firma con Solana', required=False, help_text='Podés firmar esta nota con Solana desde tu wallet. ¿Qué es Solana?') headline = CharField(label='Título', widget=TextInput(attrs={'style': 'width:600px'})) slug = CharField( label='Slug', @@ -383,7 +415,7 @@ class ArticleAdmin(ModelAdmin): date_hierarchy = 'date_published' ordering = ('-date_created', ) raw_id_fields = ('photo', 'gallery', 'main_section') - readonly_fields = ('date_published', ) + readonly_fields = ('date_published', 'solana_signature') inlines = article_optional_inlines + [ArticleExtensionInline, ArticleBodyImageInline, ArticleEditionInline] def creation_date(self, obj): @@ -409,7 +441,7 @@ def publication_date(self, obj): } ), ('Metadatos', {'fields': ('date_published', 'tags', 'main_section')}), - ('Autor', {'fields': ('byline', 'only_initials', 'location'), 'classes': ('collapse', )}), + ('Autor', {'fields': ('byline', 'only_initials', 'location', 'solana_signature_address'), 'classes': ('collapse', )}), ('Multimedia', {'fields': ('photo', 'gallery', 'video', 'youtube_video', 'audio'), 'classes': ('collapse', )}), ( 'Avanzado', @@ -422,6 +454,7 @@ def publication_date(self, obj): 'allow_related', 'show_related_articles', 'newsletter_featured', + 'ipfs_upload', ), 'additional_access', ('latitude', 'longitude'), diff --git a/portal/apps/core/attachments/migrations/0002_auto_20221023_1147.py b/portal/apps/core/attachments/migrations/0002_auto_20221023_1147.py new file mode 100644 index 00000000..035d9bc5 --- /dev/null +++ b/portal/apps/core/attachments/migrations/0002_auto_20221023_1147.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-23 11:47 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('attachments', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='attachment', + name='file', + field=models.FileField(upload_to='attachments', verbose_name='archivo'), + ), + ] diff --git a/portal/apps/core/migrations/0027_auto_20221025_1620.py b/portal/apps/core/migrations/0027_auto_20221025_1620.py new file mode 100644 index 00000000..e24c7e38 --- /dev/null +++ b/portal/apps/core/migrations/0027_auto_20221025_1620.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-25 16:20 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0026_auto_20221015_1251'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='ipfs_cid', + field=models.TextField(blank=True, help_text='CID de la nota en IPFS', null=True, verbose_name='id de IPFS'), + ), + migrations.AddField( + model_name='article', + name='ipfs_upload', + field=models.BooleanField(default=True, verbose_name='Publicar en IPFS'), + ), + ] diff --git a/portal/apps/core/migrations/0028_article_solana_signature.py b/portal/apps/core/migrations/0028_article_solana_signature.py new file mode 100644 index 00000000..3dc88c3c --- /dev/null +++ b/portal/apps/core/migrations/0028_article_solana_signature.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-11-13 19:30 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0027_auto_20221025_1620'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='solana_signature', + field=models.TextField(blank=True, help_text='Firma del autor desde su wallet en Solana', null=True, verbose_name='Firma de Solana'), + ), + ] diff --git a/portal/apps/core/migrations/0029_auto_20221117_0804.py b/portal/apps/core/migrations/0029_auto_20221117_0804.py new file mode 100644 index 00000000..77028773 --- /dev/null +++ b/portal/apps/core/migrations/0029_auto_20221117_0804.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-11-17 08:04 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0028_article_solana_signature'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='solana_signature_address', + field=models.TextField(blank=True, help_text='Wallet autora de la firma en Solana', null=True, verbose_name='Wallet de Solana'), + ), + migrations.AlterField( + model_name='article', + name='solana_signature', + field=models.TextField(blank=True, help_text='Firma del autor en Solana', null=True, verbose_name='Firma de Solana'), + ), + ] diff --git a/portal/apps/core/models.py b/portal/apps/core/models.py index 9cbec09b..ad6f5523 100755 --- a/portal/apps/core/models.py +++ b/portal/apps/core/models.py @@ -975,6 +975,24 @@ class ArticleBase(Model, CT): last_modified = DateTimeField('última actualización', auto_now=True) views = PositiveIntegerField('vistas', default=0, db_index=True) allow_comments = BooleanField('Habilitar comentarios', default=True) + ipfs_upload = BooleanField('Publicar en IPFS', default=True) + ipfs_cid = TextField('id de IPFS', + blank=True, + null=True, + help_text='CID de la nota en IPFS', + ) + solana_signature = TextField( + 'Firma de Solana', + blank=True, + null=True, + help_text='Firma del autor en Solana', + ) + solana_signature_address = TextField( + 'Wallet de Solana', + blank=True, + null=True, + help_text='Wallet autora de la firma en Solana', + ) created_by = ForeignKey( User, verbose_name='creado por', @@ -1016,6 +1034,7 @@ def __str__(self): def save(self, *args, **kwargs): from .utils import add_punctuation + import w3storage for attr in ('headline', 'deck', 'lead', 'body'): if getattr(self, attr, None): setattr(self, attr, getattr(self, attr).strip()) @@ -1025,9 +1044,29 @@ def save(self, *args, **kwargs): setattr(self, attr, add_punctuation(getattr(self, attr, ''))) self.slug = slugify(cleanhtml(ldmarkup(self.headline))) - + now = datetime.now() + if self.solana_signature_address: + # since we have only one field for the signature, we split it and the first part is the signature and the second part is the address + splitted = self.solana_signature_address.split(";") + self.solana_signature = splitted[0] + self.solana_signature_address = splitted[1] + else: + self.solana_signature = None + + if self.ipfs_upload: + content = self.headline + '\n \n' + self.body + if (self.ipfs_cid): + content = "Nota editada. Versión anterior de la nota en: https://ipfs.io/ipfs/" + self.ipfs_cid + "\n \n \n" + self.body + if (self.solana_signature): + content += "\n \n" + "Dirección del autor: " + self.solana_signature_address + "\n" + "Firma del autor: " + self.solana_signature + w3 = w3storage.API(token=settings.IPFS_TOKEN) + cid = w3.post_upload((self.slug, content)) + self.ipfs_cid = cid + else: + self.ipfs_cid = None + if self.is_published: if not self.date_published: self.date_published = now diff --git a/portal/apps/core/templates/article/detail.html b/portal/apps/core/templates/article/detail.html index 7013fb35..95027822 100644 --- a/portal/apps/core/templates/article/detail.html +++ b/portal/apps/core/templates/article/detail.html @@ -225,6 +225,32 @@

{{ article.headline|ldmarkup:article.id|ble {% endif %} + {% if article.ipfs_upload and article.ipfs_cid %} + + {% endif %} + {% if article.solana_signature %} +
+

+ Este artículo fue firmado en Solana por el autor + Mostrar info +

+

+ Firma: {{ article.solana_signature }}
Dirección: {{ article.solana_signature_address }}

+
+ {% endif %} {% endif %} {% if article.photo and header_display == 'FW' %}{# opened in line 86 #}{% endif %} @@ -269,23 +295,28 @@

{{ article.deck|ldmarkup:article.id|bleac {% if not request.signupwall %} {# Soft wall: Suscripción #} {% if not article.public %} - {% include 'article/paywall/pw_auth_with_credits.html' %} + {% if not user|has_bought_article:article %} + {% include 'article/paywall/pw_auth_with_credits.html' %} + {% endif %} {% endif %} {% else %}{# signupwall raised #} {# Hard wall -> Suscripción #} - -
- {{ article.body|ldmarkup:article.id|truncatehtml:100 }} -
- {% include 'article/paywall/pw_auth_wo_credits.html' %} - {% endif %} + {% if not user|has_bought_article:article %} + +
+ {{ article.body|ldmarkup:article.id|truncatehtml:100 }} +
+ + {% include 'article/paywall/pw_auth_wo_credits.html' %} + {% endif %} + {% endif %} {% endif %} {% endif %} {# END signupwall #} - {% if not request.signupwall %}{# closed in line 550 #} + {% if not request.signupwall or user|has_bought_article:article %}{# closed in line 574 #}
{% block article_body_content %}{{ article.body|ldmarkup:article.id }}{% endblock %} @@ -533,7 +564,7 @@

{{ article.deck|ldmarkup:article.id|bleac

{% endif %} - {% endif %}{# opened in line 301 #} + {% endif %}{# opened in line 326 #} {% else %}{# restricted content message #} @@ -566,7 +597,7 @@

{{ article.deck|ldmarkup:article.id|bleac {% endif %} - {% if not article.is_restricted or user|has_restricted_access:article %}{# begin restricted content2 #} + {% if not article.is_restricted or user|has_restricted_access:article or user|has_bought_article:article %}{# begin restricted content2 #} {% if TALK_URL and article.allow_comments %}
@@ -681,7 +712,7 @@

{{ article.deck|ldmarkup:article.id|bleac {% block article_extra %}{% endblock %} - {% if not request.signupwall or article.is_restricted and not user|has_restricted_access:article %} + {% if not request.signupwall or article.is_restricted and not user|has_restricted_access:article or user|has_bought_article:article %} @@ -781,6 +812,14 @@

{{ article.deck|ldmarkup:article.id|bleac {% endif %} }); + $('a.open-ipfs').click(function(){ + window.open('https://ipfs.io/ipfs/{{ article.ipfs_cid }}', 'Ver en IPFS'); + }); + + $('span.show-solana-info').click(function() { + $('.solana-info').toggleClass('hide'); + }) + $('a.read-later__saved').click(function(){ {% if user.is_authenticated %} $.get("{% url 'actstream_unfollow' content_type_id=article_ct_id object_id=article.id %}", function(data){ diff --git a/portal/apps/core/templates/article/paywall/pw_auth_wo_credits.html b/portal/apps/core/templates/article/paywall/pw_auth_wo_credits.html index 0766c92c..9e38a18c 100644 --- a/portal/apps/core/templates/article/paywall/pw_auth_wo_credits.html +++ b/portal/apps/core/templates/article/paywall/pw_auth_wo_credits.html @@ -1,4 +1,9 @@ {% load thedaily_tags %} +{% load static %} + +{% block css %} + +{% endblock %}
Llegaste al límite de artículos gratuitos
@@ -9,6 +14,157 @@ Suscribite por ${% subscriptionprice 'DDIGM' %}/mes
+
+
+ Comprá este artículo por 1 USDC con +
+
Nuestro periodismo depende de vos

+ + +{% block javascript %} + + + + + + + + +{% endblock %} \ No newline at end of file diff --git a/portal/apps/epubparser/migrations/0002_auto_20221023_1147.py b/portal/apps/epubparser/migrations/0002_auto_20221023_1147.py new file mode 100644 index 00000000..1445fa63 --- /dev/null +++ b/portal/apps/epubparser/migrations/0002_auto_20221023_1147.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-23 11:47 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('epubparser', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='epubfile', + name='f', + field=models.FileField(upload_to='epubparser/%Y/%m/%d'), + ), + ] diff --git a/portal/apps/exchange/migrations/0002_auto_20221023_1147.py b/portal/apps/exchange/migrations/0002_auto_20221023_1147.py new file mode 100644 index 00000000..501d6ca9 --- /dev/null +++ b/portal/apps/exchange/migrations/0002_auto_20221023_1147.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-23 11:47 +from __future__ import unicode_literals + +from django.db import migrations, models +import exchange.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('exchange', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='currency', + name='flag', + field=models.ImageField(blank=True, null=True, upload_to=exchange.models.flag_upload_to, verbose_name='bandera'), + ), + migrations.AlterField( + model_name='currency', + name='name', + field=models.CharField(max_length=50, unique=True, verbose_name='moneda'), + ), + migrations.AlterField( + model_name='currency', + name='slug', + field=models.SlugField(unique=True, verbose_name='slug'), + ), + migrations.AlterField( + model_name='currency', + name='symbol', + field=models.CharField(max_length=4, verbose_name='símbolo'), + ), + ] diff --git a/portal/apps/faq/migrations/0002_auto_20221023_1147.py b/portal/apps/faq/migrations/0002_auto_20221023_1147.py new file mode 100644 index 00000000..e3566eac --- /dev/null +++ b/portal/apps/faq/migrations/0002_auto_20221023_1147.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-23 11:47 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('faq', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='question', + name='ordering', + field=models.PositiveSmallIntegerField(blank=True, db_index=True, help_text='An integer used to order the question amongst others related to the same topic. If not given this question will be last in the list.', verbose_name='ordering'), + ), + migrations.AlterField( + model_name='question', + name='slug', + field=models.SlugField(help_text='Used in the URL for the Question. Must be unique.', unique=True, verbose_name='slug'), + ), + migrations.AlterField( + model_name='question', + name='status', + field=models.IntegerField(choices=[(1, 'drafted'), (2, 'published'), (3, 'removed')], db_index=True, default=1, help_text='Only %(class)s with "published" status will be displayed publicly.', verbose_name='status'), + ), + migrations.AlterField( + model_name='topic', + name='slug', + field=models.SlugField(help_text='Used in the URL for the topic. Must be unique.', unique=True, verbose_name='slug'), + ), + migrations.AlterField( + model_name='topic', + name='status', + field=models.IntegerField(choices=[(1, 'drafted'), (2, 'published'), (3, 'removed')], db_index=True, default=1, help_text='Only %(class)s with "published" status will be displayed publicly.', verbose_name='status'), + ), + migrations.AlterField( + model_name='topic', + name='template_name', + field=models.CharField(blank=True, help_text='Optional template to use for this topic\'s detail page, e.g., "faq/topics/special.html". If not given the standard template will be used.', max_length=255, verbose_name='template name'), + ), + ] diff --git a/portal/apps/generator/migrations/0002_auto_20221023_1147.py b/portal/apps/generator/migrations/0002_auto_20221023_1147.py new file mode 100644 index 00000000..6cbf5fd4 --- /dev/null +++ b/portal/apps/generator/migrations/0002_auto_20221023_1147.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-23 11:47 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('generator', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='contribution', + name='body', + field=models.TextField(verbose_name='cuerpo'), + ), + migrations.AlterField( + model_name='contribution', + name='date_created', + field=models.DateTimeField(auto_now_add=True, verbose_name='fecha de creación'), + ), + migrations.AlterField( + model_name='contribution', + name='headline', + field=models.CharField(max_length=100, verbose_name='título'), + ), + migrations.AlterField( + model_name='contribution', + name='user', + field=models.ForeignKey(editable=False, on_delete=django.db.models.deletion.CASCADE, related_name='contributions', to=settings.AUTH_USER_MODEL, verbose_name='usuario'), + ), + ] diff --git a/portal/apps/notification/migrations/0002_auto_20221023_1147.py b/portal/apps/notification/migrations/0002_auto_20221023_1147.py new file mode 100644 index 00000000..c4355d2e --- /dev/null +++ b/portal/apps/notification/migrations/0002_auto_20221023_1147.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-23 11:47 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('notification', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='noticesetting', + name='medium', + field=models.CharField(choices=[(0, 'email')], max_length=1, verbose_name='medium'), + ), + ] diff --git a/portal/apps/photologue_ladiaria/migrations/0003_auto_20221023_1147.py b/portal/apps/photologue_ladiaria/migrations/0003_auto_20221023_1147.py new file mode 100644 index 00000000..ac35c57e --- /dev/null +++ b/portal/apps/photologue_ladiaria/migrations/0003_auto_20221023_1147.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-23 11:47 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('photologue_ladiaria', '0002_photoextended_type'), + ] + + operations = [ + migrations.AlterField( + model_name='agency', + name='info', + field=models.EmailField(blank=True, max_length=254, null=True, verbose_name='email'), + ), + migrations.AlterField( + model_name='photoextended', + name='type', + field=models.CharField(choices=[('f', 'Foto'), ('i', 'Ilustración')], default='f', max_length=1, verbose_name='tipo'), + ), + ] diff --git a/portal/apps/thedaily/admin.py b/portal/apps/thedaily/admin.py index 02ad5cd6..b20a6345 100644 --- a/portal/apps/thedaily/admin.py +++ b/portal/apps/thedaily/admin.py @@ -71,6 +71,7 @@ class SubscriberAdmin(ModelAdmin): 'ruta_lento', 'ruta_fs', 'get_latest_article_visited', + 'articles_bought', ) list_filter = ['newsletters', 'category_newsletters', 'pdf', 'allow_news', 'allow_promotions', 'allow_polls'] actions = ['send_account_info'] @@ -85,6 +86,7 @@ class SubscriberAdmin(ModelAdmin): ('pdf', 'ruta'), ('plan_id', ), ('get_latest_article_visited', ), + ('articles_bought', ), ), }), ) diff --git a/portal/apps/thedaily/context_processors.py b/portal/apps/thedaily/context_processors.py index 0983d9c3..1abe0fb0 100644 --- a/portal/apps/thedaily/context_processors.py +++ b/portal/apps/thedaily/context_processors.py @@ -12,7 +12,7 @@ def permissions(request): - result, is_subscriber, is_subscriber_default = {}, False, False + result, is_subscriber, is_subscriber_default, solana_address, usdc_address, solana_network = {}, False, False, '', '', '' if request.user.is_authenticated() and hasattr(request.user, 'subscriber'): @@ -73,6 +73,9 @@ def permissions(request): 'is_subscriber_default': is_subscriber_default, 'is_subscriber_any': is_subscriber_any, 'poll_url': (u'https://forms.gle/' + pu_path) if pu_path else u'', + 'solana_address': settings.SOLANA_ADDRESS, + 'usdc_address': settings.SOLANA_USDC_ADDRESS, + 'solana_network': settings.SOLANA_NETWORK, } ) diff --git a/portal/apps/thedaily/migrations/0006_auto_20221023_1147.py b/portal/apps/thedaily/migrations/0006_auto_20221023_1147.py new file mode 100644 index 00000000..a83ea9d9 --- /dev/null +++ b/portal/apps/thedaily/migrations/0006_auto_20221023_1147.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-23 11:47 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('thedaily', '0005_remove_subscription_credit_card'), + ] + + operations = [ + migrations.AlterField( + model_name='subscriber', + name='profile_photo', + field=models.ImageField(blank=True, null=True, upload_to='perfiles'), + ), + migrations.AlterField( + model_name='subscription', + name='subscription_type', + field=models.CharField(choices=[('PAP', 'Edición papel + Digital'), ('DIG', 'Digital (Edición web)')], default='DIG', max_length=3, verbose_name='suscripción'), + ), + migrations.AlterField( + model_name='subscriptionprices', + name='ga_category', + field=models.CharField(blank=True, choices=[('D', 'Digital'), ('P', 'Papel')], max_length=1, null=True), + ), + migrations.AlterField( + model_name='subscriptionprices', + name='subscription_type', + field=models.CharField(choices=[('DDIGM', 'Suscripción digital'), ('PAPYDIM', 'Suscripción papel')], default='PAPYDIM', max_length=7, unique=True, verbose_name='tipo'), + ), + ] diff --git a/portal/apps/thedaily/migrations/0007_subscriber_articles_bought.py b/portal/apps/thedaily/migrations/0007_subscriber_articles_bought.py new file mode 100644 index 00000000..cf4e6754 --- /dev/null +++ b/portal/apps/thedaily/migrations/0007_subscriber_articles_bought.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-11-05 13:58 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0027_auto_20221025_1620'), + ('thedaily', '0006_auto_20221023_1147'), + ] + + operations = [ + migrations.AddField( + model_name='subscriber', + name='articles_bought', + field=models.ManyToManyField(blank=True, to='core.Article'), + ), + ] diff --git a/portal/apps/thedaily/models.py b/portal/apps/thedaily/models.py index ba939a2c..eb737f79 100755 --- a/portal/apps/thedaily/models.py +++ b/portal/apps/thedaily/models.py @@ -34,7 +34,7 @@ from django.dispatch import receiver from apps import mongo_db -from core.models import Edition, Publication, Category, ArticleViewedBy +from core.models import Edition, Publication, Category, ArticleViewedBy, Article from .exceptions import UpdateCrmEx @@ -113,6 +113,7 @@ class Subscriber(Model): # TODO: explain the utility of this field or remove it. subscription_mode = CharField(max_length=1, null=True, blank=True, default=None) last_paid_subscription = DateTimeField(u'Ultima subscripcion comienzo', null=True, blank=True) + articles_bought = ManyToManyField(Article, blank=True) def save(self, *args, **kwargs): if self.document: diff --git a/portal/apps/thedaily/templatetags/thedaily_tags.py b/portal/apps/thedaily/templatetags/thedaily_tags.py index c3e80b50..2b9af40a 100644 --- a/portal/apps/thedaily/templatetags/thedaily_tags.py +++ b/portal/apps/thedaily/templatetags/thedaily_tags.py @@ -122,6 +122,11 @@ def terms_and_conditions(): return u'' +@register.filter(name='has_bought_article') +def has_bought_article(user, article): + """ @pre: The user bought the article """ + return user.subscriber.articles_bought.all().filter(id=article.id).exists() + # filters @register.filter(name='hasreplies') def comment_has_replies(value): diff --git a/portal/apps/thedaily/urls.py b/portal/apps/thedaily/urls.py index 9ae8ea54..baea0529 100644 --- a/portal/apps/thedaily/urls.py +++ b/portal/apps/thedaily/urls.py @@ -40,6 +40,7 @@ lista_lectura_favoritos, lista_lectura_historial, lista_lectura_toggle, + buy_single_article, ) @@ -160,4 +161,6 @@ r'^lista-lectura-toggle/(?Padd|remove|favToggle)/(?P\d+)/$', lista_lectura_toggle, name="lista-lectura-toggle"), + + url(r'^comprar-articulo/$', buy_single_article, name="buy-single-article"), ] diff --git a/portal/apps/thedaily/views.py b/portal/apps/thedaily/views.py index 913f3373..5adf461b 100644 --- a/portal/apps/thedaily/views.py +++ b/portal/apps/thedaily/views.py @@ -1575,3 +1575,17 @@ def telephone_subscription_msg(user, preferred_time): user.subscriber.province, ), ) + +@never_cache +@to_response +def buy_single_article(request): + article_id = request.POST.get('article_id') + user_id = request.POST.get('user_id') + if request.method == 'POST' and article_id and user_id: + user = get_object_or_404(User, id=user_id) + article = get_object_or_404(Article, id=article_id) + user.subscriber.articles_bought.add(article) + user.subscriber.save() + return HttpResponse('OK') + else: + raise Http404 \ No newline at end of file diff --git a/portal/apps/videologue/migrations/0002_auto_20221023_1147.py b/portal/apps/videologue/migrations/0002_auto_20221023_1147.py new file mode 100644 index 00000000..fd3d6487 --- /dev/null +++ b/portal/apps/videologue/migrations/0002_auto_20221023_1147.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2022-10-23 11:47 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('videologue', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='video', + name='byline', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Autor/es'), + ), + migrations.AlterField( + model_name='video', + name='caption', + field=models.CharField(blank=True, max_length=255, null=True, verbose_name='Pie'), + ), + migrations.AlterField( + model_name='video', + name='date_uploaded', + field=models.DateTimeField(blank=True, editable=False, null=True, verbose_name='Subido'), + ), + migrations.AlterField( + model_name='video', + name='description', + field=models.TextField(blank=True, null=True, verbose_name='Descripción'), + ), + migrations.AlterField( + model_name='video', + name='file', + field=models.FileField(upload_to='videologue', verbose_name='Video'), + ), + migrations.AlterField( + model_name='video', + name='is_public', + field=models.BooleanField(default=True, verbose_name='Público'), + ), + migrations.AlterField( + model_name='video', + name='slug', + field=models.SlugField(blank=True, editable=False, null=True, verbose_name='Slug'), + ), + migrations.AlterField( + model_name='video', + name='times_viewed', + field=models.PositiveIntegerField(default=0, editable=False, verbose_name='Visto'), + ), + migrations.AlterField( + model_name='video', + name='title', + field=models.CharField(max_length=255, verbose_name='Título'), + ), + ] diff --git a/portal/local_settings_sample.py b/portal/local_settings_sample.py index e7de6fb7..7ceb8661 100644 --- a/portal/local_settings_sample.py +++ b/portal/local_settings_sample.py @@ -105,3 +105,10 @@ RECAPTCHA_PRIVATE_KEY = '' THEDAILY_SUBSCRIPTION_CAPTCHA_DEFAULT_COUNTRY = '' # 2-char (in caps) country iso code THEDAILY_SUBSCRIPTION_CAPTCHA_COUNTRIES_IGNORED = [THEDAILY_SUBSCRIPTION_CAPTCHA_DEFAULT_COUNTRY] + +IPFS_TOKEN = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6ZXRocjoweDQ5NUYzNTVFMGQ5QzI0MTZmYjczMzNBOWUzOTY1ODM2NEMxQ0IzQkUiLCJpc3MiOiJ3ZWIzLXN0b3JhZ2UiLCJpYXQiOjE2NTMyNDU5NDY2MzcsIm5hbWUiOiJGdXR1cmlhICYgU2l0aW9zIGRlIGxhIE1lbW9yaWEifQ.fa24L-jCA-0MLn5q5CtiVN1fa-LSOLoiXEBdpVgAaRs' +# Solana's Adress where the payments are sent +SOLANA_ADDRESS = 'FSCrrPzWKdQ2DukpPr9Up89Yd4EXXJgRLXXLs2Ynqhfj' +# Solana devnet settings, change for mainnet +SOLANA_NETWORK = 'devnet' +SOLANA_USDC_ADDRESS = 'Gh9ZwEmdLJ8DscKNTkTqPbNwLNNBjuSzaG9Vp2KGtKJr' \ No newline at end of file diff --git a/portal/migration_settings.py b/portal/migration_settings.py index 7d1c08a2..b967839d 100644 --- a/portal/migration_settings.py +++ b/portal/migration_settings.py @@ -23,7 +23,7 @@ SITE_ROOT = dirname(realpath(__file__)) STATIC_URL = '/static/' STATIC_ROOT = '%s/static/' % SITE_ROOT -SITE_DOMAIN = 'example.com' +SITE_DOMAIN = 'yoogle.com' URL_SCHEME = "https" DEFAULT_URL_SCHEME = URL_SCHEME @@ -519,3 +519,4 @@ freezer.start() ABSOLUTE_URL_OVERRIDES = {'auth.user': SITE_URL + "usuarios/perfil/editar/"} + diff --git a/portal/requirements.txt b/portal/requirements.txt index 2332d7a8..77fa6c79 100644 --- a/portal/requirements.txt +++ b/portal/requirements.txt @@ -60,3 +60,4 @@ pywebpush django>1.11,<2 future factory-boy +w3storage \ No newline at end of file diff --git a/portal/settings.py b/portal/settings.py index 4cdb0c3f..41b6edf9 100644 --- a/portal/settings.py +++ b/portal/settings.py @@ -24,7 +24,7 @@ SITE_ROOT = dirname(realpath(__file__)) STATIC_URL = '/static/' STATIC_ROOT = '%s/static/' % SITE_ROOT -SITE_DOMAIN = 'example.com' +SITE_DOMAIN = 'yoogle.com' URL_SCHEME = "https" DEFAULT_URL_SCHEME = URL_SCHEME @@ -527,6 +527,13 @@ FREEZE_TIME = None +IPFS_TOKEN = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkaWQ6ZXRocjoweDQ5NUYzNTVFMGQ5QzI0MTZmYjczMzNBOWUzOTY1ODM2NEMxQ0IzQkUiLCJpc3MiOiJ3ZWIzLXN0b3JhZ2UiLCJpYXQiOjE2NTMyNDU5NDY2MzcsIm5hbWUiOiJGdXR1cmlhICYgU2l0aW9zIGRlIGxhIE1lbW9yaWEifQ.fa24L-jCA-0MLn5q5CtiVN1fa-LSOLoiXEBdpVgAaRs' +# Solana's Adress where the payments are sent +SOLANA_ADDRESS = 'FSCrrPzWKdQ2DukpPr9Up89Yd4EXXJgRLXXLs2Ynqhfj' +# Solana mainnet settings +SOLANA_NETWORK = 'mainnet-beta' +SOLANA_USDC_ADDRESS = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' + # Override previous settings with values in local_settings.py settings file from local_settings import * diff --git a/portal/templates/admin/core/article/solana_signature.html b/portal/templates/admin/core/article/solana_signature.html new file mode 100644 index 00000000..afa15031 --- /dev/null +++ b/portal/templates/admin/core/article/solana_signature.html @@ -0,0 +1,98 @@ +{% load static %} + + + +
+ + {% if widget.value %} +

Previamente firmada por la dirección: + + {{ widget.value }} + +
+ Al firmar con otra dirección, se sobreescribirá la anterior. +

+ {% endif %} + +
+ + + +{% block js %} + + +{% endblock %} \ No newline at end of file diff --git a/static/css/toastify.min.css b/static/css/toastify.min.css new file mode 100644 index 00000000..c2f8d4ae --- /dev/null +++ b/static/css/toastify.min.css @@ -0,0 +1,8 @@ +/*! + * Toastify js 1.12.0 + * https://github.com/apvarun/toastify-js + * @license MIT licensed + * + * Copyright (C) 2018 Varun A P + */ + .toastify{padding:12px 20px;color:#fff;display:inline-block;box-shadow:0 3px 6px -1px rgba(0,0,0,.12),0 10px 36px -4px rgba(77,96,232,.3);background:-webkit-linear-gradient(315deg,#73a5ff,#5477f5);background:linear-gradient(135deg,#73a5ff,#5477f5);position:fixed;opacity:0;transition:all .4s cubic-bezier(.215, .61, .355, 1);border-radius:2px;cursor:pointer;text-decoration:none;max-width:calc(50% - 20px);z-index:2147483647}.toastify.on{opacity:1}.toast-close{background:0 0;border:0;color:#fff;cursor:pointer;font-family:inherit;font-size:1em;opacity:.4;padding:0 5px}.toastify-right{right:15px}.toastify-left{left:15px}.toastify-top{top:-150px}.toastify-bottom{bottom:-150px}.toastify-rounded{border-radius:25px}.toastify-avatar{width:1.5em;height:1.5em;margin:-7px 5px;border-radius:2px}.toastify-center{margin-left:auto;margin-right:auto;left:0;right:0;max-width:fit-content;max-width:-moz-fit-content}@media only screen and (max-width:360px){.toastify-left,.toastify-right{margin-left:auto;margin-right:auto;left:0;right:0;max-width:fit-content}} \ No newline at end of file diff --git a/static/img/solana_logo.svg b/static/img/solana_logo.svg new file mode 100644 index 00000000..08ec87cb --- /dev/null +++ b/static/img/solana_logo.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/img/solana_logo_mark.svg b/static/img/solana_logo_mark.svg new file mode 100644 index 00000000..ed6f34d9 --- /dev/null +++ b/static/img/solana_logo_mark.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/static/js/buffer-polyfill/index.js b/static/js/buffer-polyfill/index.js new file mode 100644 index 00000000..bb676ad9 --- /dev/null +++ b/static/js/buffer-polyfill/index.js @@ -0,0 +1,8 @@ +"use strict";var Buffer=(()=>{var M=(i,r)=>()=>(r||i((r={exports:{}}).exports,r),r.exports);var V=M(S=>{"use strict";S.byteLength=lr;S.toByteArray=yr;S.fromByteArray=Br;var B=[],w=[],sr=typeof Uint8Array<"u"?Uint8Array:Array,k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(m=0,j=k.length;m0)throw new Error("Invalid string. Length must be a multiple of 4");var t=i.indexOf("=");t===-1&&(t=r);var n=t===r?0:4-t%4;return[t,n]}function lr(i){var r=H(i),t=r[0],n=r[1];return(t+n)*3/4-n}function ar(i,r,t){return(r+t)*3/4-t}function yr(i){var r,t=H(i),n=t[0],e=t[1],o=new sr(ar(i,n,e)),u=0,f=e>0?n-4:n,c;for(c=0;c>16&255,o[u++]=r>>8&255,o[u++]=r&255;return e===2&&(r=w[i.charCodeAt(c)]<<2|w[i.charCodeAt(c+1)]>>4,o[u++]=r&255),e===1&&(r=w[i.charCodeAt(c)]<<10|w[i.charCodeAt(c+1)]<<4|w[i.charCodeAt(c+2)]>>2,o[u++]=r>>8&255,o[u++]=r&255),o}function wr(i){return B[i>>18&63]+B[i>>12&63]+B[i>>6&63]+B[i&63]}function xr(i,r,t){for(var n,e=[],o=r;of?f:u+o));return n===1?(r=i[t-1],e.push(B[r>>2]+B[r<<4&63]+"==")):n===2&&(r=(i[t-2]<<8)+i[t-1],e.push(B[r>>10]+B[r>>4&63]+B[r<<2&63]+"=")),e.join("")}});var X=M(b=>{b.read=function(i,r,t,n,e){var o,u,f=e*8-n-1,c=(1<>1,s=-7,p=t?e-1:0,F=t?-1:1,x=i[r+p];for(p+=F,o=x&(1<<-s)-1,x>>=-s,s+=f;s>0;o=o*256+i[r+p],p+=F,s-=8);for(u=o&(1<<-s)-1,o>>=-s,s+=n;s>0;u=u*256+i[r+p],p+=F,s-=8);if(o===0)o=1-l;else{if(o===c)return u?NaN:(x?-1:1)*(1/0);u=u+Math.pow(2,n),o=o-l}return(x?-1:1)*u*Math.pow(2,o-n)};b.write=function(i,r,t,n,e,o){var u,f,c,l=o*8-e-1,s=(1<>1,F=e===23?Math.pow(2,-24)-Math.pow(2,-77):0,x=n?0:o-1,N=n?1:-1,pr=r<0||r===0&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(f=isNaN(r)?1:0,u=s):(u=Math.floor(Math.log(r)/Math.LN2),r*(c=Math.pow(2,-u))<1&&(u--,c*=2),u+p>=1?r+=F/c:r+=F*Math.pow(2,1-p),r*c>=2&&(u++,c/=2),u+p>=s?(f=0,u=s):u+p>=1?(f=(r*c-1)*Math.pow(2,e),u=u+p):(f=r*Math.pow(2,p-1)*Math.pow(2,e),u=0));e>=8;i[t+x]=f&255,x+=N,f/=256,e-=8);for(u=u<0;i[t+x]=u&255,x+=N,u/=256,l-=8);i[t+x-N]|=pr*128}});var Wr=M(T=>{var D=V(),U=X(),z=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;T.Buffer=h;T.SlowBuffer=Fr;T.INSPECT_MAX_BYTES=50;var _=2147483647;T.kMaxLength=_;h.TYPED_ARRAY_SUPPORT=Er();!h.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function Er(){try{let i=new Uint8Array(1),r={foo:function(){return 42}};return Object.setPrototypeOf(r,Uint8Array.prototype),Object.setPrototypeOf(i,r),i.foo()===42}catch{return!1}}Object.defineProperty(h.prototype,"parent",{enumerable:!0,get:function(){if(!!h.isBuffer(this))return this.buffer}});Object.defineProperty(h.prototype,"offset",{enumerable:!0,get:function(){if(!!h.isBuffer(this))return this.byteOffset}});function d(i){if(i>_)throw new RangeError('The value "'+i+'" is invalid for option "size"');let r=new Uint8Array(i);return Object.setPrototypeOf(r,h.prototype),r}function h(i,r,t){if(typeof i=="number"){if(typeof r=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return G(i)}return Q(i,r,t)}h.poolSize=8192;function Q(i,r,t){if(typeof i=="string")return gr(i,r);if(ArrayBuffer.isView(i))return mr(i);if(i==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof i);if(E(i,ArrayBuffer)||i&&E(i.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(E(i,SharedArrayBuffer)||i&&E(i.buffer,SharedArrayBuffer)))return P(i,r,t);if(typeof i=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=i.valueOf&&i.valueOf();if(n!=null&&n!==i)return h.from(n,r,t);let e=Ir(i);if(e)return e;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof i[Symbol.toPrimitive]=="function")return h.from(i[Symbol.toPrimitive]("string"),r,t);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof i)}h.from=function(i,r,t){return Q(i,r,t)};Object.setPrototypeOf(h.prototype,Uint8Array.prototype);Object.setPrototypeOf(h,Uint8Array);function v(i){if(typeof i!="number")throw new TypeError('"size" argument must be of type number');if(i<0)throw new RangeError('The value "'+i+'" is invalid for option "size"')}function dr(i,r,t){return v(i),i<=0?d(i):r!==void 0?typeof t=="string"?d(i).fill(r,t):d(i).fill(r):d(i)}h.alloc=function(i,r,t){return dr(i,r,t)};function G(i){return v(i),d(i<0?0:Y(i)|0)}h.allocUnsafe=function(i){return G(i)};h.allocUnsafeSlow=function(i){return G(i)};function gr(i,r){if((typeof r!="string"||r==="")&&(r="utf8"),!h.isEncoding(r))throw new TypeError("Unknown encoding: "+r);let t=rr(i,r)|0,n=d(t),e=n.write(i,r);return e!==t&&(n=n.slice(0,e)),n}function $(i){let r=i.length<0?0:Y(i.length)|0,t=d(r);for(let n=0;n=_)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+_.toString(16)+" bytes");return i|0}function Fr(i){return+i!=i&&(i=0),h.alloc(+i)}h.isBuffer=function(r){return r!=null&&r._isBuffer===!0&&r!==h.prototype};h.compare=function(r,t){if(E(r,Uint8Array)&&(r=h.from(r,r.offset,r.byteLength)),E(t,Uint8Array)&&(t=h.from(t,t.offset,t.byteLength)),!h.isBuffer(r)||!h.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(r===t)return 0;let n=r.length,e=t.length;for(let o=0,u=Math.min(n,e);oe.length?(h.isBuffer(u)||(u=h.from(u.buffer,u.byteOffset,u.byteLength)),u.copy(e,o)):Uint8Array.prototype.set.call(e,u,o);else if(h.isBuffer(u))u.copy(e,o);else throw new TypeError('"list" argument must be an Array of Buffers');o+=u.length}return e};function rr(i,r){if(h.isBuffer(i))return i.length;if(ArrayBuffer.isView(i)||E(i,ArrayBuffer))return i.byteLength;if(typeof i!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof i);let t=i.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&t===0)return 0;let e=!1;for(;;)switch(r){case"ascii":case"latin1":case"binary":return t;case"utf8":case"utf-8":return O(i).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return t*2;case"hex":return t>>>1;case"base64":return cr(i).length;default:if(e)return n?-1:O(i).length;r=(""+r).toLowerCase(),e=!0}}h.byteLength=rr;function Ar(i,r,t){let n=!1;if((r===void 0||r<0)&&(r=0),r>this.length||((t===void 0||t>this.length)&&(t=this.length),t<=0)||(t>>>=0,r>>>=0,t<=r))return"";for(i||(i="utf8");;)switch(i){case"hex":return kr(this,r,t);case"utf8":case"utf-8":return ir(this,r,t);case"ascii":return Nr(this,r,t);case"latin1":case"binary":return Mr(this,r,t);case"base64":return _r(this,r,t);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return br(this,r,t);default:if(n)throw new TypeError("Unknown encoding: "+i);i=(i+"").toLowerCase(),n=!0}}h.prototype._isBuffer=!0;function I(i,r,t){let n=i[r];i[r]=i[t],i[t]=n}h.prototype.swap16=function(){let r=this.length;if(r%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tt&&(r+=" ... "),""};z&&(h.prototype[z]=h.prototype.inspect);h.prototype.compare=function(r,t,n,e,o){if(E(r,Uint8Array)&&(r=h.from(r,r.offset,r.byteLength)),!h.isBuffer(r))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof r);if(t===void 0&&(t=0),n===void 0&&(n=r?r.length:0),e===void 0&&(e=0),o===void 0&&(o=this.length),t<0||n>r.length||e<0||o>this.length)throw new RangeError("out of range index");if(e>=o&&t>=n)return 0;if(e>=o)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,e>>>=0,o>>>=0,this===r)return 0;let u=o-e,f=n-t,c=Math.min(u,f),l=this.slice(e,o),s=r.slice(t,n);for(let p=0;p2147483647?t=2147483647:t<-2147483648&&(t=-2147483648),t=+t,W(t)&&(t=e?0:i.length-1),t<0&&(t=i.length+t),t>=i.length){if(e)return-1;t=i.length-1}else if(t<0)if(e)t=0;else return-1;if(typeof r=="string"&&(r=h.from(r,n)),h.isBuffer(r))return r.length===0?-1:J(i,r,t,n,e);if(typeof r=="number")return r=r&255,typeof Uint8Array.prototype.indexOf=="function"?e?Uint8Array.prototype.indexOf.call(i,r,t):Uint8Array.prototype.lastIndexOf.call(i,r,t):J(i,[r],t,n,e);throw new TypeError("val must be string, number or Buffer")}function J(i,r,t,n,e){let o=1,u=i.length,f=r.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(i.length<2||r.length<2)return-1;o=2,u/=2,f/=2,t/=2}function c(s,p){return o===1?s[p]:s.readUInt16BE(p*o)}let l;if(e){let s=-1;for(l=t;lu&&(t=u-f),l=t;l>=0;l--){let s=!0;for(let p=0;pe&&(n=e)):n=e;let o=r.length;n>o/2&&(n=o/2);let u;for(u=0;u>>0,isFinite(n)?(n=n>>>0,e===void 0&&(e="utf8")):(e=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let o=this.length-t;if((n===void 0||n>o)&&(n=o),r.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");e||(e="utf8");let u=!1;for(;;)switch(e){case"hex":return Ur(this,r,t,n);case"utf8":case"utf-8":return Rr(this,r,t,n);case"ascii":case"latin1":case"binary":return Tr(this,r,t,n);case"base64":return Cr(this,r,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Sr(this,r,t,n);default:if(u)throw new TypeError("Unknown encoding: "+e);e=(""+e).toLowerCase(),u=!0}};h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function _r(i,r,t){return r===0&&t===i.length?D.fromByteArray(i):D.fromByteArray(i.slice(r,t))}function ir(i,r,t){t=Math.min(i.length,t);let n=[],e=r;for(;e239?4:o>223?3:o>191?2:1;if(e+f<=t){let c,l,s,p;switch(f){case 1:o<128&&(u=o);break;case 2:c=i[e+1],(c&192)===128&&(p=(o&31)<<6|c&63,p>127&&(u=p));break;case 3:c=i[e+1],l=i[e+2],(c&192)===128&&(l&192)===128&&(p=(o&15)<<12|(c&63)<<6|l&63,p>2047&&(p<55296||p>57343)&&(u=p));break;case 4:c=i[e+1],l=i[e+2],s=i[e+3],(c&192)===128&&(l&192)===128&&(s&192)===128&&(p=(o&15)<<18|(c&63)<<12|(l&63)<<6|s&63,p>65535&&p<1114112&&(u=p))}}u===null?(u=65533,f=1):u>65535&&(u-=65536,n.push(u>>>10&1023|55296),u=56320|u&1023),n.push(u),e+=f}return Lr(n)}var K=4096;function Lr(i){let r=i.length;if(r<=K)return String.fromCharCode.apply(String,i);let t="",n=0;for(;nn)&&(t=n);let e="";for(let o=r;on&&(r=n),t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),tt)throw new RangeError("Trying to access beyond buffer length")}h.prototype.readUintLE=h.prototype.readUIntLE=function(r,t,n){r=r>>>0,t=t>>>0,n||a(r,t,this.length);let e=this[r],o=1,u=0;for(;++u>>0,t=t>>>0,n||a(r,t,this.length);let e=this[r+--t],o=1;for(;t>0&&(o*=256);)e+=this[r+--t]*o;return e};h.prototype.readUint8=h.prototype.readUInt8=function(r,t){return r=r>>>0,t||a(r,1,this.length),this[r]};h.prototype.readUint16LE=h.prototype.readUInt16LE=function(r,t){return r=r>>>0,t||a(r,2,this.length),this[r]|this[r+1]<<8};h.prototype.readUint16BE=h.prototype.readUInt16BE=function(r,t){return r=r>>>0,t||a(r,2,this.length),this[r]<<8|this[r+1]};h.prototype.readUint32LE=h.prototype.readUInt32LE=function(r,t){return r=r>>>0,t||a(r,4,this.length),(this[r]|this[r+1]<<8|this[r+2]<<16)+this[r+3]*16777216};h.prototype.readUint32BE=h.prototype.readUInt32BE=function(r,t){return r=r>>>0,t||a(r,4,this.length),this[r]*16777216+(this[r+1]<<16|this[r+2]<<8|this[r+3])};h.prototype.readBigUInt64LE=g(function(r){r=r>>>0,R(r,"offset");let t=this[r],n=this[r+7];(t===void 0||n===void 0)&&C(r,this.length-8);let e=t+this[++r]*2**8+this[++r]*2**16+this[++r]*2**24,o=this[++r]+this[++r]*2**8+this[++r]*2**16+n*2**24;return BigInt(e)+(BigInt(o)<>>0,R(r,"offset");let t=this[r],n=this[r+7];(t===void 0||n===void 0)&&C(r,this.length-8);let e=t*2**24+this[++r]*2**16+this[++r]*2**8+this[++r],o=this[++r]*2**24+this[++r]*2**16+this[++r]*2**8+n;return(BigInt(e)<>>0,t=t>>>0,n||a(r,t,this.length);let e=this[r],o=1,u=0;for(;++u=o&&(e-=Math.pow(2,8*t)),e};h.prototype.readIntBE=function(r,t,n){r=r>>>0,t=t>>>0,n||a(r,t,this.length);let e=t,o=1,u=this[r+--e];for(;e>0&&(o*=256);)u+=this[r+--e]*o;return o*=128,u>=o&&(u-=Math.pow(2,8*t)),u};h.prototype.readInt8=function(r,t){return r=r>>>0,t||a(r,1,this.length),this[r]&128?(255-this[r]+1)*-1:this[r]};h.prototype.readInt16LE=function(r,t){r=r>>>0,t||a(r,2,this.length);let n=this[r]|this[r+1]<<8;return n&32768?n|4294901760:n};h.prototype.readInt16BE=function(r,t){r=r>>>0,t||a(r,2,this.length);let n=this[r+1]|this[r]<<8;return n&32768?n|4294901760:n};h.prototype.readInt32LE=function(r,t){return r=r>>>0,t||a(r,4,this.length),this[r]|this[r+1]<<8|this[r+2]<<16|this[r+3]<<24};h.prototype.readInt32BE=function(r,t){return r=r>>>0,t||a(r,4,this.length),this[r]<<24|this[r+1]<<16|this[r+2]<<8|this[r+3]};h.prototype.readBigInt64LE=g(function(r){r=r>>>0,R(r,"offset");let t=this[r],n=this[r+7];(t===void 0||n===void 0)&&C(r,this.length-8);let e=this[r+4]+this[r+5]*2**8+this[r+6]*2**16+(n<<24);return(BigInt(e)<>>0,R(r,"offset");let t=this[r],n=this[r+7];(t===void 0||n===void 0)&&C(r,this.length-8);let e=(t<<24)+this[++r]*2**16+this[++r]*2**8+this[++r];return(BigInt(e)<>>0,t||a(r,4,this.length),U.read(this,r,!0,23,4)};h.prototype.readFloatBE=function(r,t){return r=r>>>0,t||a(r,4,this.length),U.read(this,r,!1,23,4)};h.prototype.readDoubleLE=function(r,t){return r=r>>>0,t||a(r,8,this.length),U.read(this,r,!0,52,8)};h.prototype.readDoubleBE=function(r,t){return r=r>>>0,t||a(r,8,this.length),U.read(this,r,!1,52,8)};function y(i,r,t,n,e,o){if(!h.isBuffer(i))throw new TypeError('"buffer" argument must be a Buffer instance');if(r>e||ri.length)throw new RangeError("Index out of range")}h.prototype.writeUintLE=h.prototype.writeUIntLE=function(r,t,n,e){if(r=+r,t=t>>>0,n=n>>>0,!e){let f=Math.pow(2,8*n)-1;y(this,r,t,n,f,0)}let o=1,u=0;for(this[t]=r&255;++u>>0,n=n>>>0,!e){let f=Math.pow(2,8*n)-1;y(this,r,t,n,f,0)}let o=n-1,u=1;for(this[t+o]=r&255;--o>=0&&(u*=256);)this[t+o]=r/u&255;return t+n};h.prototype.writeUint8=h.prototype.writeUInt8=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,1,255,0),this[t]=r&255,t+1};h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,2,65535,0),this[t]=r&255,this[t+1]=r>>>8,t+2};h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,2,65535,0),this[t]=r>>>8,this[t+1]=r&255,t+2};h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,4,4294967295,0),this[t+3]=r>>>24,this[t+2]=r>>>16,this[t+1]=r>>>8,this[t]=r&255,t+4};h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,4,4294967295,0),this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=r&255,t+4};function nr(i,r,t,n,e){fr(r,n,e,i,t,7);let o=Number(r&BigInt(4294967295));i[t++]=o,o=o>>8,i[t++]=o,o=o>>8,i[t++]=o,o=o>>8,i[t++]=o;let u=Number(r>>BigInt(32)&BigInt(4294967295));return i[t++]=u,u=u>>8,i[t++]=u,u=u>>8,i[t++]=u,u=u>>8,i[t++]=u,t}function er(i,r,t,n,e){fr(r,n,e,i,t,7);let o=Number(r&BigInt(4294967295));i[t+7]=o,o=o>>8,i[t+6]=o,o=o>>8,i[t+5]=o,o=o>>8,i[t+4]=o;let u=Number(r>>BigInt(32)&BigInt(4294967295));return i[t+3]=u,u=u>>8,i[t+2]=u,u=u>>8,i[t+1]=u,u=u>>8,i[t]=u,t+8}h.prototype.writeBigUInt64LE=g(function(r,t=0){return nr(this,r,t,BigInt(0),BigInt("0xffffffffffffffff"))});h.prototype.writeBigUInt64BE=g(function(r,t=0){return er(this,r,t,BigInt(0),BigInt("0xffffffffffffffff"))});h.prototype.writeIntLE=function(r,t,n,e){if(r=+r,t=t>>>0,!e){let c=Math.pow(2,8*n-1);y(this,r,t,n,c-1,-c)}let o=0,u=1,f=0;for(this[t]=r&255;++o>0)-f&255;return t+n};h.prototype.writeIntBE=function(r,t,n,e){if(r=+r,t=t>>>0,!e){let c=Math.pow(2,8*n-1);y(this,r,t,n,c-1,-c)}let o=n-1,u=1,f=0;for(this[t+o]=r&255;--o>=0&&(u*=256);)r<0&&f===0&&this[t+o+1]!==0&&(f=1),this[t+o]=(r/u>>0)-f&255;return t+n};h.prototype.writeInt8=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,1,127,-128),r<0&&(r=255+r+1),this[t]=r&255,t+1};h.prototype.writeInt16LE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,2,32767,-32768),this[t]=r&255,this[t+1]=r>>>8,t+2};h.prototype.writeInt16BE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,2,32767,-32768),this[t]=r>>>8,this[t+1]=r&255,t+2};h.prototype.writeInt32LE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,4,2147483647,-2147483648),this[t]=r&255,this[t+1]=r>>>8,this[t+2]=r>>>16,this[t+3]=r>>>24,t+4};h.prototype.writeInt32BE=function(r,t,n){return r=+r,t=t>>>0,n||y(this,r,t,4,2147483647,-2147483648),r<0&&(r=4294967295+r+1),this[t]=r>>>24,this[t+1]=r>>>16,this[t+2]=r>>>8,this[t+3]=r&255,t+4};h.prototype.writeBigInt64LE=g(function(r,t=0){return nr(this,r,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});h.prototype.writeBigInt64BE=g(function(r,t=0){return er(this,r,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function or(i,r,t,n,e,o){if(t+n>i.length)throw new RangeError("Index out of range");if(t<0)throw new RangeError("Index out of range")}function ur(i,r,t,n,e){return r=+r,t=t>>>0,e||or(i,r,t,4,34028234663852886e22,-34028234663852886e22),U.write(i,r,t,n,23,4),t+4}h.prototype.writeFloatLE=function(r,t,n){return ur(this,r,t,!0,n)};h.prototype.writeFloatBE=function(r,t,n){return ur(this,r,t,!1,n)};function hr(i,r,t,n,e){return r=+r,t=t>>>0,e||or(i,r,t,8,17976931348623157e292,-17976931348623157e292),U.write(i,r,t,n,52,8),t+8}h.prototype.writeDoubleLE=function(r,t,n){return hr(this,r,t,!0,n)};h.prototype.writeDoubleBE=function(r,t,n){return hr(this,r,t,!1,n)};h.prototype.copy=function(r,t,n,e){if(!h.isBuffer(r))throw new TypeError("argument should be a Buffer");if(n||(n=0),!e&&e!==0&&(e=this.length),t>=r.length&&(t=r.length),t||(t=0),e>0&&e=this.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("sourceEnd out of bounds");e>this.length&&(e=this.length),r.length-t>>0,n=n===void 0?this.length:n>>>0,r||(r=0);let o;if(typeof r=="number")for(o=t;o2**32?e=Z(String(t)):typeof t=="bigint"&&(e=String(t),(t>BigInt(2)**BigInt(32)||t<-(BigInt(2)**BigInt(32)))&&(e=Z(e)),e+="n"),n+=` It must be ${r}. Received ${e}`,n},RangeError);function Z(i){let r="",t=i.length,n=i[0]==="-"?1:0;for(;t>=n+4;t-=3)r=`_${i.slice(t-3,t)}${r}`;return`${i.slice(0,t)}${r}`}function Dr(i,r,t){R(r,"offset"),(i[r]===void 0||i[r+t]===void 0)&&C(r,i.length-(t+1))}function fr(i,r,t,n,e,o){if(i>t||i3?r===0||r===BigInt(0)?f=`>= 0${u} and < 2${u} ** ${(o+1)*8}${u}`:f=`>= -(2${u} ** ${(o+1)*8-1}${u}) and < 2 ** ${(o+1)*8-1}${u}`:f=`>= ${r}${u} and <= ${t}${u}`,new A.ERR_OUT_OF_RANGE("value",f,i)}Dr(n,e,o)}function R(i,r){if(typeof i!="number")throw new A.ERR_INVALID_ARG_TYPE(r,"number",i)}function C(i,r,t){throw Math.floor(i)!==i?(R(i,t),new A.ERR_OUT_OF_RANGE(t||"offset","an integer",i)):r<0?new A.ERR_BUFFER_OUT_OF_BOUNDS:new A.ERR_OUT_OF_RANGE(t||"offset",`>= ${t?1:0} and <= ${r}`,i)}var $r=/[^+/0-9A-Za-z-_]/g;function Pr(i){if(i=i.split("=")[0],i=i.trim().replace($r,""),i.length<2)return"";for(;i.length%4!==0;)i=i+"=";return i}function O(i,r){r=r||1/0;let t,n=i.length,e=null,o=[];for(let u=0;u55295&&t<57344){if(!e){if(t>56319){(r-=3)>-1&&o.push(239,191,189);continue}else if(u+1===n){(r-=3)>-1&&o.push(239,191,189);continue}e=t;continue}if(t<56320){(r-=3)>-1&&o.push(239,191,189),e=t;continue}t=(e-55296<<10|t-56320)+65536}else e&&(r-=3)>-1&&o.push(239,191,189);if(e=null,t<128){if((r-=1)<0)break;o.push(t)}else if(t<2048){if((r-=2)<0)break;o.push(t>>6|192,t&63|128)}else if(t<65536){if((r-=3)<0)break;o.push(t>>12|224,t>>6&63|128,t&63|128)}else if(t<1114112){if((r-=4)<0)break;o.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128)}else throw new Error("Invalid code point")}return o}function Or(i){let r=[];for(let t=0;t>8,e=t%256,o.push(e),o.push(n);return o}function cr(i){return D.toByteArray(Pr(i))}function L(i,r,t,n){let e;for(e=0;e=r.length||e>=i.length);++e)r[e+t]=i[e];return e}function E(i,r){return i instanceof r||i!=null&&i.constructor!=null&&i.constructor.name!=null&&i.constructor.name===r.name}function W(i){return i!==i}var Yr=function(){let i="0123456789abcdef",r=new Array(256);for(let t=0;t<16;++t){let n=t*16;for(let e=0;e<16;++e)r[n+e]=i[t]+i[e]}return r}();function g(i){return typeof BigInt>"u"?qr:i}function qr(){throw new Error("BigInt not supported")}});return Wr();})(); +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ diff --git a/static/js/solanaPay/index.js b/static/js/solanaPay/index.js new file mode 100644 index 00000000..b53f4803 --- /dev/null +++ b/static/js/solanaPay/index.js @@ -0,0 +1,125 @@ +"use strict";var solanaPay=(()=>{var hd=Object.create;var gs=Object.defineProperty;var ld=Object.getOwnPropertyDescriptor;var dd=Object.getOwnPropertyNames;var pd=Object.getPrototypeOf,yd=Object.prototype.hasOwnProperty;var cf=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(t,e)=>(typeof require<"u"?require:t)[e]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var Dr=(r,t)=>()=>(r&&(t=r(r=0)),t);var _e=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),uf=(r,t)=>{for(var e in t)gs(r,e,{get:t[e],enumerable:!0})},ff=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of dd(t))!yd.call(r,i)&&i!==e&&gs(r,i,{get:()=>t[i],enumerable:!(n=ld(t,i))||n.enumerable});return r};var de=(r,t,e)=>(e=r!=null?hd(pd(r)):{},ff(t||!r||!r.__esModule?gs(e,"default",{value:r,enumerable:!0}):e,r)),dc=r=>ff(gs({},"__esModule",{value:!0}),r);var yc=_e(ms=>{"use strict";ms.byteLength=md;ms.toByteArray=xd;ms.fromByteArray=kd;var dn=[],en=[],gd=typeof Uint8Array<"u"?Uint8Array:Array,pc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(gi=0,hf=pc.length;gi0)throw new Error("Invalid string. Length must be a multiple of 4");var e=r.indexOf("=");e===-1&&(e=t);var n=e===t?0:4-e%4;return[e,n]}function md(r){var t=lf(r),e=t[0],n=t[1];return(e+n)*3/4-n}function wd(r,t,e){return(t+e)*3/4-e}function xd(r){var t,e=lf(r),n=e[0],i=e[1],o=new gd(wd(r,n,i)),s=0,d=i>0?n-4:n,g;for(g=0;g>16&255,o[s++]=t>>8&255,o[s++]=t&255;return i===2&&(t=en[r.charCodeAt(g)]<<2|en[r.charCodeAt(g+1)]>>4,o[s++]=t&255),i===1&&(t=en[r.charCodeAt(g)]<<10|en[r.charCodeAt(g+1)]<<4|en[r.charCodeAt(g+2)]>>2,o[s++]=t>>8&255,o[s++]=t&255),o}function bd(r){return dn[r>>18&63]+dn[r>>12&63]+dn[r>>6&63]+dn[r&63]}function vd(r,t,e){for(var n,i=[],o=t;od?d:s+o));return n===1?(t=r[e-1],i.push(dn[t>>2]+dn[t<<4&63]+"==")):n===2&&(t=(r[e-2]<<8)+r[e-1],i.push(dn[t>>10]+dn[t>>4&63]+dn[t<<2&63]+"=")),i.join("")}});var mc=_e(gc=>{gc.read=function(r,t,e,n,i){var o,s,d=i*8-n-1,g=(1<>1,L=-7,M=e?i-1:0,$=e?-1:1,K=r[t+M];for(M+=$,o=K&(1<<-L)-1,K>>=-L,L+=d;L>0;o=o*256+r[t+M],M+=$,L-=8);for(s=o&(1<<-L)-1,o>>=-L,L+=n;L>0;s=s*256+r[t+M],M+=$,L-=8);if(o===0)o=1-A;else{if(o===g)return s?NaN:(K?-1:1)*(1/0);s=s+Math.pow(2,n),o=o-A}return(K?-1:1)*s*Math.pow(2,o-n)};gc.write=function(r,t,e,n,i,o){var s,d,g,A=o*8-i-1,L=(1<>1,$=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,K=n?0:o-1,et=n?1:-1,tt=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(d=isNaN(t)?1:0,s=L):(s=Math.floor(Math.log(t)/Math.LN2),t*(g=Math.pow(2,-s))<1&&(s--,g*=2),s+M>=1?t+=$/g:t+=$*Math.pow(2,1-M),t*g>=2&&(s++,g/=2),s+M>=L?(d=0,s=L):s+M>=1?(d=(t*g-1)*Math.pow(2,i),s=s+M):(d=t*Math.pow(2,M-1)*Math.pow(2,i),s=0));i>=8;r[e+K]=d&255,K+=et,d/=256,i-=8);for(s=s<0;r[e+K]=s&255,K+=et,s/=256,A-=8);r[e+K-et]|=tt*128}});var Rf=_e(Ci=>{"use strict";var wc=yc(),Pi=mc(),df=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Ci.Buffer=st;Ci.SlowBuffer=Bd;Ci.INSPECT_MAX_BYTES=50;var ws=2147483647;Ci.kMaxLength=ws;st.TYPED_ARRAY_SUPPORT=Id();!st.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function Id(){try{let r=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(r,t),r.foo()===42}catch{return!1}}Object.defineProperty(st.prototype,"parent",{enumerable:!0,get:function(){if(!!st.isBuffer(this))return this.buffer}});Object.defineProperty(st.prototype,"offset",{enumerable:!0,get:function(){if(!!st.isBuffer(this))return this.byteOffset}});function En(r){if(r>ws)throw new RangeError('The value "'+r+'" is invalid for option "size"');let t=new Uint8Array(r);return Object.setPrototypeOf(t,st.prototype),t}function st(r,t,e){if(typeof r=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return kc(r)}return mf(r,t,e)}st.poolSize=8192;function mf(r,t,e){if(typeof r=="string")return _d(r,t);if(ArrayBuffer.isView(r))return Ed(r);if(r==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r);if(pn(r,ArrayBuffer)||r&&pn(r.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(pn(r,SharedArrayBuffer)||r&&pn(r.buffer,SharedArrayBuffer)))return bc(r,t,e);if(typeof r=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=r.valueOf&&r.valueOf();if(n!=null&&n!==r)return st.from(n,t,e);let i=Sd(r);if(i)return i;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof r[Symbol.toPrimitive]=="function")return st.from(r[Symbol.toPrimitive]("string"),t,e);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r)}st.from=function(r,t,e){return mf(r,t,e)};Object.setPrototypeOf(st.prototype,Uint8Array.prototype);Object.setPrototypeOf(st,Uint8Array);function wf(r){if(typeof r!="number")throw new TypeError('"size" argument must be of type number');if(r<0)throw new RangeError('The value "'+r+'" is invalid for option "size"')}function Ad(r,t,e){return wf(r),r<=0?En(r):t!==void 0?typeof e=="string"?En(r).fill(t,e):En(r).fill(t):En(r)}st.alloc=function(r,t,e){return Ad(r,t,e)};function kc(r){return wf(r),En(r<0?0:Ic(r)|0)}st.allocUnsafe=function(r){return kc(r)};st.allocUnsafeSlow=function(r){return kc(r)};function _d(r,t){if((typeof t!="string"||t==="")&&(t="utf8"),!st.isEncoding(t))throw new TypeError("Unknown encoding: "+t);let e=xf(r,t)|0,n=En(e),i=n.write(r,t);return i!==e&&(n=n.slice(0,i)),n}function xc(r){let t=r.length<0?0:Ic(r.length)|0,e=En(t);for(let n=0;n=ws)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+ws.toString(16)+" bytes");return r|0}function Bd(r){return+r!=r&&(r=0),st.alloc(+r)}st.isBuffer=function(t){return t!=null&&t._isBuffer===!0&&t!==st.prototype};st.compare=function(t,e){if(pn(t,Uint8Array)&&(t=st.from(t,t.offset,t.byteLength)),pn(e,Uint8Array)&&(e=st.from(e,e.offset,e.byteLength)),!st.isBuffer(t)||!st.isBuffer(e))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;let n=t.length,i=e.length;for(let o=0,s=Math.min(n,i);oi.length?(st.isBuffer(s)||(s=st.from(s)),s.copy(i,o)):Uint8Array.prototype.set.call(i,s,o);else if(st.isBuffer(s))s.copy(i,o);else throw new TypeError('"list" argument must be an Array of Buffers');o+=s.length}return i};function xf(r,t){if(st.isBuffer(r))return r.length;if(ArrayBuffer.isView(r)||pn(r,ArrayBuffer))return r.byteLength;if(typeof r!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof r);let e=r.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&e===0)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":return vc(r).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return e*2;case"hex":return e>>>1;case"base64":return Bf(r).length;default:if(i)return n?-1:vc(r).length;t=(""+t).toLowerCase(),i=!0}}st.byteLength=xf;function Rd(r,t,e){let n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((e===void 0||e>this.length)&&(e=this.length),e<=0)||(e>>>=0,t>>>=0,e<=t))return"";for(r||(r="utf8");;)switch(r){case"hex":return Fd(this,t,e);case"utf8":case"utf-8":return vf(this,t,e);case"ascii":return Nd(this,t,e);case"latin1":case"binary":return zd(this,t,e);case"base64":return Cd(this,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Dd(this,t,e);default:if(n)throw new TypeError("Unknown encoding: "+r);r=(r+"").toLowerCase(),n=!0}}st.prototype._isBuffer=!0;function mi(r,t,e){let n=r[t];r[t]=r[e],r[e]=n}st.prototype.swap16=function(){let t=this.length;if(t%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;ee&&(t+=" ... "),""};df&&(st.prototype[df]=st.prototype.inspect);st.prototype.compare=function(t,e,n,i,o){if(pn(t,Uint8Array)&&(t=st.from(t,t.offset,t.byteLength)),!st.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(e===void 0&&(e=0),n===void 0&&(n=t?t.length:0),i===void 0&&(i=0),o===void 0&&(o=this.length),e<0||n>t.length||i<0||o>this.length)throw new RangeError("out of range index");if(i>=o&&e>=n)return 0;if(i>=o)return-1;if(e>=n)return 1;if(e>>>=0,n>>>=0,i>>>=0,o>>>=0,this===t)return 0;let s=o-i,d=n-e,g=Math.min(s,d),A=this.slice(i,o),L=t.slice(e,n);for(let M=0;M2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,_c(e)&&(e=i?0:r.length-1),e<0&&(e=r.length+e),e>=r.length){if(i)return-1;e=r.length-1}else if(e<0)if(i)e=0;else return-1;if(typeof t=="string"&&(t=st.from(t,n)),st.isBuffer(t))return t.length===0?-1:pf(r,t,e,n,i);if(typeof t=="number")return t=t&255,typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(r,t,e):Uint8Array.prototype.lastIndexOf.call(r,t,e):pf(r,[t],e,n,i);throw new TypeError("val must be string, number or Buffer")}function pf(r,t,e,n,i){let o=1,s=r.length,d=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(r.length<2||t.length<2)return-1;o=2,s/=2,d/=2,e/=2}function g(L,M){return o===1?L[M]:L.readUInt16BE(M*o)}let A;if(i){let L=-1;for(A=e;As&&(e=s-d),A=e;A>=0;A--){let L=!0;for(let M=0;Mi&&(n=i)):n=i;let o=t.length;n>o/2&&(n=o/2);let s;for(s=0;s>>0,isFinite(n)?(n=n>>>0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let o=this.length-e;if((n===void 0||n>o)&&(n=o),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let s=!1;for(;;)switch(i){case"hex":return Td(this,t,e,n);case"utf8":case"utf-8":return Md(this,t,e,n);case"ascii":case"latin1":case"binary":return Ld(this,t,e,n);case"base64":return Pd(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Od(this,t,e,n);default:if(s)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),s=!0}};st.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Cd(r,t,e){return t===0&&e===r.length?wc.fromByteArray(r):wc.fromByteArray(r.slice(t,e))}function vf(r,t,e){e=Math.min(r.length,e);let n=[],i=t;for(;i239?4:o>223?3:o>191?2:1;if(i+d<=e){let g,A,L,M;switch(d){case 1:o<128&&(s=o);break;case 2:g=r[i+1],(g&192)===128&&(M=(o&31)<<6|g&63,M>127&&(s=M));break;case 3:g=r[i+1],A=r[i+2],(g&192)===128&&(A&192)===128&&(M=(o&15)<<12|(g&63)<<6|A&63,M>2047&&(M<55296||M>57343)&&(s=M));break;case 4:g=r[i+1],A=r[i+2],L=r[i+3],(g&192)===128&&(A&192)===128&&(L&192)===128&&(M=(o&15)<<18|(g&63)<<12|(A&63)<<6|L&63,M>65535&&M<1114112&&(s=M))}}s===null?(s=65533,d=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),i+=d}return Ud(n)}var yf=4096;function Ud(r){let t=r.length;if(t<=yf)return String.fromCharCode.apply(String,r);let e="",n=0;for(;nn)&&(e=n);let i="";for(let o=t;on&&(t=n),e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),ee)throw new RangeError("Trying to access beyond buffer length")}st.prototype.readUintLE=st.prototype.readUIntLE=function(t,e,n){t=t>>>0,e=e>>>0,n||kr(t,e,this.length);let i=this[t],o=1,s=0;for(;++s>>0,e=e>>>0,n||kr(t,e,this.length);let i=this[t+--e],o=1;for(;e>0&&(o*=256);)i+=this[t+--e]*o;return i};st.prototype.readUint8=st.prototype.readUInt8=function(t,e){return t=t>>>0,e||kr(t,1,this.length),this[t]};st.prototype.readUint16LE=st.prototype.readUInt16LE=function(t,e){return t=t>>>0,e||kr(t,2,this.length),this[t]|this[t+1]<<8};st.prototype.readUint16BE=st.prototype.readUInt16BE=function(t,e){return t=t>>>0,e||kr(t,2,this.length),this[t]<<8|this[t+1]};st.prototype.readUint32LE=st.prototype.readUInt32LE=function(t,e){return t=t>>>0,e||kr(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216};st.prototype.readUint32BE=st.prototype.readUInt32BE=function(t,e){return t=t>>>0,e||kr(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])};st.prototype.readBigUInt64LE=Wn(function(t){t=t>>>0,Oi(t,"offset");let e=this[t],n=this[t+7];(e===void 0||n===void 0)&&mo(t,this.length-8);let i=e+this[++t]*2**8+this[++t]*2**16+this[++t]*2**24,o=this[++t]+this[++t]*2**8+this[++t]*2**16+n*2**24;return BigInt(i)+(BigInt(o)<>>0,Oi(t,"offset");let e=this[t],n=this[t+7];(e===void 0||n===void 0)&&mo(t,this.length-8);let i=e*2**24+this[++t]*2**16+this[++t]*2**8+this[++t],o=this[++t]*2**24+this[++t]*2**16+this[++t]*2**8+n;return(BigInt(i)<>>0,e=e>>>0,n||kr(t,e,this.length);let i=this[t],o=1,s=0;for(;++s=o&&(i-=Math.pow(2,8*e)),i};st.prototype.readIntBE=function(t,e,n){t=t>>>0,e=e>>>0,n||kr(t,e,this.length);let i=e,o=1,s=this[t+--i];for(;i>0&&(o*=256);)s+=this[t+--i]*o;return o*=128,s>=o&&(s-=Math.pow(2,8*e)),s};st.prototype.readInt8=function(t,e){return t=t>>>0,e||kr(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]};st.prototype.readInt16LE=function(t,e){t=t>>>0,e||kr(t,2,this.length);let n=this[t]|this[t+1]<<8;return n&32768?n|4294901760:n};st.prototype.readInt16BE=function(t,e){t=t>>>0,e||kr(t,2,this.length);let n=this[t+1]|this[t]<<8;return n&32768?n|4294901760:n};st.prototype.readInt32LE=function(t,e){return t=t>>>0,e||kr(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24};st.prototype.readInt32BE=function(t,e){return t=t>>>0,e||kr(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]};st.prototype.readBigInt64LE=Wn(function(t){t=t>>>0,Oi(t,"offset");let e=this[t],n=this[t+7];(e===void 0||n===void 0)&&mo(t,this.length-8);let i=this[t+4]+this[t+5]*2**8+this[t+6]*2**16+(n<<24);return(BigInt(i)<>>0,Oi(t,"offset");let e=this[t],n=this[t+7];(e===void 0||n===void 0)&&mo(t,this.length-8);let i=(e<<24)+this[++t]*2**16+this[++t]*2**8+this[++t];return(BigInt(i)<>>0,e||kr(t,4,this.length),Pi.read(this,t,!0,23,4)};st.prototype.readFloatBE=function(t,e){return t=t>>>0,e||kr(t,4,this.length),Pi.read(this,t,!1,23,4)};st.prototype.readDoubleLE=function(t,e){return t=t>>>0,e||kr(t,8,this.length),Pi.read(this,t,!0,52,8)};st.prototype.readDoubleBE=function(t,e){return t=t>>>0,e||kr(t,8,this.length),Pi.read(this,t,!1,52,8)};function Hr(r,t,e,n,i,o){if(!st.isBuffer(r))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||tr.length)throw new RangeError("Index out of range")}st.prototype.writeUintLE=st.prototype.writeUIntLE=function(t,e,n,i){if(t=+t,e=e>>>0,n=n>>>0,!i){let d=Math.pow(2,8*n)-1;Hr(this,t,e,n,d,0)}let o=1,s=0;for(this[e]=t&255;++s>>0,n=n>>>0,!i){let d=Math.pow(2,8*n)-1;Hr(this,t,e,n,d,0)}let o=n-1,s=1;for(this[e+o]=t&255;--o>=0&&(s*=256);)this[e+o]=t/s&255;return e+n};st.prototype.writeUint8=st.prototype.writeUInt8=function(t,e,n){return t=+t,e=e>>>0,n||Hr(this,t,e,1,255,0),this[e]=t&255,e+1};st.prototype.writeUint16LE=st.prototype.writeUInt16LE=function(t,e,n){return t=+t,e=e>>>0,n||Hr(this,t,e,2,65535,0),this[e]=t&255,this[e+1]=t>>>8,e+2};st.prototype.writeUint16BE=st.prototype.writeUInt16BE=function(t,e,n){return t=+t,e=e>>>0,n||Hr(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=t&255,e+2};st.prototype.writeUint32LE=st.prototype.writeUInt32LE=function(t,e,n){return t=+t,e=e>>>0,n||Hr(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=t&255,e+4};st.prototype.writeUint32BE=st.prototype.writeUInt32BE=function(t,e,n){return t=+t,e=e>>>0,n||Hr(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=t&255,e+4};function kf(r,t,e,n,i){Sf(t,n,i,r,e,7);let o=Number(t&BigInt(4294967295));r[e++]=o,o=o>>8,r[e++]=o,o=o>>8,r[e++]=o,o=o>>8,r[e++]=o;let s=Number(t>>BigInt(32)&BigInt(4294967295));return r[e++]=s,s=s>>8,r[e++]=s,s=s>>8,r[e++]=s,s=s>>8,r[e++]=s,e}function If(r,t,e,n,i){Sf(t,n,i,r,e,7);let o=Number(t&BigInt(4294967295));r[e+7]=o,o=o>>8,r[e+6]=o,o=o>>8,r[e+5]=o,o=o>>8,r[e+4]=o;let s=Number(t>>BigInt(32)&BigInt(4294967295));return r[e+3]=s,s=s>>8,r[e+2]=s,s=s>>8,r[e+1]=s,s=s>>8,r[e]=s,e+8}st.prototype.writeBigUInt64LE=Wn(function(t,e=0){return kf(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))});st.prototype.writeBigUInt64BE=Wn(function(t,e=0){return If(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))});st.prototype.writeIntLE=function(t,e,n,i){if(t=+t,e=e>>>0,!i){let g=Math.pow(2,8*n-1);Hr(this,t,e,n,g-1,-g)}let o=0,s=1,d=0;for(this[e]=t&255;++o>0)-d&255;return e+n};st.prototype.writeIntBE=function(t,e,n,i){if(t=+t,e=e>>>0,!i){let g=Math.pow(2,8*n-1);Hr(this,t,e,n,g-1,-g)}let o=n-1,s=1,d=0;for(this[e+o]=t&255;--o>=0&&(s*=256);)t<0&&d===0&&this[e+o+1]!==0&&(d=1),this[e+o]=(t/s>>0)-d&255;return e+n};st.prototype.writeInt8=function(t,e,n){return t=+t,e=e>>>0,n||Hr(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=t&255,e+1};st.prototype.writeInt16LE=function(t,e,n){return t=+t,e=e>>>0,n||Hr(this,t,e,2,32767,-32768),this[e]=t&255,this[e+1]=t>>>8,e+2};st.prototype.writeInt16BE=function(t,e,n){return t=+t,e=e>>>0,n||Hr(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=t&255,e+2};st.prototype.writeInt32LE=function(t,e,n){return t=+t,e=e>>>0,n||Hr(this,t,e,4,2147483647,-2147483648),this[e]=t&255,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4};st.prototype.writeInt32BE=function(t,e,n){return t=+t,e=e>>>0,n||Hr(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=t&255,e+4};st.prototype.writeBigInt64LE=Wn(function(t,e=0){return kf(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});st.prototype.writeBigInt64BE=Wn(function(t,e=0){return If(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Af(r,t,e,n,i,o){if(e+n>r.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function _f(r,t,e,n,i){return t=+t,e=e>>>0,i||Af(r,t,e,4,34028234663852886e22,-34028234663852886e22),Pi.write(r,t,e,n,23,4),e+4}st.prototype.writeFloatLE=function(t,e,n){return _f(this,t,e,!0,n)};st.prototype.writeFloatBE=function(t,e,n){return _f(this,t,e,!1,n)};function Ef(r,t,e,n,i){return t=+t,e=e>>>0,i||Af(r,t,e,8,17976931348623157e292,-17976931348623157e292),Pi.write(r,t,e,n,52,8),e+8}st.prototype.writeDoubleLE=function(t,e,n){return Ef(this,t,e,!0,n)};st.prototype.writeDoubleBE=function(t,e,n){return Ef(this,t,e,!1,n)};st.prototype.copy=function(t,e,n,i){if(!st.isBuffer(t))throw new TypeError("argument should be a Buffer");if(n||(n=0),!i&&i!==0&&(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e>>0,n=n===void 0?this.length:n>>>0,t||(t=0);let o;if(typeof t=="number")for(o=e;o2**32?i=gf(String(e)):typeof e=="bigint"&&(i=String(e),(e>BigInt(2)**BigInt(32)||e<-(BigInt(2)**BigInt(32)))&&(i=gf(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n},RangeError);function gf(r){let t="",e=r.length,n=r[0]==="-"?1:0;for(;e>=n+4;e-=3)t=`_${r.slice(e-3,e)}${t}`;return`${r.slice(0,e)}${t}`}function qd(r,t,e){Oi(t,"offset"),(r[t]===void 0||r[t+e]===void 0)&&mo(t,r.length-(e+1))}function Sf(r,t,e,n,i,o){if(r>e||r3?t===0||t===BigInt(0)?d=`>= 0${s} and < 2${s} ** ${(o+1)*8}${s}`:d=`>= -(2${s} ** ${(o+1)*8-1}${s}) and < 2 ** ${(o+1)*8-1}${s}`:d=`>= ${t}${s} and <= ${e}${s}`,new Li.ERR_OUT_OF_RANGE("value",d,r)}qd(n,i,o)}function Oi(r,t){if(typeof r!="number")throw new Li.ERR_INVALID_ARG_TYPE(t,"number",r)}function mo(r,t,e){throw Math.floor(r)!==r?(Oi(r,e),new Li.ERR_OUT_OF_RANGE(e||"offset","an integer",r)):t<0?new Li.ERR_BUFFER_OUT_OF_BOUNDS:new Li.ERR_OUT_OF_RANGE(e||"offset",`>= ${e?1:0} and <= ${t}`,r)}var Kd=/[^+/0-9A-Za-z-_]/g;function Wd(r){if(r=r.split("=")[0],r=r.trim().replace(Kd,""),r.length<2)return"";for(;r.length%4!==0;)r=r+"=";return r}function vc(r,t){t=t||1/0;let e,n=r.length,i=null,o=[];for(let s=0;s55295&&e<57344){if(!i){if(e>56319){(t-=3)>-1&&o.push(239,191,189);continue}else if(s+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=e;continue}if(e<56320){(t-=3)>-1&&o.push(239,191,189),i=e;continue}e=(i-55296<<10|e-56320)+65536}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,e<128){if((t-=1)<0)break;o.push(e)}else if(e<2048){if((t-=2)<0)break;o.push(e>>6|192,e&63|128)}else if(e<65536){if((t-=3)<0)break;o.push(e>>12|224,e>>6&63|128,e&63|128)}else if(e<1114112){if((t-=4)<0)break;o.push(e>>18|240,e>>12&63|128,e>>6&63|128,e&63|128)}else throw new Error("Invalid code point")}return o}function Hd(r){let t=[];for(let e=0;e>8,i=e%256,o.push(i),o.push(n);return o}function Bf(r){return wc.toByteArray(Wd(r))}function xs(r,t,e,n){let i;for(i=0;i=t.length||i>=r.length);++i)t[i+e]=r[i];return i}function pn(r,t){return r instanceof t||r!=null&&r.constructor!=null&&r.constructor.name!=null&&r.constructor.name===t.name}function _c(r){return r!==r}var jd=function(){let r="0123456789abcdef",t=new Array(256);for(let e=0;e<16;++e){let n=e*16;for(let i=0;i<16;++i)t[n+i]=r[e]+r[i]}return t}();function Wn(r){return typeof BigInt>"u"?Gd:r}function Gd(){throw new Error("BigInt not supported")}});var ks=_e(()=>{});var Hf=_e(()=>{});var zc=_e(($f,Nc)=>{(function(r,t){"use strict";function e(y,a){if(!y)throw new Error(a||"Assertion failed")}function n(y,a){y.super_=a;var c=function(){};c.prototype=a.prototype,y.prototype=new c,y.prototype.constructor=y}function i(y,a,c){if(i.isBN(y))return y;this.negative=0,this.words=null,this.length=0,this.red=null,y!==null&&((a==="le"||a==="be")&&(c=a,a=10),this._init(y||0,a||10,c||"be"))}typeof r=="object"?r.exports=i:t.BN=i,i.BN=i,i.wordSize=26;var o;try{typeof window<"u"&&typeof window.Buffer<"u"?o=window.Buffer:o=Hf().Buffer}catch{}i.isBN=function(a){return a instanceof i?!0:a!==null&&typeof a=="object"&&a.constructor.wordSize===i.wordSize&&Array.isArray(a.words)},i.max=function(a,c){return a.cmp(c)>0?a:c},i.min=function(a,c){return a.cmp(c)<0?a:c},i.prototype._init=function(a,c,f){if(typeof a=="number")return this._initNumber(a,c,f);if(typeof a=="object")return this._initArray(a,c,f);c==="hex"&&(c=16),e(c===(c|0)&&c>=2&&c<=36),a=a.toString().replace(/\s+/g,"");var p=0;a[0]==="-"&&(p++,this.negative=1),p=0;p-=3)b=a[p]|a[p-1]<<8|a[p-2]<<16,this.words[m]|=b<>>26-P&67108863,P+=24,P>=26&&(P-=26,m++);else if(f==="le")for(p=0,m=0;p>>26-P&67108863,P+=24,P>=26&&(P-=26,m++);return this._strip()};function s(y,a){var c=y.charCodeAt(a);if(c>=48&&c<=57)return c-48;if(c>=65&&c<=70)return c-55;if(c>=97&&c<=102)return c-87;e(!1,"Invalid character in "+y)}function d(y,a,c){var f=s(y,c);return c-1>=a&&(f|=s(y,c-1)<<4),f}i.prototype._parseHex=function(a,c,f){this.length=Math.ceil((a.length-c)/6),this.words=new Array(this.length);for(var p=0;p=c;p-=2)P=d(a,c,p)<=18?(m-=18,b+=1,this.words[b]|=P>>>26):m+=8;else{var E=a.length-c;for(p=E%2===0?c+1:c;p=18?(m-=18,b+=1,this.words[b]|=P>>>26):m+=8}this._strip()};function g(y,a,c,f){for(var p=0,m=0,b=Math.min(y.length,c),P=a;P=49?m=E-49+10:E>=17?m=E-17+10:m=E,e(E>=0&&m1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},i.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{i.prototype[Symbol.for("nodejs.util.inspect.custom")]=L}catch{i.prototype.inspect=L}else i.prototype.inspect=L;function L(){return(this.red?""}var M=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],$=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],K=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(a,c){a=a||10,c=c|0||1;var f;if(a===16||a==="hex"){f="";for(var p=0,m=0,b=0;b>>24-p&16777215,p+=2,p>=26&&(p-=26,b--),m!==0||b!==this.length-1?f=M[6-E.length]+E+f:f=E+f}for(m!==0&&(f=m.toString(16)+f);f.length%c!==0;)f="0"+f;return this.negative!==0&&(f="-"+f),f}if(a===(a|0)&&a>=2&&a<=36){var u=$[a],l=K[a];f="";var _=this.clone();for(_.negative=0;!_.isZero();){var S=_.modrn(l).toString(a);_=_.idivn(l),_.isZero()?f=S+f:f=M[u-S.length]+S+f}for(this.isZero()&&(f="0"+f);f.length%c!==0;)f="0"+f;return this.negative!==0&&(f="-"+f),f}e(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var a=this.words[0];return this.length===2?a+=this.words[1]*67108864:this.length===3&&this.words[2]===1?a+=4503599627370496+this.words[1]*67108864:this.length>2&&e(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-a:a},i.prototype.toJSON=function(){return this.toString(16,2)},o&&(i.prototype.toBuffer=function(a,c){return this.toArrayLike(o,a,c)}),i.prototype.toArray=function(a,c){return this.toArrayLike(Array,a,c)};var et=function(a,c){return a.allocUnsafe?a.allocUnsafe(c):new a(c)};i.prototype.toArrayLike=function(a,c,f){this._strip();var p=this.byteLength(),m=f||Math.max(1,p);e(p<=m,"byte array longer than desired length"),e(m>0,"Requested array length <= 0");var b=et(a,m),P=c==="le"?"LE":"BE";return this["_toArrayLike"+P](b,p),b},i.prototype._toArrayLikeLE=function(a,c){for(var f=0,p=0,m=0,b=0;m>8&255),f>16&255),b===6?(f>24&255),p=0,b=0):(p=P>>>24,b+=2)}if(f=0&&(a[f--]=P>>8&255),f>=0&&(a[f--]=P>>16&255),b===6?(f>=0&&(a[f--]=P>>24&255),p=0,b=0):(p=P>>>24,b+=2)}if(f>=0)for(a[f--]=p;f>=0;)a[f--]=0},Math.clz32?i.prototype._countBits=function(a){return 32-Math.clz32(a)}:i.prototype._countBits=function(a){var c=a,f=0;return c>=4096&&(f+=13,c>>>=13),c>=64&&(f+=7,c>>>=7),c>=8&&(f+=4,c>>>=4),c>=2&&(f+=2,c>>>=2),f+c},i.prototype._zeroBits=function(a){if(a===0)return 26;var c=a,f=0;return(c&8191)===0&&(f+=13,c>>>=13),(c&127)===0&&(f+=7,c>>>=7),(c&15)===0&&(f+=4,c>>>=4),(c&3)===0&&(f+=2,c>>>=2),(c&1)===0&&f++,f},i.prototype.bitLength=function(){var a=this.words[this.length-1],c=this._countBits(a);return(this.length-1)*26+c};function tt(y){for(var a=new Array(y.bitLength()),c=0;c>>p&1}return a}i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var a=0,c=0;ca.length?this.clone().ior(a):a.clone().ior(this)},i.prototype.uor=function(a){return this.length>a.length?this.clone().iuor(a):a.clone().iuor(this)},i.prototype.iuand=function(a){var c;this.length>a.length?c=a:c=this;for(var f=0;fa.length?this.clone().iand(a):a.clone().iand(this)},i.prototype.uand=function(a){return this.length>a.length?this.clone().iuand(a):a.clone().iuand(this)},i.prototype.iuxor=function(a){var c,f;this.length>a.length?(c=this,f=a):(c=a,f=this);for(var p=0;pa.length?this.clone().ixor(a):a.clone().ixor(this)},i.prototype.uxor=function(a){return this.length>a.length?this.clone().iuxor(a):a.clone().iuxor(this)},i.prototype.inotn=function(a){e(typeof a=="number"&&a>=0);var c=Math.ceil(a/26)|0,f=a%26;this._expand(c),f>0&&c--;for(var p=0;p0&&(this.words[p]=~this.words[p]&67108863>>26-f),this._strip()},i.prototype.notn=function(a){return this.clone().inotn(a)},i.prototype.setn=function(a,c){e(typeof a=="number"&&a>=0);var f=a/26|0,p=a%26;return this._expand(f+1),c?this.words[f]=this.words[f]|1<a.length?(f=this,p=a):(f=a,p=this);for(var m=0,b=0;b>>26;for(;m!==0&&b>>26;if(this.length=f.length,m!==0)this.words[this.length]=m,this.length++;else if(f!==this)for(;ba.length?this.clone().iadd(a):a.clone().iadd(this)},i.prototype.isub=function(a){if(a.negative!==0){a.negative=0;var c=this.iadd(a);return a.negative=1,c._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(a),this.negative=1,this._normSign();var f=this.cmp(a);if(f===0)return this.negative=0,this.length=1,this.words[0]=0,this;var p,m;f>0?(p=this,m=a):(p=a,m=this);for(var b=0,P=0;P>26,this.words[P]=c&67108863;for(;b!==0&&P>26,this.words[P]=c&67108863;if(b===0&&P>>26,_=E&67108863,S=Math.min(u,a.length-1),O=Math.max(0,u-y.length+1);O<=S;O++){var F=u-O|0;p=y.words[F]|0,m=a.words[O]|0,b=p*m+_,l+=b/67108864|0,_=b&67108863}c.words[u]=_|0,E=l|0}return E!==0?c.words[u]=E|0:c.length--,c._strip()}var mt=function(a,c,f){var p=a.words,m=c.words,b=f.words,P=0,E,u,l,_=p[0]|0,S=_&8191,O=_>>>13,F=p[1]|0,D=F&8191,Z=F>>>13,N=p[2]|0,z=N&8191,U=N>>>13,H=p[3]|0,G=H&8191,nt=H>>>13,pt=p[4]|0,ot=pt&8191,xt=pt>>>13,qt=p[5]|0,Et=qt&8191,zt=qt>>>13,Ut=p[6]|0,bt=Ut&8191,Ct=Ut>>>13,$t=p[7]|0,Zt=$t&8191,xe=$t>>>13,re=p[8]|0,jt=re&8191,Xt=re>>>13,je=p[9]|0,pe=je&8191,Ie=je>>>13,Ye=m[0]|0,Xe=Ye&8191,Pe=Ye>>>13,tn=m[1]|0,Je=tn&8191,Ee=tn>>>13,_n=m[2]|0,Ge=_n&8191,Ve=_n>>>13,Rr=m[3]|0,ze=Rr&8191,Ae=Rr>>>13,Mi=m[4]|0,nr=Mi&8191,ar=Mi>>>13,ys=m[5]|0,Se=ys&8191,cr=ys>>>13,w=m[6]|0,I=w&8191,k=w>>>13,h=m[7]|0,R=h&8191,j=h>>>13,V=m[8]|0,rt=V&8191,ft=V>>>13,Ot=m[9]|0,gt=Ot&8191,Wt=Ot>>>13;f.negative=a.negative^c.negative,f.length=19,E=Math.imul(S,Xe),u=Math.imul(S,Pe),u=u+Math.imul(O,Xe)|0,l=Math.imul(O,Pe);var Bt=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,E=Math.imul(D,Xe),u=Math.imul(D,Pe),u=u+Math.imul(Z,Xe)|0,l=Math.imul(Z,Pe),E=E+Math.imul(S,Je)|0,u=u+Math.imul(S,Ee)|0,u=u+Math.imul(O,Je)|0,l=l+Math.imul(O,Ee)|0;var Yt=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,E=Math.imul(z,Xe),u=Math.imul(z,Pe),u=u+Math.imul(U,Xe)|0,l=Math.imul(U,Pe),E=E+Math.imul(D,Je)|0,u=u+Math.imul(D,Ee)|0,u=u+Math.imul(Z,Je)|0,l=l+Math.imul(Z,Ee)|0,E=E+Math.imul(S,Ge)|0,u=u+Math.imul(S,Ve)|0,u=u+Math.imul(O,Ge)|0,l=l+Math.imul(O,Ve)|0;var Jt=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(Jt>>>26)|0,Jt&=67108863,E=Math.imul(G,Xe),u=Math.imul(G,Pe),u=u+Math.imul(nt,Xe)|0,l=Math.imul(nt,Pe),E=E+Math.imul(z,Je)|0,u=u+Math.imul(z,Ee)|0,u=u+Math.imul(U,Je)|0,l=l+Math.imul(U,Ee)|0,E=E+Math.imul(D,Ge)|0,u=u+Math.imul(D,Ve)|0,u=u+Math.imul(Z,Ge)|0,l=l+Math.imul(Z,Ve)|0,E=E+Math.imul(S,ze)|0,u=u+Math.imul(S,Ae)|0,u=u+Math.imul(O,ze)|0,l=l+Math.imul(O,Ae)|0;var fe=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(fe>>>26)|0,fe&=67108863,E=Math.imul(ot,Xe),u=Math.imul(ot,Pe),u=u+Math.imul(xt,Xe)|0,l=Math.imul(xt,Pe),E=E+Math.imul(G,Je)|0,u=u+Math.imul(G,Ee)|0,u=u+Math.imul(nt,Je)|0,l=l+Math.imul(nt,Ee)|0,E=E+Math.imul(z,Ge)|0,u=u+Math.imul(z,Ve)|0,u=u+Math.imul(U,Ge)|0,l=l+Math.imul(U,Ve)|0,E=E+Math.imul(D,ze)|0,u=u+Math.imul(D,Ae)|0,u=u+Math.imul(Z,ze)|0,l=l+Math.imul(Z,Ae)|0,E=E+Math.imul(S,nr)|0,u=u+Math.imul(S,ar)|0,u=u+Math.imul(O,nr)|0,l=l+Math.imul(O,ar)|0;var ce=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(ce>>>26)|0,ce&=67108863,E=Math.imul(Et,Xe),u=Math.imul(Et,Pe),u=u+Math.imul(zt,Xe)|0,l=Math.imul(zt,Pe),E=E+Math.imul(ot,Je)|0,u=u+Math.imul(ot,Ee)|0,u=u+Math.imul(xt,Je)|0,l=l+Math.imul(xt,Ee)|0,E=E+Math.imul(G,Ge)|0,u=u+Math.imul(G,Ve)|0,u=u+Math.imul(nt,Ge)|0,l=l+Math.imul(nt,Ve)|0,E=E+Math.imul(z,ze)|0,u=u+Math.imul(z,Ae)|0,u=u+Math.imul(U,ze)|0,l=l+Math.imul(U,Ae)|0,E=E+Math.imul(D,nr)|0,u=u+Math.imul(D,ar)|0,u=u+Math.imul(Z,nr)|0,l=l+Math.imul(Z,ar)|0,E=E+Math.imul(S,Se)|0,u=u+Math.imul(S,cr)|0,u=u+Math.imul(O,Se)|0,l=l+Math.imul(O,cr)|0;var Qt=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,E=Math.imul(bt,Xe),u=Math.imul(bt,Pe),u=u+Math.imul(Ct,Xe)|0,l=Math.imul(Ct,Pe),E=E+Math.imul(Et,Je)|0,u=u+Math.imul(Et,Ee)|0,u=u+Math.imul(zt,Je)|0,l=l+Math.imul(zt,Ee)|0,E=E+Math.imul(ot,Ge)|0,u=u+Math.imul(ot,Ve)|0,u=u+Math.imul(xt,Ge)|0,l=l+Math.imul(xt,Ve)|0,E=E+Math.imul(G,ze)|0,u=u+Math.imul(G,Ae)|0,u=u+Math.imul(nt,ze)|0,l=l+Math.imul(nt,Ae)|0,E=E+Math.imul(z,nr)|0,u=u+Math.imul(z,ar)|0,u=u+Math.imul(U,nr)|0,l=l+Math.imul(U,ar)|0,E=E+Math.imul(D,Se)|0,u=u+Math.imul(D,cr)|0,u=u+Math.imul(Z,Se)|0,l=l+Math.imul(Z,cr)|0,E=E+Math.imul(S,I)|0,u=u+Math.imul(S,k)|0,u=u+Math.imul(O,I)|0,l=l+Math.imul(O,k)|0;var ne=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(ne>>>26)|0,ne&=67108863,E=Math.imul(Zt,Xe),u=Math.imul(Zt,Pe),u=u+Math.imul(xe,Xe)|0,l=Math.imul(xe,Pe),E=E+Math.imul(bt,Je)|0,u=u+Math.imul(bt,Ee)|0,u=u+Math.imul(Ct,Je)|0,l=l+Math.imul(Ct,Ee)|0,E=E+Math.imul(Et,Ge)|0,u=u+Math.imul(Et,Ve)|0,u=u+Math.imul(zt,Ge)|0,l=l+Math.imul(zt,Ve)|0,E=E+Math.imul(ot,ze)|0,u=u+Math.imul(ot,Ae)|0,u=u+Math.imul(xt,ze)|0,l=l+Math.imul(xt,Ae)|0,E=E+Math.imul(G,nr)|0,u=u+Math.imul(G,ar)|0,u=u+Math.imul(nt,nr)|0,l=l+Math.imul(nt,ar)|0,E=E+Math.imul(z,Se)|0,u=u+Math.imul(z,cr)|0,u=u+Math.imul(U,Se)|0,l=l+Math.imul(U,cr)|0,E=E+Math.imul(D,I)|0,u=u+Math.imul(D,k)|0,u=u+Math.imul(Z,I)|0,l=l+Math.imul(Z,k)|0,E=E+Math.imul(S,R)|0,u=u+Math.imul(S,j)|0,u=u+Math.imul(O,R)|0,l=l+Math.imul(O,j)|0;var te=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(te>>>26)|0,te&=67108863,E=Math.imul(jt,Xe),u=Math.imul(jt,Pe),u=u+Math.imul(Xt,Xe)|0,l=Math.imul(Xt,Pe),E=E+Math.imul(Zt,Je)|0,u=u+Math.imul(Zt,Ee)|0,u=u+Math.imul(xe,Je)|0,l=l+Math.imul(xe,Ee)|0,E=E+Math.imul(bt,Ge)|0,u=u+Math.imul(bt,Ve)|0,u=u+Math.imul(Ct,Ge)|0,l=l+Math.imul(Ct,Ve)|0,E=E+Math.imul(Et,ze)|0,u=u+Math.imul(Et,Ae)|0,u=u+Math.imul(zt,ze)|0,l=l+Math.imul(zt,Ae)|0,E=E+Math.imul(ot,nr)|0,u=u+Math.imul(ot,ar)|0,u=u+Math.imul(xt,nr)|0,l=l+Math.imul(xt,ar)|0,E=E+Math.imul(G,Se)|0,u=u+Math.imul(G,cr)|0,u=u+Math.imul(nt,Se)|0,l=l+Math.imul(nt,cr)|0,E=E+Math.imul(z,I)|0,u=u+Math.imul(z,k)|0,u=u+Math.imul(U,I)|0,l=l+Math.imul(U,k)|0,E=E+Math.imul(D,R)|0,u=u+Math.imul(D,j)|0,u=u+Math.imul(Z,R)|0,l=l+Math.imul(Z,j)|0,E=E+Math.imul(S,rt)|0,u=u+Math.imul(S,ft)|0,u=u+Math.imul(O,rt)|0,l=l+Math.imul(O,ft)|0;var Rt=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,E=Math.imul(pe,Xe),u=Math.imul(pe,Pe),u=u+Math.imul(Ie,Xe)|0,l=Math.imul(Ie,Pe),E=E+Math.imul(jt,Je)|0,u=u+Math.imul(jt,Ee)|0,u=u+Math.imul(Xt,Je)|0,l=l+Math.imul(Xt,Ee)|0,E=E+Math.imul(Zt,Ge)|0,u=u+Math.imul(Zt,Ve)|0,u=u+Math.imul(xe,Ge)|0,l=l+Math.imul(xe,Ve)|0,E=E+Math.imul(bt,ze)|0,u=u+Math.imul(bt,Ae)|0,u=u+Math.imul(Ct,ze)|0,l=l+Math.imul(Ct,Ae)|0,E=E+Math.imul(Et,nr)|0,u=u+Math.imul(Et,ar)|0,u=u+Math.imul(zt,nr)|0,l=l+Math.imul(zt,ar)|0,E=E+Math.imul(ot,Se)|0,u=u+Math.imul(ot,cr)|0,u=u+Math.imul(xt,Se)|0,l=l+Math.imul(xt,cr)|0,E=E+Math.imul(G,I)|0,u=u+Math.imul(G,k)|0,u=u+Math.imul(nt,I)|0,l=l+Math.imul(nt,k)|0,E=E+Math.imul(z,R)|0,u=u+Math.imul(z,j)|0,u=u+Math.imul(U,R)|0,l=l+Math.imul(U,j)|0,E=E+Math.imul(D,rt)|0,u=u+Math.imul(D,ft)|0,u=u+Math.imul(Z,rt)|0,l=l+Math.imul(Z,ft)|0,E=E+Math.imul(S,gt)|0,u=u+Math.imul(S,Wt)|0,u=u+Math.imul(O,gt)|0,l=l+Math.imul(O,Wt)|0;var Nt=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,E=Math.imul(pe,Je),u=Math.imul(pe,Ee),u=u+Math.imul(Ie,Je)|0,l=Math.imul(Ie,Ee),E=E+Math.imul(jt,Ge)|0,u=u+Math.imul(jt,Ve)|0,u=u+Math.imul(Xt,Ge)|0,l=l+Math.imul(Xt,Ve)|0,E=E+Math.imul(Zt,ze)|0,u=u+Math.imul(Zt,Ae)|0,u=u+Math.imul(xe,ze)|0,l=l+Math.imul(xe,Ae)|0,E=E+Math.imul(bt,nr)|0,u=u+Math.imul(bt,ar)|0,u=u+Math.imul(Ct,nr)|0,l=l+Math.imul(Ct,ar)|0,E=E+Math.imul(Et,Se)|0,u=u+Math.imul(Et,cr)|0,u=u+Math.imul(zt,Se)|0,l=l+Math.imul(zt,cr)|0,E=E+Math.imul(ot,I)|0,u=u+Math.imul(ot,k)|0,u=u+Math.imul(xt,I)|0,l=l+Math.imul(xt,k)|0,E=E+Math.imul(G,R)|0,u=u+Math.imul(G,j)|0,u=u+Math.imul(nt,R)|0,l=l+Math.imul(nt,j)|0,E=E+Math.imul(z,rt)|0,u=u+Math.imul(z,ft)|0,u=u+Math.imul(U,rt)|0,l=l+Math.imul(U,ft)|0,E=E+Math.imul(D,gt)|0,u=u+Math.imul(D,Wt)|0,u=u+Math.imul(Z,gt)|0,l=l+Math.imul(Z,Wt)|0;var It=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(It>>>26)|0,It&=67108863,E=Math.imul(pe,Ge),u=Math.imul(pe,Ve),u=u+Math.imul(Ie,Ge)|0,l=Math.imul(Ie,Ve),E=E+Math.imul(jt,ze)|0,u=u+Math.imul(jt,Ae)|0,u=u+Math.imul(Xt,ze)|0,l=l+Math.imul(Xt,Ae)|0,E=E+Math.imul(Zt,nr)|0,u=u+Math.imul(Zt,ar)|0,u=u+Math.imul(xe,nr)|0,l=l+Math.imul(xe,ar)|0,E=E+Math.imul(bt,Se)|0,u=u+Math.imul(bt,cr)|0,u=u+Math.imul(Ct,Se)|0,l=l+Math.imul(Ct,cr)|0,E=E+Math.imul(Et,I)|0,u=u+Math.imul(Et,k)|0,u=u+Math.imul(zt,I)|0,l=l+Math.imul(zt,k)|0,E=E+Math.imul(ot,R)|0,u=u+Math.imul(ot,j)|0,u=u+Math.imul(xt,R)|0,l=l+Math.imul(xt,j)|0,E=E+Math.imul(G,rt)|0,u=u+Math.imul(G,ft)|0,u=u+Math.imul(nt,rt)|0,l=l+Math.imul(nt,ft)|0,E=E+Math.imul(z,gt)|0,u=u+Math.imul(z,Wt)|0,u=u+Math.imul(U,gt)|0,l=l+Math.imul(U,Wt)|0;var Mt=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,E=Math.imul(pe,ze),u=Math.imul(pe,Ae),u=u+Math.imul(Ie,ze)|0,l=Math.imul(Ie,Ae),E=E+Math.imul(jt,nr)|0,u=u+Math.imul(jt,ar)|0,u=u+Math.imul(Xt,nr)|0,l=l+Math.imul(Xt,ar)|0,E=E+Math.imul(Zt,Se)|0,u=u+Math.imul(Zt,cr)|0,u=u+Math.imul(xe,Se)|0,l=l+Math.imul(xe,cr)|0,E=E+Math.imul(bt,I)|0,u=u+Math.imul(bt,k)|0,u=u+Math.imul(Ct,I)|0,l=l+Math.imul(Ct,k)|0,E=E+Math.imul(Et,R)|0,u=u+Math.imul(Et,j)|0,u=u+Math.imul(zt,R)|0,l=l+Math.imul(zt,j)|0,E=E+Math.imul(ot,rt)|0,u=u+Math.imul(ot,ft)|0,u=u+Math.imul(xt,rt)|0,l=l+Math.imul(xt,ft)|0,E=E+Math.imul(G,gt)|0,u=u+Math.imul(G,Wt)|0,u=u+Math.imul(nt,gt)|0,l=l+Math.imul(nt,Wt)|0;var Lt=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,E=Math.imul(pe,nr),u=Math.imul(pe,ar),u=u+Math.imul(Ie,nr)|0,l=Math.imul(Ie,ar),E=E+Math.imul(jt,Se)|0,u=u+Math.imul(jt,cr)|0,u=u+Math.imul(Xt,Se)|0,l=l+Math.imul(Xt,cr)|0,E=E+Math.imul(Zt,I)|0,u=u+Math.imul(Zt,k)|0,u=u+Math.imul(xe,I)|0,l=l+Math.imul(xe,k)|0,E=E+Math.imul(bt,R)|0,u=u+Math.imul(bt,j)|0,u=u+Math.imul(Ct,R)|0,l=l+Math.imul(Ct,j)|0,E=E+Math.imul(Et,rt)|0,u=u+Math.imul(Et,ft)|0,u=u+Math.imul(zt,rt)|0,l=l+Math.imul(zt,ft)|0,E=E+Math.imul(ot,gt)|0,u=u+Math.imul(ot,Wt)|0,u=u+Math.imul(xt,gt)|0,l=l+Math.imul(xt,Wt)|0;var vt=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(vt>>>26)|0,vt&=67108863,E=Math.imul(pe,Se),u=Math.imul(pe,cr),u=u+Math.imul(Ie,Se)|0,l=Math.imul(Ie,cr),E=E+Math.imul(jt,I)|0,u=u+Math.imul(jt,k)|0,u=u+Math.imul(Xt,I)|0,l=l+Math.imul(Xt,k)|0,E=E+Math.imul(Zt,R)|0,u=u+Math.imul(Zt,j)|0,u=u+Math.imul(xe,R)|0,l=l+Math.imul(xe,j)|0,E=E+Math.imul(bt,rt)|0,u=u+Math.imul(bt,ft)|0,u=u+Math.imul(Ct,rt)|0,l=l+Math.imul(Ct,ft)|0,E=E+Math.imul(Et,gt)|0,u=u+Math.imul(Et,Wt)|0,u=u+Math.imul(zt,gt)|0,l=l+Math.imul(zt,Wt)|0;var X=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(X>>>26)|0,X&=67108863,E=Math.imul(pe,I),u=Math.imul(pe,k),u=u+Math.imul(Ie,I)|0,l=Math.imul(Ie,k),E=E+Math.imul(jt,R)|0,u=u+Math.imul(jt,j)|0,u=u+Math.imul(Xt,R)|0,l=l+Math.imul(Xt,j)|0,E=E+Math.imul(Zt,rt)|0,u=u+Math.imul(Zt,ft)|0,u=u+Math.imul(xe,rt)|0,l=l+Math.imul(xe,ft)|0,E=E+Math.imul(bt,gt)|0,u=u+Math.imul(bt,Wt)|0,u=u+Math.imul(Ct,gt)|0,l=l+Math.imul(Ct,Wt)|0;var J=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(J>>>26)|0,J&=67108863,E=Math.imul(pe,R),u=Math.imul(pe,j),u=u+Math.imul(Ie,R)|0,l=Math.imul(Ie,j),E=E+Math.imul(jt,rt)|0,u=u+Math.imul(jt,ft)|0,u=u+Math.imul(Xt,rt)|0,l=l+Math.imul(Xt,ft)|0,E=E+Math.imul(Zt,gt)|0,u=u+Math.imul(Zt,Wt)|0,u=u+Math.imul(xe,gt)|0,l=l+Math.imul(xe,Wt)|0;var lt=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(lt>>>26)|0,lt&=67108863,E=Math.imul(pe,rt),u=Math.imul(pe,ft),u=u+Math.imul(Ie,rt)|0,l=Math.imul(Ie,ft),E=E+Math.imul(jt,gt)|0,u=u+Math.imul(jt,Wt)|0,u=u+Math.imul(Xt,gt)|0,l=l+Math.imul(Xt,Wt)|0;var ct=(P+E|0)+((u&8191)<<13)|0;P=(l+(u>>>13)|0)+(ct>>>26)|0,ct&=67108863,E=Math.imul(pe,gt),u=Math.imul(pe,Wt),u=u+Math.imul(Ie,gt)|0,l=Math.imul(Ie,Wt);var ut=(P+E|0)+((u&8191)<<13)|0;return P=(l+(u>>>13)|0)+(ut>>>26)|0,ut&=67108863,b[0]=Bt,b[1]=Yt,b[2]=Jt,b[3]=fe,b[4]=ce,b[5]=Qt,b[6]=ne,b[7]=te,b[8]=Rt,b[9]=Nt,b[10]=It,b[11]=Mt,b[12]=Lt,b[13]=vt,b[14]=X,b[15]=J,b[16]=lt,b[17]=ct,b[18]=ut,P!==0&&(b[19]=P,f.length++),f};Math.imul||(mt=ht);function Q(y,a,c){c.negative=a.negative^y.negative,c.length=y.length+a.length;for(var f=0,p=0,m=0;m>>26)|0,p+=b>>>26,b&=67108863}c.words[m]=P,f=b,b=p}return f!==0?c.words[m]=f:c.length--,c._strip()}function _t(y,a,c){return Q(y,a,c)}i.prototype.mulTo=function(a,c){var f,p=this.length+a.length;return this.length===10&&a.length===10?f=mt(this,a,c):p<63?f=ht(this,a,c):p<1024?f=Q(this,a,c):f=_t(this,a,c),f};function Tt(y,a){this.x=y,this.y=a}Tt.prototype.makeRBT=function(a){for(var c=new Array(a),f=i.prototype._countBits(a)-1,p=0;p>=1;return p},Tt.prototype.permute=function(a,c,f,p,m,b){for(var P=0;P>>1)m++;return 1<>>13,f[2*b+1]=m&8191,m=m>>>13;for(b=2*c;b>=26,f+=m/67108864|0,f+=b>>>26,this.words[p]=b&67108863}return f!==0&&(this.words[p]=f,this.length++),c?this.ineg():this},i.prototype.muln=function(a){return this.clone().imuln(a)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(a){var c=tt(a);if(c.length===0)return new i(1);for(var f=this,p=0;p=0);var c=a%26,f=(a-c)/26,p=67108863>>>26-c<<26-c,m;if(c!==0){var b=0;for(m=0;m>>26-c}b&&(this.words[m]=b,this.length++)}if(f!==0){for(m=this.length-1;m>=0;m--)this.words[m+f]=this.words[m];for(m=0;m=0);var p;c?p=(c-c%26)/26:p=0;var m=a%26,b=Math.min((a-m)/26,this.length),P=67108863^67108863>>>m<b)for(this.length-=b,u=0;u=0&&(l!==0||u>=p);u--){var _=this.words[u]|0;this.words[u]=l<<26-m|_>>>m,l=_&P}return E&&l!==0&&(E.words[E.length++]=l),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},i.prototype.ishrn=function(a,c,f){return e(this.negative===0),this.iushrn(a,c,f)},i.prototype.shln=function(a){return this.clone().ishln(a)},i.prototype.ushln=function(a){return this.clone().iushln(a)},i.prototype.shrn=function(a){return this.clone().ishrn(a)},i.prototype.ushrn=function(a){return this.clone().iushrn(a)},i.prototype.testn=function(a){e(typeof a=="number"&&a>=0);var c=a%26,f=(a-c)/26,p=1<=0);var c=a%26,f=(a-c)/26;if(e(this.negative===0,"imaskn works only with positive numbers"),this.length<=f)return this;if(c!==0&&f++,this.length=Math.min(f,this.length),c!==0){var p=67108863^67108863>>>c<=67108864;c++)this.words[c]-=67108864,c===this.length-1?this.words[c+1]=1:this.words[c+1]++;return this.length=Math.max(this.length,c+1),this},i.prototype.isubn=function(a){if(e(typeof a=="number"),e(a<67108864),a<0)return this.iaddn(-a);if(this.negative!==0)return this.negative=0,this.iaddn(a),this.negative=1,this;if(this.words[0]-=a,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var c=0;c>26)-(E/67108864|0),this.words[m+f]=b&67108863}for(;m>26,this.words[m+f]=b&67108863;if(P===0)return this._strip();for(e(P===-1),P=0,m=0;m>26,this.words[m]=b&67108863;return this.negative=1,this._strip()},i.prototype._wordDiv=function(a,c){var f=this.length-a.length,p=this.clone(),m=a,b=m.words[m.length-1]|0,P=this._countBits(b);f=26-P,f!==0&&(m=m.ushln(f),p.iushln(f),b=m.words[m.length-1]|0);var E=p.length-m.length,u;if(c!=="mod"){u=new i(null),u.length=E+1,u.words=new Array(u.length);for(var l=0;l=0;S--){var O=(p.words[m.length+S]|0)*67108864+(p.words[m.length+S-1]|0);for(O=Math.min(O/b|0,67108863),p._ishlnsubmul(m,O,S);p.negative!==0;)O--,p.negative=0,p._ishlnsubmul(m,1,S),p.isZero()||(p.negative^=1);u&&(u.words[S]=O)}return u&&u._strip(),p._strip(),c!=="div"&&f!==0&&p.iushrn(f),{div:u||null,mod:p}},i.prototype.divmod=function(a,c,f){if(e(!a.isZero()),this.isZero())return{div:new i(0),mod:new i(0)};var p,m,b;return this.negative!==0&&a.negative===0?(b=this.neg().divmod(a,c),c!=="mod"&&(p=b.div.neg()),c!=="div"&&(m=b.mod.neg(),f&&m.negative!==0&&m.iadd(a)),{div:p,mod:m}):this.negative===0&&a.negative!==0?(b=this.divmod(a.neg(),c),c!=="mod"&&(p=b.div.neg()),{div:p,mod:b.mod}):(this.negative&a.negative)!==0?(b=this.neg().divmod(a.neg(),c),c!=="div"&&(m=b.mod.neg(),f&&m.negative!==0&&m.isub(a)),{div:b.div,mod:m}):a.length>this.length||this.cmp(a)<0?{div:new i(0),mod:this}:a.length===1?c==="div"?{div:this.divn(a.words[0]),mod:null}:c==="mod"?{div:null,mod:new i(this.modrn(a.words[0]))}:{div:this.divn(a.words[0]),mod:new i(this.modrn(a.words[0]))}:this._wordDiv(a,c)},i.prototype.div=function(a){return this.divmod(a,"div",!1).div},i.prototype.mod=function(a){return this.divmod(a,"mod",!1).mod},i.prototype.umod=function(a){return this.divmod(a,"mod",!0).mod},i.prototype.divRound=function(a){var c=this.divmod(a);if(c.mod.isZero())return c.div;var f=c.div.negative!==0?c.mod.isub(a):c.mod,p=a.ushrn(1),m=a.andln(1),b=f.cmp(p);return b<0||m===1&&b===0?c.div:c.div.negative!==0?c.div.isubn(1):c.div.iaddn(1)},i.prototype.modrn=function(a){var c=a<0;c&&(a=-a),e(a<=67108863);for(var f=(1<<26)%a,p=0,m=this.length-1;m>=0;m--)p=(f*p+(this.words[m]|0))%a;return c?-p:p},i.prototype.modn=function(a){return this.modrn(a)},i.prototype.idivn=function(a){var c=a<0;c&&(a=-a),e(a<=67108863);for(var f=0,p=this.length-1;p>=0;p--){var m=(this.words[p]|0)+f*67108864;this.words[p]=m/a|0,f=m%a}return this._strip(),c?this.ineg():this},i.prototype.divn=function(a){return this.clone().idivn(a)},i.prototype.egcd=function(a){e(a.negative===0),e(!a.isZero());var c=this,f=a.clone();c.negative!==0?c=c.umod(a):c=c.clone();for(var p=new i(1),m=new i(0),b=new i(0),P=new i(1),E=0;c.isEven()&&f.isEven();)c.iushrn(1),f.iushrn(1),++E;for(var u=f.clone(),l=c.clone();!c.isZero();){for(var _=0,S=1;(c.words[0]&S)===0&&_<26;++_,S<<=1);if(_>0)for(c.iushrn(_);_-- >0;)(p.isOdd()||m.isOdd())&&(p.iadd(u),m.isub(l)),p.iushrn(1),m.iushrn(1);for(var O=0,F=1;(f.words[0]&F)===0&&O<26;++O,F<<=1);if(O>0)for(f.iushrn(O);O-- >0;)(b.isOdd()||P.isOdd())&&(b.iadd(u),P.isub(l)),b.iushrn(1),P.iushrn(1);c.cmp(f)>=0?(c.isub(f),p.isub(b),m.isub(P)):(f.isub(c),b.isub(p),P.isub(m))}return{a:b,b:P,gcd:f.iushln(E)}},i.prototype._invmp=function(a){e(a.negative===0),e(!a.isZero());var c=this,f=a.clone();c.negative!==0?c=c.umod(a):c=c.clone();for(var p=new i(1),m=new i(0),b=f.clone();c.cmpn(1)>0&&f.cmpn(1)>0;){for(var P=0,E=1;(c.words[0]&E)===0&&P<26;++P,E<<=1);if(P>0)for(c.iushrn(P);P-- >0;)p.isOdd()&&p.iadd(b),p.iushrn(1);for(var u=0,l=1;(f.words[0]&l)===0&&u<26;++u,l<<=1);if(u>0)for(f.iushrn(u);u-- >0;)m.isOdd()&&m.iadd(b),m.iushrn(1);c.cmp(f)>=0?(c.isub(f),p.isub(m)):(f.isub(c),m.isub(p))}var _;return c.cmpn(1)===0?_=p:_=m,_.cmpn(0)<0&&_.iadd(a),_},i.prototype.gcd=function(a){if(this.isZero())return a.abs();if(a.isZero())return this.abs();var c=this.clone(),f=a.clone();c.negative=0,f.negative=0;for(var p=0;c.isEven()&&f.isEven();p++)c.iushrn(1),f.iushrn(1);do{for(;c.isEven();)c.iushrn(1);for(;f.isEven();)f.iushrn(1);var m=c.cmp(f);if(m<0){var b=c;c=f,f=b}else if(m===0||f.cmpn(1)===0)break;c.isub(f)}while(!0);return f.iushln(p)},i.prototype.invm=function(a){return this.egcd(a).a.umod(a)},i.prototype.isEven=function(){return(this.words[0]&1)===0},i.prototype.isOdd=function(){return(this.words[0]&1)===1},i.prototype.andln=function(a){return this.words[0]&a},i.prototype.bincn=function(a){e(typeof a=="number");var c=a%26,f=(a-c)/26,p=1<>>26,P&=67108863,this.words[b]=P}return m!==0&&(this.words[b]=m,this.length++),this},i.prototype.isZero=function(){return this.length===1&&this.words[0]===0},i.prototype.cmpn=function(a){var c=a<0;if(this.negative!==0&&!c)return-1;if(this.negative===0&&c)return 1;this._strip();var f;if(this.length>1)f=1;else{c&&(a=-a),e(a<=67108863,"Number is too big");var p=this.words[0]|0;f=p===a?0:pa.length)return 1;if(this.length=0;f--){var p=this.words[f]|0,m=a.words[f]|0;if(p!==m){pm&&(c=1);break}}return c},i.prototype.gtn=function(a){return this.cmpn(a)===1},i.prototype.gt=function(a){return this.cmp(a)===1},i.prototype.gten=function(a){return this.cmpn(a)>=0},i.prototype.gte=function(a){return this.cmp(a)>=0},i.prototype.ltn=function(a){return this.cmpn(a)===-1},i.prototype.lt=function(a){return this.cmp(a)===-1},i.prototype.lten=function(a){return this.cmpn(a)<=0},i.prototype.lte=function(a){return this.cmp(a)<=0},i.prototype.eqn=function(a){return this.cmpn(a)===0},i.prototype.eq=function(a){return this.cmp(a)===0},i.red=function(a){return new B(a)},i.prototype.toRed=function(a){return e(!this.red,"Already a number in reduction context"),e(this.negative===0,"red works only with positives"),a.convertTo(this)._forceRed(a)},i.prototype.fromRed=function(){return e(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(a){return this.red=a,this},i.prototype.forceRed=function(a){return e(!this.red,"Already a number in reduction context"),this._forceRed(a)},i.prototype.redAdd=function(a){return e(this.red,"redAdd works only with red numbers"),this.red.add(this,a)},i.prototype.redIAdd=function(a){return e(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,a)},i.prototype.redSub=function(a){return e(this.red,"redSub works only with red numbers"),this.red.sub(this,a)},i.prototype.redISub=function(a){return e(this.red,"redISub works only with red numbers"),this.red.isub(this,a)},i.prototype.redShl=function(a){return e(this.red,"redShl works only with red numbers"),this.red.shl(this,a)},i.prototype.redMul=function(a){return e(this.red,"redMul works only with red numbers"),this.red._verify2(this,a),this.red.mul(this,a)},i.prototype.redIMul=function(a){return e(this.red,"redMul works only with red numbers"),this.red._verify2(this,a),this.red.imul(this,a)},i.prototype.redSqr=function(){return e(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return e(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return e(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return e(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return e(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(a){return e(this.red&&!a.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,a)};var ee={k256:null,p224:null,p192:null,p25519:null};function Ft(y,a){this.name=y,this.p=new i(a,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}Ft.prototype._tmp=function(){var a=new i(null);return a.words=new Array(Math.ceil(this.n/13)),a},Ft.prototype.ireduce=function(a){var c=a,f;do this.split(c,this.tmp),c=this.imulK(c),c=c.iadd(this.tmp),f=c.bitLength();while(f>this.n);var p=f0?c.isub(this.p):c.strip!==void 0?c.strip():c._strip(),c},Ft.prototype.split=function(a,c){a.iushrn(this.n,0,c)},Ft.prototype.imulK=function(a){return a.imul(this.k)};function Dt(){Ft.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Dt,Ft),Dt.prototype.split=function(a,c){for(var f=4194303,p=Math.min(a.length,9),m=0;m>>22,b=P}b>>>=22,a.words[m-10]=b,b===0&&a.length>10?a.length-=10:a.length-=9},Dt.prototype.imulK=function(a){a.words[a.length]=0,a.words[a.length+1]=0,a.length+=2;for(var c=0,f=0;f>>=26,a.words[f]=m,c=p}return c!==0&&(a.words[a.length++]=c),a},i._prime=function(a){if(ee[a])return ee[a];var c;if(a==="k256")c=new Dt;else if(a==="p224")c=new T;else if(a==="p192")c=new C;else if(a==="p25519")c=new x;else throw new Error("Unknown prime "+a);return ee[a]=c,c};function B(y){if(typeof y=="string"){var a=i._prime(y);this.m=a.p,this.prime=a}else e(y.gtn(1),"modulus must be greater than 1"),this.m=y,this.prime=null}B.prototype._verify1=function(a){e(a.negative===0,"red works only with positives"),e(a.red,"red works only with red numbers")},B.prototype._verify2=function(a,c){e((a.negative|c.negative)===0,"red works only with positives"),e(a.red&&a.red===c.red,"red works only with red numbers")},B.prototype.imod=function(a){return this.prime?this.prime.ireduce(a)._forceRed(this):(A(a,a.umod(this.m)._forceRed(this)),a)},B.prototype.neg=function(a){return a.isZero()?a.clone():this.m.sub(a)._forceRed(this)},B.prototype.add=function(a,c){this._verify2(a,c);var f=a.add(c);return f.cmp(this.m)>=0&&f.isub(this.m),f._forceRed(this)},B.prototype.iadd=function(a,c){this._verify2(a,c);var f=a.iadd(c);return f.cmp(this.m)>=0&&f.isub(this.m),f},B.prototype.sub=function(a,c){this._verify2(a,c);var f=a.sub(c);return f.cmpn(0)<0&&f.iadd(this.m),f._forceRed(this)},B.prototype.isub=function(a,c){this._verify2(a,c);var f=a.isub(c);return f.cmpn(0)<0&&f.iadd(this.m),f},B.prototype.shl=function(a,c){return this._verify1(a),this.imod(a.ushln(c))},B.prototype.imul=function(a,c){return this._verify2(a,c),this.imod(a.imul(c))},B.prototype.mul=function(a,c){return this._verify2(a,c),this.imod(a.mul(c))},B.prototype.isqr=function(a){return this.imul(a,a.clone())},B.prototype.sqr=function(a){return this.mul(a,a)},B.prototype.sqrt=function(a){if(a.isZero())return a.clone();var c=this.m.andln(3);if(e(c%2===1),c===3){var f=this.m.add(new i(1)).iushrn(2);return this.pow(a,f)}for(var p=this.m.subn(1),m=0;!p.isZero()&&p.andln(1)===0;)m++,p.iushrn(1);e(!p.isZero());var b=new i(1).toRed(this),P=b.redNeg(),E=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new i(2*u*u).toRed(this);this.pow(u,E).cmp(P)!==0;)u.redIAdd(P);for(var l=this.pow(u,p),_=this.pow(a,p.addn(1).iushrn(1)),S=this.pow(a,p),O=m;S.cmp(b)!==0;){for(var F=S,D=0;F.cmp(b)!==0;D++)F=F.redSqr();e(D=0;m--){for(var l=c.words[m],_=u-1;_>=0;_--){var S=l>>_&1;if(b!==p[0]&&(b=this.sqr(b)),S===0&&P===0){E=0;continue}P<<=1,P|=S,E++,!(E!==f&&(m!==0||_!==0))&&(b=this.mul(b,p[P]),E=0,P=0)}u=26}return b},B.prototype.convertTo=function(a){var c=a.umod(this.m);return c===a?c.clone():c},B.prototype.convertFrom=function(a){var c=a.clone();return c.red=null,c},i.mont=function(a){return new v(a)};function v(y){B.call(this,y),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(v,B),v.prototype.convertTo=function(a){return this.imod(a.ushln(this.shift))},v.prototype.convertFrom=function(a){var c=this.imod(a.mul(this.rinv));return c.red=null,c},v.prototype.imul=function(a,c){if(a.isZero()||c.isZero())return a.words[0]=0,a.length=1,a;var f=a.imul(c),p=f.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),m=f.isub(p).iushrn(this.shift),b=m;return m.cmp(this.m)>=0?b=m.isub(this.m):m.cmpn(0)<0&&(b=m.iadd(this.m)),b._forceRed(this)},v.prototype.mul=function(a,c){if(a.isZero()||c.isZero())return new i(0)._forceRed(this);var f=a.mul(c),p=f.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),m=f.isub(p).iushrn(this.shift),b=m;return m.cmp(this.m)>=0?b=m.isub(this.m):m.cmpn(0)<0&&(b=m.iadd(this.m)),b._forceRed(this)},v.prototype.invm=function(a){var c=this.imod(a._invmp(this.m).mul(this.r2));return c._forceRed(this)}})(typeof Nc>"u"||Nc,$f)});var Gc=_e(qi=>{"use strict";var Fc=yc(),Fi=mc(),jf=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;qi.Buffer=at;qi.SlowBuffer=Yp;qi.INSPECT_MAX_BYTES=50;var Bs=2147483647;qi.kMaxLength=Bs;at.TYPED_ARRAY_SUPPORT=Hp();!at.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function Hp(){try{let r=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(r,t),r.foo()===42}catch{return!1}}Object.defineProperty(at.prototype,"parent",{enumerable:!0,get:function(){if(!!at.isBuffer(this))return this.buffer}});Object.defineProperty(at.prototype,"offset",{enumerable:!0,get:function(){if(!!at.isBuffer(this))return this.byteOffset}});function Bn(r){if(r>Bs)throw new RangeError('The value "'+r+'" is invalid for option "size"');let t=new Uint8Array(r);return Object.setPrototypeOf(t,at.prototype),t}function at(r,t,e){if(typeof r=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return Wc(r)}return Zf(r,t,e)}at.poolSize=8192;function Zf(r,t,e){if(typeof r=="string")return jp(r,t);if(ArrayBuffer.isView(r))return Gp(r);if(r==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r);if(gn(r,ArrayBuffer)||r&&gn(r.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(gn(r,SharedArrayBuffer)||r&&gn(r.buffer,SharedArrayBuffer)))return qc(r,t,e);if(typeof r=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=r.valueOf&&r.valueOf();if(n!=null&&n!==r)return at.from(n,t,e);let i=Vp(r);if(i)return i;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof r[Symbol.toPrimitive]=="function")return at.from(r[Symbol.toPrimitive]("string"),t,e);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r)}at.from=function(r,t,e){return Zf(r,t,e)};Object.setPrototypeOf(at.prototype,Uint8Array.prototype);Object.setPrototypeOf(at,Uint8Array);function Xf(r){if(typeof r!="number")throw new TypeError('"size" argument must be of type number');if(r<0)throw new RangeError('The value "'+r+'" is invalid for option "size"')}function $p(r,t,e){return Xf(r),r<=0?Bn(r):t!==void 0?typeof e=="string"?Bn(r).fill(t,e):Bn(r).fill(t):Bn(r)}at.alloc=function(r,t,e){return $p(r,t,e)};function Wc(r){return Xf(r),Bn(r<0?0:Hc(r)|0)}at.allocUnsafe=function(r){return Wc(r)};at.allocUnsafeSlow=function(r){return Wc(r)};function jp(r,t){if((typeof t!="string"||t==="")&&(t="utf8"),!at.isEncoding(t))throw new TypeError("Unknown encoding: "+t);let e=Jf(r,t)|0,n=Bn(e),i=n.write(r,t);return i!==e&&(n=n.slice(0,i)),n}function Dc(r){let t=r.length<0?0:Hc(r.length)|0,e=Bn(t);for(let n=0;n=Bs)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Bs.toString(16)+" bytes");return r|0}function Yp(r){return+r!=r&&(r=0),at.alloc(+r)}at.isBuffer=function(t){return t!=null&&t._isBuffer===!0&&t!==at.prototype};at.compare=function(t,e){if(gn(t,Uint8Array)&&(t=at.from(t,t.offset,t.byteLength)),gn(e,Uint8Array)&&(e=at.from(e,e.offset,e.byteLength)),!at.isBuffer(t)||!at.isBuffer(e))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===e)return 0;let n=t.length,i=e.length;for(let o=0,s=Math.min(n,i);oi.length?(at.isBuffer(s)||(s=at.from(s)),s.copy(i,o)):Uint8Array.prototype.set.call(i,s,o);else if(at.isBuffer(s))s.copy(i,o);else throw new TypeError('"list" argument must be an Array of Buffers');o+=s.length}return i};function Jf(r,t){if(at.isBuffer(r))return r.length;if(ArrayBuffer.isView(r)||gn(r,ArrayBuffer))return r.byteLength;if(typeof r!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof r);let e=r.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&e===0)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return e;case"utf8":case"utf-8":return Kc(r).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return e*2;case"hex":return e>>>1;case"base64":return ah(r).length;default:if(i)return n?-1:Kc(r).length;t=(""+t).toLowerCase(),i=!0}}at.byteLength=Jf;function Zp(r,t,e){let n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((e===void 0||e>this.length)&&(e=this.length),e<=0)||(e>>>=0,t>>>=0,e<=t))return"";for(r||(r="utf8");;)switch(r){case"hex":return s1(this,t,e);case"utf8":case"utf-8":return th(this,t,e);case"ascii":return i1(this,t,e);case"latin1":case"binary":return o1(this,t,e);case"base64":return r1(this,t,e);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return a1(this,t,e);default:if(n)throw new TypeError("Unknown encoding: "+r);r=(r+"").toLowerCase(),n=!0}}at.prototype._isBuffer=!0;function xi(r,t,e){let n=r[t];r[t]=r[e],r[e]=n}at.prototype.swap16=function(){let t=this.length;if(t%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;ee&&(t+=" ... "),""};jf&&(at.prototype[jf]=at.prototype.inspect);at.prototype.compare=function(t,e,n,i,o){if(gn(t,Uint8Array)&&(t=at.from(t,t.offset,t.byteLength)),!at.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(e===void 0&&(e=0),n===void 0&&(n=t?t.length:0),i===void 0&&(i=0),o===void 0&&(o=this.length),e<0||n>t.length||i<0||o>this.length)throw new RangeError("out of range index");if(i>=o&&e>=n)return 0;if(i>=o)return-1;if(e>=n)return 1;if(e>>>=0,n>>>=0,i>>>=0,o>>>=0,this===t)return 0;let s=o-i,d=n-e,g=Math.min(s,d),A=this.slice(i,o),L=t.slice(e,n);for(let M=0;M2147483647?e=2147483647:e<-2147483648&&(e=-2147483648),e=+e,jc(e)&&(e=i?0:r.length-1),e<0&&(e=r.length+e),e>=r.length){if(i)return-1;e=r.length-1}else if(e<0)if(i)e=0;else return-1;if(typeof t=="string"&&(t=at.from(t,n)),at.isBuffer(t))return t.length===0?-1:Gf(r,t,e,n,i);if(typeof t=="number")return t=t&255,typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(r,t,e):Uint8Array.prototype.lastIndexOf.call(r,t,e):Gf(r,[t],e,n,i);throw new TypeError("val must be string, number or Buffer")}function Gf(r,t,e,n,i){let o=1,s=r.length,d=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(r.length<2||t.length<2)return-1;o=2,s/=2,d/=2,e/=2}function g(L,M){return o===1?L[M]:L.readUInt16BE(M*o)}let A;if(i){let L=-1;for(A=e;As&&(e=s-d),A=e;A>=0;A--){let L=!0;for(let M=0;Mi&&(n=i)):n=i;let o=t.length;n>o/2&&(n=o/2);let s;for(s=0;s>>0,isFinite(n)?(n=n>>>0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let o=this.length-e;if((n===void 0||n>o)&&(n=o),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let s=!1;for(;;)switch(i){case"hex":return Xp(this,t,e,n);case"utf8":case"utf-8":return Jp(this,t,e,n);case"ascii":case"latin1":case"binary":return Qp(this,t,e,n);case"base64":return t1(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return e1(this,t,e,n);default:if(s)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),s=!0}};at.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function r1(r,t,e){return t===0&&e===r.length?Fc.fromByteArray(r):Fc.fromByteArray(r.slice(t,e))}function th(r,t,e){e=Math.min(r.length,e);let n=[],i=t;for(;i239?4:o>223?3:o>191?2:1;if(i+d<=e){let g,A,L,M;switch(d){case 1:o<128&&(s=o);break;case 2:g=r[i+1],(g&192)===128&&(M=(o&31)<<6|g&63,M>127&&(s=M));break;case 3:g=r[i+1],A=r[i+2],(g&192)===128&&(A&192)===128&&(M=(o&15)<<12|(g&63)<<6|A&63,M>2047&&(M<55296||M>57343)&&(s=M));break;case 4:g=r[i+1],A=r[i+2],L=r[i+3],(g&192)===128&&(A&192)===128&&(L&192)===128&&(M=(o&15)<<18|(g&63)<<12|(A&63)<<6|L&63,M>65535&&M<1114112&&(s=M))}}s===null?(s=65533,d=1):s>65535&&(s-=65536,n.push(s>>>10&1023|55296),s=56320|s&1023),n.push(s),i+=d}return n1(n)}var Vf=4096;function n1(r){let t=r.length;if(t<=Vf)return String.fromCharCode.apply(String,r);let e="",n=0;for(;nn)&&(e=n);let i="";for(let o=t;on&&(t=n),e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),ee)throw new RangeError("Trying to access beyond buffer length")}at.prototype.readUintLE=at.prototype.readUIntLE=function(t,e,n){t=t>>>0,e=e>>>0,n||Ar(t,e,this.length);let i=this[t],o=1,s=0;for(;++s>>0,e=e>>>0,n||Ar(t,e,this.length);let i=this[t+--e],o=1;for(;e>0&&(o*=256);)i+=this[t+--e]*o;return i};at.prototype.readUint8=at.prototype.readUInt8=function(t,e){return t=t>>>0,e||Ar(t,1,this.length),this[t]};at.prototype.readUint16LE=at.prototype.readUInt16LE=function(t,e){return t=t>>>0,e||Ar(t,2,this.length),this[t]|this[t+1]<<8};at.prototype.readUint16BE=at.prototype.readUInt16BE=function(t,e){return t=t>>>0,e||Ar(t,2,this.length),this[t]<<8|this[t+1]};at.prototype.readUint32LE=at.prototype.readUInt32LE=function(t,e){return t=t>>>0,e||Ar(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216};at.prototype.readUint32BE=at.prototype.readUInt32BE=function(t,e){return t=t>>>0,e||Ar(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])};at.prototype.readBigUInt64LE=Jn(function(t){t=t>>>0,Di(t,"offset");let e=this[t],n=this[t+7];(e===void 0||n===void 0)&&Ao(t,this.length-8);let i=e+this[++t]*2**8+this[++t]*2**16+this[++t]*2**24,o=this[++t]+this[++t]*2**8+this[++t]*2**16+n*2**24;return BigInt(i)+(BigInt(o)<>>0,Di(t,"offset");let e=this[t],n=this[t+7];(e===void 0||n===void 0)&&Ao(t,this.length-8);let i=e*2**24+this[++t]*2**16+this[++t]*2**8+this[++t],o=this[++t]*2**24+this[++t]*2**16+this[++t]*2**8+n;return(BigInt(i)<>>0,e=e>>>0,n||Ar(t,e,this.length);let i=this[t],o=1,s=0;for(;++s=o&&(i-=Math.pow(2,8*e)),i};at.prototype.readIntBE=function(t,e,n){t=t>>>0,e=e>>>0,n||Ar(t,e,this.length);let i=e,o=1,s=this[t+--i];for(;i>0&&(o*=256);)s+=this[t+--i]*o;return o*=128,s>=o&&(s-=Math.pow(2,8*e)),s};at.prototype.readInt8=function(t,e){return t=t>>>0,e||Ar(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]};at.prototype.readInt16LE=function(t,e){t=t>>>0,e||Ar(t,2,this.length);let n=this[t]|this[t+1]<<8;return n&32768?n|4294901760:n};at.prototype.readInt16BE=function(t,e){t=t>>>0,e||Ar(t,2,this.length);let n=this[t+1]|this[t]<<8;return n&32768?n|4294901760:n};at.prototype.readInt32LE=function(t,e){return t=t>>>0,e||Ar(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24};at.prototype.readInt32BE=function(t,e){return t=t>>>0,e||Ar(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]};at.prototype.readBigInt64LE=Jn(function(t){t=t>>>0,Di(t,"offset");let e=this[t],n=this[t+7];(e===void 0||n===void 0)&&Ao(t,this.length-8);let i=this[t+4]+this[t+5]*2**8+this[t+6]*2**16+(n<<24);return(BigInt(i)<>>0,Di(t,"offset");let e=this[t],n=this[t+7];(e===void 0||n===void 0)&&Ao(t,this.length-8);let i=(e<<24)+this[++t]*2**16+this[++t]*2**8+this[++t];return(BigInt(i)<>>0,e||Ar(t,4,this.length),Fi.read(this,t,!0,23,4)};at.prototype.readFloatBE=function(t,e){return t=t>>>0,e||Ar(t,4,this.length),Fi.read(this,t,!1,23,4)};at.prototype.readDoubleLE=function(t,e){return t=t>>>0,e||Ar(t,8,this.length),Fi.read(this,t,!0,52,8)};at.prototype.readDoubleBE=function(t,e){return t=t>>>0,e||Ar(t,8,this.length),Fi.read(this,t,!1,52,8)};function jr(r,t,e,n,i,o){if(!at.isBuffer(r))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||tr.length)throw new RangeError("Index out of range")}at.prototype.writeUintLE=at.prototype.writeUIntLE=function(t,e,n,i){if(t=+t,e=e>>>0,n=n>>>0,!i){let d=Math.pow(2,8*n)-1;jr(this,t,e,n,d,0)}let o=1,s=0;for(this[e]=t&255;++s>>0,n=n>>>0,!i){let d=Math.pow(2,8*n)-1;jr(this,t,e,n,d,0)}let o=n-1,s=1;for(this[e+o]=t&255;--o>=0&&(s*=256);)this[e+o]=t/s&255;return e+n};at.prototype.writeUint8=at.prototype.writeUInt8=function(t,e,n){return t=+t,e=e>>>0,n||jr(this,t,e,1,255,0),this[e]=t&255,e+1};at.prototype.writeUint16LE=at.prototype.writeUInt16LE=function(t,e,n){return t=+t,e=e>>>0,n||jr(this,t,e,2,65535,0),this[e]=t&255,this[e+1]=t>>>8,e+2};at.prototype.writeUint16BE=at.prototype.writeUInt16BE=function(t,e,n){return t=+t,e=e>>>0,n||jr(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=t&255,e+2};at.prototype.writeUint32LE=at.prototype.writeUInt32LE=function(t,e,n){return t=+t,e=e>>>0,n||jr(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=t&255,e+4};at.prototype.writeUint32BE=at.prototype.writeUInt32BE=function(t,e,n){return t=+t,e=e>>>0,n||jr(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=t&255,e+4};function eh(r,t,e,n,i){sh(t,n,i,r,e,7);let o=Number(t&BigInt(4294967295));r[e++]=o,o=o>>8,r[e++]=o,o=o>>8,r[e++]=o,o=o>>8,r[e++]=o;let s=Number(t>>BigInt(32)&BigInt(4294967295));return r[e++]=s,s=s>>8,r[e++]=s,s=s>>8,r[e++]=s,s=s>>8,r[e++]=s,e}function rh(r,t,e,n,i){sh(t,n,i,r,e,7);let o=Number(t&BigInt(4294967295));r[e+7]=o,o=o>>8,r[e+6]=o,o=o>>8,r[e+5]=o,o=o>>8,r[e+4]=o;let s=Number(t>>BigInt(32)&BigInt(4294967295));return r[e+3]=s,s=s>>8,r[e+2]=s,s=s>>8,r[e+1]=s,s=s>>8,r[e]=s,e+8}at.prototype.writeBigUInt64LE=Jn(function(t,e=0){return eh(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))});at.prototype.writeBigUInt64BE=Jn(function(t,e=0){return rh(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))});at.prototype.writeIntLE=function(t,e,n,i){if(t=+t,e=e>>>0,!i){let g=Math.pow(2,8*n-1);jr(this,t,e,n,g-1,-g)}let o=0,s=1,d=0;for(this[e]=t&255;++o>0)-d&255;return e+n};at.prototype.writeIntBE=function(t,e,n,i){if(t=+t,e=e>>>0,!i){let g=Math.pow(2,8*n-1);jr(this,t,e,n,g-1,-g)}let o=n-1,s=1,d=0;for(this[e+o]=t&255;--o>=0&&(s*=256);)t<0&&d===0&&this[e+o+1]!==0&&(d=1),this[e+o]=(t/s>>0)-d&255;return e+n};at.prototype.writeInt8=function(t,e,n){return t=+t,e=e>>>0,n||jr(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=t&255,e+1};at.prototype.writeInt16LE=function(t,e,n){return t=+t,e=e>>>0,n||jr(this,t,e,2,32767,-32768),this[e]=t&255,this[e+1]=t>>>8,e+2};at.prototype.writeInt16BE=function(t,e,n){return t=+t,e=e>>>0,n||jr(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=t&255,e+2};at.prototype.writeInt32LE=function(t,e,n){return t=+t,e=e>>>0,n||jr(this,t,e,4,2147483647,-2147483648),this[e]=t&255,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4};at.prototype.writeInt32BE=function(t,e,n){return t=+t,e=e>>>0,n||jr(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=t&255,e+4};at.prototype.writeBigInt64LE=Jn(function(t,e=0){return eh(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});at.prototype.writeBigInt64BE=Jn(function(t,e=0){return rh(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function nh(r,t,e,n,i,o){if(e+n>r.length)throw new RangeError("Index out of range");if(e<0)throw new RangeError("Index out of range")}function ih(r,t,e,n,i){return t=+t,e=e>>>0,i||nh(r,t,e,4,34028234663852886e22,-34028234663852886e22),Fi.write(r,t,e,n,23,4),e+4}at.prototype.writeFloatLE=function(t,e,n){return ih(this,t,e,!0,n)};at.prototype.writeFloatBE=function(t,e,n){return ih(this,t,e,!1,n)};function oh(r,t,e,n,i){return t=+t,e=e>>>0,i||nh(r,t,e,8,17976931348623157e292,-17976931348623157e292),Fi.write(r,t,e,n,52,8),e+8}at.prototype.writeDoubleLE=function(t,e,n){return oh(this,t,e,!0,n)};at.prototype.writeDoubleBE=function(t,e,n){return oh(this,t,e,!1,n)};at.prototype.copy=function(t,e,n,i){if(!at.isBuffer(t))throw new TypeError("argument should be a Buffer");if(n||(n=0),!i&&i!==0&&(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e>>0,n=n===void 0?this.length:n>>>0,t||(t=0);let o;if(typeof t=="number")for(o=e;o2**32?i=Yf(String(e)):typeof e=="bigint"&&(i=String(e),(e>BigInt(2)**BigInt(32)||e<-(BigInt(2)**BigInt(32)))&&(i=Yf(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n},RangeError);function Yf(r){let t="",e=r.length,n=r[0]==="-"?1:0;for(;e>=n+4;e-=3)t=`_${r.slice(e-3,e)}${t}`;return`${r.slice(0,e)}${t}`}function c1(r,t,e){Di(t,"offset"),(r[t]===void 0||r[t+e]===void 0)&&Ao(t,r.length-(e+1))}function sh(r,t,e,n,i,o){if(r>e||r3?t===0||t===BigInt(0)?d=`>= 0${s} and < 2${s} ** ${(o+1)*8}${s}`:d=`>= -(2${s} ** ${(o+1)*8-1}${s}) and < 2 ** ${(o+1)*8-1}${s}`:d=`>= ${t}${s} and <= ${e}${s}`,new zi.ERR_OUT_OF_RANGE("value",d,r)}c1(n,i,o)}function Di(r,t){if(typeof r!="number")throw new zi.ERR_INVALID_ARG_TYPE(t,"number",r)}function Ao(r,t,e){throw Math.floor(r)!==r?(Di(r,e),new zi.ERR_OUT_OF_RANGE(e||"offset","an integer",r)):t<0?new zi.ERR_BUFFER_OUT_OF_BOUNDS:new zi.ERR_OUT_OF_RANGE(e||"offset",`>= ${e?1:0} and <= ${t}`,r)}var u1=/[^+/0-9A-Za-z-_]/g;function f1(r){if(r=r.split("=")[0],r=r.trim().replace(u1,""),r.length<2)return"";for(;r.length%4!==0;)r=r+"=";return r}function Kc(r,t){t=t||1/0;let e,n=r.length,i=null,o=[];for(let s=0;s55295&&e<57344){if(!i){if(e>56319){(t-=3)>-1&&o.push(239,191,189);continue}else if(s+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=e;continue}if(e<56320){(t-=3)>-1&&o.push(239,191,189),i=e;continue}e=(i-55296<<10|e-56320)+65536}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,e<128){if((t-=1)<0)break;o.push(e)}else if(e<2048){if((t-=2)<0)break;o.push(e>>6|192,e&63|128)}else if(e<65536){if((t-=3)<0)break;o.push(e>>12|224,e>>6&63|128,e&63|128)}else if(e<1114112){if((t-=4)<0)break;o.push(e>>18|240,e>>12&63|128,e>>6&63|128,e&63|128)}else throw new Error("Invalid code point")}return o}function h1(r){let t=[];for(let e=0;e>8,i=e%256,o.push(i),o.push(n);return o}function ah(r){return Fc.toByteArray(f1(r))}function Rs(r,t,e,n){let i;for(i=0;i=t.length||i>=r.length);++i)t[i+e]=r[i];return i}function gn(r,t){return r instanceof t||r!=null&&r.constructor!=null&&r.constructor.name!=null&&r.constructor.name===t.name}function jc(r){return r!==r}var d1=function(){let r="0123456789abcdef",t=new Array(256);for(let e=0;e<16;++e){let n=e*16;for(let i=0;i<16;++i)t[n+i]=r[e]+r[i]}return t}();function Jn(r){return typeof BigInt>"u"?p1:r}function p1(){throw new Error("BigInt not supported")}});var fh=_e((Vc,uh)=>{var Ts=Gc(),mn=Ts.Buffer;function ch(r,t){for(var e in r)t[e]=r[e]}mn.from&&mn.alloc&&mn.allocUnsafe&&mn.allocUnsafeSlow?uh.exports=Ts:(ch(Ts,Vc),Vc.Buffer=bi);function bi(r,t,e){return mn(r,t,e)}bi.prototype=Object.create(mn.prototype);ch(mn,bi);bi.from=function(r,t,e){if(typeof r=="number")throw new TypeError("Argument must not be a number");return mn(r,t,e)};bi.alloc=function(r,t,e){if(typeof r!="number")throw new TypeError("Argument must be a number");var n=mn(r);return t!==void 0?typeof e=="string"?n.fill(t,e):n.fill(t):n.fill(0),n};bi.allocUnsafe=function(r){if(typeof r!="number")throw new TypeError("Argument must be a number");return mn(r)};bi.allocUnsafeSlow=function(r){if(typeof r!="number")throw new TypeError("Argument must be a number");return Ts.SlowBuffer(r)}});var lh=_e((qw,hh)=>{"use strict";var Ms=fh().Buffer;function y1(r){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),e=0;e>>0,_t=new Uint8Array(Q);ht!==mt;){for(var Tt=K[ht],ee=0,Ft=Q-1;(Tt!==0||ee>>0,_t[Ft]=Tt%s>>>0,Tt=Tt/s>>>0;if(Tt!==0)throw new Error("Non-zero carry");tt=ee,ht++}for(var Dt=Q-tt;Dt!==Q&&_t[Dt]===0;)Dt++;for(var T=d.repeat(et);Dt>>0,Q=new Uint8Array(mt);K[et];){var _t=t[K.charCodeAt(et)];if(_t===255)return;for(var Tt=0,ee=mt-1;(_t!==0||Tt>>0,Q[ee]=_t%256>>>0,_t=_t/256>>>0;if(_t!==0)throw new Error("Non-zero carry");ht=Tt,et++}for(var Ft=mt-ht;Ft!==mt&&Q[Ft]===0;)Ft++;var Dt=Ms.allocUnsafe(tt+(mt-Ft));Dt.fill(0,0,tt);for(var T=tt;Ft!==mt;)Dt[T++]=Q[Ft++];return Dt}function $(K){var et=M(K);if(et)return et;throw new Error("Non-base"+s+" character")}return{encode:L,decodeUnsafe:M,decode:$}}hh.exports=y1});var Yc=_e((Kw,dh)=>{var g1=lh(),m1="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";dh.exports=g1(m1)});var ph=_e(Qc=>{"use strict";function Rn(r,t,e){return t<=r&&r<=e}function Ns(r){if(r===void 0)return{};if(r===Object(r))return r;throw TypeError("Could not convert argument to dictionary")}function v1(r){for(var t=String(r),e=t.length,n=0,i=[];n57343)i.push(o);else if(56320<=o&&o<=57343)i.push(65533);else if(55296<=o&&o<=56319)if(n===e-1)i.push(65533);else{var s=r.charCodeAt(n+1);if(56320<=s&&s<=57343){var d=o&1023,g=s&1023;i.push(65536+(d<<10)+g),n+=1}else i.push(65533)}n+=1}return i}function k1(r){for(var t="",e=0;e>10)+55296,(n&1023)+56320))}return t}var Ps=-1;function Jc(r){this.tokens=[].slice.call(r)}Jc.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():Ps},prepend:function(r){if(Array.isArray(r))for(var t=r;t.length;)this.tokens.unshift(t.pop());else this.tokens.unshift(r)},push:function(r){if(Array.isArray(r))for(var t=r;t.length;)this.tokens.push(t.shift());else this.tokens.push(r)}};var Ki=-1;function Xc(r,t){if(r)throw TypeError("Decoder error");return t||65533}var Os="utf-8";function Cs(r,t){if(!(this instanceof Cs))return new Cs(r,t);if(r=r!==void 0?String(r).toLowerCase():Os,r!==Os)throw new Error("Encoding not supported. Only utf-8 is supported");t=Ns(t),this._streaming=!1,this._BOMseen=!1,this._decoder=null,this._fatal=Boolean(t.fatal),this._ignoreBOM=Boolean(t.ignoreBOM),Object.defineProperty(this,"encoding",{value:"utf-8"}),Object.defineProperty(this,"fatal",{value:this._fatal}),Object.defineProperty(this,"ignoreBOM",{value:this._ignoreBOM})}Cs.prototype={decode:function(t,e){var n;typeof t=="object"&&t instanceof ArrayBuffer?n=new Uint8Array(t):typeof t=="object"&&"buffer"in t&&t.buffer instanceof ArrayBuffer?n=new Uint8Array(t.buffer,t.byteOffset,t.byteLength):n=new Uint8Array(0),e=Ns(e),this._streaming||(this._decoder=new I1({fatal:this._fatal}),this._BOMseen=!1),this._streaming=Boolean(e.stream);for(var i=new Jc(n),o=[],s;!i.endOfStream()&&(s=this._decoder.handler(i,i.read()),s!==Ki);)s!==null&&(Array.isArray(s)?o.push.apply(o,s):o.push(s));if(!this._streaming){do{if(s=this._decoder.handler(i,i.read()),s===Ki)break;s!==null&&(Array.isArray(s)?o.push.apply(o,s):o.push(s))}while(!i.endOfStream());this._decoder=null}return o.length&&["utf-8"].indexOf(this.encoding)!==-1&&!this._ignoreBOM&&!this._BOMseen&&(o[0]===65279?(this._BOMseen=!0,o.shift()):this._BOMseen=!0),k1(o)}};function Us(r,t){if(!(this instanceof Us))return new Us(r,t);if(r=r!==void 0?String(r).toLowerCase():Os,r!==Os)throw new Error("Encoding not supported. Only utf-8 is supported");t=Ns(t),this._streaming=!1,this._encoder=null,this._options={fatal:Boolean(t.fatal)},Object.defineProperty(this,"encoding",{value:"utf-8"})}Us.prototype={encode:function(t,e){t=t?String(t):"",e=Ns(e),this._streaming||(this._encoder=new A1(this._options)),this._streaming=Boolean(e.stream);for(var n=[],i=new Jc(v1(t)),o;!i.endOfStream()&&(o=this._encoder.handler(i,i.read()),o!==Ki);)Array.isArray(o)?n.push.apply(n,o):n.push(o);if(!this._streaming){for(;o=this._encoder.handler(i,i.read()),o!==Ki;)Array.isArray(o)?n.push.apply(n,o):n.push(o);this._encoder=null}return new Uint8Array(n)}};function I1(r){var t=r.fatal,e=0,n=0,i=0,o=128,s=191;this.handler=function(d,g){if(g===Ps&&i!==0)return i=0,Xc(t);if(g===Ps)return Ki;if(i===0){if(Rn(g,0,127))return g;if(Rn(g,194,223))i=1,e=g-192;else if(Rn(g,224,239))g===224&&(o=160),g===237&&(s=159),i=2,e=g-224;else if(Rn(g,240,244))g===240&&(o=144),g===244&&(s=143),i=3,e=g-240;else return Xc(t);return e=e<<6*i,null}if(!Rn(g,o,s))return e=i=n=0,o=128,s=191,d.prepend(g),Xc(t);if(o=128,s=191,n+=1,e+=g-128<<6*(i-n),n!==i)return null;var A=e;return e=i=n=0,A}}function A1(r){var t=r.fatal;this.handler=function(e,n){if(n===Ps)return Ki;if(Rn(n,0,127))return n;var i,o;Rn(n,128,2047)?(i=1,o=192):Rn(n,2048,65535)?(i=2,o=224):Rn(n,65536,1114111)&&(i=3,o=240);for(var s=[(n>>6*i)+o];i>0;){var d=n>>6*(i-1);s.push(128|d&63),i-=1}return s}}Qc.TextEncoder=Us;Qc.TextDecoder=Cs});var xh=_e(Qe=>{"use strict";var _1=Qe&&Qe.__createBinding||(Object.create?function(r,t,e,n){n===void 0&&(n=e),Object.defineProperty(r,n,{enumerable:!0,get:function(){return t[e]}})}:function(r,t,e,n){n===void 0&&(n=e),r[n]=t[e]}),E1=Qe&&Qe.__setModuleDefault||(Object.create?function(r,t){Object.defineProperty(r,"default",{enumerable:!0,value:t})}:function(r,t){r.default=t}),wn=Qe&&Qe.__decorate||function(r,t,e,n){var i=arguments.length,o=i<3?t:n===null?n=Object.getOwnPropertyDescriptor(t,e):n,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(r,t,e,n);else for(var d=r.length-1;d>=0;d--)(s=r[d])&&(o=(i<3?s(o):i>3?s(t,e,o):s(t,e))||o);return i>3&&o&&Object.defineProperty(t,e,o),o},S1=Qe&&Qe.__importStar||function(r){if(r&&r.__esModule)return r;var t={};if(r!=null)for(var e in r)e!=="default"&&Object.hasOwnProperty.call(r,e)&&_1(t,r,e);return E1(t,r),t},yh=Qe&&Qe.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Qe,"__esModule",{value:!0});Qe.deserializeUnchecked=Qe.deserialize=Qe.serialize=Qe.BinaryReader=Qe.BinaryWriter=Qe.BorshError=Qe.baseDecode=Qe.baseEncode=void 0;var ei=yh(zc()),gh=yh(Yc()),B1=S1(ph()),R1=typeof TextDecoder!="function"?B1.TextDecoder:TextDecoder,T1=new R1("utf-8",{fatal:!0});function M1(r){return typeof r=="string"&&(r=Buffer.from(r,"utf8")),gh.default.encode(Buffer.from(r))}Qe.baseEncode=M1;function L1(r){return Buffer.from(gh.default.decode(r))}Qe.baseDecode=L1;var tu=1024,Sr=class extends Error{constructor(t){super(t),this.fieldPath=[],this.originalMessage=t}addToFieldPath(t){this.fieldPath.splice(0,0,t),this.message=this.originalMessage+": "+this.fieldPath.join(".")}};Qe.BorshError=Sr;var zs=class{constructor(){this.buf=Buffer.alloc(tu),this.length=0}maybeResize(){this.buf.length<16+this.length&&(this.buf=Buffer.concat([this.buf,Buffer.alloc(tu)]))}writeU8(t){this.maybeResize(),this.buf.writeUInt8(t,this.length),this.length+=1}writeU16(t){this.maybeResize(),this.buf.writeUInt16LE(t,this.length),this.length+=2}writeU32(t){this.maybeResize(),this.buf.writeUInt32LE(t,this.length),this.length+=4}writeU64(t){this.maybeResize(),this.writeBuffer(Buffer.from(new ei.default(t).toArray("le",8)))}writeU128(t){this.maybeResize(),this.writeBuffer(Buffer.from(new ei.default(t).toArray("le",16)))}writeU256(t){this.maybeResize(),this.writeBuffer(Buffer.from(new ei.default(t).toArray("le",32)))}writeU512(t){this.maybeResize(),this.writeBuffer(Buffer.from(new ei.default(t).toArray("le",64)))}writeBuffer(t){this.buf=Buffer.concat([Buffer.from(this.buf.subarray(0,this.length)),t,Buffer.alloc(tu)]),this.length+=t.length}writeString(t){this.maybeResize();let e=Buffer.from(t,"utf8");this.writeU32(e.length),this.writeBuffer(e)}writeFixedArray(t){this.writeBuffer(Buffer.from(t))}writeArray(t,e){this.maybeResize(),this.writeU32(t.length);for(let n of t)this.maybeResize(),e(n)}toArray(){return this.buf.subarray(0,this.length)}};Qe.BinaryWriter=zs;function xn(r,t,e){let n=e.value;e.value=function(...i){try{return n.apply(this,i)}catch(o){if(o instanceof RangeError){let s=o.code;if(["ERR_BUFFER_OUT_OF_BOUNDS","ERR_OUT_OF_RANGE"].indexOf(s)>=0)throw new Sr("Reached the end of buffer when deserializing")}throw o}}}var qr=class{constructor(t){this.buf=t,this.offset=0}readU8(){let t=this.buf.readUInt8(this.offset);return this.offset+=1,t}readU16(){let t=this.buf.readUInt16LE(this.offset);return this.offset+=2,t}readU32(){let t=this.buf.readUInt32LE(this.offset);return this.offset+=4,t}readU64(){let t=this.readBuffer(8);return new ei.default(t,"le")}readU128(){let t=this.readBuffer(16);return new ei.default(t,"le")}readU256(){let t=this.readBuffer(32);return new ei.default(t,"le")}readU512(){let t=this.readBuffer(64);return new ei.default(t,"le")}readBuffer(t){if(this.offset+t>this.buf.length)throw new Sr(`Expected buffer length ${t} isn't within bounds`);let e=this.buf.slice(this.offset,this.offset+t);return this.offset+=t,e}readString(){let t=this.readU32(),e=this.readBuffer(t);try{return T1.decode(e)}catch(n){throw new Sr(`Error decoding UTF-8 string: ${n}`)}}readFixedArray(t){return new Uint8Array(this.readBuffer(t))}readArray(t){let e=this.readU32(),n=Array();for(let i=0;i{vi(r,t,o,n[0],i)});else if(n.kind!==void 0)switch(n.kind){case"option":{e==null?i.writeU8(0):(i.writeU8(1),vi(r,t,e,n.type,i));break}case"map":{i.writeU32(e.size),e.forEach((o,s)=>{vi(r,t,s,n.key,i),vi(r,t,o,n.value,i)});break}default:throw new Sr(`FieldType ${n} unrecognized`)}else wh(r,e,i)}catch(o){throw o instanceof Sr&&o.addToFieldPath(t),o}}function wh(r,t,e){if(typeof t.borshSerialize=="function"){t.borshSerialize(e);return}let n=r.get(t.constructor);if(!n)throw new Sr(`Class ${t.constructor.name} is missing in schema`);if(n.kind==="struct")n.fields.map(([i,o])=>{vi(r,i,t[i],o,e)});else if(n.kind==="enum"){let i=t[n.field];for(let o=0;oki(r,t,e[0],n))}if(e.kind==="option")return n.readU8()?ki(r,t,e.type,n):void 0;if(e.kind==="map"){let i=new Map,o=n.readU32();for(let s=0;s=n.values.length)throw new Sr(`Enum index: ${i} is out of range`);let[o,s]=n.values[i],d=ki(r,o,s,e);return new t({[o]:d})}throw new Sr(`Unexpected schema kind: ${n.kind} for ${t.constructor.name}`)}function O1(r,t,e,n=qr){let i=new n(e),o=eu(r,t,i);if(i.offset{"use strict";Object.defineProperty(Y,"__esModule",{value:!0});Y.s16=Y.s8=Y.nu64be=Y.u48be=Y.u40be=Y.u32be=Y.u24be=Y.u16be=Y.nu64=Y.u48=Y.u40=Y.u32=Y.u24=Y.u16=Y.u8=Y.offset=Y.greedy=Y.Constant=Y.UTF8=Y.CString=Y.Blob=Y.Boolean=Y.BitField=Y.BitStructure=Y.VariantLayout=Y.Union=Y.UnionLayoutDiscriminator=Y.UnionDiscriminator=Y.Structure=Y.Sequence=Y.DoubleBE=Y.Double=Y.FloatBE=Y.Float=Y.NearInt64BE=Y.NearInt64=Y.NearUInt64BE=Y.NearUInt64=Y.IntBE=Y.Int=Y.UIntBE=Y.UInt=Y.OffsetLayout=Y.GreedyCount=Y.ExternalLayout=Y.bindConstructorLayout=Y.nameWithProperty=Y.Layout=Y.uint8ArrayToBuffer=Y.checkUint8Array=void 0;Y.constant=Y.utf8=Y.cstr=Y.blob=Y.unionLayoutDiscriminator=Y.union=Y.seq=Y.bits=Y.struct=Y.f64be=Y.f64=Y.f32be=Y.f32=Y.ns64be=Y.s48be=Y.s40be=Y.s32be=Y.s24be=Y.s16be=Y.ns64=Y.s48=Y.s40=Y.s32=Y.s24=void 0;var nu=Gc();function $i(r){if(!(r instanceof Uint8Array))throw new TypeError("b must be a Uint8Array")}Y.checkUint8Array=$i;function Fe(r){return $i(r),nu.Buffer.from(r.buffer,r.byteOffset,r.length)}Y.uint8ArrayToBuffer=Fe;var He=class{constructor(t,e){if(!Number.isInteger(t))throw new TypeError("span must be an integer");this.span=t,this.property=e}makeDestinationObject(){return{}}getSpan(t,e){if(0>this.span)throw new RangeError("indeterminate span");return this.span}replicate(t){let e=Object.create(this.constructor.prototype);return Object.assign(e,this),e.property=t,e}fromArray(t){}};Y.Layout=He;function iu(r,t){return t.property?r+"["+t.property+"]":r}Y.nameWithProperty=iu;function U1(r,t){if(typeof r!="function")throw new TypeError("Class must be constructor");if(Object.prototype.hasOwnProperty.call(r,"layout_"))throw new Error("Class is already bound to a layout");if(!(t&&t instanceof He))throw new TypeError("layout must be a Layout");if(Object.prototype.hasOwnProperty.call(t,"boundConstructor_"))throw new Error("layout is already bound to a constructor");r.layout_=t,t.boundConstructor_=r,t.makeDestinationObject=()=>new r,Object.defineProperty(r.prototype,"encode",{value(e,n){return t.encode(this,e,n)},writable:!0}),Object.defineProperty(r,"decode",{value(e,n){return t.decode(e,n)},writable:!0})}Y.bindConstructorLayout=U1;var Or=class extends He{isCount(){throw new Error("ExternalLayout is abstract")}};Y.ExternalLayout=Or;var Fs=class extends Or{constructor(t=1,e){if(!Number.isInteger(t)||0>=t)throw new TypeError("elementSpan must be a (positive) integer");super(-1,e),this.elementSpan=t}isCount(){return!0}decode(t,e=0){$i(t);let n=t.length-e;return Math.floor(n/this.elementSpan)}encode(t,e,n){return 0}};Y.GreedyCount=Fs;var _o=class extends Or{constructor(t,e=0,n){if(!(t instanceof He))throw new TypeError("layout must be a Layout");if(!Number.isInteger(e))throw new TypeError("offset must be integer or undefined");super(t.span,n||t.property),this.layout=t,this.offset=e}isCount(){return this.layout instanceof Gr||this.layout instanceof Xr}decode(t,e=0){return this.layout.decode(t,e+this.offset)}encode(t,e,n=0){return this.layout.encode(t,e,n+this.offset)}};Y.OffsetLayout=_o;var Gr=class extends He{constructor(t,e){if(super(t,e),6s+i.encode(d,e,n+s),0);return this.count instanceof Or&&this.count.encode(t.length,e,n),o}};Y.Sequence=Vs;var Ys=class extends He{constructor(t,e,n){if(!(Array.isArray(t)&&t.reduce((o,s)=>o&&s instanceof He,!0)))throw new TypeError("fields must be array of Layout instances");typeof e=="boolean"&&n===void 0&&(n=e,e=void 0);for(let o of t)if(0>o.span&&o.property===void 0)throw new Error("fields cannot contain unnamed variable-length layout");let i=-1;try{i=t.reduce((o,s)=>o+s.getSpan(),0)}catch{}super(i,e),this.fields=t,this.decodePrefixes=!!n}getSpan(t,e=0){if(0<=this.span)return this.span;let n=0;try{n=this.fields.reduce((i,o)=>{let s=o.getSpan(t,e);return e+=s,i+s},0)}catch{throw new RangeError("indeterminate span")}return n}decode(t,e=0){$i(t);let n=this.makeDestinationObject();for(let i of this.fields)if(i.property!==void 0&&(n[i.property]=i.decode(t,e)),e+=i.getSpan(t,e),this.decodePrefixes&&t.length===e)break;return n}encode(t,e,n=0){let i=n,o=0,s=0;for(let d of this.fields){let g=d.span;if(s=0g&&(g=d.getSpan(e,n)))}o=n,n+=g}return o+s-i}fromArray(t){let e=this.makeDestinationObject();for(let n of this.fields)n.property!==void 0&&0n.span?e=-1:0<=e&&(e+=n.span)}}};Y.Structure=Ys;var Eo=class{constructor(t){this.property=t}decode(t,e){throw new Error("UnionDiscriminator is abstract")}encode(t,e,n){throw new Error("UnionDiscriminator is abstract")}};Y.UnionDiscriminator=Eo;var Hi=class extends Eo{constructor(t,e){if(!(t instanceof Or&&t.isCount()))throw new TypeError("layout must be an unsigned integer ExternalLayout");super(e||t.property||"variant"),this.layout=t}decode(t,e){return this.layout.decode(t,e)}encode(t,e,n){return this.layout.encode(t,e,n)}};Y.UnionLayoutDiscriminator=Hi;var So=class extends He{constructor(t,e,n){let i;if(t instanceof Gr||t instanceof Xr)i=new Hi(new _o(t));else if(t instanceof Or&&t.isCount())i=new Hi(t);else if(t instanceof Eo)i=t;else throw new TypeError("discr must be a UnionDiscriminator or an unsigned integer layout");if(e===void 0&&(e=null),!(e===null||e instanceof He))throw new TypeError("defaultLayout must be null or a Layout");if(e!==null){if(0>e.span)throw new Error("defaultLayout must have constant span");e.property===void 0&&(e=e.replicate("content"))}let o=-1;e&&(o=e.span,0<=o&&(t instanceof Gr||t instanceof Xr)&&(o+=i.layout.span)),super(o,n),this.discriminator=i,this.usesPrefixDiscriminator=t instanceof Gr||t instanceof Xr,this.defaultLayout=e,this.registry={};let s=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(d){return s(d)},this.configGetSourceVariant=function(d){s=d.bind(this)}}getSpan(t,e=0){if(0<=this.span)return this.span;let n=this.getVariant(t,e);if(!n)throw new Error("unable to determine span for unrecognized variant");return n.getSpan(t,e)}defaultGetSourceVariant(t){if(Object.prototype.hasOwnProperty.call(t,this.discriminator.property)){if(this.defaultLayout&&this.defaultLayout.property&&Object.prototype.hasOwnProperty.call(t,this.defaultLayout.property))return;let e=this.registry[t[this.discriminator.property]];if(e&&(!e.layout||e.property&&Object.prototype.hasOwnProperty.call(t,e.property)))return e}else for(let e in this.registry){let n=this.registry[e];if(n.property&&Object.prototype.hasOwnProperty.call(t,n.property))return n}throw new Error("unable to infer src variant")}decode(t,e=0){let n,i=this.discriminator,o=i.decode(t,e),s=this.registry[o];if(s===void 0){let d=this.defaultLayout,g=0;this.usesPrefixDiscriminator&&(g=i.layout.span),n=this.makeDestinationObject(),n[i.property]=o,n[d.property]=d.decode(t,e+g)}else n=s.decode(t,e);return n}encode(t,e,n=0){let i=this.getSourceVariant(t);if(i===void 0){let o=this.discriminator,s=this.defaultLayout,d=0;return this.usesPrefixDiscriminator&&(d=o.layout.span),o.encode(t[o.property],e,n),d+s.encode(t[s.property],e,n+d)}return i.encode(t,e,n)}addVariant(t,e,n){let i=new Zs(this,t,e,n);return this.registry[t]=i,i}getVariant(t,e=0){let n;return t instanceof Uint8Array?n=this.discriminator.decode(t,e):n=t,this.registry[n]}};Y.Union=So;var Zs=class extends He{constructor(t,e,n,i){if(!(t instanceof So))throw new TypeError("union must be a Union");if(!Number.isInteger(e)||0>e)throw new TypeError("variant must be a (non-negative) integer");if(typeof n=="string"&&i===void 0&&(i=n,n=null),n){if(!(n instanceof He))throw new TypeError("layout must be a Layout");if(t.defaultLayout!==null&&0<=n.span&&n.span>t.defaultLayout.span)throw new Error("variant span exceeds span of containing union");if(typeof i!="string")throw new TypeError("variant must have a String property")}let o=t.span;0>t.span&&(o=n?n.span:0,0<=o&&t.usesPrefixDiscriminator&&(o+=t.discriminator.layout.span)),super(o,i),this.union=t,this.variant=e,this.layout=n||null}getSpan(t,e=0){if(0<=this.span)return this.span;let n=0;this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span);let i=0;return this.layout&&(i=this.layout.getSpan(t,e+n)),n+i}decode(t,e=0){let n=this.makeDestinationObject();if(this!==this.union.getVariant(t,e))throw new Error("variant mismatch");let i=0;return this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout?n[this.property]=this.layout.decode(t,e+i):this.property?n[this.property]=!0:this.union.usesPrefixDiscriminator&&(n[this.union.discriminator.property]=this.variant),n}encode(t,e,n=0){let i=0;if(this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout&&!Object.prototype.hasOwnProperty.call(t,this.property))throw new TypeError("variant lacks property "+this.property);this.union.discriminator.encode(this.variant,e,n);let o=i;if(this.layout&&(this.layout.encode(t[this.property],e,n+i),o+=this.layout.getSpan(e,n+i),0<=this.union.span&&o>this.union.span))throw new Error("encoded variant overruns containing union");return o}fromArray(t){if(this.layout)return this.layout.fromArray(t)}};Y.VariantLayout=Zs;function Wi(r){return 0>r&&(r+=4294967296),r}var Bo=class extends He{constructor(t,e,n){if(!(t instanceof Gr||t instanceof Xr))throw new TypeError("word must be a UInt or UIntBE layout");if(typeof e=="string"&&n===void 0&&(n=e,e=!1),4=e)throw new TypeError("bits must be positive integer");let i=8*t.span,o=t.fields.reduce((s,d)=>s+d.bits,0);if(e+o>i)throw new Error("bits too long for span remainder ("+(i-o)+" of "+i+" remain)");this.container=t,this.bits=e,this.valueMask=(1<>>this.start}encode(t){if(typeof t!="number"||!Number.isInteger(t)||t!==Wi(t&this.valueMask))throw new TypeError(iu("BitField.encode",this)+" value must be integer not exceeding "+this.valueMask);let e=this.container._packedGetValue(),n=Wi(t<n&&(n=this.length.decode(t,e)),n}decode(t,e=0){let n=this.span;return 0>n&&(n=this.length.decode(t,e)),Fe(t).slice(e,e+n)}encode(t,e,n){let i=this.length;if(this.length instanceof Or&&(i=t.length),!(t instanceof Uint8Array&&i===t.length))throw new TypeError(iu("Blob.encode",this)+" requires (length "+i+") Uint8Array as src");if(n+i>e.length)throw new RangeError("encoding overruns Uint8Array");let o=Fe(t);return Fe(e).write(o.toString("hex"),n,i,"hex"),this.length instanceof Or&&this.length.encode(i,e,n),i}};Y.Blob=Js;var Qs=class extends He{constructor(t){super(-1,t)}getSpan(t,e=0){$i(t);let n=e;for(;ne.length)throw new RangeError("encoding overruns Buffer");let s=Fe(e);return i.copy(s,n),s[n+o]=0,o+1}};Y.CString=Qs;var ta=class extends He{constructor(t,e){if(typeof t=="string"&&e===void 0&&(e=t,t=void 0),t===void 0)t=-1;else if(!Number.isInteger(t))throw new TypeError("maxSpan must be an integer");super(-1,e),this.maxSpan=t}getSpan(t,e=0){return $i(t),t.length-e}decode(t,e=0){let n=this.getSpan(t,e);if(0<=this.maxSpan&&this.maxSpane.length)throw new RangeError("encoding overruns Buffer");return i.copy(Fe(e),n),o}};Y.UTF8=ta;var ea=class extends He{constructor(t,e){super(0,e),this.value=t}decode(t,e){return this.value}encode(t,e,n){return 0}};Y.Constant=ea;Y.greedy=(r,t)=>new Fs(r,t);Y.offset=(r,t,e)=>new _o(r,t,e);Y.u8=r=>new Gr(1,r);Y.u16=r=>new Gr(2,r);Y.u24=r=>new Gr(3,r);Y.u32=r=>new Gr(4,r);Y.u40=r=>new Gr(5,r);Y.u48=r=>new Gr(6,r);Y.nu64=r=>new Ds(r);Y.u16be=r=>new Xr(2,r);Y.u24be=r=>new Xr(3,r);Y.u32be=r=>new Xr(4,r);Y.u40be=r=>new Xr(5,r);Y.u48be=r=>new Xr(6,r);Y.nu64be=r=>new qs(r);Y.s8=r=>new Tn(1,r);Y.s16=r=>new Tn(2,r);Y.s24=r=>new Tn(3,r);Y.s32=r=>new Tn(4,r);Y.s40=r=>new Tn(5,r);Y.s48=r=>new Tn(6,r);Y.ns64=r=>new Ks(r);Y.s16be=r=>new ri(2,r);Y.s24be=r=>new ri(3,r);Y.s32be=r=>new ri(4,r);Y.s40be=r=>new ri(5,r);Y.s48be=r=>new ri(6,r);Y.ns64be=r=>new Ws(r);Y.f32=r=>new Hs(r);Y.f32be=r=>new $s(r);Y.f64=r=>new js(r);Y.f64be=r=>new Gs(r);Y.struct=(r,t,e)=>new Ys(r,t,e);Y.bits=(r,t,e)=>new Bo(r,t,e);Y.seq=(r,t,e)=>new Vs(r,t,e);Y.union=(r,t,e)=>new So(r,t,e);Y.unionLayoutDiscriminator=(r,t)=>new Hi(r,t);Y.blob=(r,t)=>new Js(r,t);Y.cstr=r=>new Qs(r);Y.utf8=(r,t)=>new ta(r,t);Y.constant=(r,t)=>new ea(r,t)});var ou=_e(ji=>{"use strict";Object.defineProperty(ji,"__esModule",{value:!0});var ia;function N1(r){{let t=Buffer.from(r);t.reverse();let e=t.toString("hex");return e.length===0?BigInt(0):BigInt(`0x${e}`)}return ia.toBigInt(r,!1)}ji.toBigIntLE=N1;function z1(r){{let t=r.toString("hex");return t.length===0?BigInt(0):BigInt(`0x${t}`)}return ia.toBigInt(r,!0)}ji.toBigIntBE=z1;function F1(r,t){{let e=r.toString(16),n=Buffer.from(e.padStart(t*2,"0").slice(0,t*2),"hex");return n.reverse(),n}return ia.fromBigInt(r,Buffer.allocUnsafe(t),!1)}ji.toBufferLE=F1;function D1(r,t){{let e=r.toString(16);return Buffer.from(e.padStart(t*2,"0").slice(0,t*2),"hex")}return ia.fromBigInt(r,Buffer.allocUnsafe(t),!0)}ji.toBufferBE=D1});var aa=_e((Xw,Mo)=>{function j1(r){return r&&r.__esModule?r:{default:r}}Mo.exports=j1,Mo.exports.__esModule=!0,Mo.exports.default=Mo.exports});var ca=_e((Jw,Lo)=>{function Ah(r,t){for(var e=0;e{function V1(r,t){if(!(r instanceof t))throw new TypeError("Cannot call a class as a function")}Po.exports=V1,Po.exports.__esModule=!0,Po.exports.default=Po.exports});var _h=_e((tx,Mn)=>{function uu(r,t){return Mn.exports=uu=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,i){return n.__proto__=i,n},Mn.exports.__esModule=!0,Mn.exports.default=Mn.exports,uu(r,t)}Mn.exports=uu,Mn.exports.__esModule=!0,Mn.exports.default=Mn.exports});var fa=_e((ex,Oo)=>{var Y1=_h();function Z1(r,t){if(typeof t!="function"&&t!==null)throw new TypeError("Super expression must either be null or a function");r.prototype=Object.create(t&&t.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),Object.defineProperty(r,"prototype",{writable:!1}),t&&Y1(r,t)}Oo.exports=Z1,Oo.exports.__esModule=!0,Oo.exports.default=Oo.exports});var ha=_e((rx,Ln)=>{function fu(r){return Ln.exports=fu=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ln.exports.__esModule=!0,Ln.exports.default=Ln.exports,fu(r)}Ln.exports=fu,Ln.exports.__esModule=!0,Ln.exports.default=Ln.exports});var Eh=_e((nx,Co)=>{function X1(r){if(r===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r}Co.exports=X1,Co.exports.__esModule=!0,Co.exports.default=Co.exports});var la=_e((ix,Uo)=>{var J1=ha().default,Q1=Eh();function ty(r,t){if(t&&(J1(t)==="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Q1(r)}Uo.exports=ty,Uo.exports.__esModule=!0,Uo.exports.default=Uo.exports});var da=_e((ox,Pn)=>{function hu(r){return Pn.exports=hu=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Pn.exports.__esModule=!0,Pn.exports.default=Pn.exports,hu(r)}Pn.exports=hu,Pn.exports.__esModule=!0,Pn.exports.default=Pn.exports});var du=_e((sx,lu)=>{"use strict";var ey=Object.prototype.hasOwnProperty,Wr="~";function No(){}Object.create&&(No.prototype=Object.create(null),new No().__proto__||(Wr=!1));function ry(r,t,e){this.fn=r,this.context=t,this.once=e||!1}function Sh(r,t,e,n,i){if(typeof e!="function")throw new TypeError("The listener must be a function");var o=new ry(e,n||r,i),s=Wr?Wr+t:t;return r._events[s]?r._events[s].fn?r._events[s]=[r._events[s],o]:r._events[s].push(o):(r._events[s]=o,r._eventsCount++),r}function pa(r,t){--r._eventsCount===0?r._events=new No:delete r._events[t]}function Cr(){this._events=new No,this._eventsCount=0}Cr.prototype.eventNames=function(){var t=[],e,n;if(this._eventsCount===0)return t;for(n in e=this._events)ey.call(e,n)&&t.push(Wr?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(e)):t};Cr.prototype.listeners=function(t){var e=Wr?Wr+t:t,n=this._events[e];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,o=n.length,s=new Array(o);i{"use strict";var zo=aa();Object.defineProperty(pu,"__esModule",{value:!0});pu.default=hy;var ny=zo(ua()),iy=zo(ca()),oy=zo(fa()),sy=zo(la()),Bh=zo(da()),ay=du();function cy(r){var t=uy();return function(){var n=(0,Bh.default)(r),i;if(t){var o=(0,Bh.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,sy.default)(this,i)}}function uy(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var fy=function(r){(0,oy.default)(e,r);var t=cy(e);function e(n,i,o){var s;return(0,ny.default)(this,e),s=t.call(this),s.socket=new window.WebSocket(n,o),s.socket.onopen=function(){return s.emit("open")},s.socket.onmessage=function(d){return s.emit("message",d.data)},s.socket.onerror=function(d){return s.emit("error",d)},s.socket.onclose=function(d){s.emit("close",d.code,d.reason)},s}return(0,iy.default)(e,[{key:"send",value:function(i,o,s){var d=s||o;try{this.socket.send(i),d()}catch(g){d(g)}}},{key:"close",value:function(i,o){this.socket.close(i,o)}},{key:"addEventListener",value:function(i,o,s){this.socket.addEventListener(i,o,s)}}]),e}(ay.EventEmitter);function hy(r,t){return new fy(r,t)}});var Mh=_e((cx,On)=>{var ly=ha().default;function Th(){"use strict";On.exports=Th=function(){return r},On.exports.__esModule=!0,On.exports.default=On.exports;var r={},t=Object.prototype,e=t.hasOwnProperty,n=typeof Symbol=="function"?Symbol:{},i=n.iterator||"@@iterator",o=n.asyncIterator||"@@asyncIterator",s=n.toStringTag||"@@toStringTag";function d(x,B,v){return Object.defineProperty(x,B,{value:v,enumerable:!0,configurable:!0,writable:!0}),x[B]}try{d({},"")}catch{d=function(v,y,a){return v[y]=a}}function g(x,B,v,y){var a=B&&B.prototype instanceof M?B:M,c=Object.create(a.prototype),f=new Dt(y||[]);return c._invoke=function(p,m,b){var P="suspendedStart";return function(E,u){if(P==="executing")throw new Error("Generator is already running");if(P==="completed"){if(E==="throw")throw u;return C()}for(b.method=E,b.arg=u;;){var l=b.delegate;if(l){var _=Tt(l,b);if(_){if(_===L)continue;return _}}if(b.method==="next")b.sent=b._sent=b.arg;else if(b.method==="throw"){if(P==="suspendedStart")throw P="completed",b.arg;b.dispatchException(b.arg)}else b.method==="return"&&b.abrupt("return",b.arg);P="executing";var S=A(p,m,b);if(S.type==="normal"){if(P=b.done?"completed":"suspendedYield",S.arg===L)continue;return{value:S.arg,done:b.done}}S.type==="throw"&&(P="completed",b.method="throw",b.arg=S.arg)}}}(x,v,f),c}function A(x,B,v){try{return{type:"normal",arg:x.call(B,v)}}catch(y){return{type:"throw",arg:y}}}r.wrap=g;var L={};function M(){}function $(){}function K(){}var et={};d(et,i,function(){return this});var tt=Object.getPrototypeOf,ht=tt&&tt(tt(T([])));ht&&ht!==t&&e.call(ht,i)&&(et=ht);var mt=K.prototype=M.prototype=Object.create(et);function Q(x){["next","throw","return"].forEach(function(B){d(x,B,function(v){return this._invoke(B,v)})})}function _t(x,B){function v(a,c,f,p){var m=A(x[a],x,c);if(m.type!=="throw"){var b=m.arg,P=b.value;return P&&ly(P)=="object"&&e.call(P,"__await")?B.resolve(P.__await).then(function(E){v("next",E,f,p)},function(E){v("throw",E,f,p)}):B.resolve(P).then(function(E){b.value=E,f(b)},function(E){return v("throw",E,f,p)})}p(m.arg)}var y;this._invoke=function(a,c){function f(){return new B(function(p,m){v(a,c,p,m)})}return y=y?y.then(f,f):f()}}function Tt(x,B){var v=x.iterator[B.method];if(v===void 0){if(B.delegate=null,B.method==="throw"){if(x.iterator.return&&(B.method="return",B.arg=void 0,Tt(x,B),B.method==="throw"))return L;B.method="throw",B.arg=new TypeError("The iterator does not provide a 'throw' method")}return L}var y=A(v,x.iterator,B.arg);if(y.type==="throw")return B.method="throw",B.arg=y.arg,B.delegate=null,L;var a=y.arg;return a?a.done?(B[x.resultName]=a.value,B.next=x.nextLoc,B.method!=="return"&&(B.method="next",B.arg=void 0),B.delegate=null,L):a:(B.method="throw",B.arg=new TypeError("iterator result is not an object"),B.delegate=null,L)}function ee(x){var B={tryLoc:x[0]};1 in x&&(B.catchLoc=x[1]),2 in x&&(B.finallyLoc=x[2],B.afterLoc=x[3]),this.tryEntries.push(B)}function Ft(x){var B=x.completion||{};B.type="normal",delete B.arg,x.completion=B}function Dt(x){this.tryEntries=[{tryLoc:"root"}],x.forEach(ee,this),this.reset(!0)}function T(x){if(x){var B=x[i];if(B)return B.call(x);if(typeof x.next=="function")return x;if(!isNaN(x.length)){var v=-1,y=function a(){for(;++v=0;--a){var c=this.tryEntries[a],f=c.completion;if(c.tryLoc==="root")return y("end");if(c.tryLoc<=this.prev){var p=e.call(c,"catchLoc"),m=e.call(c,"finallyLoc");if(p&&m){if(this.prev=0;--y){var a=this.tryEntries[y];if(a.tryLoc<=this.prev&&e.call(a,"finallyLoc")&&this.prev=0;--v){var y=this.tryEntries[v];if(y.finallyLoc===B)return this.complete(y.completion,y.afterLoc),Ft(y),L}},catch:function(B){for(var v=this.tryEntries.length-1;v>=0;--v){var y=this.tryEntries[v];if(y.tryLoc===B){var a=y.completion;if(a.type==="throw"){var c=a.arg;Ft(y)}return c}}throw new Error("illegal catch attempt")},delegateYield:function(B,v,y){return this.delegate={iterator:T(B),resultName:v,nextLoc:y},this.method==="next"&&(this.arg=void 0),L}},r}On.exports=Th,On.exports.__esModule=!0,On.exports.default=On.exports});var Ph=_e((ux,Lh)=>{var ya=Mh()();Lh.exports=ya;try{regeneratorRuntime=ya}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=ya:Function("r","regeneratorRuntime = r")(ya)}});var Ch=_e((fx,Fo)=>{function Oh(r,t,e,n,i,o,s){try{var d=r[o](s),g=d.value}catch(A){e(A);return}d.done?t(g):Promise.resolve(g).then(n,i)}function dy(r){return function(){var t=this,e=arguments;return new Promise(function(n,i){var o=r.apply(t,e);function s(g){Oh(o,n,i,s,d,"next",g)}function d(g){Oh(o,n,i,s,d,"throw",g)}s(void 0)})}}Fo.exports=dy,Fo.exports.__esModule=!0,Fo.exports.default=Fo.exports});var Nh=_e(ma=>{"use strict";var oi=aa();Object.defineProperty(ma,"__esModule",{value:!0});ma.default=void 0;var ii=oi(Ph()),ga=oi(Ch()),py=oi(ha()),yy=oi(ua()),gy=oi(ca()),my=oi(fa()),wy=oi(la()),Uh=oi(da()),xy=du();function by(r){var t=vy();return function(){var n=(0,Uh.default)(r),i;if(t){var o=(0,Uh.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,wy.default)(this,i)}}function vy(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var ky=function(r,t){var e={};for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&t.indexOf(n)<0&&(e[n]=r[n]);if(r!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(r);i1&&arguments[1]!==void 0?arguments[1]:"ws://localhost:8080",s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},d=arguments.length>3?arguments[3]:void 0;(0,yy.default)(this,e);var g=s.autoconnect,A=g===void 0?!0:g,L=s.reconnect,M=L===void 0?!0:L,$=s.reconnect_interval,K=$===void 0?1e3:$,et=s.max_reconnects,tt=et===void 0?5:et,ht=ky(s,["autoconnect","reconnect","reconnect_interval","max_reconnects"]);return i=t.call(this),i.webSocketFactory=n,i.queue={},i.rpc_id=0,i.address=o,i.autoconnect=A,i.ready=!1,i.reconnect=M,i.reconnect_interval=K,i.max_reconnects=tt,i.rest_options=ht,i.current_reconnects=0,i.generate_request_id=d||function(){return++i.rpc_id},i.autoconnect&&i._connect(i.address,Object.assign({autoconnect:i.autoconnect,reconnect:i.reconnect,reconnect_interval:i.reconnect_interval,max_reconnects:i.max_reconnects},i.rest_options)),i}return(0,gy.default)(e,[{key:"connect",value:function(){this.socket||this._connect(this.address,Object.assign({autoconnect:this.autoconnect,reconnect:this.reconnect,reconnect_interval:this.reconnect_interval,max_reconnects:this.max_reconnects},this.rest_options))}},{key:"call",value:function(i,o,s,d){var g=this;return!d&&(0,py.default)(s)==="object"&&(d=s,s=null),new Promise(function(A,L){if(!g.ready)return L(new Error("socket not ready"));var M=g.generate_request_id(i,o),$={jsonrpc:"2.0",method:i,params:o||null,id:M};g.socket.send(JSON.stringify($),d,function(K){if(K)return L(K);g.queue[M]={promise:[A,L]},s&&(g.queue[M].timeout=setTimeout(function(){delete g.queue[M],L(new Error("reply timeout"))},s))})})}},{key:"login",value:function(){var n=(0,ga.default)(ii.default.mark(function o(s){var d;return ii.default.wrap(function(A){for(;;)switch(A.prev=A.next){case 0:return A.next=2,this.call("rpc.login",s);case 2:if(d=A.sent,d){A.next=5;break}throw new Error("authentication failed");case 5:return A.abrupt("return",d);case 6:case"end":return A.stop()}},o,this)}));function i(o){return n.apply(this,arguments)}return i}()},{key:"listMethods",value:function(){var n=(0,ga.default)(ii.default.mark(function o(){return ii.default.wrap(function(d){for(;;)switch(d.prev=d.next){case 0:return d.next=2,this.call("__listMethods");case 2:return d.abrupt("return",d.sent);case 3:case"end":return d.stop()}},o,this)}));function i(){return n.apply(this,arguments)}return i}()},{key:"notify",value:function(i,o){var s=this;return new Promise(function(d,g){if(!s.ready)return g(new Error("socket not ready"));var A={jsonrpc:"2.0",method:i,params:o||null};s.socket.send(JSON.stringify(A),function(L){if(L)return g(L);d()})})}},{key:"subscribe",value:function(){var n=(0,ga.default)(ii.default.mark(function o(s){var d;return ii.default.wrap(function(A){for(;;)switch(A.prev=A.next){case 0:return typeof s=="string"&&(s=[s]),A.next=3,this.call("rpc.on",s);case 3:if(d=A.sent,!(typeof s=="string"&&d[s]!=="ok")){A.next=6;break}throw new Error("Failed subscribing to an event '"+s+"' with: "+d[s]);case 6:return A.abrupt("return",d);case 7:case"end":return A.stop()}},o,this)}));function i(o){return n.apply(this,arguments)}return i}()},{key:"unsubscribe",value:function(){var n=(0,ga.default)(ii.default.mark(function o(s){var d;return ii.default.wrap(function(A){for(;;)switch(A.prev=A.next){case 0:return typeof s=="string"&&(s=[s]),A.next=3,this.call("rpc.off",s);case 3:if(d=A.sent,!(typeof s=="string"&&d[s]!=="ok")){A.next=6;break}throw new Error("Failed unsubscribing from an event with: "+d);case 6:return A.abrupt("return",d);case 7:case"end":return A.stop()}},o,this)}));function i(o){return n.apply(this,arguments)}return i}()},{key:"close",value:function(i,o){this.socket.close(i||1e3,o)}},{key:"_connect",value:function(i,o){var s=this;this.socket=this.webSocketFactory(i,o),this.socket.addEventListener("open",function(){s.ready=!0,s.emit("open"),s.current_reconnects=0}),this.socket.addEventListener("message",function(d){var g=d.data;g instanceof ArrayBuffer&&(g=Buffer.from(g).toString());try{g=JSON.parse(g)}catch{return}if(g.notification&&s.listeners(g.notification).length){if(!Object.keys(g.params).length)return s.emit(g.notification);var A=[g.notification];if(g.params.constructor===Object)A.push(g.params);else for(var L=0;Ls.current_reconnects||s.max_reconnects===0)&&setTimeout(function(){return s._connect(i,o)},s.reconnect_interval))})}}]),e}(xy.EventEmitter);ma.default=Iy});var Fh=_e(wa=>{"use strict";var Ai=aa();Object.defineProperty(wa,"__esModule",{value:!0});wa.Client=void 0;var Ay=Ai(ca()),_y=Ai(ua()),Ey=Ai(fa()),Sy=Ai(la()),zh=Ai(da()),By=Ai(Rh()),Ry=Ai(Nh());function Ty(r){var t=My();return function(){var n=(0,zh.default)(r),i;if(t){var o=(0,zh.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,Sy.default)(this,i)}}function My(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var Ly=function(r){(0,Ey.default)(e,r);var t=Ty(e);function e(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"ws://localhost:8080",i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=i.autoconnect,s=o===void 0?!0:o,d=i.reconnect,g=d===void 0?!0:d,A=i.reconnect_interval,L=A===void 0?1e3:A,M=i.max_reconnects,$=M===void 0?5:M,K=arguments.length>2?arguments[2]:void 0;return(0,_y.default)(this,e),t.call(this,By.default,n,{autoconnect:s,reconnect:g,reconnect_interval:L,max_reconnects:$},K)}return(0,Ay.default)(e)}(Ry.default);wa.Client=Ly});function Do(){if(!xa&&(xa=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto),!xa))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return xa(Py)}var xa,Py,yu=Dr(()=>{Py=new Uint8Array(16)});var Dh,qh=Dr(()=>{Dh=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i});function Oy(r){return typeof r=="string"&&Dh.test(r)}var si,qo=Dr(()=>{qh();si=Oy});function Cy(r){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,e=(Br[r[t+0]]+Br[r[t+1]]+Br[r[t+2]]+Br[r[t+3]]+"-"+Br[r[t+4]]+Br[r[t+5]]+"-"+Br[r[t+6]]+Br[r[t+7]]+"-"+Br[r[t+8]]+Br[r[t+9]]+"-"+Br[r[t+10]]+Br[r[t+11]]+Br[r[t+12]]+Br[r[t+13]]+Br[r[t+14]]+Br[r[t+15]]).toLowerCase();if(!si(e))throw TypeError("Stringified UUID is invalid");return e}var Br,ba,ai,Ko=Dr(()=>{qo();Br=[];for(ba=0;ba<256;++ba)Br.push((ba+256).toString(16).substr(1));ai=Cy});function Uy(r,t,e){var n=t&&e||0,i=t||new Array(16);r=r||{};var o=r.node||Kh,s=r.clockseq!==void 0?r.clockseq:gu;if(o==null||s==null){var d=r.random||(r.rng||Do)();o==null&&(o=Kh=[d[0]|1,d[1],d[2],d[3],d[4],d[5]]),s==null&&(s=gu=(d[6]<<8|d[7])&16383)}var g=r.msecs!==void 0?r.msecs:Date.now(),A=r.nsecs!==void 0?r.nsecs:wu+1,L=g-mu+(A-wu)/1e4;if(L<0&&r.clockseq===void 0&&(s=s+1&16383),(L<0||g>mu)&&r.nsecs===void 0&&(A=0),A>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");mu=g,wu=A,gu=s,g+=122192928e5;var M=((g&268435455)*1e4+A)%4294967296;i[n++]=M>>>24&255,i[n++]=M>>>16&255,i[n++]=M>>>8&255,i[n++]=M&255;var $=g/4294967296*1e4&268435455;i[n++]=$>>>8&255,i[n++]=$&255,i[n++]=$>>>24&15|16,i[n++]=$>>>16&255,i[n++]=s>>>8|128,i[n++]=s&255;for(var K=0;K<6;++K)i[n+K]=o[K];return t||ai(i)}var Kh,gu,mu,wu,Wh,Hh=Dr(()=>{yu();Ko();mu=0,wu=0;Wh=Uy});function Ny(r){if(!si(r))throw TypeError("Invalid UUID");var t,e=new Uint8Array(16);return e[0]=(t=parseInt(r.slice(0,8),16))>>>24,e[1]=t>>>16&255,e[2]=t>>>8&255,e[3]=t&255,e[4]=(t=parseInt(r.slice(9,13),16))>>>8,e[5]=t&255,e[6]=(t=parseInt(r.slice(14,18),16))>>>8,e[7]=t&255,e[8]=(t=parseInt(r.slice(19,23),16))>>>8,e[9]=t&255,e[10]=(t=parseInt(r.slice(24,36),16))/1099511627776&255,e[11]=t/4294967296&255,e[12]=t>>>24&255,e[13]=t>>>16&255,e[14]=t>>>8&255,e[15]=t&255,e}var va,xu=Dr(()=>{qo();va=Ny});function zy(r){r=unescape(encodeURIComponent(r));for(var t=[],e=0;e{Ko();xu();Fy="6ba7b810-9dad-11d1-80b4-00c04fd430c8",Dy="6ba7b811-9dad-11d1-80b4-00c04fd430c8"});function qy(r){if(typeof r=="string"){var t=unescape(encodeURIComponent(r));r=new Uint8Array(t.length);for(var e=0;e>5]>>>i%32&255,s=parseInt(n.charAt(o>>>4&15)+n.charAt(o&15),16);t.push(s)}return t}function $h(r){return(r+64>>>9<<4)+14+1}function Wy(r,t){r[t>>5]|=128<>5]|=(r[n/8]&255)<>16)+(t>>16)+(e>>16);return n<<16|e&65535}function $y(r,t){return r<>>32-t}function Ia(r,t,e,n,i,o){return ci($y(ci(ci(t,r),ci(n,o)),i),e)}function Ur(r,t,e,n,i,o,s){return Ia(t&e|~t&n,r,t,i,o,s)}function Nr(r,t,e,n,i,o,s){return Ia(t&n|e&~n,r,t,i,o,s)}function zr(r,t,e,n,i,o,s){return Ia(t^e^n,r,t,i,o,s)}function Fr(r,t,e,n,i,o,s){return Ia(e^(t|~n),r,t,i,o,s)}var jh,Gh=Dr(()=>{jh=qy});var jy,Vh,Yh=Dr(()=>{bu();Gh();jy=ka("v3",48,jh),Vh=jy});function Gy(r,t,e){r=r||{};var n=r.random||(r.rng||Do)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,t){e=e||0;for(var i=0;i<16;++i)t[e+i]=n[i];return t}return ai(n)}var Zh,Xh=Dr(()=>{yu();Ko();Zh=Gy});function Vy(r,t,e,n){switch(r){case 0:return t&e^~t&n;case 1:return t^e^n;case 2:return t&e^t&n^e&n;case 3:return t^e^n}}function vu(r,t){return r<>>32-t}function Yy(r){var t=[1518500249,1859775393,2400959708,3395469782],e=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof r=="string"){var n=unescape(encodeURIComponent(r));r=[];for(var i=0;i>>0;_t=Q,Q=mt,mt=vu(ht,30)>>>0,ht=tt,tt=Ft}e[0]=e[0]+tt>>>0,e[1]=e[1]+ht>>>0,e[2]=e[2]+mt>>>0,e[3]=e[3]+Q>>>0,e[4]=e[4]+_t>>>0}return[e[0]>>24&255,e[0]>>16&255,e[0]>>8&255,e[0]&255,e[1]>>24&255,e[1]>>16&255,e[1]>>8&255,e[1]&255,e[2]>>24&255,e[2]>>16&255,e[2]>>8&255,e[2]&255,e[3]>>24&255,e[3]>>16&255,e[3]>>8&255,e[3]&255,e[4]>>24&255,e[4]>>16&255,e[4]>>8&255,e[4]&255]}var Jh,Qh=Dr(()=>{Jh=Yy});var Zy,tl,el=Dr(()=>{bu();Qh();Zy=ka("v5",80,Jh),tl=Zy});var rl,nl=Dr(()=>{rl="00000000-0000-0000-0000-000000000000"});function Xy(r){if(!si(r))throw TypeError("Invalid UUID");return parseInt(r.substr(14,1),16)}var il,ol=Dr(()=>{qo();il=Xy});var ku={};uf(ku,{NIL:()=>rl,parse:()=>va,stringify:()=>ai,v1:()=>Wh,v3:()=>Vh,v4:()=>Zh,v5:()=>tl,validate:()=>si,version:()=>il});var Iu=Dr(()=>{Hh();Yh();Xh();el();nl();ol();qo();Ko();xu()});var al=_e((Zx,sl)=>{"use strict";var Jy=(Iu(),dc(ku)).v4,Qy=function(r,t,e,n){if(typeof r!="string")throw new TypeError(r+" must be a string");n=n||{};let i=typeof n.version=="number"?n.version:2;if(i!==1&&i!==2)throw new TypeError(i+" must be 1 or 2");let o={method:r};if(i===2&&(o.jsonrpc="2.0"),t){if(typeof t!="object"&&!Array.isArray(t))throw new TypeError(t+" must be an object, array or omitted");o.params=t}if(typeof e>"u"){let s=typeof n.generator=="function"?n.generator:function(){return Jy()};o.id=s(o,n)}else i===2&&e===null?n.notificationIdNull&&(o.id=null):o.id=e;return o};sl.exports=Qy});var ul=_e((Xx,cl)=>{"use strict";var tg=(Iu(),dc(ku)).v4,eg=al(),Wo=function(r,t){if(!(this instanceof Wo))return new Wo(r,t);t||(t={}),this.options={reviver:typeof t.reviver<"u"?t.reviver:null,replacer:typeof t.replacer<"u"?t.replacer:null,generator:typeof t.generator<"u"?t.generator:function(){return tg()},version:typeof t.version<"u"?t.version:2,notificationIdNull:typeof t.notificationIdNull=="boolean"?t.notificationIdNull:!1},this.callServer=r};cl.exports=Wo;Wo.prototype.request=function(r,t,e,n){let i=this,o=null,s=Array.isArray(r)&&typeof t=="function";if(this.options.version===1&&s)throw new TypeError("JSON-RPC 1.0 does not support batching");if(s||!s&&r&&typeof r=="object"&&typeof t=="function")n=t,o=r;else{typeof e=="function"&&(n=e,e=void 0);let A=typeof n=="function";try{o=eg(r,t,e,{generator:this.options.generator,version:this.options.version,notificationIdNull:this.options.notificationIdNull})}catch(L){if(A)return n(L);throw L}if(!A)return o}let g;try{g=JSON.stringify(o,this.options.replacer)}catch(A){return n(A)}return this.callServer(g,function(A,L){i._parseResponse(A,L,n)}),o};Wo.prototype._parseResponse=function(r,t,e){if(r){e(r);return}if(!t)return e();let n;try{n=JSON.parse(t,this.options.reviver)}catch(i){return e(i)}if(e.length===3)if(Array.isArray(n)){let i=function(s){return typeof s.error<"u"},o=function(s){return!i(s)};return e(null,n.filter(i),n.filter(o))}else return e(null,n.error,n.result);e(null,n)}});var Zl=_e((ss,rf)=>{(function(r,t){typeof ss=="object"&&typeof rf=="object"?rf.exports=t():typeof define=="function"&&define.amd?define([],t):typeof ss=="object"?ss.QRCodeStyling=t():r.QRCodeStyling=t()})(ss,function(){return(()=>{var r={192:(i,o)=>{var s,d,g=function(){var A=function(v,y){var a=v,c=tt[y],f=null,p=0,m=null,b=[],P={},E=function(N,z){f=function(U){for(var H=new Array(U),G=0;G=7&&S(N),m==null&&(m=D(a,c,b)),F(m,z)},u=function(N,z){for(var U=-1;U<=7;U+=1)if(!(N+U<=-1||p<=N+U))for(var H=-1;H<=7;H+=1)z+H<=-1||p<=z+H||(f[N+U][z+H]=0<=U&&U<=6&&(H==0||H==6)||0<=H&&H<=6&&(U==0||U==6)||2<=U&&U<=4&&2<=H&&H<=4)},l=function(){for(var N=8;N>U&1)==1;f[Math.floor(U/3)][U%3+p-8-3]=H}for(U=0;U<18;U+=1)H=!N&&(z>>U&1)==1,f[U%3+p-8-3][Math.floor(U/3)]=H},O=function(N,z){for(var U=c<<3|z,H=ht.getBCHTypeInfo(U),G=0;G<15;G+=1){var nt=!N&&(H>>G&1)==1;G<6?f[G][8]=nt:G<8?f[G+1][8]=nt:f[p-15+G][8]=nt}for(G=0;G<15;G+=1)nt=!N&&(H>>G&1)==1,G<8?f[8][p-G-1]=nt:G<9?f[8][15-G-1+1]=nt:f[8][15-G-1]=nt;f[p-8][8]=!N},F=function(N,z){for(var U=-1,H=p-1,G=7,nt=0,pt=ht.getMaskFunction(z),ot=p-1;ot>0;ot-=2)for(ot==6&&(ot-=1);;){for(var xt=0;xt<2;xt+=1)if(f[H][ot-xt]==null){var qt=!1;nt>>G&1)==1),pt(H,ot-xt)&&(qt=!qt),f[H][ot-xt]=qt,(G-=1)==-1&&(nt+=1,G=7)}if((H+=U)<0||p<=H){H-=U,U=-U;break}}},D=function(N,z,U){for(var H=_t.getRSBlocks(N,z),G=Tt(),nt=0;nt8*ot)throw"code length overflow. ("+G.getLengthInBits()+">"+8*ot+")";for(G.getLengthInBits()+4<=8*ot&&G.put(0,4);G.getLengthInBits()%8!=0;)G.putBit(!1);for(;!(G.getLengthInBits()>=8*ot||(G.put(236,8),G.getLengthInBits()>=8*ot));)G.put(17,8);return function(xt,qt){for(var Et=0,zt=0,Ut=0,bt=new Array(qt.length),Ct=new Array(qt.length),$t=0;$t=0?Xt.getAt(je):0}}var pe=0;for(re=0;reqt)&&(pt=qt,ot=xt)}return ot}())},P.createTableTag=function(N,z){N=N||2;var U="";U+='";for(var G=0;G';U+=""}return(U+="")+"
"},P.createSvgTag=function(N,z,U,H){var G={};typeof arguments[0]=="object"&&(N=(G=arguments[0]).cellSize,z=G.margin,U=G.alt,H=G.title),N=N||2,z=z===void 0?4*N:z,(U=typeof U=="string"?{text:U}:U||{}).text=U.text||null,U.id=U.text?U.id||"qrcode-description":null,(H=typeof H=="string"?{text:H}:H||{}).text=H.text||null,H.id=H.text?H.id||"qrcode-title":null;var nt,pt,ot,xt,qt=P.getModuleCount()*N+2*z,Et="";for(xt="l"+N+",0 0,"+N+" -"+N+",0 0,-"+N+"z ",Et+=''+Z(H.text)+"":"",Et+=U.text?''+Z(U.text)+"":"",Et+='',Et+='"},P.createDataURL=function(N,z){N=N||2,z=z===void 0?4*N:z;var U=P.getModuleCount()*N+2*z,H=z,G=U-z;return B(U,U,function(nt,pt){if(H<=nt&&nt"};var Z=function(N){for(var z="",U=0;U":z+=">";break;case"&":z+="&";break;case'"':z+=""";break;default:z+=H}}return z};return P.createASCII=function(N,z){if((N=N||1)<2)return function(bt){bt=bt===void 0?2:bt;var Ct,$t,Zt,xe,re,jt=1*P.getModuleCount()+2*bt,Xt=bt,je=jt-bt,pe={"\u2588\u2588":"\u2588","\u2588 ":"\u2580"," \u2588":"\u2584"," ":" "},Ie={"\u2588\u2588":"\u2580","\u2588 ":"\u2580"," \u2588":" "," ":" "},Ye="";for(Ct=0;Ct=je?Ie[re]:pe[re];Ye+=` +`}return jt%2&&bt>0?Ye.substring(0,Ye.length-jt-1)+Array(jt+1).join("\u2580"):Ye.substring(0,Ye.length-1)}(z);N-=1,z=z===void 0?2*N:z;var U,H,G,nt,pt=P.getModuleCount()*N+2*z,ot=z,xt=pt-z,qt=Array(N+1).join("\u2588\u2588"),Et=Array(N+1).join(" "),zt="",Ut="";for(U=0;U>>8),p.push(255&P)):p.push(c)}}return p}};var L,M,$,K,et,tt={L:1,M:0,Q:3,H:2},ht=(L=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],M=1335,$=7973,et=function(v){for(var y=0;v!=0;)y+=1,v>>>=1;return y},(K={}).getBCHTypeInfo=function(v){for(var y=v<<10;et(y)-et(M)>=0;)y^=M<=0;)y^=$<5&&(a+=3+p-5)}for(c=0;c=256;)c-=255;return v[c]}}}();function Q(v,y){if(v.length===void 0)throw v.length+"/"+y;var a=function(){for(var f=0;f>>7-c%8&1)==1},put:function(c,f){for(var p=0;p>>f-p-1&1)==1)},getLengthInBits:function(){return y},putBit:function(c){var f=Math.floor(y/8);v.length<=f&&v.push(0),c&&(v[f]|=128>>>y%8),y+=1}};return a},ee=function(v){var y=v,a={getMode:function(){return 1},getLength:function(p){return y.length},write:function(p){for(var m=y,b=0;b+2>>8&255)+(255&b),f.put(b,13),m+=2}if(m>>8)},writeBytes:function(a,c,f){c=c||0,f=f||a.length;for(var p=0;p0&&(a+=","),a+=v[c];return a+"]"}};return y},x=function(v){var y=v,a=0,c=0,f=0,p={read:function(){for(;f<8;){if(a>=y.length){if(f==0)return-1;throw"unexpected end of file./"+f}var b=y.charAt(a);if(a+=1,b=="=")return f=0,-1;b.match(/^\s$/)||(c=c<<6|m(b.charCodeAt(0)),f+=6)}var P=c>>>f-8&255;return f-=8,P}},m=function(b){if(65<=b&&b<=90)return b-65;if(97<=b&&b<=122)return b-97+26;if(48<=b&&b<=57)return b-48+52;if(b==43)return 62;if(b==47)return 63;throw"c:"+b};return p},B=function(v,y,a){for(var c=function(u,l){var _=u,S=l,O=new Array(u*l),F={setPixel:function(N,z,U){O[z*_+N]=U},write:function(N){N.writeString("GIF87a"),N.writeShort(_),N.writeShort(S),N.writeByte(128),N.writeByte(0),N.writeByte(0),N.writeByte(0),N.writeByte(0),N.writeByte(0),N.writeByte(255),N.writeByte(255),N.writeByte(255),N.writeString(","),N.writeShort(0),N.writeShort(0),N.writeShort(_),N.writeShort(S),N.writeByte(0);var z=D(2);N.writeByte(2);for(var U=0;z.length-U>255;)N.writeByte(255),N.writeBytes(z,U,255),U+=255;N.writeByte(z.length-U),N.writeBytes(z,U,z.length-U),N.writeByte(0),N.writeString(";")}},D=function(N){for(var z=1<>>$t!=0)throw"length over";for(;ot+$t>=8;)pt.writeByte(255&(Ct<>>=8-ot,xt=0,ot=0;xt|=Ct<0&&pt.writeByte(xt)}});Et.write(z,H);var zt=0,Ut=String.fromCharCode(O[zt]);for(zt+=1;zt=6;)F(u>>>l-6),l-=6},O.flush=function(){if(l>0&&(F(u<<6-l),u=0,l=0),_%3!=0)for(var Z=3-_%3,N=0;N>6,128|63&K):K<55296||K>=57344?M.push(224|K>>12,128|K>>6&63,128|63&K):($++,K=65536+((1023&K)<<10|1023&L.charCodeAt($)),M.push(240|K>>18,128|K>>12&63,128|K>>6&63,128|63&K))}return M}(A)},(d=typeof(s=function(){return g})=="function"?s.apply(o,[]):s)===void 0||(i.exports=d)}},t={};function e(i){var o=t[i];if(o!==void 0)return o.exports;var s=t[i]={exports:{}};return r[i](s,s.exports,e),s.exports}e.n=i=>{var o=i&&i.__esModule?()=>i.default:()=>i;return e.d(o,{a:o}),o},e.d=(i,o)=>{for(var s in o)e.o(o,s)&&!e.o(i,s)&&Object.defineProperty(i,s,{enumerable:!0,get:o[s]})},e.o=(i,o)=>Object.prototype.hasOwnProperty.call(i,o);var n={};return(()=>{"use strict";e.d(n,{default:()=>E});var i=function(){return i=Object.assign||function(u){for(var l,_=1,S=arguments.length;_0&&z[z.length-1])||ot[0]!==6&&ot[0]!==2)){H=0;continue}if(ot[0]===3&&(!z||ot[1]>z[0]&&ot[1]2||D&&Z||N&&z)this._basicSquare({x:_,y:S,size:O,rotation:0});else{if(U===2){var H=0;return D&&N?H=Math.PI/2:N&&Z?H=Math.PI:Z&&z&&(H=-Math.PI/2),void this._basicCornerRounded({x:_,y:S,size:O,rotation:H})}if(U===1)return H=0,N?H=Math.PI/2:Z?H=Math.PI:z&&(H=-Math.PI/2),void this._basicSideRounded({x:_,y:S,size:O,rotation:H})}else this._basicDot({x:_,y:S,size:O,rotation:0})},u.prototype._drawExtraRounded=function(l){var _=l.x,S=l.y,O=l.size,F=l.getNeighbor,D=F?+F(-1,0):0,Z=F?+F(1,0):0,N=F?+F(0,-1):0,z=F?+F(0,1):0,U=D+Z+N+z;if(U!==0)if(U>2||D&&Z||N&&z)this._basicSquare({x:_,y:S,size:O,rotation:0});else{if(U===2){var H=0;return D&&N?H=Math.PI/2:N&&Z?H=Math.PI:Z&&z&&(H=-Math.PI/2),void this._basicCornerExtraRounded({x:_,y:S,size:O,rotation:H})}if(U===1)return H=0,N?H=Math.PI/2:Z?H=Math.PI:z&&(H=-Math.PI/2),void this._basicSideRounded({x:_,y:S,size:O,rotation:H})}else this._basicDot({x:_,y:S,size:O,rotation:0})},u.prototype._drawClassy=function(l){var _=l.x,S=l.y,O=l.size,F=l.getNeighbor,D=F?+F(-1,0):0,Z=F?+F(1,0):0,N=F?+F(0,-1):0,z=F?+F(0,1):0;D+Z+N+z!==0?D||N?Z||z?this._basicSquare({x:_,y:S,size:O,rotation:0}):this._basicCornerRounded({x:_,y:S,size:O,rotation:Math.PI/2}):this._basicCornerRounded({x:_,y:S,size:O,rotation:-Math.PI/2}):this._basicCornersRounded({x:_,y:S,size:O,rotation:Math.PI/2})},u.prototype._drawClassyRounded=function(l){var _=l.x,S=l.y,O=l.size,F=l.getNeighbor,D=F?+F(-1,0):0,Z=F?+F(1,0):0,N=F?+F(0,-1):0,z=F?+F(0,1):0;D+Z+N+z!==0?D||N?Z||z?this._basicSquare({x:_,y:S,size:O,rotation:0}):this._basicCornerExtraRounded({x:_,y:S,size:O,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:_,y:S,size:O,rotation:-Math.PI/2}):this._basicCornersRounded({x:_,y:S,size:O,rotation:Math.PI/2})},u}();let K=$;var et=function(){return et=Object.assign||function(u){for(var l,_=1,S=arguments.length;_0&&O[O.length-1])||U[0]!==6&&U[0]!==2)){D=0;continue}if(U[0]===3&&(!O||U[1]>O[0]&&U[1]qt||Et&&Et=(_-D.hideXDots)/2&&pt<(_+D.hideXDots)/2&&ot>=(_-D.hideYDots)/2&&ot<(_+D.hideYDots)/2||((xt=Dt[pt])===null||xt===void 0?void 0:xt[ot])||((qt=Dt[pt-_+7])===null||qt===void 0?void 0:qt[ot])||((Et=Dt[pt])===null||Et===void 0?void 0:Et[ot-_+7])||((zt=T[pt])===null||zt===void 0?void 0:zt[ot])||((Ut=T[pt-_+7])===null||Ut===void 0?void 0:Ut[ot])||((bt=T[pt])===null||bt===void 0?void 0:bt[ot-_+7]))}),this.drawCorners(),this._options.image?[4,this.drawImage({width:D.width,height:D.height,count:_,dotSize:F})]:[3,4];case 3:nt.sent(),nt.label=4;case 4:return[2]}})})},u.prototype.drawBackground=function(){var l,_,S,O=this._element,F=this._options;if(O){var D=(l=F.backgroundOptions)===null||l===void 0?void 0:l.gradient,Z=(_=F.backgroundOptions)===null||_===void 0?void 0:_.color;if((D||Z)&&this._createColor({options:D,color:Z,additionalRotation:0,x:0,y:0,height:F.height,width:F.width,name:"background-color"}),(S=F.backgroundOptions)===null||S===void 0?void 0:S.round){var N=Math.min(F.width,F.height),z=document.createElementNS("http://www.w3.org/2000/svg","rect");this._backgroundClipPath=document.createElementNS("http://www.w3.org/2000/svg","clipPath"),this._backgroundClipPath.setAttribute("id","clip-path-background-color"),this._defs.appendChild(this._backgroundClipPath),z.setAttribute("x",String((F.width-N)/2)),z.setAttribute("y",String((F.height-N)/2)),z.setAttribute("width",String(N)),z.setAttribute("height",String(N)),z.setAttribute("rx",String(N/2*F.backgroundOptions.round)),this._backgroundClipPath.appendChild(z)}}},u.prototype.drawDots=function(l){var _,S,O=this;if(!this._qr)throw"QR code is not defined";var F=this._options,D=this._qr.getModuleCount();if(D>F.width||D>F.height)throw"The canvas is too small.";var Z=Math.min(F.width,F.height)-2*F.margin,N=(F.shape===Tt?Z/Math.sqrt(2):Z)/D,z=(F.width-D*N)/2,U=(F.height-D*N)/2,H=new K({svg:this._element,type:F.dotsOptions.type});this._dotsClipPath=document.createElementNS("http://www.w3.org/2000/svg","clipPath"),this._dotsClipPath.setAttribute("id","clip-path-dot-color"),this._defs.appendChild(this._dotsClipPath),this._createColor({options:(_=F.dotsOptions)===null||_===void 0?void 0:_.gradient,color:F.dotsOptions.color,additionalRotation:0,x:0,y:0,height:F.height,width:F.width,name:"dot-color"});for(var G=function(Zt){for(var xe=function(jt){return l&&!l(Zt,jt)?"continue":!((S=nt._qr)===null||S===void 0)&&S.isDark(Zt,jt)?(H.draw(z+Zt*N,U+jt*N,N,function(Xt,je){return!(Zt+Xt<0||jt+je<0||Zt+Xt>=D||jt+je>=D)&&!(l&&!l(Zt+Xt,jt+je))&&!!O._qr&&O._qr.isDark(Zt+Xt,jt+je)}),void(H._element&&nt._dotsClipPath&&nt._dotsClipPath.appendChild(H._element))):"continue"},re=0;re=ot-1&&pt<=xt-ot&&bt>=ot-1&&bt<=xt-ot||Math.sqrt((pt-Ut)*(pt-Ut)+(bt-Ut)*(bt-Ut))>Ut?zt[pt][bt]=0:zt[pt][bt]=this._qr.isDark(bt-2*ot<0?bt:bt>=D?bt-2*ot:bt-ot,pt-2*ot<0?pt:pt>=D?pt-2*ot:pt-ot)?1:0}var Ct=function(Zt){for(var xe=function(jt){if(!zt[Zt][jt])return"continue";H.draw(qt+Zt*N,Et+jt*N,N,function(Xt,je){var pe;return!!(!((pe=zt[Zt+Xt])===null||pe===void 0)&&pe[jt+je])}),H._element&&$t._dotsClipPath&&$t._dotsClipPath.appendChild(H._element)},re=0;reZ?N:Z,H=document.createElementNS("http://www.w3.org/2000/svg","rect");if(H.setAttribute("x",String(F)),H.setAttribute("y",String(D)),H.setAttribute("height",String(Z)),H.setAttribute("width",String(N)),H.setAttribute("clip-path","url('#clip-path-".concat(z,"')")),_){var G;if(_.type==="radial")(G=document.createElementNS("http://www.w3.org/2000/svg","radialGradient")).setAttribute("id",z),G.setAttribute("gradientUnits","userSpaceOnUse"),G.setAttribute("fx",String(F+N/2)),G.setAttribute("fy",String(D+Z/2)),G.setAttribute("cx",String(F+N/2)),G.setAttribute("cy",String(D+Z/2)),G.setAttribute("r",String(U/2));else{var nt=((_.rotation||0)+O)%(2*Math.PI),pt=(nt+2*Math.PI)%(2*Math.PI),ot=F+N/2,xt=D+Z/2,qt=F+N/2,Et=D+Z/2;pt>=0&&pt<=.25*Math.PI||pt>1.75*Math.PI&&pt<=2*Math.PI?(ot-=N/2,xt-=Z/2*Math.tan(nt),qt+=N/2,Et+=Z/2*Math.tan(nt)):pt>.25*Math.PI&&pt<=.75*Math.PI?(xt-=Z/2,ot-=N/2/Math.tan(nt),Et+=Z/2,qt+=N/2/Math.tan(nt)):pt>.75*Math.PI&&pt<=1.25*Math.PI?(ot+=N/2,xt+=Z/2*Math.tan(nt),qt-=N/2,Et-=Z/2*Math.tan(nt)):pt>1.25*Math.PI&&pt<=1.75*Math.PI&&(xt+=Z/2,ot+=N/2/Math.tan(nt),Et-=Z/2,qt-=N/2/Math.tan(nt)),(G=document.createElementNS("http://www.w3.org/2000/svg","linearGradient")).setAttribute("id",z),G.setAttribute("gradientUnits","userSpaceOnUse"),G.setAttribute("x1",String(Math.round(ot))),G.setAttribute("y1",String(Math.round(xt))),G.setAttribute("x2",String(Math.round(qt))),G.setAttribute("y2",String(Math.round(Et)))}_.colorStops.forEach(function(zt){var Ut=zt.offset,bt=zt.color,Ct=document.createElementNS("http://www.w3.org/2000/svg","stop");Ct.setAttribute("offset","".concat(100*Ut,"%")),Ct.setAttribute("stop-color",bt),G.appendChild(Ct)}),H.setAttribute("fill","url('#".concat(z,"')")),this._defs.appendChild(G)}else S&&H.setAttribute("fill",S);this._element.appendChild(H)},u}(),x="canvas";for(var B={},v=0;v<=40;v++)B[v]=v;let y={type:x,shape:"square",width:300,height:300,data:"",margin:0,qrOptions:{typeNumber:B[0],mode:void 0,errorCorrectionLevel:"Q"},imageOptions:{hideBackgroundDots:!0,imageSize:.4,crossOrigin:void 0,margin:0},dotsOptions:{type:"square",color:"#000"},backgroundOptions:{round:0,color:"#fff"}};var a=function(){return a=Object.assign||function(u){for(var l,_=1,S=arguments.length;_Math.min(l.width,l.height)&&(l.margin=Math.min(l.width,l.height)),l.dotsOptions=a({},l.dotsOptions),l.dotsOptions.gradient&&(l.dotsOptions.gradient=c(l.dotsOptions.gradient)),l.cornersSquareOptions&&(l.cornersSquareOptions=a({},l.cornersSquareOptions),l.cornersSquareOptions.gradient&&(l.cornersSquareOptions.gradient=c(l.cornersSquareOptions.gradient))),l.cornersDotOptions&&(l.cornersDotOptions=a({},l.cornersDotOptions),l.cornersDotOptions.gradient&&(l.cornersDotOptions.gradient=c(l.cornersDotOptions.gradient))),l.backgroundOptions&&(l.backgroundOptions=a({},l.backgroundOptions),l.backgroundOptions.gradient&&(l.backgroundOptions.gradient=c(l.backgroundOptions.gradient))),l}var p=e(192),m=e.n(p),b=function(u,l,_,S){return new(_||(_=Promise))(function(O,F){function D(z){try{N(S.next(z))}catch(U){F(U)}}function Z(z){try{N(S.throw(z))}catch(U){F(U)}}function N(z){var U;z.done?O(z.value):(U=z.value,U instanceof _?U:new _(function(H){H(U)})).then(D,Z)}N((S=S.apply(u,l||[])).next())})},P=function(u,l){var _,S,O,F,D={label:0,sent:function(){if(1&O[0])throw O[1];return O[1]},trys:[],ops:[]};return F={next:Z(0),throw:Z(1),return:Z(2)},typeof Symbol=="function"&&(F[Symbol.iterator]=function(){return this}),F;function Z(N){return function(z){return function(U){if(_)throw new TypeError("Generator is already executing.");for(;D;)try{if(_=1,S&&(O=2&U[0]?S.return:U[0]?S.throw||((O=S.return)&&O.call(S),0):S.next)&&!(O=O.call(S,U[1])).done)return O;switch(S=0,O&&(U=[2&U[0],O.value]),U[0]){case 0:case 1:O=U;break;case 4:return D.label++,{value:U[1],done:!1};case 5:D.label++,S=U[1],U=[0];continue;case 7:U=D.ops.pop(),D.trys.pop();continue;default:if(!((O=(O=D.trys).length>0&&O[O.length-1])||U[0]!==6&&U[0]!==2)){D=0;continue}if(U[0]===3&&(!O||U[1]>O[0]&&U[1]\r +`+O],{type:"image/svg+xml"})]):[2,new Promise(function(D){return _.toBlob(D,"image/".concat(l),1)})]:[2,null]}})})},u.prototype.download=function(l){return b(this,void 0,void 0,function(){var _,S,O,F,D;return P(this,function(Z){switch(Z.label){case 0:if(!this._qr)throw"QR code is empty";return _="png",S="qr",typeof l=="string"?(_=l,console.warn("Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument")):typeof l=="object"&&l!==null&&(l.name&&(S=l.name),l.extension&&(_=l.extension)),[4,this._getElement(_)];case 1:return(O=Z.sent())?(_.toLowerCase()==="svg"?(F=new XMLSerializer,D=`\r +`+(D=F.serializeToString(O)),g("data:image/svg+xml;charset=utf-8,"+encodeURIComponent(D),"".concat(S,".svg"))):g(O.toDataURL("image/".concat(_)),"".concat(S,".").concat(_)),[2]):[2]}})})},u}()})(),n.default})()})});var rd=_e((Kn,ed)=>{var td=typeof self<"u"?self:Kn,fc=function(){function r(){this.fetch=!1,this.DOMException=td.DOMException}return r.prototype=td,new r}();(function(r){var t=function(e){var n={searchParams:"URLSearchParams"in r,iterable:"Symbol"in r&&"iterator"in Symbol,blob:"FileReader"in r&&"Blob"in r&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in r,arrayBuffer:"ArrayBuffer"in r};function i(x){return x&&DataView.prototype.isPrototypeOf(x)}if(n.arrayBuffer)var o=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],s=ArrayBuffer.isView||function(x){return x&&o.indexOf(Object.prototype.toString.call(x))>-1};function d(x){if(typeof x!="string"&&(x=String(x)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(x))throw new TypeError("Invalid character in header field name");return x.toLowerCase()}function g(x){return typeof x!="string"&&(x=String(x)),x}function A(x){var B={next:function(){var v=x.shift();return{done:v===void 0,value:v}}};return n.iterable&&(B[Symbol.iterator]=function(){return B}),B}function L(x){this.map={},x instanceof L?x.forEach(function(B,v){this.append(v,B)},this):Array.isArray(x)?x.forEach(function(B){this.append(B[0],B[1])},this):x&&Object.getOwnPropertyNames(x).forEach(function(B){this.append(B,x[B])},this)}L.prototype.append=function(x,B){x=d(x),B=g(B);var v=this.map[x];this.map[x]=v?v+", "+B:B},L.prototype.delete=function(x){delete this.map[d(x)]},L.prototype.get=function(x){return x=d(x),this.has(x)?this.map[x]:null},L.prototype.has=function(x){return this.map.hasOwnProperty(d(x))},L.prototype.set=function(x,B){this.map[d(x)]=g(B)},L.prototype.forEach=function(x,B){for(var v in this.map)this.map.hasOwnProperty(v)&&x.call(B,this.map[v],v,this)},L.prototype.keys=function(){var x=[];return this.forEach(function(B,v){x.push(v)}),A(x)},L.prototype.values=function(){var x=[];return this.forEach(function(B){x.push(B)}),A(x)},L.prototype.entries=function(){var x=[];return this.forEach(function(B,v){x.push([v,B])}),A(x)},n.iterable&&(L.prototype[Symbol.iterator]=L.prototype.entries);function M(x){if(x.bodyUsed)return Promise.reject(new TypeError("Already read"));x.bodyUsed=!0}function $(x){return new Promise(function(B,v){x.onload=function(){B(x.result)},x.onerror=function(){v(x.error)}})}function K(x){var B=new FileReader,v=$(B);return B.readAsArrayBuffer(x),v}function et(x){var B=new FileReader,v=$(B);return B.readAsText(x),v}function tt(x){for(var B=new Uint8Array(x),v=new Array(B.length),y=0;y-1?B:x}function Tt(x,B){B=B||{};var v=B.body;if(x instanceof Tt){if(x.bodyUsed)throw new TypeError("Already read");this.url=x.url,this.credentials=x.credentials,B.headers||(this.headers=new L(x.headers)),this.method=x.method,this.mode=x.mode,this.signal=x.signal,!v&&x._bodyInit!=null&&(v=x._bodyInit,x.bodyUsed=!0)}else this.url=String(x);if(this.credentials=B.credentials||this.credentials||"same-origin",(B.headers||!this.headers)&&(this.headers=new L(B.headers)),this.method=_t(B.method||this.method||"GET"),this.mode=B.mode||this.mode||null,this.signal=B.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&v)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(v)}Tt.prototype.clone=function(){return new Tt(this,{body:this._bodyInit})};function ee(x){var B=new FormData;return x.trim().split("&").forEach(function(v){if(v){var y=v.split("="),a=y.shift().replace(/\+/g," "),c=y.join("=").replace(/\+/g," ");B.append(decodeURIComponent(a),decodeURIComponent(c))}}),B}function Ft(x){var B=new L,v=x.replace(/\r?\n[\t ]+/g," ");return v.split(/\r?\n/).forEach(function(y){var a=y.split(":"),c=a.shift().trim();if(c){var f=a.join(":").trim();B.append(c,f)}}),B}mt.call(Tt.prototype);function Dt(x,B){B||(B={}),this.type="default",this.status=B.status===void 0?200:B.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in B?B.statusText:"OK",this.headers=new L(B.headers),this.url=B.url||"",this._initBody(x)}mt.call(Dt.prototype),Dt.prototype.clone=function(){return new Dt(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new L(this.headers),url:this.url})},Dt.error=function(){var x=new Dt(null,{status:0,statusText:""});return x.type="error",x};var T=[301,302,303,307,308];Dt.redirect=function(x,B){if(T.indexOf(B)===-1)throw new RangeError("Invalid status code");return new Dt(null,{status:B,headers:{location:x}})},e.DOMException=r.DOMException;try{new e.DOMException}catch{e.DOMException=function(B,v){this.message=B,this.name=v;var y=Error(B);this.stack=y.stack},e.DOMException.prototype=Object.create(Error.prototype),e.DOMException.prototype.constructor=e.DOMException}function C(x,B){return new Promise(function(v,y){var a=new Tt(x,B);if(a.signal&&a.signal.aborted)return y(new e.DOMException("Aborted","AbortError"));var c=new XMLHttpRequest;function f(){c.abort()}c.onload=function(){var p={status:c.status,statusText:c.statusText,headers:Ft(c.getAllResponseHeaders()||"")};p.url="responseURL"in c?c.responseURL:p.headers.get("X-Request-URL");var m="response"in c?c.response:c.responseText;v(new Dt(m,p))},c.onerror=function(){y(new TypeError("Network request failed"))},c.ontimeout=function(){y(new TypeError("Network request failed"))},c.onabort=function(){y(new e.DOMException("Aborted","AbortError"))},c.open(a.method,a.url,!0),a.credentials==="include"?c.withCredentials=!0:a.credentials==="omit"&&(c.withCredentials=!1),"responseType"in c&&n.blob&&(c.responseType="blob"),a.headers.forEach(function(p,m){c.setRequestHeader(m,p)}),a.signal&&(a.signal.addEventListener("abort",f),c.onreadystatechange=function(){c.readyState===4&&a.signal.removeEventListener("abort",f)}),c.send(typeof a._bodyInit>"u"?null:a._bodyInit)})}return C.polyfill=!0,r.fetch||(r.fetch=C,r.Headers=L,r.Request=Tt,r.Response=Dt),e.Headers=L,e.Request=Tt,e.Response=Dt,e.fetch=C,Object.defineProperty(e,"__esModule",{value:!0}),e}({})})(fc);fc.fetch.ponyfill=!0;delete fc.fetch.polyfill;var go=fc;Kn=go.fetch;Kn.default=go.fetch;Kn.fetch=go.fetch;Kn.Headers=go.Headers;Kn.Request=go.Request;Kn.Response=go.Response;ed.exports=Kn});var ad=_e((Ek,lc)=>{(function(r){"use strict";var t=function(w){var I,k=new Float64Array(16);if(w)for(I=0;I>24&255,w[I+1]=k>>16&255,w[I+2]=k>>8&255,w[I+3]=k&255,w[I+4]=h>>24&255,w[I+5]=h>>16&255,w[I+6]=h>>8&255,w[I+7]=h&255}function et(w,I,k,h,R){var j,V=0;for(j=0;j>>8)-1}function tt(w,I,k,h){return et(w,I,k,h,16)}function ht(w,I,k,h){return et(w,I,k,h,32)}function mt(w,I,k,h){for(var R=h[0]&255|(h[1]&255)<<8|(h[2]&255)<<16|(h[3]&255)<<24,j=k[0]&255|(k[1]&255)<<8|(k[2]&255)<<16|(k[3]&255)<<24,V=k[4]&255|(k[5]&255)<<8|(k[6]&255)<<16|(k[7]&255)<<24,rt=k[8]&255|(k[9]&255)<<8|(k[10]&255)<<16|(k[11]&255)<<24,ft=k[12]&255|(k[13]&255)<<8|(k[14]&255)<<16|(k[15]&255)<<24,Ot=h[4]&255|(h[5]&255)<<8|(h[6]&255)<<16|(h[7]&255)<<24,gt=I[0]&255|(I[1]&255)<<8|(I[2]&255)<<16|(I[3]&255)<<24,Wt=I[4]&255|(I[5]&255)<<8|(I[6]&255)<<16|(I[7]&255)<<24,Bt=I[8]&255|(I[9]&255)<<8|(I[10]&255)<<16|(I[11]&255)<<24,Yt=I[12]&255|(I[13]&255)<<8|(I[14]&255)<<16|(I[15]&255)<<24,Jt=h[8]&255|(h[9]&255)<<8|(h[10]&255)<<16|(h[11]&255)<<24,fe=k[16]&255|(k[17]&255)<<8|(k[18]&255)<<16|(k[19]&255)<<24,ce=k[20]&255|(k[21]&255)<<8|(k[22]&255)<<16|(k[23]&255)<<24,Qt=k[24]&255|(k[25]&255)<<8|(k[26]&255)<<16|(k[27]&255)<<24,ne=k[28]&255|(k[29]&255)<<8|(k[30]&255)<<16|(k[31]&255)<<24,te=h[12]&255|(h[13]&255)<<8|(h[14]&255)<<16|(h[15]&255)<<24,Rt=R,Nt=j,It=V,Mt=rt,Lt=ft,vt=Ot,X=gt,J=Wt,lt=Bt,ct=Yt,ut=Jt,yt=fe,Gt=ce,ge=Qt,we=ne,me=te,q,ke=0;ke<20;ke+=2)q=Rt+Gt|0,Lt^=q<<7|q>>>32-7,q=Lt+Rt|0,lt^=q<<9|q>>>32-9,q=lt+Lt|0,Gt^=q<<13|q>>>32-13,q=Gt+lt|0,Rt^=q<<18|q>>>32-18,q=vt+Nt|0,ct^=q<<7|q>>>32-7,q=ct+vt|0,ge^=q<<9|q>>>32-9,q=ge+ct|0,Nt^=q<<13|q>>>32-13,q=Nt+ge|0,vt^=q<<18|q>>>32-18,q=ut+X|0,we^=q<<7|q>>>32-7,q=we+ut|0,It^=q<<9|q>>>32-9,q=It+we|0,X^=q<<13|q>>>32-13,q=X+It|0,ut^=q<<18|q>>>32-18,q=me+yt|0,Mt^=q<<7|q>>>32-7,q=Mt+me|0,J^=q<<9|q>>>32-9,q=J+Mt|0,yt^=q<<13|q>>>32-13,q=yt+J|0,me^=q<<18|q>>>32-18,q=Rt+Mt|0,Nt^=q<<7|q>>>32-7,q=Nt+Rt|0,It^=q<<9|q>>>32-9,q=It+Nt|0,Mt^=q<<13|q>>>32-13,q=Mt+It|0,Rt^=q<<18|q>>>32-18,q=vt+Lt|0,X^=q<<7|q>>>32-7,q=X+vt|0,J^=q<<9|q>>>32-9,q=J+X|0,Lt^=q<<13|q>>>32-13,q=Lt+J|0,vt^=q<<18|q>>>32-18,q=ut+ct|0,yt^=q<<7|q>>>32-7,q=yt+ut|0,lt^=q<<9|q>>>32-9,q=lt+yt|0,ct^=q<<13|q>>>32-13,q=ct+lt|0,ut^=q<<18|q>>>32-18,q=me+we|0,Gt^=q<<7|q>>>32-7,q=Gt+me|0,ge^=q<<9|q>>>32-9,q=ge+Gt|0,we^=q<<13|q>>>32-13,q=we+ge|0,me^=q<<18|q>>>32-18;Rt=Rt+R|0,Nt=Nt+j|0,It=It+V|0,Mt=Mt+rt|0,Lt=Lt+ft|0,vt=vt+Ot|0,X=X+gt|0,J=J+Wt|0,lt=lt+Bt|0,ct=ct+Yt|0,ut=ut+Jt|0,yt=yt+fe|0,Gt=Gt+ce|0,ge=ge+Qt|0,we=we+ne|0,me=me+te|0,w[0]=Rt>>>0&255,w[1]=Rt>>>8&255,w[2]=Rt>>>16&255,w[3]=Rt>>>24&255,w[4]=Nt>>>0&255,w[5]=Nt>>>8&255,w[6]=Nt>>>16&255,w[7]=Nt>>>24&255,w[8]=It>>>0&255,w[9]=It>>>8&255,w[10]=It>>>16&255,w[11]=It>>>24&255,w[12]=Mt>>>0&255,w[13]=Mt>>>8&255,w[14]=Mt>>>16&255,w[15]=Mt>>>24&255,w[16]=Lt>>>0&255,w[17]=Lt>>>8&255,w[18]=Lt>>>16&255,w[19]=Lt>>>24&255,w[20]=vt>>>0&255,w[21]=vt>>>8&255,w[22]=vt>>>16&255,w[23]=vt>>>24&255,w[24]=X>>>0&255,w[25]=X>>>8&255,w[26]=X>>>16&255,w[27]=X>>>24&255,w[28]=J>>>0&255,w[29]=J>>>8&255,w[30]=J>>>16&255,w[31]=J>>>24&255,w[32]=lt>>>0&255,w[33]=lt>>>8&255,w[34]=lt>>>16&255,w[35]=lt>>>24&255,w[36]=ct>>>0&255,w[37]=ct>>>8&255,w[38]=ct>>>16&255,w[39]=ct>>>24&255,w[40]=ut>>>0&255,w[41]=ut>>>8&255,w[42]=ut>>>16&255,w[43]=ut>>>24&255,w[44]=yt>>>0&255,w[45]=yt>>>8&255,w[46]=yt>>>16&255,w[47]=yt>>>24&255,w[48]=Gt>>>0&255,w[49]=Gt>>>8&255,w[50]=Gt>>>16&255,w[51]=Gt>>>24&255,w[52]=ge>>>0&255,w[53]=ge>>>8&255,w[54]=ge>>>16&255,w[55]=ge>>>24&255,w[56]=we>>>0&255,w[57]=we>>>8&255,w[58]=we>>>16&255,w[59]=we>>>24&255,w[60]=me>>>0&255,w[61]=me>>>8&255,w[62]=me>>>16&255,w[63]=me>>>24&255}function Q(w,I,k,h){for(var R=h[0]&255|(h[1]&255)<<8|(h[2]&255)<<16|(h[3]&255)<<24,j=k[0]&255|(k[1]&255)<<8|(k[2]&255)<<16|(k[3]&255)<<24,V=k[4]&255|(k[5]&255)<<8|(k[6]&255)<<16|(k[7]&255)<<24,rt=k[8]&255|(k[9]&255)<<8|(k[10]&255)<<16|(k[11]&255)<<24,ft=k[12]&255|(k[13]&255)<<8|(k[14]&255)<<16|(k[15]&255)<<24,Ot=h[4]&255|(h[5]&255)<<8|(h[6]&255)<<16|(h[7]&255)<<24,gt=I[0]&255|(I[1]&255)<<8|(I[2]&255)<<16|(I[3]&255)<<24,Wt=I[4]&255|(I[5]&255)<<8|(I[6]&255)<<16|(I[7]&255)<<24,Bt=I[8]&255|(I[9]&255)<<8|(I[10]&255)<<16|(I[11]&255)<<24,Yt=I[12]&255|(I[13]&255)<<8|(I[14]&255)<<16|(I[15]&255)<<24,Jt=h[8]&255|(h[9]&255)<<8|(h[10]&255)<<16|(h[11]&255)<<24,fe=k[16]&255|(k[17]&255)<<8|(k[18]&255)<<16|(k[19]&255)<<24,ce=k[20]&255|(k[21]&255)<<8|(k[22]&255)<<16|(k[23]&255)<<24,Qt=k[24]&255|(k[25]&255)<<8|(k[26]&255)<<16|(k[27]&255)<<24,ne=k[28]&255|(k[29]&255)<<8|(k[30]&255)<<16|(k[31]&255)<<24,te=h[12]&255|(h[13]&255)<<8|(h[14]&255)<<16|(h[15]&255)<<24,Rt=R,Nt=j,It=V,Mt=rt,Lt=ft,vt=Ot,X=gt,J=Wt,lt=Bt,ct=Yt,ut=Jt,yt=fe,Gt=ce,ge=Qt,we=ne,me=te,q,ke=0;ke<20;ke+=2)q=Rt+Gt|0,Lt^=q<<7|q>>>32-7,q=Lt+Rt|0,lt^=q<<9|q>>>32-9,q=lt+Lt|0,Gt^=q<<13|q>>>32-13,q=Gt+lt|0,Rt^=q<<18|q>>>32-18,q=vt+Nt|0,ct^=q<<7|q>>>32-7,q=ct+vt|0,ge^=q<<9|q>>>32-9,q=ge+ct|0,Nt^=q<<13|q>>>32-13,q=Nt+ge|0,vt^=q<<18|q>>>32-18,q=ut+X|0,we^=q<<7|q>>>32-7,q=we+ut|0,It^=q<<9|q>>>32-9,q=It+we|0,X^=q<<13|q>>>32-13,q=X+It|0,ut^=q<<18|q>>>32-18,q=me+yt|0,Mt^=q<<7|q>>>32-7,q=Mt+me|0,J^=q<<9|q>>>32-9,q=J+Mt|0,yt^=q<<13|q>>>32-13,q=yt+J|0,me^=q<<18|q>>>32-18,q=Rt+Mt|0,Nt^=q<<7|q>>>32-7,q=Nt+Rt|0,It^=q<<9|q>>>32-9,q=It+Nt|0,Mt^=q<<13|q>>>32-13,q=Mt+It|0,Rt^=q<<18|q>>>32-18,q=vt+Lt|0,X^=q<<7|q>>>32-7,q=X+vt|0,J^=q<<9|q>>>32-9,q=J+X|0,Lt^=q<<13|q>>>32-13,q=Lt+J|0,vt^=q<<18|q>>>32-18,q=ut+ct|0,yt^=q<<7|q>>>32-7,q=yt+ut|0,lt^=q<<9|q>>>32-9,q=lt+yt|0,ct^=q<<13|q>>>32-13,q=ct+lt|0,ut^=q<<18|q>>>32-18,q=me+we|0,Gt^=q<<7|q>>>32-7,q=Gt+me|0,ge^=q<<9|q>>>32-9,q=ge+Gt|0,we^=q<<13|q>>>32-13,q=we+ge|0,me^=q<<18|q>>>32-18;w[0]=Rt>>>0&255,w[1]=Rt>>>8&255,w[2]=Rt>>>16&255,w[3]=Rt>>>24&255,w[4]=vt>>>0&255,w[5]=vt>>>8&255,w[6]=vt>>>16&255,w[7]=vt>>>24&255,w[8]=ut>>>0&255,w[9]=ut>>>8&255,w[10]=ut>>>16&255,w[11]=ut>>>24&255,w[12]=me>>>0&255,w[13]=me>>>8&255,w[14]=me>>>16&255,w[15]=me>>>24&255,w[16]=X>>>0&255,w[17]=X>>>8&255,w[18]=X>>>16&255,w[19]=X>>>24&255,w[20]=J>>>0&255,w[21]=J>>>8&255,w[22]=J>>>16&255,w[23]=J>>>24&255,w[24]=lt>>>0&255,w[25]=lt>>>8&255,w[26]=lt>>>16&255,w[27]=lt>>>24&255,w[28]=ct>>>0&255,w[29]=ct>>>8&255,w[30]=ct>>>16&255,w[31]=ct>>>24&255}function _t(w,I,k,h){mt(w,I,k,h)}function Tt(w,I,k,h){Q(w,I,k,h)}var ee=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function Ft(w,I,k,h,R,j,V){var rt=new Uint8Array(16),ft=new Uint8Array(64),Ot,gt;for(gt=0;gt<16;gt++)rt[gt]=0;for(gt=0;gt<8;gt++)rt[gt]=j[gt];for(;R>=64;){for(_t(ft,rt,V,ee),gt=0;gt<64;gt++)w[I+gt]=k[h+gt]^ft[gt];for(Ot=1,gt=8;gt<16;gt++)Ot=Ot+(rt[gt]&255)|0,rt[gt]=Ot&255,Ot>>>=8;R-=64,I+=64,h+=64}if(R>0)for(_t(ft,rt,V,ee),gt=0;gt=64;){for(_t(V,j,R,ee),ft=0;ft<64;ft++)w[I+ft]=V[ft];for(rt=1,ft=8;ft<16;ft++)rt=rt+(j[ft]&255)|0,j[ft]=rt&255,rt>>>=8;k-=64,I+=64}if(k>0)for(_t(V,j,R,ee),ft=0;ft>>13|k<<3)&8191,h=w[4]&255|(w[5]&255)<<8,this.r[2]=(k>>>10|h<<6)&7939,R=w[6]&255|(w[7]&255)<<8,this.r[3]=(h>>>7|R<<9)&8191,j=w[8]&255|(w[9]&255)<<8,this.r[4]=(R>>>4|j<<12)&255,this.r[5]=j>>>1&8190,V=w[10]&255|(w[11]&255)<<8,this.r[6]=(j>>>14|V<<2)&8191,rt=w[12]&255|(w[13]&255)<<8,this.r[7]=(V>>>11|rt<<5)&8065,ft=w[14]&255|(w[15]&255)<<8,this.r[8]=(rt>>>8|ft<<8)&8191,this.r[9]=ft>>>5&127,this.pad[0]=w[16]&255|(w[17]&255)<<8,this.pad[1]=w[18]&255|(w[19]&255)<<8,this.pad[2]=w[20]&255|(w[21]&255)<<8,this.pad[3]=w[22]&255|(w[23]&255)<<8,this.pad[4]=w[24]&255|(w[25]&255)<<8,this.pad[5]=w[26]&255|(w[27]&255)<<8,this.pad[6]=w[28]&255|(w[29]&255)<<8,this.pad[7]=w[30]&255|(w[31]&255)<<8};x.prototype.blocks=function(w,I,k){for(var h=this.fin?0:2048,R,j,V,rt,ft,Ot,gt,Wt,Bt,Yt,Jt,fe,ce,Qt,ne,te,Rt,Nt,It,Mt=this.h[0],Lt=this.h[1],vt=this.h[2],X=this.h[3],J=this.h[4],lt=this.h[5],ct=this.h[6],ut=this.h[7],yt=this.h[8],Gt=this.h[9],ge=this.r[0],we=this.r[1],me=this.r[2],q=this.r[3],ke=this.r[4],Oe=this.r[5],Ce=this.r[6],be=this.r[7],Be=this.r[8],Re=this.r[9];k>=16;)R=w[I+0]&255|(w[I+1]&255)<<8,Mt+=R&8191,j=w[I+2]&255|(w[I+3]&255)<<8,Lt+=(R>>>13|j<<3)&8191,V=w[I+4]&255|(w[I+5]&255)<<8,vt+=(j>>>10|V<<6)&8191,rt=w[I+6]&255|(w[I+7]&255)<<8,X+=(V>>>7|rt<<9)&8191,ft=w[I+8]&255|(w[I+9]&255)<<8,J+=(rt>>>4|ft<<12)&8191,lt+=ft>>>1&8191,Ot=w[I+10]&255|(w[I+11]&255)<<8,ct+=(ft>>>14|Ot<<2)&8191,gt=w[I+12]&255|(w[I+13]&255)<<8,ut+=(Ot>>>11|gt<<5)&8191,Wt=w[I+14]&255|(w[I+15]&255)<<8,yt+=(gt>>>8|Wt<<8)&8191,Gt+=Wt>>>5|h,Bt=0,Yt=Bt,Yt+=Mt*ge,Yt+=Lt*(5*Re),Yt+=vt*(5*Be),Yt+=X*(5*be),Yt+=J*(5*Ce),Bt=Yt>>>13,Yt&=8191,Yt+=lt*(5*Oe),Yt+=ct*(5*ke),Yt+=ut*(5*q),Yt+=yt*(5*me),Yt+=Gt*(5*we),Bt+=Yt>>>13,Yt&=8191,Jt=Bt,Jt+=Mt*we,Jt+=Lt*ge,Jt+=vt*(5*Re),Jt+=X*(5*Be),Jt+=J*(5*be),Bt=Jt>>>13,Jt&=8191,Jt+=lt*(5*Ce),Jt+=ct*(5*Oe),Jt+=ut*(5*ke),Jt+=yt*(5*q),Jt+=Gt*(5*me),Bt+=Jt>>>13,Jt&=8191,fe=Bt,fe+=Mt*me,fe+=Lt*we,fe+=vt*ge,fe+=X*(5*Re),fe+=J*(5*Be),Bt=fe>>>13,fe&=8191,fe+=lt*(5*be),fe+=ct*(5*Ce),fe+=ut*(5*Oe),fe+=yt*(5*ke),fe+=Gt*(5*q),Bt+=fe>>>13,fe&=8191,ce=Bt,ce+=Mt*q,ce+=Lt*me,ce+=vt*we,ce+=X*ge,ce+=J*(5*Re),Bt=ce>>>13,ce&=8191,ce+=lt*(5*Be),ce+=ct*(5*be),ce+=ut*(5*Ce),ce+=yt*(5*Oe),ce+=Gt*(5*ke),Bt+=ce>>>13,ce&=8191,Qt=Bt,Qt+=Mt*ke,Qt+=Lt*q,Qt+=vt*me,Qt+=X*we,Qt+=J*ge,Bt=Qt>>>13,Qt&=8191,Qt+=lt*(5*Re),Qt+=ct*(5*Be),Qt+=ut*(5*be),Qt+=yt*(5*Ce),Qt+=Gt*(5*Oe),Bt+=Qt>>>13,Qt&=8191,ne=Bt,ne+=Mt*Oe,ne+=Lt*ke,ne+=vt*q,ne+=X*me,ne+=J*we,Bt=ne>>>13,ne&=8191,ne+=lt*ge,ne+=ct*(5*Re),ne+=ut*(5*Be),ne+=yt*(5*be),ne+=Gt*(5*Ce),Bt+=ne>>>13,ne&=8191,te=Bt,te+=Mt*Ce,te+=Lt*Oe,te+=vt*ke,te+=X*q,te+=J*me,Bt=te>>>13,te&=8191,te+=lt*we,te+=ct*ge,te+=ut*(5*Re),te+=yt*(5*Be),te+=Gt*(5*be),Bt+=te>>>13,te&=8191,Rt=Bt,Rt+=Mt*be,Rt+=Lt*Ce,Rt+=vt*Oe,Rt+=X*ke,Rt+=J*q,Bt=Rt>>>13,Rt&=8191,Rt+=lt*me,Rt+=ct*we,Rt+=ut*ge,Rt+=yt*(5*Re),Rt+=Gt*(5*Be),Bt+=Rt>>>13,Rt&=8191,Nt=Bt,Nt+=Mt*Be,Nt+=Lt*be,Nt+=vt*Ce,Nt+=X*Oe,Nt+=J*ke,Bt=Nt>>>13,Nt&=8191,Nt+=lt*q,Nt+=ct*me,Nt+=ut*we,Nt+=yt*ge,Nt+=Gt*(5*Re),Bt+=Nt>>>13,Nt&=8191,It=Bt,It+=Mt*Re,It+=Lt*Be,It+=vt*be,It+=X*Ce,It+=J*Oe,Bt=It>>>13,It&=8191,It+=lt*ke,It+=ct*q,It+=ut*me,It+=yt*we,It+=Gt*ge,Bt+=It>>>13,It&=8191,Bt=(Bt<<2)+Bt|0,Bt=Bt+Yt|0,Yt=Bt&8191,Bt=Bt>>>13,Jt+=Bt,Mt=Yt,Lt=Jt,vt=fe,X=ce,J=Qt,lt=ne,ct=te,ut=Rt,yt=Nt,Gt=It,I+=16,k-=16;this.h[0]=Mt,this.h[1]=Lt,this.h[2]=vt,this.h[3]=X,this.h[4]=J,this.h[5]=lt,this.h[6]=ct,this.h[7]=ut,this.h[8]=yt,this.h[9]=Gt},x.prototype.finish=function(w,I){var k=new Uint16Array(10),h,R,j,V;if(this.leftover){for(V=this.leftover,this.buffer[V++]=1;V<16;V++)this.buffer[V]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(h=this.h[1]>>>13,this.h[1]&=8191,V=2;V<10;V++)this.h[V]+=h,h=this.h[V]>>>13,this.h[V]&=8191;for(this.h[0]+=h*5,h=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=h,h=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=h,k[0]=this.h[0]+5,h=k[0]>>>13,k[0]&=8191,V=1;V<10;V++)k[V]=this.h[V]+h,h=k[V]>>>13,k[V]&=8191;for(k[9]-=1<<13,R=(h^1)-1,V=0;V<10;V++)k[V]&=R;for(R=~R,V=0;V<10;V++)this.h[V]=this.h[V]&R|k[V];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,j=this.h[0]+this.pad[0],this.h[0]=j&65535,V=1;V<8;V++)j=(this.h[V]+this.pad[V]|0)+(j>>>16)|0,this.h[V]=j&65535;w[I+0]=this.h[0]>>>0&255,w[I+1]=this.h[0]>>>8&255,w[I+2]=this.h[1]>>>0&255,w[I+3]=this.h[1]>>>8&255,w[I+4]=this.h[2]>>>0&255,w[I+5]=this.h[2]>>>8&255,w[I+6]=this.h[3]>>>0&255,w[I+7]=this.h[3]>>>8&255,w[I+8]=this.h[4]>>>0&255,w[I+9]=this.h[4]>>>8&255,w[I+10]=this.h[5]>>>0&255,w[I+11]=this.h[5]>>>8&255,w[I+12]=this.h[6]>>>0&255,w[I+13]=this.h[6]>>>8&255,w[I+14]=this.h[7]>>>0&255,w[I+15]=this.h[7]>>>8&255},x.prototype.update=function(w,I,k){var h,R;if(this.leftover){for(R=16-this.leftover,R>k&&(R=k),h=0;h=16&&(R=k-k%16,this.blocks(w,I,R),I+=R,k-=R),k){for(h=0;h>16&1),j[k-1]&=65535;j[15]=V[15]-32767-(j[14]>>16&1),R=j[15]>>16&1,j[14]&=65535,p(V,j,1-R)}for(k=0;k<16;k++)w[2*k]=V[k]&255,w[2*k+1]=V[k]>>8}function b(w,I){var k=new Uint8Array(32),h=new Uint8Array(32);return m(k,w),m(h,I),ht(k,0,h,0)}function P(w){var I=new Uint8Array(32);return m(I,w),I[0]&1}function E(w,I){var k;for(k=0;k<16;k++)w[k]=I[2*k]+(I[2*k+1]<<8);w[15]&=32767}function u(w,I,k){for(var h=0;h<16;h++)w[h]=I[h]+k[h]}function l(w,I,k){for(var h=0;h<16;h++)w[h]=I[h]-k[h]}function _(w,I,k){var h,R,j=0,V=0,rt=0,ft=0,Ot=0,gt=0,Wt=0,Bt=0,Yt=0,Jt=0,fe=0,ce=0,Qt=0,ne=0,te=0,Rt=0,Nt=0,It=0,Mt=0,Lt=0,vt=0,X=0,J=0,lt=0,ct=0,ut=0,yt=0,Gt=0,ge=0,we=0,me=0,q=k[0],ke=k[1],Oe=k[2],Ce=k[3],be=k[4],Be=k[5],Re=k[6],gr=k[7],Ze=k[8],lr=k[9],dr=k[10],pr=k[11],wr=k[12],Tr=k[13],Mr=k[14],Lr=k[15];h=I[0],j+=h*q,V+=h*ke,rt+=h*Oe,ft+=h*Ce,Ot+=h*be,gt+=h*Be,Wt+=h*Re,Bt+=h*gr,Yt+=h*Ze,Jt+=h*lr,fe+=h*dr,ce+=h*pr,Qt+=h*wr,ne+=h*Tr,te+=h*Mr,Rt+=h*Lr,h=I[1],V+=h*q,rt+=h*ke,ft+=h*Oe,Ot+=h*Ce,gt+=h*be,Wt+=h*Be,Bt+=h*Re,Yt+=h*gr,Jt+=h*Ze,fe+=h*lr,ce+=h*dr,Qt+=h*pr,ne+=h*wr,te+=h*Tr,Rt+=h*Mr,Nt+=h*Lr,h=I[2],rt+=h*q,ft+=h*ke,Ot+=h*Oe,gt+=h*Ce,Wt+=h*be,Bt+=h*Be,Yt+=h*Re,Jt+=h*gr,fe+=h*Ze,ce+=h*lr,Qt+=h*dr,ne+=h*pr,te+=h*wr,Rt+=h*Tr,Nt+=h*Mr,It+=h*Lr,h=I[3],ft+=h*q,Ot+=h*ke,gt+=h*Oe,Wt+=h*Ce,Bt+=h*be,Yt+=h*Be,Jt+=h*Re,fe+=h*gr,ce+=h*Ze,Qt+=h*lr,ne+=h*dr,te+=h*pr,Rt+=h*wr,Nt+=h*Tr,It+=h*Mr,Mt+=h*Lr,h=I[4],Ot+=h*q,gt+=h*ke,Wt+=h*Oe,Bt+=h*Ce,Yt+=h*be,Jt+=h*Be,fe+=h*Re,ce+=h*gr,Qt+=h*Ze,ne+=h*lr,te+=h*dr,Rt+=h*pr,Nt+=h*wr,It+=h*Tr,Mt+=h*Mr,Lt+=h*Lr,h=I[5],gt+=h*q,Wt+=h*ke,Bt+=h*Oe,Yt+=h*Ce,Jt+=h*be,fe+=h*Be,ce+=h*Re,Qt+=h*gr,ne+=h*Ze,te+=h*lr,Rt+=h*dr,Nt+=h*pr,It+=h*wr,Mt+=h*Tr,Lt+=h*Mr,vt+=h*Lr,h=I[6],Wt+=h*q,Bt+=h*ke,Yt+=h*Oe,Jt+=h*Ce,fe+=h*be,ce+=h*Be,Qt+=h*Re,ne+=h*gr,te+=h*Ze,Rt+=h*lr,Nt+=h*dr,It+=h*pr,Mt+=h*wr,Lt+=h*Tr,vt+=h*Mr,X+=h*Lr,h=I[7],Bt+=h*q,Yt+=h*ke,Jt+=h*Oe,fe+=h*Ce,ce+=h*be,Qt+=h*Be,ne+=h*Re,te+=h*gr,Rt+=h*Ze,Nt+=h*lr,It+=h*dr,Mt+=h*pr,Lt+=h*wr,vt+=h*Tr,X+=h*Mr,J+=h*Lr,h=I[8],Yt+=h*q,Jt+=h*ke,fe+=h*Oe,ce+=h*Ce,Qt+=h*be,ne+=h*Be,te+=h*Re,Rt+=h*gr,Nt+=h*Ze,It+=h*lr,Mt+=h*dr,Lt+=h*pr,vt+=h*wr,X+=h*Tr,J+=h*Mr,lt+=h*Lr,h=I[9],Jt+=h*q,fe+=h*ke,ce+=h*Oe,Qt+=h*Ce,ne+=h*be,te+=h*Be,Rt+=h*Re,Nt+=h*gr,It+=h*Ze,Mt+=h*lr,Lt+=h*dr,vt+=h*pr,X+=h*wr,J+=h*Tr,lt+=h*Mr,ct+=h*Lr,h=I[10],fe+=h*q,ce+=h*ke,Qt+=h*Oe,ne+=h*Ce,te+=h*be,Rt+=h*Be,Nt+=h*Re,It+=h*gr,Mt+=h*Ze,Lt+=h*lr,vt+=h*dr,X+=h*pr,J+=h*wr,lt+=h*Tr,ct+=h*Mr,ut+=h*Lr,h=I[11],ce+=h*q,Qt+=h*ke,ne+=h*Oe,te+=h*Ce,Rt+=h*be,Nt+=h*Be,It+=h*Re,Mt+=h*gr,Lt+=h*Ze,vt+=h*lr,X+=h*dr,J+=h*pr,lt+=h*wr,ct+=h*Tr,ut+=h*Mr,yt+=h*Lr,h=I[12],Qt+=h*q,ne+=h*ke,te+=h*Oe,Rt+=h*Ce,Nt+=h*be,It+=h*Be,Mt+=h*Re,Lt+=h*gr,vt+=h*Ze,X+=h*lr,J+=h*dr,lt+=h*pr,ct+=h*wr,ut+=h*Tr,yt+=h*Mr,Gt+=h*Lr,h=I[13],ne+=h*q,te+=h*ke,Rt+=h*Oe,Nt+=h*Ce,It+=h*be,Mt+=h*Be,Lt+=h*Re,vt+=h*gr,X+=h*Ze,J+=h*lr,lt+=h*dr,ct+=h*pr,ut+=h*wr,yt+=h*Tr,Gt+=h*Mr,ge+=h*Lr,h=I[14],te+=h*q,Rt+=h*ke,Nt+=h*Oe,It+=h*Ce,Mt+=h*be,Lt+=h*Be,vt+=h*Re,X+=h*gr,J+=h*Ze,lt+=h*lr,ct+=h*dr,ut+=h*pr,yt+=h*wr,Gt+=h*Tr,ge+=h*Mr,we+=h*Lr,h=I[15],Rt+=h*q,Nt+=h*ke,It+=h*Oe,Mt+=h*Ce,Lt+=h*be,vt+=h*Be,X+=h*Re,J+=h*gr,lt+=h*Ze,ct+=h*lr,ut+=h*dr,yt+=h*pr,Gt+=h*wr,ge+=h*Tr,we+=h*Mr,me+=h*Lr,j+=38*Nt,V+=38*It,rt+=38*Mt,ft+=38*Lt,Ot+=38*vt,gt+=38*X,Wt+=38*J,Bt+=38*lt,Yt+=38*ct,Jt+=38*ut,fe+=38*yt,ce+=38*Gt,Qt+=38*ge,ne+=38*we,te+=38*me,R=1,h=j+R+65535,R=Math.floor(h/65536),j=h-R*65536,h=V+R+65535,R=Math.floor(h/65536),V=h-R*65536,h=rt+R+65535,R=Math.floor(h/65536),rt=h-R*65536,h=ft+R+65535,R=Math.floor(h/65536),ft=h-R*65536,h=Ot+R+65535,R=Math.floor(h/65536),Ot=h-R*65536,h=gt+R+65535,R=Math.floor(h/65536),gt=h-R*65536,h=Wt+R+65535,R=Math.floor(h/65536),Wt=h-R*65536,h=Bt+R+65535,R=Math.floor(h/65536),Bt=h-R*65536,h=Yt+R+65535,R=Math.floor(h/65536),Yt=h-R*65536,h=Jt+R+65535,R=Math.floor(h/65536),Jt=h-R*65536,h=fe+R+65535,R=Math.floor(h/65536),fe=h-R*65536,h=ce+R+65535,R=Math.floor(h/65536),ce=h-R*65536,h=Qt+R+65535,R=Math.floor(h/65536),Qt=h-R*65536,h=ne+R+65535,R=Math.floor(h/65536),ne=h-R*65536,h=te+R+65535,R=Math.floor(h/65536),te=h-R*65536,h=Rt+R+65535,R=Math.floor(h/65536),Rt=h-R*65536,j+=R-1+37*(R-1),R=1,h=j+R+65535,R=Math.floor(h/65536),j=h-R*65536,h=V+R+65535,R=Math.floor(h/65536),V=h-R*65536,h=rt+R+65535,R=Math.floor(h/65536),rt=h-R*65536,h=ft+R+65535,R=Math.floor(h/65536),ft=h-R*65536,h=Ot+R+65535,R=Math.floor(h/65536),Ot=h-R*65536,h=gt+R+65535,R=Math.floor(h/65536),gt=h-R*65536,h=Wt+R+65535,R=Math.floor(h/65536),Wt=h-R*65536,h=Bt+R+65535,R=Math.floor(h/65536),Bt=h-R*65536,h=Yt+R+65535,R=Math.floor(h/65536),Yt=h-R*65536,h=Jt+R+65535,R=Math.floor(h/65536),Jt=h-R*65536,h=fe+R+65535,R=Math.floor(h/65536),fe=h-R*65536,h=ce+R+65535,R=Math.floor(h/65536),ce=h-R*65536,h=Qt+R+65535,R=Math.floor(h/65536),Qt=h-R*65536,h=ne+R+65535,R=Math.floor(h/65536),ne=h-R*65536,h=te+R+65535,R=Math.floor(h/65536),te=h-R*65536,h=Rt+R+65535,R=Math.floor(h/65536),Rt=h-R*65536,j+=R-1+37*(R-1),w[0]=j,w[1]=V,w[2]=rt,w[3]=ft,w[4]=Ot,w[5]=gt,w[6]=Wt,w[7]=Bt,w[8]=Yt,w[9]=Jt,w[10]=fe,w[11]=ce,w[12]=Qt,w[13]=ne,w[14]=te,w[15]=Rt}function S(w,I){_(w,I,I)}function O(w,I){var k=t(),h;for(h=0;h<16;h++)k[h]=I[h];for(h=253;h>=0;h--)S(k,k),h!==2&&h!==4&&_(k,k,I);for(h=0;h<16;h++)w[h]=k[h]}function F(w,I){var k=t(),h;for(h=0;h<16;h++)k[h]=I[h];for(h=250;h>=0;h--)S(k,k),h!==1&&_(k,k,I);for(h=0;h<16;h++)w[h]=k[h]}function D(w,I,k){var h=new Uint8Array(32),R=new Float64Array(80),j,V,rt=t(),ft=t(),Ot=t(),gt=t(),Wt=t(),Bt=t();for(V=0;V<31;V++)h[V]=I[V];for(h[31]=I[31]&127|64,h[0]&=248,E(R,k),V=0;V<16;V++)ft[V]=R[V],gt[V]=rt[V]=Ot[V]=0;for(rt[0]=gt[0]=1,V=254;V>=0;--V)j=h[V>>>3]>>>(V&7)&1,p(rt,ft,j),p(Ot,gt,j),u(Wt,rt,Ot),l(rt,rt,Ot),u(Ot,ft,gt),l(ft,ft,gt),S(gt,Wt),S(Bt,rt),_(rt,Ot,rt),_(Ot,ft,Wt),u(Wt,rt,Ot),l(rt,rt,Ot),S(ft,rt),l(Ot,gt,Bt),_(rt,Ot,d),u(rt,rt,gt),_(Ot,Ot,rt),_(rt,gt,Bt),_(gt,ft,R),S(ft,Wt),p(rt,ft,j),p(Ot,gt,j);for(V=0;V<16;V++)R[V+16]=rt[V],R[V+32]=Ot[V],R[V+48]=ft[V],R[V+64]=gt[V];var Yt=R.subarray(32),Jt=R.subarray(16);return O(Yt,Yt),_(Jt,Jt,Yt),m(w,Jt),0}function Z(w,I){return D(w,I,i)}function N(w,I){return e(I,32),Z(w,I)}function z(w,I,k){var h=new Uint8Array(32);return D(h,k,I),Tt(w,n,h,ee)}var U=y,H=a;function G(w,I,k,h,R,j){var V=new Uint8Array(32);return z(V,R,j),U(w,I,k,h,V)}function nt(w,I,k,h,R,j){var V=new Uint8Array(32);return z(V,R,j),H(w,I,k,h,V)}var pt=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function ot(w,I,k,h){for(var R=new Int32Array(16),j=new Int32Array(16),V,rt,ft,Ot,gt,Wt,Bt,Yt,Jt,fe,ce,Qt,ne,te,Rt,Nt,It,Mt,Lt,vt,X,J,lt,ct,ut,yt,Gt=w[0],ge=w[1],we=w[2],me=w[3],q=w[4],ke=w[5],Oe=w[6],Ce=w[7],be=I[0],Be=I[1],Re=I[2],gr=I[3],Ze=I[4],lr=I[5],dr=I[6],pr=I[7],wr=0;h>=128;){for(Lt=0;Lt<16;Lt++)vt=8*Lt+wr,R[Lt]=k[vt+0]<<24|k[vt+1]<<16|k[vt+2]<<8|k[vt+3],j[Lt]=k[vt+4]<<24|k[vt+5]<<16|k[vt+6]<<8|k[vt+7];for(Lt=0;Lt<80;Lt++)if(V=Gt,rt=ge,ft=we,Ot=me,gt=q,Wt=ke,Bt=Oe,Yt=Ce,Jt=be,fe=Be,ce=Re,Qt=gr,ne=Ze,te=lr,Rt=dr,Nt=pr,X=Ce,J=pr,lt=J&65535,ct=J>>>16,ut=X&65535,yt=X>>>16,X=(q>>>14|Ze<<32-14)^(q>>>18|Ze<<32-18)^(Ze>>>41-32|q<<32-(41-32)),J=(Ze>>>14|q<<32-14)^(Ze>>>18|q<<32-18)^(q>>>41-32|Ze<<32-(41-32)),lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,X=q&ke^~q&Oe,J=Ze&lr^~Ze&dr,lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,X=pt[Lt*2],J=pt[Lt*2+1],lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,X=R[Lt%16],J=j[Lt%16],lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,ct+=lt>>>16,ut+=ct>>>16,yt+=ut>>>16,It=ut&65535|yt<<16,Mt=lt&65535|ct<<16,X=It,J=Mt,lt=J&65535,ct=J>>>16,ut=X&65535,yt=X>>>16,X=(Gt>>>28|be<<32-28)^(be>>>34-32|Gt<<32-(34-32))^(be>>>39-32|Gt<<32-(39-32)),J=(be>>>28|Gt<<32-28)^(Gt>>>34-32|be<<32-(34-32))^(Gt>>>39-32|be<<32-(39-32)),lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,X=Gt&ge^Gt&we^ge&we,J=be&Be^be&Re^Be&Re,lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,ct+=lt>>>16,ut+=ct>>>16,yt+=ut>>>16,Yt=ut&65535|yt<<16,Nt=lt&65535|ct<<16,X=Ot,J=Qt,lt=J&65535,ct=J>>>16,ut=X&65535,yt=X>>>16,X=It,J=Mt,lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,ct+=lt>>>16,ut+=ct>>>16,yt+=ut>>>16,Ot=ut&65535|yt<<16,Qt=lt&65535|ct<<16,ge=V,we=rt,me=ft,q=Ot,ke=gt,Oe=Wt,Ce=Bt,Gt=Yt,Be=Jt,Re=fe,gr=ce,Ze=Qt,lr=ne,dr=te,pr=Rt,be=Nt,Lt%16===15)for(vt=0;vt<16;vt++)X=R[vt],J=j[vt],lt=J&65535,ct=J>>>16,ut=X&65535,yt=X>>>16,X=R[(vt+9)%16],J=j[(vt+9)%16],lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,It=R[(vt+1)%16],Mt=j[(vt+1)%16],X=(It>>>1|Mt<<32-1)^(It>>>8|Mt<<32-8)^It>>>7,J=(Mt>>>1|It<<32-1)^(Mt>>>8|It<<32-8)^(Mt>>>7|It<<32-7),lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,It=R[(vt+14)%16],Mt=j[(vt+14)%16],X=(It>>>19|Mt<<32-19)^(Mt>>>61-32|It<<32-(61-32))^It>>>6,J=(Mt>>>19|It<<32-19)^(It>>>61-32|Mt<<32-(61-32))^(Mt>>>6|It<<32-6),lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,ct+=lt>>>16,ut+=ct>>>16,yt+=ut>>>16,R[vt]=ut&65535|yt<<16,j[vt]=lt&65535|ct<<16;X=Gt,J=be,lt=J&65535,ct=J>>>16,ut=X&65535,yt=X>>>16,X=w[0],J=I[0],lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,ct+=lt>>>16,ut+=ct>>>16,yt+=ut>>>16,w[0]=Gt=ut&65535|yt<<16,I[0]=be=lt&65535|ct<<16,X=ge,J=Be,lt=J&65535,ct=J>>>16,ut=X&65535,yt=X>>>16,X=w[1],J=I[1],lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,ct+=lt>>>16,ut+=ct>>>16,yt+=ut>>>16,w[1]=ge=ut&65535|yt<<16,I[1]=Be=lt&65535|ct<<16,X=we,J=Re,lt=J&65535,ct=J>>>16,ut=X&65535,yt=X>>>16,X=w[2],J=I[2],lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,ct+=lt>>>16,ut+=ct>>>16,yt+=ut>>>16,w[2]=we=ut&65535|yt<<16,I[2]=Re=lt&65535|ct<<16,X=me,J=gr,lt=J&65535,ct=J>>>16,ut=X&65535,yt=X>>>16,X=w[3],J=I[3],lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,ct+=lt>>>16,ut+=ct>>>16,yt+=ut>>>16,w[3]=me=ut&65535|yt<<16,I[3]=gr=lt&65535|ct<<16,X=q,J=Ze,lt=J&65535,ct=J>>>16,ut=X&65535,yt=X>>>16,X=w[4],J=I[4],lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,ct+=lt>>>16,ut+=ct>>>16,yt+=ut>>>16,w[4]=q=ut&65535|yt<<16,I[4]=Ze=lt&65535|ct<<16,X=ke,J=lr,lt=J&65535,ct=J>>>16,ut=X&65535,yt=X>>>16,X=w[5],J=I[5],lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,ct+=lt>>>16,ut+=ct>>>16,yt+=ut>>>16,w[5]=ke=ut&65535|yt<<16,I[5]=lr=lt&65535|ct<<16,X=Oe,J=dr,lt=J&65535,ct=J>>>16,ut=X&65535,yt=X>>>16,X=w[6],J=I[6],lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,ct+=lt>>>16,ut+=ct>>>16,yt+=ut>>>16,w[6]=Oe=ut&65535|yt<<16,I[6]=dr=lt&65535|ct<<16,X=Ce,J=pr,lt=J&65535,ct=J>>>16,ut=X&65535,yt=X>>>16,X=w[7],J=I[7],lt+=J&65535,ct+=J>>>16,ut+=X&65535,yt+=X>>>16,ct+=lt>>>16,ut+=ct>>>16,yt+=ut>>>16,w[7]=Ce=ut&65535|yt<<16,I[7]=pr=lt&65535|ct<<16,wr+=128,h-=128}return h}function xt(w,I,k){var h=new Int32Array(8),R=new Int32Array(8),j=new Uint8Array(256),V,rt=k;for(h[0]=1779033703,h[1]=3144134277,h[2]=1013904242,h[3]=2773480762,h[4]=1359893119,h[5]=2600822924,h[6]=528734635,h[7]=1541459225,R[0]=4089235720,R[1]=2227873595,R[2]=4271175723,R[3]=1595750129,R[4]=2917565137,R[5]=725511199,R[6]=4215389547,R[7]=327033209,ot(h,R,I,k),k%=128,V=0;V=0;--R)h=k[R/8|0]>>(R&7)&1,Et(w,I,h),qt(I,w),qt(w,w),Et(w,I,h)}function bt(w,I){var k=[t(),t(),t(),t()];c(k[0],L),c(k[1],M),c(k[2],s),_(k[3],L,M),Ut(w,k,I)}function Ct(w,I,k){var h=new Uint8Array(64),R=[t(),t(),t(),t()],j;for(k||e(I,32),xt(h,I,32),h[0]&=248,h[31]&=127,h[31]|=64,bt(R,h),zt(w,R),j=0;j<32;j++)I[j+32]=w[j];return 0}var $t=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function Zt(w,I){var k,h,R,j;for(h=63;h>=32;--h){for(k=0,R=h-32,j=h-12;R>4)*$t[R],k=I[R]>>8,I[R]&=255;for(R=0;R<32;R++)I[R]-=k*$t[R];for(h=0;h<32;h++)I[h+1]+=I[h]>>8,w[h]=I[h]&255}function xe(w){var I=new Float64Array(64),k;for(k=0;k<64;k++)I[k]=w[k];for(k=0;k<64;k++)w[k]=0;Zt(w,I)}function re(w,I,k,h){var R=new Uint8Array(64),j=new Uint8Array(64),V=new Uint8Array(64),rt,ft,Ot=new Float64Array(64),gt=[t(),t(),t(),t()];xt(R,h,32),R[0]&=248,R[31]&=127,R[31]|=64;var Wt=k+64;for(rt=0;rt>7&&l(w[0],o,w[0]),_(w[3],w[0],w[1]),0)}function Xt(w,I,k,h){var R,j=new Uint8Array(32),V=new Uint8Array(64),rt=[t(),t(),t(),t()],ft=[t(),t(),t(),t()];if(k<64||jt(ft,h))return-1;for(R=0;R=0},r.sign.keyPair=function(){var w=new Uint8Array(ze),I=new Uint8Array(Ae);return Ct(w,I),{publicKey:w,secretKey:I}},r.sign.keyPair.fromSecretKey=function(w){if(Se(w),w.length!==Ae)throw new Error("bad secret key size");for(var I=new Uint8Array(ze),k=0;kmr,FetchTransactionError:()=>An,FindReferenceError:()=>ps,HTTPS_PROTOCOL:()=>Qu,MEMO_PROGRAM_ID:()=>os,ParseURLError:()=>Qr,SOLANA_PROTOCOL:()=>co,SOL_DECIMALS:()=>tf,TEN:()=>ef,ValidateTransferError:()=>Er,createQR:()=>wm,createQROptions:()=>Jl,createTransfer:()=>$m,encodeURL:()=>Vm,fetchTransaction:()=>ow,findReference:()=>fd,parseURL:()=>sw,validateTransfer:()=>uw});var se=de(Rf());function Ec(r){if(!Number.isSafeInteger(r)||r<0)throw new Error(`Wrong positive integer: ${r}`)}function Vd(r){if(typeof r!="boolean")throw new Error(`Expected boolean, not ${r}`)}function Tf(r,...t){if(!(r instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(t.length>0&&!t.includes(r.length))throw new TypeError(`Expected Uint8Array of length ${t}, not of length=${r.length}`)}function Yd(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash should be wrapped by utils.wrapConstructor");Ec(r.outputLen),Ec(r.blockLen)}function Zd(r,t=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(t&&r.finished)throw new Error("Hash#digest() has already been called")}function Xd(r,t){Tf(r);let e=t.outputLen;if(r.lengthnew Uint32Array(r.buffer,r.byteOffset,Math.floor(r.byteLength/4)),bs=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),un=(r,t)=>r<<32-t|r>>>t,tp=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;if(!tp)throw new Error("Non little-endian hardware is not supported");var kw=Array.from({length:256},(r,t)=>t.toString(16).padStart(2,"0"));function ep(r){if(typeof r!="string")throw new TypeError(`utf8ToBytes expected string, got ${typeof r}`);return new TextEncoder().encode(r)}function Hn(r){if(typeof r=="string"&&(r=ep(r)),!(r instanceof Uint8Array))throw new TypeError(`Expected input type is Uint8Array (got ${typeof r})`);return r}var Sn=class{clone(){return this._cloneInto()}};function $n(r){let t=n=>r().update(Hn(n)).digest(),e=r();return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=()=>r(),t}function Lf(r){let t=(n,i)=>r(i).update(Hn(n)).digest(),e=r({});return t.outputLen=e.outputLen,t.blockLen=e.blockLen,t.create=n=>r(n),t}function rp(r,t,e,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(t,e,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(e>>i&o),d=Number(e&o),g=n?4:0,A=n?0:4;r.setUint32(t+g,s,n),r.setUint32(t+A,d,n)}var Ui=class extends Sn{constructor(t,e,n,i){super(),this.blockLen=t,this.outputLen=e,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=bs(this.buffer)}update(t){Pr.exists(this);let{view:e,buffer:n,blockLen:i}=this;t=Hn(t);let o=t.length;for(let s=0;si-s&&(this.process(n,0),s=0);for(let g=s;gd.setUint32(4*A,g,o))}digest(){let{buffer:t,outputLen:e}=this;this.digestInto(t);let n=t.slice(0,e);return this.destroy(),n}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());let{blockLen:e,buffer:n,length:i,finished:o,destroyed:s,pos:d}=this;return t.length=i,t.pos=d,t.finished=o,t.destroyed=s,i%e&&t.buffer.set(n),t}};var vs=BigInt(4294967295),Sc=BigInt(32);function Pf(r,t=!1){return t?{h:Number(r&vs),l:Number(r>>Sc&vs)}:{h:Number(r>>Sc&vs)|0,l:Number(r&vs)|0}}function np(r,t=!1){let e=new Uint32Array(r.length),n=new Uint32Array(r.length);for(let i=0;iBigInt(r>>>0)<>>0),op=(r,t,e)=>r>>>e,sp=(r,t,e)=>r<<32-e|t>>>e,ap=(r,t,e)=>r>>>e|t<<32-e,cp=(r,t,e)=>r<<32-e|t>>>e,up=(r,t,e)=>r<<64-e|t>>>e-32,fp=(r,t,e)=>r>>>e-32|t<<64-e,hp=(r,t)=>t,lp=(r,t)=>r,dp=(r,t,e)=>r<>>32-e,pp=(r,t,e)=>t<>>32-e,yp=(r,t,e)=>t<>>64-e,gp=(r,t,e)=>r<>>64-e;function mp(r,t,e,n){let i=(t>>>0)+(n>>>0);return{h:r+e+(i/2**32|0)|0,l:i|0}}var wp=(r,t,e)=>(r>>>0)+(t>>>0)+(e>>>0),xp=(r,t,e,n)=>t+e+n+(r/2**32|0)|0,bp=(r,t,e,n)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0),vp=(r,t,e,n,i)=>t+e+n+i+(r/2**32|0)|0,kp=(r,t,e,n,i)=>(r>>>0)+(t>>>0)+(e>>>0)+(n>>>0)+(i>>>0),Ip=(r,t,e,n,i,o)=>t+e+n+i+o+(r/2**32|0)|0,Ap={fromBig:Pf,split:np,toBig:ip,shrSH:op,shrSL:sp,rotrSH:ap,rotrSL:cp,rotrBH:up,rotrBL:fp,rotr32H:hp,rotr32L:lp,rotlSH:dp,rotlSL:pp,rotlBH:yp,rotlBL:gp,add:mp,add3L:wp,add3H:xp,add4L:bp,add4H:vp,add5H:Ip,add5L:kp},ue=Ap;var[_p,Ep]=ue.split(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),jn=new Uint32Array(80),Gn=new Uint32Array(80),wo=class extends Ui{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){let{Ah:t,Al:e,Bh:n,Bl:i,Ch:o,Cl:s,Dh:d,Dl:g,Eh:A,El:L,Fh:M,Fl:$,Gh:K,Gl:et,Hh:tt,Hl:ht}=this;return[t,e,n,i,o,s,d,g,A,L,M,$,K,et,tt,ht]}set(t,e,n,i,o,s,d,g,A,L,M,$,K,et,tt,ht){this.Ah=t|0,this.Al=e|0,this.Bh=n|0,this.Bl=i|0,this.Ch=o|0,this.Cl=s|0,this.Dh=d|0,this.Dl=g|0,this.Eh=A|0,this.El=L|0,this.Fh=M|0,this.Fl=$|0,this.Gh=K|0,this.Gl=et|0,this.Hh=tt|0,this.Hl=ht|0}process(t,e){for(let _t=0;_t<16;_t++,e+=4)jn[_t]=t.getUint32(e),Gn[_t]=t.getUint32(e+=4);for(let _t=16;_t<80;_t++){let Tt=jn[_t-15]|0,ee=Gn[_t-15]|0,Ft=ue.rotrSH(Tt,ee,1)^ue.rotrSH(Tt,ee,8)^ue.shrSH(Tt,ee,7),Dt=ue.rotrSL(Tt,ee,1)^ue.rotrSL(Tt,ee,8)^ue.shrSL(Tt,ee,7),T=jn[_t-2]|0,C=Gn[_t-2]|0,x=ue.rotrSH(T,C,19)^ue.rotrBH(T,C,61)^ue.shrSH(T,C,6),B=ue.rotrSL(T,C,19)^ue.rotrBL(T,C,61)^ue.shrSL(T,C,6),v=ue.add4L(Dt,B,Gn[_t-7],Gn[_t-16]),y=ue.add4H(v,Ft,x,jn[_t-7],jn[_t-16]);jn[_t]=y|0,Gn[_t]=v|0}let{Ah:n,Al:i,Bh:o,Bl:s,Ch:d,Cl:g,Dh:A,Dl:L,Eh:M,El:$,Fh:K,Fl:et,Gh:tt,Gl:ht,Hh:mt,Hl:Q}=this;for(let _t=0;_t<80;_t++){let Tt=ue.rotrSH(M,$,14)^ue.rotrSH(M,$,18)^ue.rotrBH(M,$,41),ee=ue.rotrSL(M,$,14)^ue.rotrSL(M,$,18)^ue.rotrBL(M,$,41),Ft=M&K^~M&tt,Dt=$&et^~$&ht,T=ue.add5L(Q,ee,Dt,Ep[_t],Gn[_t]),C=ue.add5H(T,mt,Tt,Ft,_p[_t],jn[_t]),x=T|0,B=ue.rotrSH(n,i,28)^ue.rotrBH(n,i,34)^ue.rotrBH(n,i,39),v=ue.rotrSL(n,i,28)^ue.rotrBL(n,i,34)^ue.rotrBL(n,i,39),y=n&o^n&d^o&d,a=i&s^i&g^s&g;mt=tt|0,Q=ht|0,tt=K|0,ht=et|0,K=M|0,et=$|0,{h:M,l:$}=ue.add(A|0,L|0,C|0,x|0),A=d|0,L=g|0,d=o|0,g=s|0,o=n|0,s=i|0;let c=ue.add3L(x,v,a);n=ue.add3H(c,C,B,y),i=c|0}({h:n,l:i}=ue.add(this.Ah|0,this.Al|0,n|0,i|0)),{h:o,l:s}=ue.add(this.Bh|0,this.Bl|0,o|0,s|0),{h:d,l:g}=ue.add(this.Ch|0,this.Cl|0,d|0,g|0),{h:A,l:L}=ue.add(this.Dh|0,this.Dl|0,A|0,L|0),{h:M,l:$}=ue.add(this.Eh|0,this.El|0,M|0,$|0),{h:K,l:et}=ue.add(this.Fh|0,this.Fl|0,K|0,et|0),{h:tt,l:ht}=ue.add(this.Gh|0,this.Gl|0,tt|0,ht|0),{h:mt,l:Q}=ue.add(this.Hh|0,this.Hl|0,mt|0,Q|0),this.set(n,i,o,s,d,g,A,L,M,$,K,et,tt,ht,mt,Q)}roundClean(){jn.fill(0),Gn.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},Bc=class extends wo{constructor(){super(),this.Ah=573645204,this.Al=-64227540,this.Bh=-1621794909,this.Bl=-934517566,this.Ch=596883563,this.Cl=1867755857,this.Dh=-1774684391,this.Dl=1497426621,this.Eh=-1775747358,this.El=-1467023389,this.Fh=-1101128155,this.Fl=1401305490,this.Gh=721525244,this.Gl=746961066,this.Hh=246885852,this.Hl=-2117784414,this.outputLen=32}},Rc=class extends wo{constructor(){super(),this.Ah=-876896931,this.Al=-1056596264,this.Bh=1654270250,this.Bl=914150663,this.Ch=-1856437926,this.Cl=812702999,this.Dh=355462360,this.Dl=-150054599,this.Eh=1731405415,this.El=-4191439,this.Fh=-1900787065,this.Fl=1750603025,this.Gh=-619958771,this.Gl=1694076839,this.Hh=1203062813,this.Hl=-1090891868,this.outputLen=48}},Of=$n(()=>new wo),Mw=$n(()=>new Bc),Lw=$n(()=>new Rc);var Sp=de(ks(),1);var Ir=BigInt(0),Me=BigInt(1),Ni=BigInt(2),Cf=BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),ir=Object.freeze({a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),P:BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),l:Cf,n:Cf,h:BigInt(8),Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960")});var Ff=BigInt("0x10000000000000000000000000000000000000000000000000000000000000000"),xo=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),Uw=BigInt("6853475219497561581579357271197624642482790079785650197046958215289687604742"),Bp=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),Rp=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),Tp=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),Mp=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952"),Te=class{constructor(t,e,n,i){this.x=t,this.y=e,this.z=n,this.t=i}static fromAffine(t){if(!(t instanceof tr))throw new TypeError("ExtendedPoint#fromAffine: expected Point");return t.equals(tr.ZERO)?Te.ZERO:new Te(t.x,t.y,Me,dt(t.x*t.y))}static toAffineBatch(t){let e=Op(t.map(n=>n.z));return t.map((n,i)=>n.toAffine(e[i]))}static normalizeZ(t){return this.toAffineBatch(t).map(this.fromAffine)}equals(t){Uf(t);let{x:e,y:n,z:i}=this,{x:o,y:s,z:d}=t,g=dt(e*d),A=dt(o*i),L=dt(n*d),M=dt(s*i);return g===A&&L===M}negate(){return new Te(dt(-this.x),this.y,this.z,dt(-this.t))}double(){let{x:t,y:e,z:n}=this,{a:i}=ir,o=dt(t*t),s=dt(e*e),d=dt(Ni*dt(n*n)),g=dt(i*o),A=t+e,L=dt(dt(A*A)-o-s),M=g+s,$=M-d,K=g-s,et=dt(L*$),tt=dt(M*K),ht=dt(L*K),mt=dt($*M);return new Te(et,tt,mt,ht)}add(t){Uf(t);let{x:e,y:n,z:i,t:o}=this,{x:s,y:d,z:g,t:A}=t,L=dt((n-e)*(d+s)),M=dt((n+e)*(d-s)),$=dt(M-L);if($===Ir)return this.double();let K=dt(i*Ni*A),et=dt(o*Ni*g),tt=et+K,ht=M+L,mt=et-K,Q=dt(tt*$),_t=dt(ht*mt),Tt=dt(tt*mt),ee=dt($*ht);return new Te(Q,_t,ee,Tt)}subtract(t){return this.add(t.negate())}precomputeWindow(t){let e=1+256/t,n=[],i=this,o=i;for(let s=0;s>=M,et>g&&(et-=L,t+=Me),et===0){let tt=i[K];$%2&&(tt=tt.negate()),s=s.add(tt)}else{let tt=i[K+Math.abs(et)-1];et<0&&(tt=tt.negate()),o=o.add(tt)}}return Te.normalizeZ([o,s])[0]}multiply(t,e){return this.wNAF(As(t,ir.l),e)}multiplyUnsafe(t){let e=As(t,ir.l,!1),n=Te.BASE,i=Te.ZERO;if(e===Ir)return i;if(this.equals(i)||e===Me)return this;if(this.equals(n))return this.wNAF(e);let o=i,s=this;for(;e>Ir;)e&Me&&(o=o.add(s)),s=s.double(),e>>=Me;return o}isSmallOrder(){return this.multiplyUnsafe(ir.h).equals(Te.ZERO)}isTorsionFree(){return this.multiplyUnsafe(ir.l).equals(Te.ZERO)}toAffine(t=Es(this.z)){let{x:e,y:n,z:i}=this,o=dt(e*t),s=dt(n*t);if(dt(i*t)!==Me)throw new Error("invZ was invalid");return new tr(o,s)}fromRistrettoBytes(){Mc()}toRistrettoBytes(){Mc()}fromRistrettoHash(){Mc()}};Te.BASE=new Te(ir.Gx,ir.Gy,Me,dt(ir.Gx*ir.Gy));Te.ZERO=new Te(Ir,Me,Me,Ir);function Uf(r){if(!(r instanceof Te))throw new TypeError("ExtendedPoint expected")}function Tc(r){if(!(r instanceof $r))throw new TypeError("RistrettoPoint expected")}function Mc(){throw new Error("Legacy method: switch to RistrettoPoint")}var $r=class{constructor(t){this.ep=t}static calcElligatorRistrettoMap(t){let{d:e}=ir,n=dt(xo*t*t),i=dt((n+Me)*Tp),o=BigInt(-1),s=dt((o-e*n)*dt(n+e)),{isValid:d,value:g}=Cc(i,s),A=dt(g*t);Yn(A)||(A=dt(-A)),d||(g=A),d||(o=n);let L=dt(o*(n-Me)*Mp-s),M=g*g,$=dt((g+g)*s),K=dt(L*Bp),et=dt(Me-M),tt=dt(Me+M);return new Te(dt($*tt),dt(et*K),dt(K*tt),dt($*et))}static hashToCurve(t){t=Zn(t,64);let e=Lc(t.slice(0,32)),n=this.calcElligatorRistrettoMap(e),i=Lc(t.slice(32,64)),o=this.calcElligatorRistrettoMap(i);return new $r(n.add(o))}static fromHex(t){t=Zn(t,32);let{a:e,d:n}=ir,i="RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint",o=Lc(t);if(!Up(vo(o),t)||Yn(o))throw new Error(i);let s=dt(o*o),d=dt(Me+e*s),g=dt(Me-e*s),A=dt(d*d),L=dt(g*g),M=dt(e*n*A-L),{isValid:$,value:K}=zf(dt(M*L)),et=dt(K*g),tt=dt(K*et*M),ht=dt((o+o)*et);Yn(ht)&&(ht=dt(-ht));let mt=dt(d*tt),Q=dt(ht*mt);if(!$||Yn(Q)||mt===Ir)throw new Error(i);return new $r(new Te(ht,mt,Me,Q))}toRawBytes(){let{x:t,y:e,z:n,t:i}=this.ep,o=dt(dt(n+e)*dt(n-e)),s=dt(t*e),d=dt(s*s),{value:g}=zf(dt(o*d)),A=dt(g*o),L=dt(g*s),M=dt(A*L*i),$;if(Yn(i*M)){let et=dt(e*xo),tt=dt(t*xo);t=et,e=tt,$=dt(A*Rp)}else $=L;Yn(t*M)&&(e=dt(-e));let K=dt((n-e)*$);return Yn(K)&&(K=dt(-K)),vo(K)}toHex(){return ko(this.toRawBytes())}toString(){return this.toHex()}equals(t){Tc(t);let e=this.ep,n=t.ep,i=dt(e.x*n.y)===dt(e.y*n.x),o=dt(e.y*n.y)===dt(e.x*n.x);return i||o}add(t){return Tc(t),new $r(this.ep.add(t.ep))}subtract(t){return Tc(t),new $r(this.ep.subtract(t.ep))}multiply(t){return new $r(this.ep.multiply(t))}multiplyUnsafe(t){return new $r(this.ep.multiplyUnsafe(t))}};$r.BASE=new $r(Te.BASE);$r.ZERO=new $r(Te.ZERO);var Pc=new WeakMap,tr=class{constructor(t,e){this.x=t,this.y=e}_setWindowSize(t){this._WINDOW_SIZE=t,Pc.delete(this)}static fromHex(t,e=!0){let{d:n,P:i}=ir;t=Zn(t,32);let o=t.slice();o[31]=t[31]&-129;let s=Io(o);if(e&&s>=i)throw new Error("Expected 0 < hex < P");if(!e&&s>=Ff)throw new Error("Expected 0 < hex < 2**256");let d=dt(s*s),g=dt(d-Me),A=dt(n*d+Me),{isValid:L,value:M}=Cc(g,A);if(!L)throw new Error("Point.fromHex: invalid y coordinate");let $=(M&Me)===Me;return(t[31]&128)!==0!==$&&(M=dt(-M)),new tr(M,s)}static async fromPrivateKey(t){return(await Wf(t)).point}toRawBytes(){let t=vo(this.y);return t[31]|=this.x&Me?128:0,t}toHex(){return ko(this.toRawBytes())}toX25519(){let{y:t}=this,e=dt((Me+t)*Es(Me-t));return vo(e)}isTorsionFree(){return Te.fromAffine(this).isTorsionFree()}equals(t){return this.x===t.x&&this.y===t.y}negate(){return new tr(dt(-this.x),this.y)}add(t){return Te.fromAffine(this).add(Te.fromAffine(t)).toAffine()}subtract(t){return this.add(t.negate())}multiply(t){return Te.fromAffine(this).multiply(t,this).toAffine()}};tr.BASE=new tr(ir.Gx,ir.Gy);tr.ZERO=new tr(Ir,Me);var wi=class{constructor(t,e){this.r=t,this.s=e,this.assertValidity()}static fromHex(t){let e=Zn(t,64),n=tr.fromHex(e.slice(0,32),!1),i=Io(e.slice(32,64));return new wi(n,i)}assertValidity(){let{r:t,s:e}=this;if(!(t instanceof tr))throw new Error("Expected Point instance");return As(e,ir.l,!1),this}toRawBytes(){let t=new Uint8Array(64);return t.set(this.r.toRawBytes()),t.set(vo(this.s),32),t}toHex(){return ko(this.toRawBytes())}};function Nf(...r){if(!r.every(n=>n instanceof Uint8Array))throw new Error("Expected Uint8Array list");if(r.length===1)return r[0];let t=r.reduce((n,i)=>n+i.length,0),e=new Uint8Array(t);for(let n=0,i=0;nt.toString(16).padStart(2,"0"));function ko(r){if(!(r instanceof Uint8Array))throw new Error("Uint8Array expected");let t="";for(let e=0;e=Ir?e:t+e}function Es(r,t=ir.P){if(r===Ir||t<=Ir)throw new Error(`invert: expected positive integers, got n=${r} mod=${t}`);let e=dt(r,t),n=t,i=Ir,o=Me,s=Me,d=Ir;for(;e!==Ir;){let A=n/e,L=n%e,M=i-s*A,$=o-d*A;n=e,e=L,i=s,o=d,s=M,d=$}if(n!==Me)throw new Error("invert: does not exist");return dt(i,t)}function Op(r,t=ir.P){let e=new Array(r.length),n=r.reduce((o,s,d)=>s===Ir?o:(e[d]=o,dt(o*s,t)),Me),i=Es(n,t);return r.reduceRight((o,s,d)=>s===Ir?o:(e[d]=dt(o*e[d],t),dt(o*s,t)),i),e}function yn(r,t){let{P:e}=ir,n=r;for(;t-- >Ir;)n*=n,n%=e;return n}function Cp(r){let{P:t}=ir,e=BigInt(5),n=BigInt(10),i=BigInt(20),o=BigInt(40),s=BigInt(80),g=r*r%t*r%t,A=yn(g,Ni)*g%t,L=yn(A,Me)*r%t,M=yn(L,e)*L%t,$=yn(M,n)*M%t,K=yn($,i)*$%t,et=yn(K,o)*K%t,tt=yn(et,s)*et%t,ht=yn(tt,s)*et%t,mt=yn(ht,n)*M%t;return{pow_p_5_8:yn(mt,Ni)*r%t,b2:g}}function Cc(r,t){let e=dt(t*t*t),n=dt(e*e*t),i=Cp(r*n).pow_p_5_8,o=dt(r*e*i),s=dt(t*o*o),d=o,g=dt(o*xo),A=s===r,L=s===dt(-r),M=s===dt(-r*xo);return A&&(o=d),(L||M)&&(o=g),Yn(o)&&(o=dt(-o)),{isValid:A||L,value:o}}function zf(r){return Cc(Me,r)}function Is(r){return dt(Io(r),ir.l)}function Up(r,t){if(r.length!==t.length)return!1;for(let e=0;e{if(r=Zn(r),r.length<40||r.length>1024)throw new Error("Expected 40-1024 bytes of private key as per FIPS 186");return dt(Io(r),ir.l-Me)+Me},randomBytes:(r=32)=>{if(Vn.web)return Vn.web.getRandomValues(new Uint8Array(r));if(Vn.node){let{randomBytes:t}=Vn.node;return new Uint8Array(t(r).buffer)}else throw new Error("The environment doesn't have randomBytes function")},randomPrivateKey:()=>Xn.randomBytes(32),sha512:async(...r)=>{let t=Nf(...r);if(Vn.web){let e=await Vn.web.subtle.digest("SHA-512",t.buffer);return new Uint8Array(e)}else{if(Vn.node)return Uint8Array.from(Vn.node.createHash("sha512").update(t).digest());throw new Error("The environment doesn't have sha512 function")}},precompute(r=8,t=tr.BASE){let e=t.equals(tr.BASE)?t:new tr(t.x,t.y);return e._setWindowSize(r),e.multiply(Ni),e},sha512Sync:void 0};Object.defineProperties(Xn,{sha512Sync:{configurable:!1,get(){return bo},set(r){bo||(bo=r)}}});var Uu=de(zc()),Vr=de(Yc());var w1=(r,t,e)=>r&t^~r&e,x1=(r,t,e)=>r&t^r&e^t&e,b1=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Qn=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ti=new Uint32Array(64),Zc=class extends Ui{constructor(){super(64,32,8,!1),this.A=Qn[0]|0,this.B=Qn[1]|0,this.C=Qn[2]|0,this.D=Qn[3]|0,this.E=Qn[4]|0,this.F=Qn[5]|0,this.G=Qn[6]|0,this.H=Qn[7]|0}get(){let{A:t,B:e,C:n,D:i,E:o,F:s,G:d,H:g}=this;return[t,e,n,i,o,s,d,g]}set(t,e,n,i,o,s,d,g){this.A=t|0,this.B=e|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=d|0,this.H=g|0}process(t,e){for(let M=0;M<16;M++,e+=4)ti[M]=t.getUint32(e,!1);for(let M=16;M<64;M++){let $=ti[M-15],K=ti[M-2],et=un($,7)^un($,18)^$>>>3,tt=un(K,17)^un(K,19)^K>>>10;ti[M]=tt+ti[M-7]+et+ti[M-16]|0}let{A:n,B:i,C:o,D:s,E:d,F:g,G:A,H:L}=this;for(let M=0;M<64;M++){let $=un(d,6)^un(d,11)^un(d,25),K=L+$+w1(d,g,A)+b1[M]+ti[M]|0,tt=(un(n,2)^un(n,13)^un(n,22))+x1(n,i,o)|0;L=A,A=g,g=d,d=s+K|0,s=o,o=i,i=n,n=K+tt|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,d=d+this.E|0,g=g+this.F|0,A=A+this.G|0,L=L+this.H|0,this.set(n,i,o,s,d,g,A,L)}roundClean(){ti.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}},Ls=$n(()=>new Zc);var so=de(xh()),W=de(De()),zl=de(De()),ns=de(ou());var su=class extends TypeError{constructor(t,e){let n,{message:i,...o}=t,{path:s}=t,d=s.length===0?i:"At path: "+s.join(".")+" -- "+i;super(d),Object.assign(this,o),this.name=this.constructor.name,this.failures=()=>{var g;return(g=n)!=null?g:n=[t,...e()]}}};function q1(r){return ni(r)&&typeof r[Symbol.iterator]=="function"}function ni(r){return typeof r=="object"&&r!=null}function fn(r){return typeof r=="string"?JSON.stringify(r):""+r}function K1(r){let{done:t,value:e}=r.next();return t?void 0:e}function W1(r,t,e,n){if(r===!0)return;r===!1?r={}:typeof r=="string"&&(r={message:r});let{path:i,branch:o}=t,{type:s}=e,{refinement:d,message:g="Expected a value of type `"+s+"`"+(d?" with refinement `"+d+"`":"")+", but received: `"+fn(n)+"`"}=r;return{value:n,type:s,refinement:d,key:i[i.length-1],path:i,branch:o,...r,message:g}}function*bh(r,t,e,n){q1(r)||(r=[r]);for(let i of r){let o=W1(i,t,e,n);o&&(yield o)}}function*au(r,t,e={}){let{path:n=[],branch:i=[r],coerce:o=!1,mask:s=!1}=e,d={path:n,branch:i};if(o&&(r=t.coercer(r,d),s&&t.type!=="type"&&ni(t.schema)&&ni(r)&&!Array.isArray(r)))for(let A in r)t.schema[A]===void 0&&delete r[A];let g=!0;for(let A of t.validator(r,d))g=!1,yield[A,void 0];for(let[A,L,M]of t.entries(r,d)){let $=au(L,M,{path:A===void 0?n:[...n,A],branch:A===void 0?i:[...i,L],coerce:o,mask:s});for(let K of $)K[0]?(g=!1,yield[K[0],void 0]):o&&(L=K[1],A===void 0?r=L:r instanceof Map?r.set(A,L):r instanceof Set?r.add(L):ni(r)&&(r[A]=L))}if(g)for(let A of t.refiner(r,d))g=!1,yield[A,void 0];g&&(yield[void 0,r])}var rn=class{constructor(t){let{type:e,schema:n,validator:i,refiner:o,coercer:s=g=>g,entries:d=function*(){}}=t;this.type=e,this.schema=n,this.entries=d,this.coercer=s,i?this.validator=(g,A)=>{let L=i(g,A);return bh(L,A,this,g)}:this.validator=()=>[],o?this.refiner=(g,A)=>{let L=o(g,A);return bh(L,A,this,g)}:this.refiner=()=>[]}assert(t){return vh(t,this)}create(t){return Gi(t,this)}is(t){return kh(t,this)}mask(t){return H1(t,this)}validate(t,e={}){return To(t,this,e)}};function vh(r,t){let e=To(r,t);if(e[0])throw e[0]}function Gi(r,t){let e=To(r,t,{coerce:!0});if(e[0])throw e[0];return e[1]}function H1(r,t){let e=To(r,t,{coerce:!0,mask:!0});if(e[0])throw e[0];return e[1]}function kh(r,t){return!To(r,t)[0]}function To(r,t,e={}){let n=au(r,t,e),i=K1(n);return i[0]?[new su(i[0],function*(){for(let s of n)s[0]&&(yield s[0])}),void 0]:[void 0,i[1]]}function Ii(r,t){return new rn({type:r,schema:null,validator:t})}function Ih(){return Ii("any",()=>!0)}function Kt(r){return new rn({type:"array",schema:r,*entries(t){if(r&&Array.isArray(t))for(let[e,n]of t.entries())yield[e,n,r]},coercer(t){return Array.isArray(t)?t.slice():t},validator(t){return Array.isArray(t)||"Expected an array value, but received: "+fn(t)}})}function bn(){return Ii("boolean",r=>typeof r=="boolean")}function oa(r){return Ii("instance",t=>t instanceof r||"Expected a `"+r.name+"` instance, but received: "+fn(t))}function or(r){let t=fn(r),e=typeof r;return new rn({type:"literal",schema:e==="string"||e==="number"||e==="boolean"?r:null,validator(n){return n===r||"Expected the literal `"+t+"`, but received: "+fn(n)}})}function $1(){return Ii("never",()=>!1)}function ie(r){return new rn({...r,validator:(t,e)=>t===null||r.validator(t,e),refiner:(t,e)=>t===null||r.refiner(t,e)})}function it(){return Ii("number",r=>typeof r=="number"&&!isNaN(r)||"Expected a number, but received: "+fn(r))}function ve(r){return new rn({...r,validator:(t,e)=>t===void 0||r.validator(t,e),refiner:(t,e)=>t===void 0||r.refiner(t,e)})}function cu(r,t){return new rn({type:"record",schema:null,*entries(e){if(ni(e))for(let n in e){let i=e[n];yield[n,n,r],yield[n,i,t]}},validator(e){return ni(e)||"Expected an object, but received: "+fn(e)}})}function St(){return Ii("string",r=>typeof r=="string"||"Expected a string, but received: "+fn(r))}function sa(r){let t=$1();return new rn({type:"tuple",schema:null,*entries(e){if(Array.isArray(e)){let n=Math.max(r.length,e.length);for(let i=0;ie.type).join(" | ");return new rn({type:"union",schema:null,validator(e,n){let i=[];for(let o of r){let[...s]=au(e,o,n),[d]=s;if(d[0])for(let[g]of s)g&&i.push(g);else return[]}return["Expected the value to satisfy a union of `"+t+"`, but received: "+fn(e),...i]}})}function Vi(){return Ii("unknown",()=>!0)}function Yi(r,t,e){return new rn({...r,coercer:(n,i)=>kh(n,t)?r.coercer(e(n,i),i):r.coercer(n,i)})}var _g=de(Fh()),Eg=de(ul());var[ll,dl,pl]=[[],[],[]],rg=BigInt(0),Ho=BigInt(1),ng=BigInt(2),ig=BigInt(7),og=BigInt(256),sg=BigInt(113);for(let r=0,t=Ho,e=1,n=0;r<24;r++){[e,n]=[n,(2*e+3*n)%5],ll.push(2*(5*n+e)),dl.push((r+1)*(r+2)/2%64);let i=rg;for(let o=0;o<7;o++)t=(t<>ig)*sg)%og,t&ng&&(i^=Ho<<(Ho<e>32?ue.rotlBH(r,t,e):ue.rotlSH(r,t,e),hl=(r,t,e)=>e>32?ue.rotlBL(r,t,e):ue.rotlSL(r,t,e);function ug(r,t=24){let e=new Uint32Array(10);for(let n=24-t;n<24;n++){for(let s=0;s<10;s++)e[s]=r[s]^r[s+10]^r[s+20]^r[s+30]^r[s+40];for(let s=0;s<10;s+=2){let d=(s+8)%10,g=(s+2)%10,A=e[g],L=e[g+1],M=fl(A,L,1)^e[d],$=hl(A,L,1)^e[d+1];for(let K=0;K<50;K+=10)r[s+K]^=M,r[s+K+1]^=$}let i=r[2],o=r[3];for(let s=0;s<24;s++){let d=dl[s],g=fl(i,o,d),A=hl(i,o,d),L=ll[s];i=r[L],o=r[L+1],r[L]=g,r[L+1]=A}for(let s=0;s<50;s+=10){for(let d=0;d<10;d++)e[d]=r[s+d];for(let d=0;d<10;d++)r[s+d]^=~e[(d+2)%10]&e[(d+4)%10]}r[0]^=ag[n],r[1]^=cg[n]}e.fill(0)}var Zi=class extends Sn{constructor(t,e,n,i=!1,o=24){if(super(),this.blockLen=t,this.suffix=e,this.outputLen=n,this.enableXOF=i,this.rounds=o,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,Pr.number(n),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=Mf(this.state)}keccak(){ug(this.state32,this.rounds),this.posOut=0,this.pos=0}update(t){Pr.exists(this);let{blockLen:e,state:n}=this;t=Hn(t);let i=t.length;for(let o=0;o=n&&this.keccak();let s=Math.min(n-this.posOut,o-i);t.set(e.subarray(this.posOut,this.posOut+s),i),this.posOut+=s,i+=s}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return Pr.number(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(Pr.output(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(t){let{blockLen:e,suffix:n,outputLen:i,rounds:o,enableXOF:s}=this;return t||(t=new Zi(e,n,i,s,o)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=o,t.suffix=n,t.outputLen=i,t.enableXOF=s,t.destroyed=this.destroyed,t}},ui=(r,t,e)=>$n(()=>new Zi(t,r,e)),e2=ui(6,144,224/8),r2=ui(6,136,256/8),n2=ui(6,104,384/8),i2=ui(6,72,512/8),o2=ui(1,144,224/8),Au=ui(1,136,256/8),s2=ui(1,104,384/8),a2=ui(1,72,512/8),yl=(r,t,e)=>Lf((n={})=>new Zi(t,r,n.dkLen===void 0?e:n.dkLen,!0)),c2=yl(31,168,128/8),u2=yl(31,136,256/8);var Aa=class extends Sn{constructor(t,e){super(),this.finished=!1,this.destroyed=!1,Pr.hash(t);let n=Hn(e);if(this.iHash=t.create(),!(this.iHash instanceof Sn))throw new TypeError("Expected instance of class which extends utils.Hash");let i=this.blockLen=this.iHash.blockLen;this.outputLen=this.iHash.outputLen;let o=new Uint8Array(i);o.set(n.length>this.iHash.blockLen?t.create().update(n).digest():n);for(let s=0;snew Aa(r,t).update(e).digest();_u.create=(r,t)=>new Aa(r,t);var fg=de(ks(),1);var Le=BigInt(0),er=BigInt(1),fi=BigInt(2),jo=BigInt(3),hg=BigInt(8),fr=Object.freeze({a:Le,b:BigInt(7),P:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:er,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee")});function gl(r){let{a:t,b:e}=fr,n=Pt(r*r),i=Pt(n*r);return Pt(i+t*r+e)}var _a=fr.a===Le,Sa=class extends Error{constructor(t){super(t)}},$e=class{constructor(t,e,n){this.x=t,this.y=e,this.z=n}static fromAffine(t){if(!(t instanceof ur))throw new TypeError("JacobianPoint#fromAffine: expected Point");return new $e(t.x,t.y,er)}static toAffineBatch(t){let e=gg(t.map(n=>n.z));return t.map((n,i)=>n.toAffine(e[i]))}static normalizeZ(t){return $e.toAffineBatch(t).map($e.fromAffine)}equals(t){if(!(t instanceof $e))throw new TypeError("JacobianPoint expected");let{x:e,y:n,z:i}=this,{x:o,y:s,z:d}=t,g=Pt(i*i),A=Pt(d*d),L=Pt(e*A),M=Pt(o*g),$=Pt(Pt(n*d)*A),K=Pt(Pt(s*i)*g);return L===M&&$===K}negate(){return new $e(this.x,Pt(-this.y),this.z)}double(){let{x:t,y:e,z:n}=this,i=Pt(t*t),o=Pt(e*e),s=Pt(o*o),d=t+o,g=Pt(fi*(Pt(d*d)-i-s)),A=Pt(jo*i),L=Pt(A*A),M=Pt(L-fi*g),$=Pt(A*(g-M)-hg*s),K=Pt(fi*e*n);return new $e(M,$,K)}add(t){if(!(t instanceof $e))throw new TypeError("JacobianPoint expected");let{x:e,y:n,z:i}=this,{x:o,y:s,z:d}=t;if(o===Le||s===Le)return this;if(e===Le||n===Le)return t;let g=Pt(i*i),A=Pt(d*d),L=Pt(e*A),M=Pt(o*g),$=Pt(Pt(n*d)*A),K=Pt(Pt(s*i)*g),et=Pt(M-L),tt=Pt(K-$);if(et===Le)return tt===Le?this.double():$e.ZERO;let ht=Pt(et*et),mt=Pt(et*ht),Q=Pt(L*ht),_t=Pt(tt*tt-mt-fi*Q),Tt=Pt(tt*(Q-_t)-$*mt),ee=Pt(i*d*et);return new $e(_t,Tt,ee)}subtract(t){return this.add(t.negate())}multiplyUnsafe(t){let e=$e.ZERO;if(typeof t=="bigint"&&t===Le)return e;let n=xl(t);if(n===er)return this;if(!_a){let M=e,$=this;for(;n>Le;)n&er&&(M=M.add($)),$=$.double(),n>>=er;return M}let{k1neg:i,k1:o,k2neg:s,k2:d}=vl(n),g=e,A=e,L=this;for(;o>Le||d>Le;)o&er&&(g=g.add(L)),d&er&&(A=A.add(L)),L=L.double(),o>>=er,d>>=er;return i&&(g=g.negate()),s&&(A=A.negate()),A=new $e(Pt(A.x*fr.beta),A.y,A.z),g.add(A)}precomputeWindow(t){let e=_a?128/t+1:256/t+1,n=[],i=this,o=i;for(let s=0;s>=M,et>g&&(et-=L,t+=er),et===0){let tt=i[K];$%2&&(tt=tt.negate()),s=s.add(tt)}else{let tt=i[K+Math.abs(et)-1];et<0&&(tt=tt.negate()),o=o.add(tt)}}return{p:o,f:s}}multiply(t,e){let n=xl(t),i,o;if(_a){let{k1neg:s,k1:d,k2neg:g,k2:A}=vl(n),{p:L,f:M}=this.wNAF(d,e),{p:$,f:K}=this.wNAF(A,e);s&&(L=L.negate()),g&&($=$.negate()),$=new $e(Pt($.x*fr.beta),$.y,$.z),i=L.add($),o=M.add(K)}else{let{p:s,f:d}=this.wNAF(n,e);i=s,o=d}return $e.normalizeZ([i,o])[0]}toAffine(t=Zo(this.z)){let{x:e,y:n,z:i}=this,o=t,s=Pt(o*o),d=Pt(s*o),g=Pt(e*s),A=Pt(n*d);if(Pt(i*o)!==er)throw new Error("invZ was invalid");return new ur(g,A)}};$e.BASE=new $e(fr.Gx,fr.Gy,er);$e.ZERO=new $e(Le,er,Le);var Su=new WeakMap,ur=class{constructor(t,e){this.x=t,this.y=e}_setWindowSize(t){this._WINDOW_SIZE=t,Su.delete(this)}hasEvenY(){return this.y%fi===Le}static fromCompressedHex(t){let e=t.length===32,n=Cn(e?t:t.subarray(1));if(!Eu(n))throw new Error("Point is not on curve");let i=gl(n),o=yg(i),s=(o&er)===er;e?s&&(o=Pt(-o)):(t[0]&1)===1!==s&&(o=Pt(-o));let d=new ur(n,o);return d.assertValidity(),d}static fromUncompressedHex(t){let e=Cn(t.subarray(1,33)),n=Cn(t.subarray(33,65)),i=new ur(e,n);return i.assertValidity(),i}static fromHex(t){let e=Vo(t),n=e.length,i=e[0];if(n===32||n===33&&(i===2||i===3))return this.fromCompressedHex(e);if(n===65&&i===4)return this.fromUncompressedHex(e);throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${n}`)}static fromPrivateKey(t){return ur.BASE.multiply(Ra(t))}static fromSignature(t,e,n){t=Vo(t);let i=wg(t),{r:o,s}=bg(e);if(n!==0&&n!==1)throw new Error("Cannot recover signature: invalid recovery bit");let d=n&1?"03":"02",g=ur.fromHex(d+Ji(o)),{n:A}=fr,L=Zo(o,A),M=Pt(-i*L,A),$=Pt(s*L,A),K=ur.BASE.multiplyAndAddUnsafe(g,M,$);if(!K)throw new Error("Cannot recover signature: point at infinify");return K.assertValidity(),K}toRawBytes(t=!1){return _i(this.toHex(t))}toHex(t=!1){let e=Ji(this.x);return t?`${this.hasEvenY()?"02":"03"}${e}`:`04${e}${Ji(this.y)}`}toHexX(){return this.toHex(!0).slice(2)}toRawX(){return this.toRawBytes(!0).slice(1)}assertValidity(){let t="Point is not on elliptic curve",{x:e,y:n}=this;if(!Eu(e)||!Eu(n))throw new Error(t);let i=Pt(n*n),o=gl(e);if(Pt(i-o)!==Le)throw new Error(t)}equals(t){return this.x===t.x&&this.y===t.y}negate(){return new ur(this.x,Pt(-this.y))}double(){return $e.fromAffine(this).double().toAffine()}add(t){return $e.fromAffine(this).add($e.fromAffine(t)).toAffine()}subtract(t){return this.add(t.negate())}multiply(t){return $e.fromAffine(this).multiply(t,this).toAffine()}multiplyAndAddUnsafe(t,e,n){let i=$e.fromAffine(this),o=e===Le||e===er||this!==ur.BASE?i.multiplyUnsafe(e):i.multiply(e),s=$e.fromAffine(t).multiplyUnsafe(n),d=o.add(s);return d.equals($e.ZERO)?void 0:d.toAffine()}};ur.BASE=new ur(fr.Gx,fr.Gy);ur.ZERO=new ur(Le,Le);function ml(r){return Number.parseInt(r[0],16)>=8?"00"+r:r}function wl(r){if(r.length<2||r[0]!==2)throw new Error(`Invalid signature integer tag: ${to(r)}`);let t=r[1],e=r.subarray(2,t+2);if(!t||e.length!==t)throw new Error("Invalid signature integer: wrong length");if(e[0]===0&&e[1]<=127)throw new Error("Invalid signature integer: trailing length");return{data:Cn(e),left:r.subarray(t+2)}}function lg(r){if(r.length<2||r[0]!=48)throw new Error(`Invalid signature tag: ${to(r)}`);if(r[1]!==r.length-2)throw new Error("Invalid signature: incorrect length");let{data:t,left:e}=wl(r.subarray(2)),{data:n,left:i}=wl(e);if(i.length)throw new Error(`Invalid signature: left bytes after parsing: ${to(i)}`);return{r:t,s:n}}var kn=class{constructor(t,e){this.r=t,this.s=e,this.assertValidity()}static fromCompact(t){let e=t instanceof Uint8Array,n="Signature.fromCompact";if(typeof t!="string"&&!e)throw new TypeError(`${n}: Expected string or Uint8Array`);let i=e?to(t):t;if(i.length!==128)throw new Error(`${n}: Expected 64-byte hex`);return new kn(Ba(i.slice(0,64)),Ba(i.slice(64,128)))}static fromDER(t){let e=t instanceof Uint8Array;if(typeof t!="string"&&!e)throw new TypeError("Signature.fromDER: Expected string or Uint8Array");let{r:n,s:i}=lg(e?t:_i(t));return new kn(n,i)}static fromHex(t){return this.fromDER(t)}assertValidity(){let{r:t,s:e}=this;if(!Yo(t))throw new Error("Invalid Signature: r must be 0 < r < n");if(!Yo(e))throw new Error("Invalid Signature: s must be 0 < s < n")}hasHighS(){let t=fr.n>>er;return this.s>t}normalizeS(){return this.hasHighS()?new kn(this.r,fr.n-this.s):this}toDERRawBytes(t=!1){return _i(this.toDERHex(t))}toDERHex(t=!1){let e=ml($o(this.s));if(t)return e;let n=ml($o(this.r)),i=$o(n.length/2),o=$o(e.length/2);return`30${$o(n.length/2+e.length/2+4)}02${i}${n}02${o}${e}`}toRawBytes(){return this.toDERRawBytes()}toHex(){return this.toDERHex()}toCompactRawBytes(){return _i(this.toCompactHex())}toCompactHex(){return Ji(this.r)+Ji(this.s)}};function Xi(...r){if(!r.every(n=>n instanceof Uint8Array))throw new Error("Uint8Array list expected");if(r.length===1)return r[0];let t=r.reduce((n,i)=>n+i.length,0),e=new Uint8Array(t);for(let n=0,i=0;nt.toString(16).padStart(2,"0"));function to(r){if(!(r instanceof Uint8Array))throw new Error("Expected Uint8Array");let t="";for(let e=0;e0)return BigInt(r);if(typeof r=="bigint"&&Yo(r))return r;throw new TypeError("Expected valid private scalar: 0 < scalar < curve.n")}function Pt(r,t=fr.P){let e=r%t;return e>=Le?e:t+e}function nn(r,t){let{P:e}=fr,n=r;for(;t-- >Le;)n*=n,n%=e;return n}function yg(r){let{P:t}=fr,e=BigInt(6),n=BigInt(11),i=BigInt(22),o=BigInt(23),s=BigInt(44),d=BigInt(88),g=r*r*r%t,A=g*g*r%t,L=nn(A,jo)*A%t,M=nn(L,jo)*A%t,$=nn(M,fi)*g%t,K=nn($,n)*$%t,et=nn(K,i)*K%t,tt=nn(et,s)*et%t,ht=nn(tt,d)*tt%t,mt=nn(ht,s)*et%t,Q=nn(mt,jo)*A%t,_t=nn(Q,o)*K%t,Tt=nn(_t,e)*g%t;return nn(Tt,fi)}function Zo(r,t=fr.P){if(r===Le||t<=Le)throw new Error(`invert: expected positive integers, got n=${r} mod=${t}`);let e=Pt(r,t),n=t,i=Le,o=er,s=er,d=Le;for(;e!==Le;){let A=n/e,L=n%e,M=i-s*A,$=o-d*A;n=e,e=L,i=s,o=d,s=M,d=$}if(n!==er)throw new Error("invert: does not exist");return Pt(i,t)}function gg(r,t=fr.P){let e=new Array(r.length),n=r.reduce((o,s,d)=>s===Le?o:(e[d]=o,Pt(o*s,t)),er),i=Zo(n,t);return r.reduceRight((o,s,d)=>s===Le?o:(e[d]=Pt(o*e[d],t),Pt(o*s,t)),i),e}var bl=(r,t)=>(r+t/fi)/t,mg={a1:BigInt("0x3086d221a7d46bcde86c90e49284eb15"),b1:-er*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),a2:BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),b2:BigInt("0x3086d221a7d46bcde86c90e49284eb15"),POW_2_128:BigInt("0x100000000000000000000000000000000")};function vl(r){let{n:t}=fr,{a1:e,b1:n,a2:i,b2:o,POW_2_128:s}=mg,d=bl(o*r,t),g=bl(-n*r,t),A=Pt(r-d*e-g*i,t),L=Pt(-d*n-g*o,t),M=A>s,$=L>s;if(M&&(A=t-A),$&&(L=t-L),A>s||L>s)throw new Error("splitScalarEndo: Endomorphism failed, k="+r);return{k1neg:M,k1:A,k2neg:$,k2:L}}function wg(r){let{n:t}=fr,n=r.length*8-256,i=Cn(r);return n>0&&(i=i>>BigInt(n)),i>=t&&(i-=t),i}var Qi,Go,Ru=class{constructor(){this.v=new Uint8Array(32).fill(1),this.k=new Uint8Array(32).fill(0),this.counter=0}hmac(...t){return vn.hmacSha256(this.k,...t)}hmacSync(...t){return Go(this.k,...t)}checkSync(){if(typeof Go!="function")throw new Sa("hmacSha256Sync needs to be set")}incr(){if(this.counter>=1e3)throw new Error("Tried 1,000 k values for sign(), all were invalid");this.counter+=1}async reseed(t=new Uint8Array){this.k=await this.hmac(this.v,Uint8Array.from([0]),t),this.v=await this.hmac(this.v),t.length!==0&&(this.k=await this.hmac(this.v,Uint8Array.from([1]),t),this.v=await this.hmac(this.v))}reseedSync(t=new Uint8Array){this.checkSync(),this.k=this.hmacSync(this.v,Uint8Array.from([0]),t),this.v=this.hmacSync(this.v),t.length!==0&&(this.k=this.hmacSync(this.v,Uint8Array.from([1]),t),this.v=this.hmacSync(this.v))}async generate(){return this.incr(),this.v=await this.hmac(this.v),this.v}generateSync(){return this.checkSync(),this.incr(),this.v=this.hmacSync(this.v),this.v}};function Yo(r){return Le0)t=BigInt(r);else if(typeof r=="string"){if(r.length!==64)throw new Error("Expected 32 bytes of private key");t=Ba(r)}else if(r instanceof Uint8Array){if(r.length!==32)throw new Error("Expected 32 bytes of private key");t=Cn(r)}else throw new TypeError("Expected valid private key");if(!Yo(t))throw new Error("Expected private key: 0 < key < n");return t}function bg(r){if(r instanceof kn)return r.assertValidity(),r;try{return kn.fromDER(r)}catch{return kn.fromCompact(r)}}function kl(r,t=!1){return ur.fromPrivateKey(r).toRawBytes(t)}function Il(r){let t=r.length>32?r.slice(0,32):r;return Cn(t)}function vg(r){let t=Il(r),e=Pt(t,fr.n);return Al(e{if(r=Vo(r),r.length<40||r.length>1024)throw new Error("Expected 40-1024 bytes of private key as per FIPS 186");let t=Pt(Cn(r),fr.n-er)+er;return Bu(t)},randomBytes:(r=32)=>{if(Jr.web)return Jr.web.getRandomValues(new Uint8Array(r));if(Jr.node){let{randomBytes:t}=Jr.node;return Uint8Array.from(t(r))}else throw new Error("The environment doesn't have randomBytes function")},randomPrivateKey:()=>vn.hashToPrivateKey(vn.randomBytes(40)),sha256:async(...r)=>{if(Jr.web){let t=await Jr.web.subtle.digest("SHA-256",Xi(...r));return new Uint8Array(t)}else if(Jr.node){let{createHash:t}=Jr.node,e=t("sha256");return r.forEach(n=>e.update(n)),Uint8Array.from(e.digest())}else throw new Error("The environment doesn't have sha256 function")},hmacSha256:async(r,...t)=>{if(Jr.web){let e=await Jr.web.subtle.importKey("raw",r,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]),n=Xi(...t),i=await Jr.web.subtle.sign("HMAC",e,n);return new Uint8Array(i)}else if(Jr.node){let{createHmac:e}=Jr.node,n=e("sha256",r);return t.forEach(i=>n.update(i)),Uint8Array.from(n.digest())}else throw new Error("The environment doesn't have hmac-sha256 function")},sha256Sync:void 0,hmacSha256Sync:void 0,taggedHash:async(r,...t)=>{let e=Ea[r];if(e===void 0){let n=await vn.sha256(Uint8Array.from(r,i=>i.charCodeAt(0)));e=Xi(n,n),Ea[r]=e}return vn.sha256(e,...t)},taggedHashSync:(r,...t)=>{if(typeof Qi!="function")throw new Sa("sha256Sync is undefined, you need to set it");let e=Ea[r];if(e===void 0){let n=Qi(Uint8Array.from(r,i=>i.charCodeAt(0)));e=Xi(n,n),Ea[r]=e}return Qi(e,...t)},precompute(r=8,t=ur.BASE){let e=t===ur.BASE?t:new ur(t.x,t.y);return e._setWindowSize(r),e.multiply(jo),e}};Object.defineProperties(vn,{sha256Sync:{configurable:!1,get(){return Qi},set(r){Qi||(Qi=r)}},hmacSha256Sync:{configurable:!1,get(){return Go},set(r){Go||(Go=r)}}});Xn.sha512Sync=(...r)=>Of(Xn.concatBytes(...r));var x2=Xn.randomPrivateKey,El=()=>{let r=Xn.randomPrivateKey(),t=Nu(r),e=new Uint8Array(64);return e.set(r),e.set(t,32),{publicKey:t,secretKey:e}},Nu=Ss.getPublicKey;function Sl(r){try{return tr.fromHex(r,!0),!0}catch{return!1}}var Fl=(r,t)=>Ss.sign(r,t.slice(0,32)),Sg=Ss.verify,qe=r=>se.Buffer.isBuffer(r)?r:r instanceof Uint8Array?se.Buffer.from(r.buffer,r.byteOffset,r.byteLength):se.Buffer.from(r),zu=class{constructor(t){Object.assign(this,t)}encode(){return se.Buffer.from((0,so.serialize)(La,this))}static decode(t){return(0,so.deserialize)(La,this,t)}static decodeUnchecked(t){return(0,so.deserializeUnchecked)(La,this,t)}};var La=new Map,Bg=32,eo=32;function Rg(r){return r._bn!==void 0}var Bl=1,kt=class extends zu{constructor(t){if(super({}),this._bn=void 0,Rg(t))this._bn=t._bn;else{if(typeof t=="string"){let e=Vr.default.decode(t);if(e.length!=eo)throw new Error("Invalid public key input");this._bn=new Uu.default(e)}else this._bn=new Uu.default(t);if(this._bn.byteLength()>32)throw new Error("Invalid public key input")}}static unique(){let t=new kt(Bl);return Bl+=1,new kt(t.toBuffer())}equals(t){return this._bn.eq(t._bn)}toBase58(){return Vr.default.encode(this.toBytes())}toJSON(){return this.toBase58()}toBytes(){return this.toBuffer()}toBuffer(){let t=this._bn.toArrayLike(se.Buffer);if(t.length===eo)return t;let e=se.Buffer.alloc(32);return t.copy(e,32-t.length),e}toString(){return this.toBase58()}static async createWithSeed(t,e,n){let i=se.Buffer.concat([t.toBuffer(),se.Buffer.from(e),n.toBuffer()]),o=Ls(i);return new kt(o)}static createProgramAddressSync(t,e){let n=se.Buffer.alloc(0);t.forEach(function(o){if(o.length>Bg)throw new TypeError("Max seed length exceeded");n=se.Buffer.concat([n,qe(o)])}),n=se.Buffer.concat([n,e.toBuffer(),se.Buffer.from("ProgramDerivedAddress")]);let i=Ls(n);if(Sl(i))throw new Error("Invalid seeds, address must fall off the curve");return new kt(i)}static async createProgramAddress(t,e){return this.createProgramAddressSync(t,e)}static findProgramAddressSync(t,e){let n=255,i;for(;n!=0;){try{let o=t.concat(se.Buffer.from([n]));i=this.createProgramAddressSync(o,e)}catch(o){if(o instanceof TypeError)throw o;n--;continue}return[i,n]}throw new Error("Unable to find a viable program address nonce")}static async findProgramAddress(t,e){return this.findProgramAddressSync(t,e)}static isOnCurve(t){let e=new kt(t);return Sl(e.toBytes())}};kt.default=new kt("11111111111111111111111111111111");La.set(kt,{kind:"struct",fields:[["_bn","u256"]]});var b2=new kt("BPFLoader1111111111111111111111111111111111"),Pa=1280-40-8,Tg=127,Fu=64,Du=class extends Error{constructor(t){super(`Signature ${t} has expired: block height exceeded.`),this.signature=void 0,this.signature=t}};Object.defineProperty(Du.prototype,"name",{value:"TransactionExpiredBlockheightExceededError"});var qu=class extends Error{constructor(t,e){super(`Transaction was not confirmed in ${e.toFixed(2)} seconds. It is unknown if it succeeded or failed. Check signature ${t} using the Solana Explorer or CLI tools.`),this.signature=void 0,this.signature=t}};Object.defineProperty(qu.prototype,"name",{value:"TransactionExpiredTimeoutError"});var Oa=class{constructor(t,e){this.staticAccountKeys=void 0,this.accountKeysFromLookups=void 0,this.staticAccountKeys=t,this.accountKeysFromLookups=e}keySegments(){let t=[this.staticAccountKeys];return this.accountKeysFromLookups&&(t.push(this.accountKeysFromLookups.writable),t.push(this.accountKeysFromLookups.readonly)),t}get(t){for(let e of this.keySegments()){if(t255+1)throw new Error("Account index overflow encountered during compilation");let n=new Map;this.keySegments().flat().forEach((o,s)=>{n.set(o.toBase58(),s)});let i=o=>{let s=n.get(o.toBase58());if(s===void 0)throw new Error("Encountered an unknown instruction account key during compilation");return s};return t.map(o=>({programIdIndex:i(o.programId),accountKeyIndexes:o.keys.map(s=>i(s.pubkey)),data:o.data}))}},Ne=(r="publicKey")=>W.blob(32,r);var ro=(r="string")=>{let t=W.struct([W.u32("length"),W.u32("lengthPadding"),W.blob(W.offset(W.u32(),-8),"chars")],r),e=t.decode.bind(t),n=t.encode.bind(t),i=t;return i.decode=(o,s)=>e(o,s).chars.toString(),i.encode=(o,s,d)=>{let g={chars:se.Buffer.from(o,"utf8")};return n(g,s,d)},i.alloc=o=>W.u32().span+W.u32().span+se.Buffer.from(o,"utf8").length,i},Mg=(r="authorized")=>W.struct([Ne("staker"),Ne("withdrawer")],r),Lg=(r="lockup")=>W.struct([W.ns64("unixTimestamp"),W.ns64("epoch"),Ne("custodian")],r),Pg=(r="voteInit")=>W.struct([Ne("nodePubkey"),Ne("authorizedVoter"),Ne("authorizedWithdrawer"),W.u8("commission")],r),Og=(r="voteAuthorizeWithSeedArgs")=>W.struct([W.u32("voteAuthorizationType"),Ne("currentAuthorityDerivedKeyOwnerPubkey"),ro("currentAuthorityDerivedKeySeed"),Ne("newAuthorized")],r);function Dl(r,t){let e=i=>{if(i.span>=0)return i.span;if(typeof i.alloc=="function")return i.alloc(t[i.property]);if("count"in i&&"elementLayout"in i){let o=t[i.property];if(Array.isArray(o))return o.length*e(i.elementLayout)}else if("fields"in i)return Dl({layout:i},t[i.property]);return 0},n=0;return r.layout.fields.forEach(i=>{n+=e(i)}),n}function Jo(r){let t=0,e=0;for(;;){let n=r.shift();if(t|=(n&127)<>=7,e==0){r.push(n);break}else n|=128,r.push(n)}}function xr(r,t){if(!r)throw new Error(t||"Assertion failed")}var ts=class{constructor(t,e){this.payer=void 0,this.keyMetaMap=void 0,this.payer=t,this.keyMetaMap=e}static compile(t,e){let n=new Map,i=s=>{let d=s.toBase58(),g=n.get(d);return g===void 0&&(g={isSigner:!1,isWritable:!1,isInvoked:!1},n.set(d,g)),g},o=i(e);o.isSigner=!0,o.isWritable=!0;for(let s of t){i(s.programId).isInvoked=!0;for(let d of s.keys){let g=i(d.pubkey);g.isSigner||(g.isSigner=d.isSigner),g.isWritable||(g.isWritable=d.isWritable)}}return new ts(e,n)}getMessageComponents(){let t=[...this.keyMetaMap.entries()];xr(t.length<=256,"Max static account keys length exceeded");let e=t.filter(([,g])=>g.isSigner&&g.isWritable),n=t.filter(([,g])=>g.isSigner&&!g.isWritable),i=t.filter(([,g])=>!g.isSigner&&g.isWritable),o=t.filter(([,g])=>!g.isSigner&&!g.isWritable),s={numRequiredSignatures:e.length+n.length,numReadonlySignedAccounts:n.length,numReadonlyUnsignedAccounts:o.length};{xr(e.length>0,"Expected at least one writable signer key");let[g]=e[0];xr(g===this.payer.toBase58(),"Expected first writable signer key to be the fee payer")}let d=[...e.map(([g])=>new kt(g)),...n.map(([g])=>new kt(g)),...i.map(([g])=>new kt(g)),...o.map(([g])=>new kt(g))];return[s,d]}extractTableLookup(t){let[e,n]=this.drainKeysFoundInLookupTable(t.state.addresses,s=>!s.isSigner&&!s.isInvoked&&s.isWritable),[i,o]=this.drainKeysFoundInLookupTable(t.state.addresses,s=>!s.isSigner&&!s.isInvoked&&!s.isWritable);if(!(e.length===0&&i.length===0))return[{accountKey:t.key,writableIndexes:e,readonlyIndexes:i},{writable:n,readonly:o}]}drainKeysFoundInLookupTable(t,e){let n=new Array,i=new Array;for(let[o,s]of this.keyMetaMap.entries())if(e(s)){let d=new kt(o),g=t.findIndex(A=>A.equals(d));g>=0&&(xr(g<256,"Max lookup table index exceeded"),n.push(g),i.push(d),this.keyMetaMap.delete(o))}return[n,i]}},Bi=class{constructor(t){this.header=void 0,this.accountKeys=void 0,this.recentBlockhash=void 0,this.instructions=void 0,this.indexToProgramIds=new Map,this.header=t.header,this.accountKeys=t.accountKeys.map(e=>new kt(e)),this.recentBlockhash=t.recentBlockhash,this.instructions=t.instructions,this.instructions.forEach(e=>this.indexToProgramIds.set(e.programIdIndex,this.accountKeys[e.programIdIndex]))}get version(){return"legacy"}get staticAccountKeys(){return this.accountKeys}get compiledInstructions(){return this.instructions.map(t=>({programIdIndex:t.programIdIndex,accountKeyIndexes:t.accounts,data:Vr.default.decode(t.data)}))}get addressTableLookups(){return[]}getAccountKeys(){return new Oa(this.staticAccountKeys)}static compile(t){let e=ts.compile(t.instructions,t.payerKey),[n,i]=e.getMessageComponents(),s=new Oa(i).compileInstructions(t.instructions).map(d=>({programIdIndex:d.programIdIndex,accounts:d.accountKeyIndexes,data:Vr.default.encode(d.data)}));return new Bi({header:n,accountKeys:i,recentBlockhash:t.recentBlockhash,instructions:s})}isAccountSigner(t){return t=this.header.numRequiredSignatures&&t!this.isProgramId(e))}serialize(){let t=this.accountKeys.length,e=[];Qo(e,t);let n=this.instructions.map(M=>{let{accounts:$,programIdIndex:K}=M,et=Array.from(Vr.default.decode(M.data)),tt=[];Qo(tt,$.length);let ht=[];return Qo(ht,et.length),{programIdIndex:K,keyIndicesCount:se.Buffer.from(tt),keyIndices:$,dataLength:se.Buffer.from(ht),data:et}}),i=[];Qo(i,n.length);let o=se.Buffer.alloc(Pa);se.Buffer.from(i).copy(o);let s=i.length;n.forEach(M=>{let K=W.struct([W.u8("programIdIndex"),W.blob(M.keyIndicesCount.length,"keyIndicesCount"),W.seq(W.u8("keyIndex"),M.keyIndices.length,"keyIndices"),W.blob(M.dataLength.length,"dataLength"),W.seq(W.u8("userdatum"),M.data.length,"data")]).encode(M,o,s);s+=K}),o=o.slice(0,s);let d=W.struct([W.blob(1,"numRequiredSignatures"),W.blob(1,"numReadonlySignedAccounts"),W.blob(1,"numReadonlyUnsignedAccounts"),W.blob(e.length,"keyCount"),W.seq(Ne("key"),t,"keys"),Ne("recentBlockhash")]),g={numRequiredSignatures:se.Buffer.from([this.header.numRequiredSignatures]),numReadonlySignedAccounts:se.Buffer.from([this.header.numReadonlySignedAccounts]),numReadonlyUnsignedAccounts:se.Buffer.from([this.header.numReadonlyUnsignedAccounts]),keyCount:se.Buffer.from(e),keys:this.accountKeys.map(M=>qe(M.toBytes())),recentBlockhash:Vr.default.decode(this.recentBlockhash)},A=se.Buffer.alloc(2048),L=d.encode(g,A);return o.copy(A,L),A.slice(0,L+o.length)}static from(t){let e=[...t],n=e.shift();if(n!==(n&Tg))throw new Error("Versioned messages must be deserialized with VersionedMessage.deserialize()");let i=e.shift(),o=e.shift(),s=Jo(e),d=[];for(let $=0;$({pubkey:t.toJSON(),isSigner:e,isWritable:n})),programId:this.programId.toJSON(),data:[...this.data]}}},Ke=class{get signature(){return this.signatures.length>0?this.signatures[0].signature:null}constructor(t){if(this.signatures=[],this.feePayer=void 0,this.instructions=[],this.recentBlockhash=void 0,this.lastValidBlockHeight=void 0,this.nonceInfo=void 0,this._message=void 0,this._json=void 0,!!t)if(t.feePayer&&(this.feePayer=t.feePayer),t.signatures&&(this.signatures=t.signatures),Object.prototype.hasOwnProperty.call(t,"lastValidBlockHeight")){let{blockhash:e,lastValidBlockHeight:n}=t;this.recentBlockhash=e,this.lastValidBlockHeight=n}else{let{recentBlockhash:e,nonceInfo:n}=t;n&&(this.nonceInfo=n),this.recentBlockhash=e}}toJSON(){return{recentBlockhash:this.recentBlockhash||null,feePayer:this.feePayer?this.feePayer.toJSON():null,nonceInfo:this.nonceInfo?{nonce:this.nonceInfo.nonce,nonceInstruction:this.nonceInfo.nonceInstruction.toJSON()}:null,instructions:this.instructions.map(t=>t.toJSON()),signers:this.signatures.map(({publicKey:t})=>t.toJSON())}}add(...t){if(t.length===0)throw new Error("No instructions");return t.forEach(e=>{"instructions"in e?this.instructions=this.instructions.concat(e.instructions):"data"in e&&"programId"in e&&"keys"in e?this.instructions.push(e):this.instructions.push(new Vt(e))}),this}compileMessage(){if(this._message&&JSON.stringify(this.toJSON())===JSON.stringify(this._json))return this._message;let t,e;if(this.nonceInfo?(t=this.nonceInfo.nonce,this.instructions[0]!=this.nonceInfo.nonceInstruction?e=[this.nonceInfo.nonceInstruction,...this.instructions]:e=this.instructions):(t=this.recentBlockhash,e=this.instructions),!t)throw new Error("Transaction recentBlockhash required");e.length<1&&console.warn("No instructions provided");let n;if(this.feePayer)n=this.feePayer;else if(this.signatures.length>0&&this.signatures[0].publicKey)n=this.signatures[0].publicKey;else throw new Error("Transaction fee payer required");for(let tt=0;tt{tt.keys.forEach(mt=>{o.push({...mt})});let ht=tt.programId.toString();i.includes(ht)||i.push(ht)}),i.forEach(tt=>{o.push({pubkey:new kt(tt),isSigner:!1,isWritable:!1})});let s=[];o.forEach(tt=>{let ht=tt.pubkey.toString(),mt=s.findIndex(Q=>Q.pubkey.toString()===ht);mt>-1?(s[mt].isWritable=s[mt].isWritable||tt.isWritable,s[mt].isSigner=s[mt].isSigner||tt.isSigner):s.push(tt)}),s.sort(function(tt,ht){return tt.isSigner!==ht.isSigner?tt.isSigner?-1:1:tt.isWritable!==ht.isWritable?tt.isWritable?-1:1:tt.pubkey.toBase58().localeCompare(ht.pubkey.toBase58())});let d=s.findIndex(tt=>tt.pubkey.equals(n));if(d>-1){let[tt]=s.splice(d,1);tt.isSigner=!0,tt.isWritable=!0,s.unshift(tt)}else s.unshift({pubkey:n,isSigner:!0,isWritable:!0});for(let tt of this.signatures){let ht=s.findIndex(mt=>mt.pubkey.equals(tt.publicKey));if(ht>-1)s[ht].isSigner||(s[ht].isSigner=!0,console.warn("Transaction references a signature that is unnecessary, only the fee payer and instruction signer accounts should sign a transaction. This behavior is deprecated and will throw an error in the next major version release."));else throw new Error(`unknown signer: ${tt.publicKey.toString()}`)}let g=0,A=0,L=0,M=[],$=[];s.forEach(({pubkey:tt,isSigner:ht,isWritable:mt})=>{ht?(M.push(tt.toString()),g+=1,mt||(A+=1)):($.push(tt.toString()),mt||(L+=1))});let K=M.concat($),et=e.map(tt=>{let{data:ht,programId:mt}=tt;return{programIdIndex:K.indexOf(mt.toString()),accounts:tt.keys.map(Q=>K.indexOf(Q.pubkey.toString())),data:Vr.default.encode(ht)}});return et.forEach(tt=>{xr(tt.programIdIndex>=0),tt.accounts.forEach(ht=>xr(ht>=0))}),new Bi({header:{numRequiredSignatures:g,numReadonlySignedAccounts:A,numReadonlyUnsignedAccounts:L},accountKeys:K,recentBlockhash:t,instructions:et})}_compile(){let t=this.compileMessage(),e=t.accountKeys.slice(0,t.header.numRequiredSignatures);return this.signatures.length===e.length&&this.signatures.every((i,o)=>e[o].equals(i.publicKey))||(this.signatures=e.map(n=>({signature:null,publicKey:n}))),t}serializeMessage(){return this._compile().serialize()}async getEstimatedFee(t){return(await t.getFeeForMessage(this.compileMessage())).value}setSigners(...t){if(t.length===0)throw new Error("No signers");let e=new Set;this.signatures=t.filter(n=>{let i=n.toString();return e.has(i)?!1:(e.add(i),!0)}).map(n=>({signature:null,publicKey:n}))}sign(...t){if(t.length===0)throw new Error("No signers");let e=new Set,n=[];for(let o of t){let s=o.publicKey.toString();e.has(s)||(e.add(s),n.push(o))}this.signatures=n.map(o=>({signature:null,publicKey:o.publicKey}));let i=this._compile();this._partialSign(i,...n)}partialSign(...t){if(t.length===0)throw new Error("No signers");let e=new Set,n=[];for(let o of t){let s=o.publicKey.toString();e.has(s)||(e.add(s),n.push(o))}let i=this._compile();this._partialSign(i,...n)}_partialSign(t,...e){let n=t.serialize();e.forEach(i=>{let o=Fl(n,i.secretKey);this._addSignature(i.publicKey,qe(o))})}addSignature(t,e){this._compile(),this._addSignature(t,e)}_addSignature(t,e){xr(e.length===64);let n=this.signatures.findIndex(i=>t.equals(i.publicKey));if(n<0)throw new Error(`unknown signer: ${t.toString()}`);this.signatures[n].signature=se.Buffer.from(e)}verifySignatures(){return this._verifySignatures(this.serializeMessage(),!0)}_verifySignatures(t,e){for(let{signature:n,publicKey:i}of this.signatures)if(n===null){if(e)return!1}else if(!Sg(n,t,i.toBuffer()))return!1;return!0}serialize(t){let{requireAllSignatures:e,verifySignatures:n}=Object.assign({requireAllSignatures:!0,verifySignatures:!0},t),i=this.serializeMessage();if(n&&!this._verifySignatures(i,e))throw new Error("Signature verification failed");return this._serialize(i)}_serialize(t){let{signatures:e}=this,n=[];Qo(n,e.length);let i=n.length+e.length*64+t.length,o=se.Buffer.alloc(i);return xr(e.length<256),se.Buffer.from(n).copy(o,0),e.forEach(({signature:s},d)=>{s!==null&&(xr(s.length===64,"signature has invalid length"),se.Buffer.from(s).copy(o,n.length+d*64))}),t.copy(o,n.length+e.length*64),xr(o.length<=Pa,`Transaction too large: ${o.length} > ${Pa}`),o}get keys(){return xr(this.instructions.length===1),this.instructions[0].keys.map(t=>t.pubkey)}get programId(){return xr(this.instructions.length===1),this.instructions[0].programId}get data(){return xr(this.instructions.length===1),this.instructions[0].data}static from(t){let e=[...t],n=Jo(e),i=[];for(let o=0;o0&&(n.feePayer=t.accountKeys[0]),e.forEach((i,o)=>{let s={signature:i==Vr.default.encode(Cg)?null:Vr.default.decode(i),publicKey:t.accountKeys[o]};n.signatures.push(s)}),t.instructions.forEach(i=>{let o=i.accounts.map(s=>{let d=t.accountKeys[s];return{pubkey:d,isSigner:n.signatures.some(g=>g.publicKey.toString()===d.toString())||t.isAccountSigner(s),isWritable:t.isAccountWritable(s)}});n.instructions.push(new Vt({keys:o,programId:t.accountKeys[i.programIdIndex],data:Vr.default.decode(i.data)}))}),n._message=t,n._json=n.toJSON(),n}};var Un=new kt("SysvarC1ock11111111111111111111111111111111"),v2=new kt("SysvarEpochSchedu1e111111111111111111111111"),k2=new kt("Sysvar1nstructions1111111111111111111111111"),Tu=new kt("SysvarRecentB1ockHashes11111111111111111111"),Nn=new kt("SysvarRent111111111111111111111111111111111"),I2=new kt("SysvarRewards111111111111111111111111111111"),A2=new kt("SysvarS1otHashes111111111111111111111111111"),_2=new kt("SysvarS1otHistory11111111111111111111111111"),Mu=new kt("SysvarStakeHistory1111111111111111111111111");async function Lu(r,t,e,n){let i=n&&{skipPreflight:n.skipPreflight,preflightCommitment:n.preflightCommitment||n.commitment,maxRetries:n.maxRetries,minContextSlot:n.minContextSlot},o=await r.sendTransaction(t,e,i),s=t.recentBlockhash!=null&&t.lastValidBlockHeight!=null?(await r.confirmTransaction({signature:o,blockhash:t.recentBlockhash,lastValidBlockHeight:t.lastValidBlockHeight},n&&n.commitment)).value:(await r.confirmTransaction(o,n&&n.commitment)).value;if(s.err)throw new Error(`Transaction ${o} failed (${JSON.stringify(s)})`);return o}function Ug(r){return new Promise(t=>setTimeout(t,r))}function Ue(r,t){let e=r.layout.span>=0?r.layout.span:Dl(r,t),n=se.Buffer.alloc(e),i=Object.assign({instruction:r.index},t);return r.layout.encode(i,n),n}function on(r,t){let e;try{e=r.layout.decode(t)}catch(n){throw new Error("invalid instruction; "+n)}if(e.instruction!==r.index)throw new Error(`invalid instruction; instruction index mismatch ${e.instruction} != ${r.index}`);return e}var Ng=W.nu64("lamportsPerSignature"),zg=W.struct([W.u32("version"),W.u32("state"),Ne("authorizedPubkey"),Ne("nonce"),W.struct([Ng],"feeCalculator")]),Tl=zg.span;var Fg=r=>{let t=r.decode.bind(r),e=r.encode.bind(r);return{decode:t,encode:e}},Dg=r=>t=>{let e=(0,zl.blob)(r,t),{encode:n,decode:i}=Fg(e),o=e;return o.decode=(s,d)=>{let g=i(s,d);return(0,ns.toBigIntLE)(se.Buffer.from(g))},o.encode=(s,d,g)=>{let A=(0,ns.toBufferLE)(s,r);return n(A,d,g)},o},no=Dg(8),Ca=class{constructor(){}static decodeInstructionType(t){this.checkProgramId(t.programId);let n=W.u32("instruction").decode(t.data),i;for(let[o,s]of Object.entries(rr))if(s.index==n){i=o;break}if(!i)throw new Error("Instruction type incorrect; not a SystemInstruction");return i}static decodeCreateAccount(t){this.checkProgramId(t.programId),this.checkKeyLength(t.keys,2);let{lamports:e,space:n,programId:i}=on(rr.Create,t.data);return{fromPubkey:t.keys[0].pubkey,newAccountPubkey:t.keys[1].pubkey,lamports:e,space:n,programId:new kt(i)}}static decodeTransfer(t){this.checkProgramId(t.programId),this.checkKeyLength(t.keys,2);let{lamports:e}=on(rr.Transfer,t.data);return{fromPubkey:t.keys[0].pubkey,toPubkey:t.keys[1].pubkey,lamports:e}}static decodeTransferWithSeed(t){this.checkProgramId(t.programId),this.checkKeyLength(t.keys,3);let{lamports:e,seed:n,programId:i}=on(rr.TransferWithSeed,t.data);return{fromPubkey:t.keys[0].pubkey,basePubkey:t.keys[1].pubkey,toPubkey:t.keys[2].pubkey,lamports:e,seed:n,programId:new kt(i)}}static decodeAllocate(t){this.checkProgramId(t.programId),this.checkKeyLength(t.keys,1);let{space:e}=on(rr.Allocate,t.data);return{accountPubkey:t.keys[0].pubkey,space:e}}static decodeAllocateWithSeed(t){this.checkProgramId(t.programId),this.checkKeyLength(t.keys,1);let{base:e,seed:n,space:i,programId:o}=on(rr.AllocateWithSeed,t.data);return{accountPubkey:t.keys[0].pubkey,basePubkey:new kt(e),seed:n,space:i,programId:new kt(o)}}static decodeAssign(t){this.checkProgramId(t.programId),this.checkKeyLength(t.keys,1);let{programId:e}=on(rr.Assign,t.data);return{accountPubkey:t.keys[0].pubkey,programId:new kt(e)}}static decodeAssignWithSeed(t){this.checkProgramId(t.programId),this.checkKeyLength(t.keys,1);let{base:e,seed:n,programId:i}=on(rr.AssignWithSeed,t.data);return{accountPubkey:t.keys[0].pubkey,basePubkey:new kt(e),seed:n,programId:new kt(i)}}static decodeCreateWithSeed(t){this.checkProgramId(t.programId),this.checkKeyLength(t.keys,2);let{base:e,seed:n,lamports:i,space:o,programId:s}=on(rr.CreateWithSeed,t.data);return{fromPubkey:t.keys[0].pubkey,newAccountPubkey:t.keys[1].pubkey,basePubkey:new kt(e),seed:n,lamports:i,space:o,programId:new kt(s)}}static decodeNonceInitialize(t){this.checkProgramId(t.programId),this.checkKeyLength(t.keys,3);let{authorized:e}=on(rr.InitializeNonceAccount,t.data);return{noncePubkey:t.keys[0].pubkey,authorizedPubkey:new kt(e)}}static decodeNonceAdvance(t){return this.checkProgramId(t.programId),this.checkKeyLength(t.keys,3),on(rr.AdvanceNonceAccount,t.data),{noncePubkey:t.keys[0].pubkey,authorizedPubkey:t.keys[2].pubkey}}static decodeNonceWithdraw(t){this.checkProgramId(t.programId),this.checkKeyLength(t.keys,5);let{lamports:e}=on(rr.WithdrawNonceAccount,t.data);return{noncePubkey:t.keys[0].pubkey,toPubkey:t.keys[1].pubkey,authorizedPubkey:t.keys[4].pubkey,lamports:e}}static decodeNonceAuthorize(t){this.checkProgramId(t.programId),this.checkKeyLength(t.keys,2);let{authorized:e}=on(rr.AuthorizeNonceAccount,t.data);return{noncePubkey:t.keys[0].pubkey,authorizedPubkey:t.keys[1].pubkey,newAuthorizedPubkey:new kt(e)}}static checkProgramId(t){if(!t.equals(yr.programId))throw new Error("invalid instruction; programId is not SystemProgram")}static checkKeyLength(t,e){if(t.length0?M:1,space:o.length,programId:i}));K!==null&&await Lu(t,K,[e,n],{commitment:"confirmed"})}let s=W.struct([W.u32("instruction"),W.u32("offset"),W.u32("bytesLength"),W.u32("bytesLengthPadding"),W.seq(W.u8("byte"),W.offset(W.u32(),-8),"bytes")]),d=io.chunkSize,g=0,A=o,L=[];for(;A.length>0;){let M=A.slice(0,d),$=se.Buffer.alloc(d+16);s.encode({instruction:0,offset:g,bytes:M,bytesLength:0,bytesLengthPadding:0},$);let K=new Ke().add({keys:[{pubkey:n.publicKey,isSigner:!0,isWritable:!0}],programId:i,data:$});L.push(Lu(t,K,[e,n],{commitment:"confirmed"})),t._rpcEndpoint.includes("solana.com")&&await Ug(1e3/4),g+=d,A=A.slice(d)}await Promise.all(L);{let M=W.struct([W.u32("instruction")]),$=se.Buffer.alloc(M.span);M.encode({instruction:1},$);let K=new Ke().add({keys:[{pubkey:n.publicKey,isSigner:!0,isWritable:!0},{pubkey:Nn,isSigner:!1,isWritable:!1}],programId:i,data:$});await Lu(t,K,[e,n],{commitment:"confirmed"})}return!0}};io.chunkSize=qg;var E2=new kt("BPFLoader2111111111111111111111111111111111");var S2=globalThis.fetch,Kg=160,Wg=64,Hg=Kg/Wg,B2=1e3/Hg;var R2={index:1,layout:W.struct([W.u32("typeIndex"),no("deactivationSlot"),W.nu64("lastExtendedSlot"),W.u8("lastExtendedStartIndex"),W.u8(),W.seq(Ne(),W.offset(W.u8(),-1),"authority")])};var Pu,br=Yi(oa(kt),St(),r=>new kt(r)),ql=sa([St(),or("base64")]),$u=Yi(oa(se.Buffer),ql,r=>se.Buffer.from(r[0],"base64")),T2=30*1e3;function Kl(r){return Kr([wt({jsonrpc:or("2.0"),id:St(),result:r}),wt({jsonrpc:or("2.0"),id:St(),error:wt({code:Vi(),message:St(),data:ve(Ih())})})])}var $g=Kl(Vi());function vr(r){return Yi(Kl(r),$g,t=>"error"in t?t:{...t,result:Gi(t.result,r)})}function hn(r){return vr(wt({context:wt({slot:it()}),value:r}))}function za(r){return wt({context:wt({slot:it()}),value:r})}var jg=wt({foundation:it(),foundationTerm:it(),initial:it(),taper:it(),terminal:it()}),M2=vr(Kt(ie(wt({epoch:it(),effectiveSlot:it(),amount:it(),postBalance:it()})))),Gg=wt({epoch:it(),slotIndex:it(),slotsInEpoch:it(),absoluteSlot:it(),blockHeight:ve(it()),transactionCount:ve(it())}),Vg=wt({slotsPerEpoch:it(),leaderScheduleSlotOffset:it(),warmup:bn(),firstNormalEpoch:it(),firstNormalSlot:it()}),Yg=cu(St(),Kt(it())),Ri=ie(Kr([wt({}),St()])),Zg=wt({err:Ri}),Xg=or("receivedSignature"),L2=wt({"solana-core":St(),"feature-set":ve(it())}),P2=hn(wt({err:ie(Kr([wt({}),St()])),logs:ie(Kt(St())),accounts:ve(ie(Kt(ie(wt({executable:bn(),owner:St(),lamports:it(),data:Kt(St()),rentEpoch:ve(it())}))))),unitsConsumed:ve(it()),returnData:ve(ie(wt({programId:St(),data:sa([St(),or("base64")])})))})),O2=hn(wt({byIdentity:cu(St(),Kt(it())),range:wt({firstSlot:it(),lastSlot:it()})}));var C2=vr(jg),U2=vr(Gg),N2=vr(Vg),z2=vr(Yg),F2=vr(it()),D2=hn(wt({total:it(),circulating:it(),nonCirculating:it(),nonCirculatingAccounts:Kt(br)})),Jg=wt({amount:St(),uiAmount:ie(it()),decimals:it(),uiAmountString:ve(St())}),q2=hn(Kt(wt({address:br,amount:St(),uiAmount:ie(it()),decimals:it(),uiAmountString:ve(St())}))),K2=hn(Kt(wt({pubkey:br,account:wt({executable:bn(),owner:br,lamports:it(),data:$u,rentEpoch:it()})}))),Ku=wt({program:St(),parsed:Vi(),space:it()}),W2=hn(Kt(wt({pubkey:br,account:wt({executable:bn(),owner:br,lamports:it(),data:Ku,rentEpoch:it()})}))),H2=hn(Kt(wt({lamports:it(),address:br}))),ju=wt({executable:bn(),owner:br,lamports:it(),data:$u,rentEpoch:it()}),$2=wt({pubkey:br,account:ju}),Qg=Yi(Kr([oa(se.Buffer),Ku]),Kr([ql,Ku]),r=>Array.isArray(r)?Gi(r,$u):r),tm=wt({executable:bn(),owner:br,lamports:it(),data:Qg,rentEpoch:it()}),j2=wt({pubkey:br,account:tm}),G2=wt({state:Kr([or("active"),or("inactive"),or("activating"),or("deactivating")]),active:it(),inactive:it()}),V2=vr(Kt(wt({signature:St(),slot:it(),err:Ri,memo:ie(St()),blockTime:ve(ie(it()))}))),Y2=vr(Kt(wt({signature:St(),slot:it(),err:Ri,memo:ie(St()),blockTime:ve(ie(it()))}))),Z2=wt({subscription:it(),result:za(ju)}),em=wt({pubkey:br,account:ju}),X2=wt({subscription:it(),result:za(em)}),rm=wt({parent:it(),slot:it(),root:it()}),J2=wt({subscription:it(),result:rm}),nm=Kr([wt({type:Kr([or("firstShredReceived"),or("completed"),or("optimisticConfirmation"),or("root")]),slot:it(),timestamp:it()}),wt({type:or("createdBank"),parent:it(),slot:it(),timestamp:it()}),wt({type:or("frozen"),slot:it(),timestamp:it(),stats:wt({numTransactionEntries:it(),numSuccessfulTransactions:it(),numFailedTransactions:it(),maxTransactionsPerEntry:it()})}),wt({type:or("dead"),slot:it(),timestamp:it(),err:St()})]),Q2=wt({subscription:it(),result:nm}),tb=wt({subscription:it(),result:za(Kr([Zg,Xg]))}),eb=wt({subscription:it(),result:it()}),rb=wt({pubkey:St(),gossip:ie(St()),tpu:ie(St()),rpc:ie(St()),version:ie(St())}),Ml=wt({votePubkey:St(),nodePubkey:St(),activatedStake:it(),epochVoteAccount:bn(),epochCredits:Kt(sa([it(),it(),it()])),commission:it(),lastVote:it(),rootSlot:ie(it())}),nb=vr(wt({current:Kt(Ml),delinquent:Kt(Ml)})),im=Kr([or("processed"),or("confirmed"),or("finalized")]),om=wt({slot:it(),confirmations:ie(it()),err:Ri,confirmationStatus:ve(im)}),ib=hn(Kt(ie(om))),ob=vr(it()),Wl=wt({accountKey:br,writableIndexes:Kt(it()),readonlyIndexes:Kt(it())}),Gu=wt({signatures:Kt(St()),message:wt({accountKeys:Kt(St()),header:wt({numRequiredSignatures:it(),numReadonlySignedAccounts:it(),numReadonlyUnsignedAccounts:it()}),instructions:Kt(wt({accounts:Kt(it()),data:St(),programIdIndex:it()})),recentBlockhash:St(),addressTableLookups:ve(Kt(Wl))})}),Hl=wt({parsed:Vi(),program:St(),programId:br}),$l=wt({accounts:Kt(br),data:St(),programId:br}),sm=Kr([$l,Hl]),am=Kr([wt({parsed:Vi(),program:St(),programId:St()}),wt({accounts:Kt(St()),data:St(),programId:St()})]),jl=Yi(sm,am,r=>"accounts"in r?Gi(r,$l):Gi(r,Hl)),cm=wt({signatures:Kt(St()),message:wt({accountKeys:Kt(wt({pubkey:br,signer:bn(),writable:bn(),source:ve(Kr([or("transaction"),or("lookupTable")]))})),instructions:Kt(jl),recentBlockhash:St(),addressTableLookups:ve(ie(Kt(Wl)))})}),Ua=wt({accountIndex:it(),mint:St(),owner:ve(St()),uiTokenAmount:Jg}),Gl=wt({writable:Kt(br),readonly:Kt(br)}),Vu=wt({err:Ri,fee:it(),innerInstructions:ve(ie(Kt(wt({index:it(),instructions:Kt(wt({accounts:Kt(it()),data:St(),programIdIndex:it()}))})))),preBalances:Kt(it()),postBalances:Kt(it()),logMessages:ve(ie(Kt(St()))),preTokenBalances:ve(ie(Kt(Ua))),postTokenBalances:ve(ie(Kt(Ua))),loadedAddresses:ve(Gl),computeUnitsConsumed:ve(it())}),um=wt({err:Ri,fee:it(),innerInstructions:ve(ie(Kt(wt({index:it(),instructions:Kt(jl)})))),preBalances:Kt(it()),postBalances:Kt(it()),logMessages:ve(ie(Kt(St()))),preTokenBalances:ve(ie(Kt(Ua))),postTokenBalances:ve(ie(Kt(Ua))),loadedAddresses:ve(Gl),computeUnitsConsumed:ve(it())}),Yu=Kr([or(0),or("legacy")]),sb=vr(ie(wt({blockhash:St(),previousBlockhash:St(),parentSlot:it(),transactions:Kt(wt({transaction:Gu,meta:ie(Vu),version:ve(Yu)})),rewards:ve(Kt(wt({pubkey:St(),lamports:it(),postBalance:ie(it()),rewardType:ie(St())}))),blockTime:ie(it()),blockHeight:ie(it())}))),ab=vr(ie(wt({blockhash:St(),previousBlockhash:St(),parentSlot:it(),transactions:Kt(wt({transaction:Gu,meta:ie(Vu)})),rewards:ve(Kt(wt({pubkey:St(),lamports:it(),postBalance:ie(it()),rewardType:ie(St())}))),blockTime:ie(it())}))),cb=vr(ie(wt({blockhash:St(),previousBlockhash:St(),parentSlot:it(),signatures:Kt(St()),blockTime:ie(it())}))),ub=vr(ie(wt({slot:it(),meta:Vu,blockTime:ve(ie(it())),transaction:Gu,version:ve(Yu)}))),fb=vr(ie(wt({slot:it(),transaction:cm,meta:ie(um),blockTime:ve(ie(it())),version:ve(Yu)}))),hb=hn(wt({blockhash:St(),feeCalculator:wt({lamportsPerSignature:it()})})),lb=hn(wt({blockhash:St(),lastValidBlockHeight:it()})),fm=wt({slot:it(),numTransactions:it(),numSlots:it(),samplePeriodSecs:it()}),db=vr(Kt(fm)),pb=hn(ie(wt({feeCalculator:wt({lamportsPerSignature:it()})}))),yb=vr(St()),gb=vr(St()),hm=wt({err:Ri,logs:Kt(St()),signature:St()}),mb=wt({result:za(hm),subscription:it()}),wb={"solana-client":`js/${(Pu="0.0.0-development")!==null&&Pu!==void 0?Pu:"UNKNOWN"}`};var Ei=class{constructor(t){this._keypair=void 0,this._keypair=t??El()}static generate(){return new Ei(El())}static fromSecretKey(t,e){if(t.byteLength!==64)throw new Error("bad secret key size");let n=t.slice(32,64);if(!e||!e.skipValidation){let i=t.slice(0,32),o=Nu(i);for(let s=0;s<32;s++)if(n[s]!==o[s])throw new Error("provided secretKey is invalid")}return new Ei({publicKey:n,secretKey:t})}static fromSeed(t){let e=Nu(t),n=new Uint8Array(64);return n.set(t),n.set(e,32),new Ei({publicKey:e,secretKey:n})}get publicKey(){return new kt(this._keypair.publicKey)}get secretKey(){return new Uint8Array(this._keypair.secretKey)}},Xo=Object.freeze({CreateLookupTable:{index:0,layout:W.struct([W.u32("instruction"),no("recentSlot"),W.u8("bumpSeed")])},FreezeLookupTable:{index:1,layout:W.struct([W.u32("instruction")])},ExtendLookupTable:{index:2,layout:W.struct([W.u32("instruction"),no(),W.seq(Ne(),W.offset(W.u32(),-8),"addresses")])},DeactivateLookupTable:{index:3,layout:W.struct([W.u32("instruction")])},CloseLookupTable:{index:4,layout:W.struct([W.u32("instruction")])}});var Wu=class{constructor(){}static createLookupTable(t){let[e,n]=kt.findProgramAddressSync([t.authority.toBuffer(),(0,ns.toBufferLE)(BigInt(t.recentSlot),8)],this.programId),i=Xo.CreateLookupTable,o=Ue(i,{recentSlot:BigInt(t.recentSlot),bumpSeed:n}),s=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t.authority,isSigner:!0,isWritable:!1},{pubkey:t.payer,isSigner:!0,isWritable:!0},{pubkey:yr.programId,isSigner:!1,isWritable:!1}];return[new Vt({programId:this.programId,keys:s,data:o}),e]}static freezeLookupTable(t){let e=Xo.FreezeLookupTable,n=Ue(e),i=[{pubkey:t.lookupTable,isSigner:!1,isWritable:!0},{pubkey:t.authority,isSigner:!0,isWritable:!1}];return new Vt({programId:this.programId,keys:i,data:n})}static extendLookupTable(t){let e=Xo.ExtendLookupTable,n=Ue(e,{addresses:t.addresses.map(o=>o.toBytes())}),i=[{pubkey:t.lookupTable,isSigner:!1,isWritable:!0},{pubkey:t.authority,isSigner:!0,isWritable:!1}];return t.payer&&i.push({pubkey:t.payer,isSigner:!0,isWritable:!0},{pubkey:yr.programId,isSigner:!1,isWritable:!1}),new Vt({programId:this.programId,keys:i,data:n})}static deactivateLookupTable(t){let e=Xo.DeactivateLookupTable,n=Ue(e),i=[{pubkey:t.lookupTable,isSigner:!1,isWritable:!0},{pubkey:t.authority,isSigner:!0,isWritable:!1}];return new Vt({programId:this.programId,keys:i,data:n})}static closeLookupTable(t){let e=Xo.CloseLookupTable,n=Ue(e),i=[{pubkey:t.lookupTable,isSigner:!1,isWritable:!0},{pubkey:t.authority,isSigner:!0,isWritable:!1},{pubkey:t.recipient,isSigner:!1,isWritable:!0}];return new Vt({programId:this.programId,keys:i,data:n})}};Wu.programId=new kt("AddressLookupTab1e1111111111111111111111111");var Ta=Object.freeze({RequestUnits:{index:0,layout:W.struct([W.u8("instruction"),W.u32("units"),W.u32("additionalFee")])},RequestHeapFrame:{index:1,layout:W.struct([W.u8("instruction"),W.u32("bytes")])},SetComputeUnitLimit:{index:2,layout:W.struct([W.u8("instruction"),W.u32("units")])},SetComputeUnitPrice:{index:3,layout:W.struct([W.u8("instruction"),no("microLamports")])}}),Hu=class{constructor(){}static requestUnits(t){let e=Ta.RequestUnits,n=Ue(e,t);return new Vt({keys:[],programId:this.programId,data:n})}static requestHeapFrame(t){let e=Ta.RequestHeapFrame,n=Ue(e,t);return new Vt({keys:[],programId:this.programId,data:n})}static setComputeUnitLimit(t){let e=Ta.SetComputeUnitLimit,n=Ue(e,t);return new Vt({keys:[],programId:this.programId,data:n})}static setComputeUnitPrice(t){let e=Ta.SetComputeUnitPrice,n=Ue(e,{microLamports:BigInt(t.microLamports)});return new Vt({keys:[],programId:this.programId,data:n})}};Hu.programId=new kt("ComputeBudget111111111111111111111111111111");var Ll=64,Pl=32,Ol=64,Cl=W.struct([W.u8("numSignatures"),W.u8("padding"),W.u16("signatureOffset"),W.u16("signatureInstructionIndex"),W.u16("publicKeyOffset"),W.u16("publicKeyInstructionIndex"),W.u16("messageDataOffset"),W.u16("messageDataSize"),W.u16("messageInstructionIndex")]),es=class{constructor(){}static createInstructionWithPublicKey(t){let{publicKey:e,message:n,signature:i,instructionIndex:o}=t;xr(e.length===Pl,`Public Key must be ${Pl} bytes but received ${e.length} bytes`),xr(i.length===Ol,`Signature must be ${Ol} bytes but received ${i.length} bytes`);let s=Cl.span,d=s+e.length,g=d+i.length,A=1,L=se.Buffer.alloc(g+n.length),M=o??65535;return Cl.encode({numSignatures:A,padding:0,signatureOffset:d,signatureInstructionIndex:M,publicKeyOffset:s,publicKeyInstructionIndex:M,messageDataOffset:g,messageDataSize:n.length,messageInstructionIndex:M},L),L.fill(e,s),L.fill(i,d),L.fill(n,g),new Vt({keys:[],programId:es.programId,data:L})}static createInstructionWithPrivateKey(t){let{privateKey:e,message:n,instructionIndex:i}=t;xr(e.length===Ll,`Private key must be ${Ll} bytes but received ${e.length} bytes`);try{let o=Ei.fromSecretKey(e),s=o.publicKey.toBytes(),d=Fl(n,o.secretKey);return this.createInstructionWithPublicKey({publicKey:s,message:n,signature:d,instructionIndex:i})}catch(o){throw new Error(`Error creating instruction; ${o}`)}}};es.programId=new kt("Ed25519SigVerify111111111111111111111111111");vn.hmacSha256Sync=(r,...t)=>{let e=_u.create(Ls,r);return t.forEach(n=>e.update(n)),e.digest()};var lm=(r,t)=>_l(r,t,{der:!1,recovered:!0});vn.isValidPrivateKey;var dm=kl,Ul=32,Ou=20,Nl=64,pm=11,Cu=W.struct([W.u8("numSignatures"),W.u16("signatureOffset"),W.u8("signatureInstructionIndex"),W.u16("ethAddressOffset"),W.u8("ethAddressInstructionIndex"),W.u16("messageDataOffset"),W.u16("messageDataSize"),W.u8("messageInstructionIndex"),W.blob(20,"ethAddress"),W.blob(64,"signature"),W.u8("recoveryId")]),Si=class{constructor(){}static publicKeyToEthAddress(t){xr(t.length===Nl,`Public key must be ${Nl} bytes but received ${t.length} bytes`);try{return se.Buffer.from(Au(qe(t))).slice(-Ou)}catch(e){throw new Error(`Error constructing Ethereum address: ${e}`)}}static createInstructionWithPublicKey(t){let{publicKey:e,message:n,signature:i,recoveryId:o,instructionIndex:s}=t;return Si.createInstructionWithEthAddress({ethAddress:Si.publicKeyToEthAddress(e),message:n,signature:i,recoveryId:o,instructionIndex:s})}static createInstructionWithEthAddress(t){let{ethAddress:e,message:n,signature:i,recoveryId:o,instructionIndex:s=0}=t,d;typeof e=="string"?e.startsWith("0x")?d=se.Buffer.from(e.substr(2),"hex"):d=se.Buffer.from(e,"hex"):d=e,xr(d.length===Ou,`Address must be ${Ou} bytes but received ${d.length} bytes`);let g=1+pm,A=g,L=g+d.length,M=L+i.length+1,$=1,K=se.Buffer.alloc(Cu.span+n.length);return Cu.encode({numSignatures:$,signatureOffset:L,signatureInstructionIndex:s,ethAddressOffset:A,ethAddressInstructionIndex:s,messageDataOffset:M,messageDataSize:n.length,messageInstructionIndex:s,signature:qe(i),ethAddress:qe(d),recoveryId:o},K),K.fill(qe(n),Cu.span),new Vt({keys:[],programId:Si.programId,data:K})}static createInstructionWithPrivateKey(t){let{privateKey:e,message:n,instructionIndex:i}=t;xr(e.length===Ul,`Private key must be ${Ul} bytes but received ${e.length} bytes`);try{let o=qe(e),s=dm(o,!1).slice(1),d=se.Buffer.from(Au(qe(n))),[g,A]=lm(d,o);return this.createInstructionWithPublicKey({publicKey:s,message:n,signature:g,recoveryId:A,instructionIndex:i})}catch(o){throw new Error(`Error creating instruction; ${o}`)}}};Si.programId=new kt("KeccakSecp256k11111111111111111111111111111");var ym=new kt("StakeConfig11111111111111111111111111111111");var rs=class{constructor(t,e,n){this.unixTimestamp=void 0,this.epoch=void 0,this.custodian=void 0,this.unixTimestamp=t,this.epoch=e,this.custodian=n}};rs.default=new rs(0,0,kt.default);var hi=Object.freeze({Initialize:{index:0,layout:W.struct([W.u32("instruction"),Mg(),Lg()])},Authorize:{index:1,layout:W.struct([W.u32("instruction"),Ne("newAuthorized"),W.u32("stakeAuthorizationType")])},Delegate:{index:2,layout:W.struct([W.u32("instruction")])},Split:{index:3,layout:W.struct([W.u32("instruction"),W.ns64("lamports")])},Withdraw:{index:4,layout:W.struct([W.u32("instruction"),W.ns64("lamports")])},Deactivate:{index:5,layout:W.struct([W.u32("instruction")])},Merge:{index:7,layout:W.struct([W.u32("instruction")])},AuthorizeWithSeed:{index:8,layout:W.struct([W.u32("instruction"),Ne("newAuthorized"),W.u32("stakeAuthorizationType"),ro("authoritySeed"),Ne("authorityOwner")])}}),xb=Object.freeze({Staker:{index:0},Withdrawer:{index:1}}),Na=class{constructor(){}static initialize(t){let{stakePubkey:e,authorized:n,lockup:i}=t,o=i||rs.default,s=hi.Initialize,d=Ue(s,{authorized:{staker:qe(n.staker.toBuffer()),withdrawer:qe(n.withdrawer.toBuffer())},lockup:{unixTimestamp:o.unixTimestamp,epoch:o.epoch,custodian:qe(o.custodian.toBuffer())}}),g={keys:[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:Nn,isSigner:!1,isWritable:!1}],programId:this.programId,data:d};return new Vt(g)}static createAccountWithSeed(t){let e=new Ke;e.add(yr.createAccountWithSeed({fromPubkey:t.fromPubkey,newAccountPubkey:t.stakePubkey,basePubkey:t.basePubkey,seed:t.seed,lamports:t.lamports,space:this.space,programId:this.programId}));let{stakePubkey:n,authorized:i,lockup:o}=t;return e.add(this.initialize({stakePubkey:n,authorized:i,lockup:o}))}static createAccount(t){let e=new Ke;e.add(yr.createAccount({fromPubkey:t.fromPubkey,newAccountPubkey:t.stakePubkey,lamports:t.lamports,space:this.space,programId:this.programId}));let{stakePubkey:n,authorized:i,lockup:o}=t;return e.add(this.initialize({stakePubkey:n,authorized:i,lockup:o}))}static delegate(t){let{stakePubkey:e,authorizedPubkey:n,votePubkey:i}=t,o=hi.Delegate,s=Ue(o);return new Ke().add({keys:[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:Mu,isSigner:!1,isWritable:!1},{pubkey:ym,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}],programId:this.programId,data:s})}static authorize(t){let{stakePubkey:e,authorizedPubkey:n,newAuthorizedPubkey:i,stakeAuthorizationType:o,custodianPubkey:s}=t,d=hi.Authorize,g=Ue(d,{newAuthorized:qe(i.toBuffer()),stakeAuthorizationType:o.index}),A=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:Un,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return s&&A.push({pubkey:s,isSigner:!1,isWritable:!1}),new Ke().add({keys:A,programId:this.programId,data:g})}static authorizeWithSeed(t){let{stakePubkey:e,authorityBase:n,authoritySeed:i,authorityOwner:o,newAuthorizedPubkey:s,stakeAuthorizationType:d,custodianPubkey:g}=t,A=hi.AuthorizeWithSeed,L=Ue(A,{newAuthorized:qe(s.toBuffer()),stakeAuthorizationType:d.index,authoritySeed:i,authorityOwner:qe(o.toBuffer())}),M=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1}];return g&&M.push({pubkey:g,isSigner:!1,isWritable:!1}),new Ke().add({keys:M,programId:this.programId,data:L})}static splitInstruction(t){let{stakePubkey:e,authorizedPubkey:n,splitStakePubkey:i,lamports:o}=t,s=hi.Split,d=Ue(s,{lamports:o});return new Vt({keys:[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}],programId:this.programId,data:d})}static split(t){let e=new Ke;return e.add(yr.createAccount({fromPubkey:t.authorizedPubkey,newAccountPubkey:t.splitStakePubkey,lamports:0,space:this.space,programId:this.programId})),e.add(this.splitInstruction(t))}static splitWithSeed(t){let{stakePubkey:e,authorizedPubkey:n,splitStakePubkey:i,basePubkey:o,seed:s,lamports:d}=t,g=new Ke;return g.add(yr.allocate({accountPubkey:i,basePubkey:o,seed:s,space:this.space,programId:this.programId})),g.add(this.splitInstruction({stakePubkey:e,authorizedPubkey:n,splitStakePubkey:i,lamports:d}))}static merge(t){let{stakePubkey:e,sourceStakePubKey:n,authorizedPubkey:i}=t,o=hi.Merge,s=Ue(o);return new Ke().add({keys:[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:Mu,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1}],programId:this.programId,data:s})}static withdraw(t){let{stakePubkey:e,authorizedPubkey:n,toPubkey:i,lamports:o,custodianPubkey:s}=t,d=hi.Withdraw,g=Ue(d,{lamports:o}),A=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:Mu,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}];return s&&A.push({pubkey:s,isSigner:!1,isWritable:!1}),new Ke().add({keys:A,programId:this.programId,data:g})}static deactivate(t){let{stakePubkey:e,authorizedPubkey:n}=t,i=hi.Deactivate,o=Ue(i);return new Ke().add({keys:[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}],programId:this.programId,data:o})}};Na.programId=new kt("Stake11111111111111111111111111111111111111");Na.space=200;var Ma=Object.freeze({InitializeAccount:{index:0,layout:W.struct([W.u32("instruction"),Pg()])},Authorize:{index:1,layout:W.struct([W.u32("instruction"),Ne("newAuthorized"),W.u32("voteAuthorizationType")])},Withdraw:{index:3,layout:W.struct([W.u32("instruction"),W.ns64("lamports")])},AuthorizeWithSeed:{index:10,layout:W.struct([W.u32("instruction"),Og()])}}),bb=Object.freeze({Voter:{index:0},Withdrawer:{index:1}}),oo=class{constructor(){}static initializeAccount(t){let{votePubkey:e,nodePubkey:n,voteInit:i}=t,o=Ma.InitializeAccount,s=Ue(o,{voteInit:{nodePubkey:qe(i.nodePubkey.toBuffer()),authorizedVoter:qe(i.authorizedVoter.toBuffer()),authorizedWithdrawer:qe(i.authorizedWithdrawer.toBuffer()),commission:i.commission}}),d={keys:[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:Nn,isSigner:!1,isWritable:!1},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}],programId:this.programId,data:s};return new Vt(d)}static createAccount(t){let e=new Ke;return e.add(yr.createAccount({fromPubkey:t.fromPubkey,newAccountPubkey:t.votePubkey,lamports:t.lamports,space:this.space,programId:this.programId})),e.add(this.initializeAccount({votePubkey:t.votePubkey,nodePubkey:t.voteInit.nodePubkey,voteInit:t.voteInit}))}static authorize(t){let{votePubkey:e,authorizedPubkey:n,newAuthorizedPubkey:i,voteAuthorizationType:o}=t,s=Ma.Authorize,d=Ue(s,{newAuthorized:qe(i.toBuffer()),voteAuthorizationType:o.index}),g=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}];return new Ke().add({keys:g,programId:this.programId,data:d})}static authorizeWithSeed(t){let{currentAuthorityDerivedKeyBasePubkey:e,currentAuthorityDerivedKeyOwnerPubkey:n,currentAuthorityDerivedKeySeed:i,newAuthorizedPubkey:o,voteAuthorizationType:s,votePubkey:d}=t,g=Ma.AuthorizeWithSeed,A=Ue(g,{voteAuthorizeWithSeedArgs:{currentAuthorityDerivedKeyOwnerPubkey:qe(n.toBuffer()),currentAuthorityDerivedKeySeed:i,newAuthorized:qe(o.toBuffer()),voteAuthorizationType:s.index}}),L=[{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Un,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!0,isWritable:!1}];return new Ke().add({keys:L,programId:this.programId,data:A})}static withdraw(t){let{votePubkey:e,authorizedWithdrawerPubkey:n,lamports:i,toPubkey:o}=t,s=Ma.Withdraw,d=Ue(s,{lamports:i}),g=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return new Ke().add({keys:g,programId:this.programId,data:d})}static safeWithdraw(t,e,n){if(t.lamports>e-n)throw new Error("Withdraw will leave vote account with insuffcient funds.");return oo.withdraw(t)}};oo.programId=new kt("Vote111111111111111111111111111111111111111");oo.space=3731;var vb=new kt("Va1idator1nfo111111111111111111111111111111"),kb=wt({name:St(),website:ve(St()),details:ve(St()),keybaseUsername:ve(St())});var Ib=new kt("Vote111111111111111111111111111111111111111"),Ab=W.struct([Ne("nodePubkey"),Ne("authorizedWithdrawer"),W.u8("commission"),W.nu64(),W.seq(W.struct([W.nu64("slot"),W.u32("confirmationCount")]),W.offset(W.u32(),-8),"votes"),W.u8("rootSlotValid"),W.nu64("rootSlot"),W.nu64(),W.seq(W.struct([W.nu64("epoch"),Ne("authorizedVoter")]),W.offset(W.u32(),-8),"authorizedVoters"),W.struct([W.seq(W.struct([Ne("authorizedPubkey"),W.nu64("epochOfLastAuthorizedSwitch"),W.nu64("targetEpoch")]),32,"buf"),W.nu64("idx"),W.u8("isEmpty")],"priorVoters"),W.nu64(),W.seq(W.struct([W.nu64("epoch"),W.nu64("credits"),W.nu64("prevCredits")]),W.offset(W.u32(),-8),"epochCredits"),W.struct([W.nu64("slot"),W.nu64("timestamp")],"lastTimestamp")]);var is=1e9;var gm=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,Zu=Math.ceil,In=Math.floor,Yr="[BigNumber Error] ",Vl=Yr+"Number primitive has more than 15 significant digits: ",ln=1e14,ye=14,Xu=9007199254740991,Ju=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],li=1e7,_r=1e9;function Yl(r){var t,e,n,i=Q.prototype={constructor:Q,toString:null,valueOf:null},o=new Q(1),s=20,d=4,g=-7,A=21,L=-1e7,M=1e7,$=!1,K=1,et=0,tt={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},ht="0123456789abcdefghijklmnopqrstuvwxyz",mt=!0;function Q(T,C){var x,B,v,y,a,c,f,p,m=this;if(!(m instanceof Q))return new Q(T,C);if(C==null){if(T&&T._isBigNumber===!0){m.s=T.s,!T.c||T.e>M?m.c=m.e=null:T.e=10;a/=10,y++);y>M?m.c=m.e=null:(m.e=y,m.c=[T]);return}p=String(T)}else{if(!gm.test(p=String(T)))return n(m,p,c);m.s=p.charCodeAt(0)==45?(p=p.slice(1),-1):1}(y=p.indexOf("."))>-1&&(p=p.replace(".","")),(a=p.search(/e/i))>0?(y<0&&(y=a),y+=+p.slice(a+1),p=p.substring(0,a)):y<0&&(y=p.length)}else{if(hr(C,2,ht.length,"Base"),C==10&&mt)return m=new Q(T),Ft(m,s+m.e+1,d);if(p=String(T),c=typeof T=="number"){if(T*0!=0)return n(m,p,c,C);if(m.s=1/T<0?(p=p.slice(1),-1):1,Q.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(Vl+T)}else m.s=p.charCodeAt(0)===45?(p=p.slice(1),-1):1;for(x=ht.slice(0,C),y=a=0,f=p.length;ay){y=f;continue}}else if(!v&&(p==p.toUpperCase()&&(p=p.toLowerCase())||p==p.toLowerCase()&&(p=p.toUpperCase()))){v=!0,a=-1,y=0;continue}return n(m,String(T),c,C)}c=!1,p=e(p,C,10,m.s),(y=p.indexOf("."))>-1?p=p.replace(".",""):y=p.length}for(a=0;p.charCodeAt(a)===48;a++);for(f=p.length;p.charCodeAt(--f)===48;);if(p=p.slice(a,++f)){if(f-=a,c&&Q.DEBUG&&f>15&&(T>Xu||T!==In(T)))throw Error(Vl+m.s*T);if((y=y-a-1)>M)m.c=m.e=null;else if(y=-_r&&v<=_r&&v===In(v)){if(B[0]===0){if(v===0&&B.length===1)return!0;break t}if(C=(v+1)%ye,C<1&&(C+=ye),String(B[0]).length==C){for(C=0;C=ln||x!==In(x))break t;if(x!==0)return!0}}}else if(B===null&&v===null&&(y===null||y===1||y===-1))return!0;throw Error(Yr+"Invalid BigNumber: "+T)},Q.maximum=Q.max=function(){return Tt(arguments,i.lt)},Q.minimum=Q.min=function(){return Tt(arguments,i.gt)},Q.random=function(){var T=9007199254740992,C=Math.random()*T&2097151?function(){return In(Math.random()*T)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(x){var B,v,y,a,c,f=0,p=[],m=new Q(o);if(x==null?x=s:hr(x,0,_r),a=Zu(x/ye),$)if(crypto.getRandomValues){for(B=crypto.getRandomValues(new Uint32Array(a*=2));f>>11),c>=9e15?(v=crypto.getRandomValues(new Uint32Array(2)),B[f]=v[0],B[f+1]=v[1]):(p.push(c%1e14),f+=2);f=a/2}else if(crypto.randomBytes){for(B=crypto.randomBytes(a*=7);f=9e15?crypto.randomBytes(7).copy(B,f):(p.push(c%1e14),f+=7);f=a/7}else throw $=!1,Error(Yr+"crypto unavailable");if(!$)for(;f=10;c/=10,f++);fv-1&&(c[a+1]==null&&(c[a+1]=0),c[a+1]+=c[a]/v|0,c[a]%=v)}return c.reverse()}return function(x,B,v,y,a){var c,f,p,m,b,P,E,u,l=x.indexOf("."),_=s,S=d;for(l>=0&&(m=et,et=0,x=x.replace(".",""),u=new Q(B),P=u.pow(x.length-l),et=m,u.c=C(zn(sn(P.c),P.e,"0"),10,v,T),u.e=u.c.length),E=C(x,B,v,a?(c=ht,T):(c=T,ht)),p=m=E.length;E[--m]==0;E.pop());if(!E[0])return c.charAt(0);if(l<0?--p:(P.c=E,P.e=p,P.s=y,P=t(P,u,_,S,v),E=P.c,b=P.r,p=P.e),f=p+_+1,l=E[f],m=v/2,b=b||f<0||E[f+1]!=null,b=S<4?(l!=null||b)&&(S==0||S==(P.s<0?3:2)):l>m||l==m&&(S==4||b||S==6&&E[f-1]&1||S==(P.s<0?8:7)),f<1||!E[0])x=b?zn(c.charAt(1),-_,c.charAt(0)):c.charAt(0);else{if(E.length=f,b)for(--v;++E[--f]>v;)E[f]=0,f||(++p,E=[1].concat(E));for(m=E.length;!E[--m];);for(l=0,x="";l<=m;x+=c.charAt(E[l++]));x=zn(x,p,c.charAt(0))}return x}}(),t=function(){function T(B,v,y){var a,c,f,p,m=0,b=B.length,P=v%li,E=v/li|0;for(B=B.slice();b--;)f=B[b]%li,p=B[b]/li|0,a=E*f+p*P,c=P*f+a%li*li+m,m=(c/y|0)+(a/li|0)+E*p,B[b]=c%y;return m&&(B=[m].concat(B)),B}function C(B,v,y,a){var c,f;if(y!=a)f=y>a?1:-1;else for(c=f=0;cv[c]?1:-1;break}return f}function x(B,v,y,a){for(var c=0;y--;)B[y]-=c,c=B[y]1;B.splice(0,1));}return function(B,v,y,a,c){var f,p,m,b,P,E,u,l,_,S,O,F,D,Z,N,z,U,H=B.s==v.s?1:-1,G=B.c,nt=v.c;if(!G||!G[0]||!nt||!nt[0])return new Q(!B.s||!v.s||(G?nt&&G[0]==nt[0]:!nt)?NaN:G&&G[0]==0||!nt?H*0:H/0);for(l=new Q(H),_=l.c=[],p=B.e-v.e,H=y+p+1,c||(c=ln,p=an(B.e/ye)-an(v.e/ye),H=H/ye|0),m=0;nt[m]==(G[m]||0);m++);if(nt[m]>(G[m]||0)&&p--,H<0)_.push(1),b=!0;else{for(Z=G.length,z=nt.length,m=0,H+=2,P=In(c/(nt[0]+1)),P>1&&(nt=T(nt,P,c),G=T(G,P,c),z=nt.length,Z=G.length),D=z,S=G.slice(0,z),O=S.length;O=c/2&&N++;do{if(P=0,f=C(nt,S,z,O),f<0){if(F=S[0],z!=O&&(F=F*c+(S[1]||0)),P=In(F/N),P>1)for(P>=c&&(P=c-1),E=T(nt,P,c),u=E.length,O=S.length;C(E,S,u,O)==1;)P--,x(E,z=10;H/=10,m++);Ft(l,y+(l.e=m+p*ye-1)+1,a,b)}else l.e=p,l.r=+b;return l}}();function _t(T,C,x,B){var v,y,a,c,f;if(x==null?x=d:hr(x,0,8),!T.c)return T.toString();if(v=T.c[0],a=T.e,C==null)f=sn(T.c),f=B==1||B==2&&(a<=g||a>=A)?Da(f,a):zn(f,a,"0");else if(T=Ft(new Q(T),C,x),y=T.e,f=sn(T.c),c=f.length,B==1||B==2&&(C<=y||y<=g)){for(;cc){if(--C>0)for(f+=".";C--;f+="0");}else if(C+=y-c,C>0)for(y+1==c&&(f+=".");C--;f+="0");return T.s<0&&v?"-"+f:f}function Tt(T,C){for(var x,B=1,v=new Q(T[0]);B=10;v/=10,B++);return(x=B+x*ye-1)>M?T.c=T.e=null:x=10;c/=10,v++);if(y=C-v,y<0)y+=ye,a=C,f=b[p=0],m=f/P[v-a-1]%10|0;else if(p=Zu((y+1)/ye),p>=b.length)if(B){for(;b.length<=p;b.push(0));f=m=0,v=1,y%=ye,a=y-ye+1}else break t;else{for(f=c=b[p],v=1;c>=10;c/=10,v++);y%=ye,a=y-ye+v,m=a<0?0:f/P[v-a-1]%10|0}if(B=B||C<0||b[p+1]!=null||(a<0?f:f%P[v-a-1]),B=x<4?(m||B)&&(x==0||x==(T.s<0?3:2)):m>5||m==5&&(x==4||B||x==6&&(y>0?a>0?f/P[v-a]:0:b[p-1])%10&1||x==(T.s<0?8:7)),C<1||!b[0])return b.length=0,B?(C-=T.e+1,b[0]=P[(ye-C%ye)%ye],T.e=-C||0):b[0]=T.e=0,T;if(y==0?(b.length=p,c=1,p--):(b.length=p+1,c=P[ye-y],b[p]=a>0?In(f/P[v-a]%P[a])*c:0),B)for(;;)if(p==0){for(y=1,a=b[0];a>=10;a/=10,y++);for(a=b[0]+=c,c=1;a>=10;a/=10,c++);y!=c&&(T.e++,b[0]==ln&&(b[0]=1));break}else{if(b[p]+=c,b[p]!=ln)break;b[p--]=0,c=1}for(y=b.length;b[--y]===0;b.pop());}T.e>M?T.c=T.e=null:T.e=A?Da(C,x):zn(C,x,"0"),T.s<0?"-"+C:C)}return i.absoluteValue=i.abs=function(){var T=new Q(this);return T.s<0&&(T.s=1),T},i.comparedTo=function(T,C){return ao(this,new Q(T,C))},i.decimalPlaces=i.dp=function(T,C){var x,B,v,y=this;if(T!=null)return hr(T,0,_r),C==null?C=d:hr(C,0,8),Ft(new Q(y),T+y.e+1,C);if(!(x=y.c))return null;if(B=((v=x.length-1)-an(this.e/ye))*ye,v=x[v])for(;v%10==0;v/=10,B--);return B<0&&(B=0),B},i.dividedBy=i.div=function(T,C){return t(this,new Q(T,C),s,d)},i.dividedToIntegerBy=i.idiv=function(T,C){return t(this,new Q(T,C),0,1)},i.exponentiatedBy=i.pow=function(T,C){var x,B,v,y,a,c,f,p,m,b=this;if(T=new Q(T),T.c&&!T.isInteger())throw Error(Yr+"Exponent not an integer: "+Dt(T));if(C!=null&&(C=new Q(C)),c=T.e>14,!b.c||!b.c[0]||b.c[0]==1&&!b.e&&b.c.length==1||!T.c||!T.c[0])return m=new Q(Math.pow(+Dt(b),c?2-Fa(T):+Dt(T))),C?m.mod(C):m;if(f=T.s<0,C){if(C.c?!C.c[0]:!C.s)return new Q(NaN);B=!f&&b.isInteger()&&C.isInteger(),B&&(b=b.mod(C))}else{if(T.e>9&&(b.e>0||b.e<-1||(b.e==0?b.c[0]>1||c&&b.c[1]>=24e7:b.c[0]<8e13||c&&b.c[0]<=9999975e7)))return y=b.s<0&&Fa(T)?-0:0,b.e>-1&&(y=1/y),new Q(f?1/y:y);et&&(y=Zu(et/ye+2))}for(c?(x=new Q(.5),f&&(T.s=1),p=Fa(T)):(v=Math.abs(+Dt(T)),p=v%2),m=new Q(o);;){if(p){if(m=m.times(b),!m.c)break;y?m.c.length>y&&(m.c.length=y):B&&(m=m.mod(C))}if(v){if(v=In(v/2),v===0)break;p=v%2}else if(T=T.times(x),Ft(T,T.e+1,1),T.e>14)p=Fa(T);else{if(v=+Dt(T),v===0)break;p=v%2}b=b.times(b),y?b.c&&b.c.length>y&&(b.c.length=y):B&&(b=b.mod(C))}return B?m:(f&&(m=o.div(m)),C?m.mod(C):y?Ft(m,et,d,a):m)},i.integerValue=function(T){var C=new Q(this);return T==null?T=d:hr(T,0,8),Ft(C,C.e+1,T)},i.isEqualTo=i.eq=function(T,C){return ao(this,new Q(T,C))===0},i.isFinite=function(){return!!this.c},i.isGreaterThan=i.gt=function(T,C){return ao(this,new Q(T,C))>0},i.isGreaterThanOrEqualTo=i.gte=function(T,C){return(C=ao(this,new Q(T,C)))===1||C===0},i.isInteger=function(){return!!this.c&&an(this.e/ye)>this.c.length-2},i.isLessThan=i.lt=function(T,C){return ao(this,new Q(T,C))<0},i.isLessThanOrEqualTo=i.lte=function(T,C){return(C=ao(this,new Q(T,C)))===-1||C===0},i.isNaN=function(){return!this.s},i.isNegative=function(){return this.s<0},i.isPositive=function(){return this.s>0},i.isZero=function(){return!!this.c&&this.c[0]==0},i.minus=function(T,C){var x,B,v,y,a=this,c=a.s;if(T=new Q(T,C),C=T.s,!c||!C)return new Q(NaN);if(c!=C)return T.s=-C,a.plus(T);var f=a.e/ye,p=T.e/ye,m=a.c,b=T.c;if(!f||!p){if(!m||!b)return m?(T.s=-C,T):new Q(b?a:NaN);if(!m[0]||!b[0])return b[0]?(T.s=-C,T):new Q(m[0]?a:d==3?-0:0)}if(f=an(f),p=an(p),m=m.slice(),c=f-p){for((y=c<0)?(c=-c,v=m):(p=f,v=b),v.reverse(),C=c;C--;v.push(0));v.reverse()}else for(B=(y=(c=m.length)<(C=b.length))?c:C,c=C=0;C0)for(;C--;m[x++]=0);for(C=ln-1;B>c;){if(m[--B]=0;){for(x=0,P=F[v]%_,E=F[v]/_|0,a=f,y=v+a;y>v;)p=O[--a]%_,m=O[a]/_|0,c=E*p+m*P,p=P*p+c%_*_+u[y]+x,x=(p/l|0)+(c/_|0)+E*m,u[y--]=p%l;u[y]=x}return x?++B:u.splice(0,1),ee(T,u,B)},i.negated=function(){var T=new Q(this);return T.s=-T.s||null,T},i.plus=function(T,C){var x,B=this,v=B.s;if(T=new Q(T,C),C=T.s,!v||!C)return new Q(NaN);if(v!=C)return T.s=-C,B.minus(T);var y=B.e/ye,a=T.e/ye,c=B.c,f=T.c;if(!y||!a){if(!c||!f)return new Q(v/0);if(!c[0]||!f[0])return f[0]?T:new Q(c[0]?B:v*0)}if(y=an(y),a=an(a),c=c.slice(),v=y-a){for(v>0?(a=y,x=f):(v=-v,x=c),x.reverse();v--;x.push(0));x.reverse()}for(v=c.length,C=f.length,v-C<0&&(x=f,f=c,c=x,C=v),v=0;C;)v=(c[--C]=c[C]+f[C]+v)/ln|0,c[C]=ln===c[C]?0:c[C]%ln;return v&&(c=[v].concat(c),++a),ee(T,c,a)},i.precision=i.sd=function(T,C){var x,B,v,y=this;if(T!=null&&T!==!!T)return hr(T,1,_r),C==null?C=d:hr(C,0,8),Ft(new Q(y),T,C);if(!(x=y.c))return null;if(v=x.length-1,B=v*ye+1,v=x[v]){for(;v%10==0;v/=10,B--);for(v=x[0];v>=10;v/=10,B++);}return T&&y.e+1>B&&(B=y.e+1),B},i.shiftedBy=function(T){return hr(T,-Xu,Xu),this.times("1e"+T)},i.squareRoot=i.sqrt=function(){var T,C,x,B,v,y=this,a=y.c,c=y.s,f=y.e,p=s+4,m=new Q("0.5");if(c!==1||!a||!a[0])return new Q(!c||c<0&&(!a||a[0])?NaN:a?y:1/0);if(c=Math.sqrt(+Dt(y)),c==0||c==1/0?(C=sn(a),(C.length+f)%2==0&&(C+="0"),c=Math.sqrt(+C),f=an((f+1)/2)-(f<0||f%2),c==1/0?C="5e"+f:(C=c.toExponential(),C=C.slice(0,C.indexOf("e")+1)+f),x=new Q(C)):x=new Q(c+""),x.c[0]){for(f=x.e,c=f+p,c<3&&(c=0);;)if(v=x,x=m.times(v.plus(t(y,v,p,1))),sn(v.c).slice(0,c)===(C=sn(x.c)).slice(0,c))if(x.e0&&u>0){for(y=u%c||c,m=E.substr(0,y);y0&&(m+=p+E.slice(y)),P&&(m="-"+m)}B=b?m+(x.decimalSeparator||"")+((f=+x.fractionGroupSize)?b.replace(new RegExp("\\d{"+f+"}\\B","g"),"$&"+(x.fractionGroupSeparator||"")):b):m}return(x.prefix||"")+B+(x.suffix||"")},i.toFraction=function(T){var C,x,B,v,y,a,c,f,p,m,b,P,E=this,u=E.c;if(T!=null&&(c=new Q(T),!c.isInteger()&&(c.c||c.s!==1)||c.lt(o)))throw Error(Yr+"Argument "+(c.isInteger()?"out of range: ":"not an integer: ")+Dt(c));if(!u)return new Q(E);for(C=new Q(o),p=x=new Q(o),B=f=new Q(o),P=sn(u),y=C.e=P.length-E.e-1,C.c[0]=Ju[(a=y%ye)<0?ye+a:a],T=!T||c.comparedTo(C)>0?y>0?C:p:c,a=M,M=1/0,c=new Q(P),f.c[0]=0;m=t(c,C,0,1),v=x.plus(m.times(B)),v.comparedTo(T)!=1;)x=B,B=v,p=f.plus(m.times(v=p)),f=v,C=c.minus(m.times(v=C)),c=v;return v=t(T.minus(x),B,0,1),f=f.plus(v.times(p)),x=x.plus(v.times(B)),f.s=p.s=E.s,y=y*2,b=t(p,B,y,d).minus(E).abs().comparedTo(t(f,x,y,d).minus(E).abs())<1?[p,B]:[f,x],M=a,b},i.toNumber=function(){return+Dt(this)},i.toPrecision=function(T,C){return T!=null&&hr(T,1,_r),_t(this,T,C,2)},i.toString=function(T){var C,x=this,B=x.s,v=x.e;return v===null?B?(C="Infinity",B<0&&(C="-"+C)):C="NaN":(T==null?C=v<=g||v>=A?Da(sn(x.c),v):zn(sn(x.c),v,"0"):T===10&&mt?(x=Ft(new Q(x),s+v+1,d),C=zn(sn(x.c),x.e,"0")):(hr(T,2,ht.length,"Base"),C=e(zn(sn(x.c),v,"0"),10,T,B,!0)),B<0&&x.c[0]&&(C="-"+C)),C},i.valueOf=i.toJSON=function(){return Dt(this)},i._isBigNumber=!0,i[Symbol.toStringTag]="BigNumber",i[Symbol.for("nodejs.util.inspect.custom")]=i.valueOf,r!=null&&Q.set(r),Q}function an(r){var t=r|0;return r>0||r===t?t:t-1}function sn(r){for(var t,e,n=1,i=r.length,o=r[0]+"";nA^e?1:-1;for(d=(g=i.length)<(A=o.length)?g:A,s=0;so[s]^e?1:-1;return g==A?0:g>A^e?1:-1}function hr(r,t,e,n){if(re||r!==In(r))throw Error(Yr+(n||"Argument")+(typeof r=="number"?re?" out of range: ":" not an integer: ":" not a primitive number: ")+String(r))}function Fa(r){var t=r.c.length-1;return an(r.e/ye)==t&&r.c[t]%2!=0}function Da(r,t){return(r.length>1?r.charAt(0)+"."+r.slice(1):r)+(t<0?"e":"e+")+t}function zn(r,t,e){var n,i;if(t<0){for(i=e+".";++t;i+=e);r=i+r}else if(n=r.length,++t>n){for(i=e,t-=n;--t;i+=e);r+=i}else t`}}var Ht=new kt("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),Lb=new kt("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"),Ql=new kt("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),Pb=new kt("So11111111111111111111111111111111111111112"),Ob=new kt("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");var Ga=de(De(),1);var di=r=>{let t=r.decode.bind(r),e=r.encode.bind(r);return{decode:t,encode:e}};var nf=de(De(),1),pi=de(ou(),1);var qa=r=>t=>{let e=(0,nf.blob)(r,t),{encode:n,decode:i}=di(e),o=e;return o.decode=(s,d)=>{let g=i(s,d);return(0,pi.toBigIntLE)(Buffer.from(g))},o.encode=(s,d,g)=>{let A=(0,pi.toBufferLE)(s,r);return n(A,d,g)},o},Ka=r=>t=>{let e=(0,nf.blob)(r,t),{encode:n,decode:i}=di(e),o=e;return o.decode=(s,d)=>{let g=i(s,d);return(0,pi.toBigIntBE)(Buffer.from(g))},o.encode=(s,d,g)=>{let A=(0,pi.toBufferBE)(s,r);return n(A,d,g)},o},sr=qa(8),zb=Ka(8),xm=qa(16),Fb=Ka(16),Db=qa(24),qb=Ka(24),Kb=qa(32),Wb=Ka(32);var Vb=new Zr("1e+18");var t0=de(De(),1);var Wa=r=>{let t=(0,t0.u8)(r),{encode:e,decode:n}=di(t),i=t;return i.decode=(o,s)=>!!n(o,s),i.encode=(o,s,d)=>{let g=Number(o);return e(g,s,d)},i};var e0=de(De(),1);var We=r=>{let t=(0,e0.blob)(32,r),{encode:e,decode:n}=di(t),i=t;return i.decode=(o,s)=>{let d=n(o,s);return new kt(d)},i.encode=(o,s,d)=>{let g=o.toBuffer();return e(g,s,d)},i};var cn=class extends Error{constructor(t){super(t)}},uo=class extends cn{constructor(){super(...arguments),this.name="TokenAccountNotFoundError"}},Ha=class extends cn{constructor(){super(...arguments),this.name="TokenInvalidAccountError"}},fo=class extends cn{constructor(){super(...arguments),this.name="TokenInvalidAccountOwnerError"}},Fn=class extends cn{constructor(){super(...arguments),this.name="TokenInvalidAccountSizeError"}},$a=class extends cn{constructor(){super(...arguments),this.name="TokenInvalidMintError"}};var ja=class extends cn{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}},he=class extends cn{constructor(){super(...arguments),this.name="TokenInvalidInstructionProgramError"}},le=class extends cn{constructor(){super(...arguments),this.name="TokenInvalidInstructionKeysError"}},ae=class extends cn{constructor(){super(...arguments),this.name="TokenInvalidInstructionDataError"}},oe=class extends cn{constructor(){super(...arguments),this.name="TokenInvalidInstructionTypeError"}};var At;(function(r){r[r.InitializeMint=0]="InitializeMint",r[r.InitializeAccount=1]="InitializeAccount",r[r.InitializeMultisig=2]="InitializeMultisig",r[r.Transfer=3]="Transfer",r[r.Approve=4]="Approve",r[r.Revoke=5]="Revoke",r[r.SetAuthority=6]="SetAuthority",r[r.MintTo=7]="MintTo",r[r.Burn=8]="Burn",r[r.CloseAccount=9]="CloseAccount",r[r.FreezeAccount=10]="FreezeAccount",r[r.ThawAccount=11]="ThawAccount",r[r.TransferChecked=12]="TransferChecked",r[r.ApproveChecked=13]="ApproveChecked",r[r.MintToChecked=14]="MintToChecked",r[r.BurnChecked=15]="BurnChecked",r[r.InitializeAccount2=16]="InitializeAccount2",r[r.SyncNative=17]="SyncNative",r[r.InitializeAccount3=18]="InitializeAccount3",r[r.InitializeMultisig2=19]="InitializeMultisig2",r[r.InitializeMint2=20]="InitializeMint2",r[r.GetAccountDataSize=21]="GetAccountDataSize",r[r.InitializeImmutableOwner=22]="InitializeImmutableOwner",r[r.AmountToUiAmount=23]="AmountToUiAmount",r[r.UiAmountToAmount=24]="UiAmountToAmount",r[r.InitializeMintCloseAuthority=25]="InitializeMintCloseAuthority",r[r.TransferFeeExtension=26]="TransferFeeExtension",r[r.ConfidentialTransferExtension=27]="ConfidentialTransferExtension",r[r.DefaultAccountStateExtension=28]="DefaultAccountStateExtension",r[r.Reallocate=29]="Reallocate",r[r.MemoTransferExtension=30]="MemoTransferExtension",r[r.CreateNativeMint=31]="CreateNativeMint",r[r.InitializeNonTransferableMint=32]="InitializeNonTransferableMint",r[r.InterestBearingMintExtension=33]="InterestBearingMintExtension"})(At||(At={}));var r0=(0,Ga.struct)([(0,Ga.u8)("instruction"),sr("amount")]);function n0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==r0.span)throw new ae;let{keys:{mint:e},data:n}=bm(r);if(n.instruction!==At.AmountToUiAmount)throw new oe;if(!e)throw new le;return{programId:t,keys:{mint:e},data:n}}function bm({programId:r,keys:[t],data:e}){return{programId:r,keys:{mint:t},data:r0.decode(e)}}var Va=de(De(),1);function i0(r,t,e){if(e.length){r.push({pubkey:t,isSigner:!1,isWritable:!1});for(let n of e)r.push({pubkey:n.publicKey,isSigner:!0,isWritable:!1})}else r.push({pubkey:t,isSigner:!0,isWritable:!1});return r}var o0=(0,Va.struct)([(0,Va.u8)("instruction"),sr("amount")]);function s0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==o0.span)throw new ae;let{keys:{account:e,delegate:n,owner:i,multiSigners:o},data:s}=vm(r);if(s.instruction!==At.Approve)throw new oe;if(!e||!n||!i)throw new le;return{programId:t,keys:{account:e,delegate:n,owner:i,multiSigners:o},data:s}}function vm({programId:r,keys:[t,e,n,...i],data:o}){return{programId:r,keys:{account:t,delegate:e,owner:n,multiSigners:i},data:o0.decode(o)}}var as=de(De(),1);var a0=(0,as.struct)([(0,as.u8)("instruction"),sr("amount"),(0,as.u8)("decimals")]);function c0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==a0.span)throw new ae;let{keys:{account:e,mint:n,delegate:i,owner:o,multiSigners:s},data:d}=km(r);if(d.instruction!==At.ApproveChecked)throw new oe;if(!e||!n||!i||!o)throw new le;return{programId:t,keys:{account:e,mint:n,delegate:i,owner:o,multiSigners:s},data:d}}function km({programId:r,keys:[t,e,n,i,...o],data:s}){return{programId:r,keys:{account:t,mint:e,delegate:n,owner:i,multiSigners:o},data:a0.decode(s)}}var Ya=de(De(),1);var u0=(0,Ya.struct)([(0,Ya.u8)("instruction"),sr("amount")]);function f0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==u0.span)throw new ae;let{keys:{account:e,mint:n,owner:i,multiSigners:o},data:s}=Im(r);if(s.instruction!==At.Burn)throw new oe;if(!e||!n||!i)throw new le;return{programId:t,keys:{account:e,mint:n,owner:i,multiSigners:o},data:s}}function Im({programId:r,keys:[t,e,n,...i],data:o}){return{programId:r,keys:{account:t,mint:e,owner:n,multiSigners:i},data:u0.decode(o)}}var cs=de(De(),1);var h0=(0,cs.struct)([(0,cs.u8)("instruction"),sr("amount"),(0,cs.u8)("decimals")]);function l0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==h0.span)throw new ae;let{keys:{account:e,mint:n,owner:i,multiSigners:o},data:s}=Am(r);if(s.instruction!==At.BurnChecked)throw new oe;if(!e||!n||!i)throw new le;return{programId:t,keys:{account:e,mint:n,owner:i,multiSigners:o},data:s}}function Am({programId:r,keys:[t,e,n,...i],data:o}){return{programId:r,keys:{account:t,mint:e,owner:n,multiSigners:i},data:h0.decode(o)}}var Za=de(De(),1);var d0=(0,Za.struct)([(0,Za.u8)("instruction")]);function p0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==d0.span)throw new ae;let{keys:{account:e,destination:n,authority:i,multiSigners:o},data:s}=_m(r);if(s.instruction!==At.CloseAccount)throw new oe;if(!e||!n||!i)throw new le;return{programId:t,keys:{account:e,destination:n,authority:i,multiSigners:o},data:s}}function _m({programId:r,keys:[t,e,n,...i],data:o}){return{programId:r,keys:{account:t,destination:e,authority:n,multiSigners:i},data:d0.decode(o)}}var yi=de(De(),1);var ho;(function(r){r[r.Uninitialized=0]="Uninitialized",r[r.Mint=1]="Mint",r[r.Account=2]="Account"})(ho||(ho={}));var Xa=1;var us=de(De(),1);var Em=(0,us.struct)([(0,us.u8)("m"),(0,us.u8)("n"),Wa("isInitialized"),We("signer1"),We("signer2"),We("signer3"),We("signer4"),We("signer5"),We("signer6"),We("signer7"),We("signer8"),We("signer9"),We("signer10"),We("signer11")]),Ja=Em.span;var Qa;(function(r){r[r.Uninitialized=0]="Uninitialized",r[r.Initialized=1]="Initialized",r[r.Frozen=2]="Frozen"})(Qa||(Qa={}));var y0=(0,yi.struct)([We("mint"),We("owner"),sr("amount"),(0,yi.u32)("delegateOption"),We("delegate"),(0,yi.u8)("state"),(0,yi.u32)("isNativeOption"),sr("isNative"),sr("delegatedAmount"),(0,yi.u32)("closeAuthorityOption"),We("closeAuthority")]),Dn=y0.span;async function of(r,t,e,n=Ht){let i=await r.getAccountInfo(t,e);return Sm(t,i,n)}function Sm(r,t,e=Ht){if(!t)throw new uo;if(!t.owner.equals(e))throw new fo;if(t.data.lengthDn){if(t.data.length===Ja)throw new Fn;if(t.data[Dn]!=ho.Account)throw new Ha;i=t.data.slice(Dn+Xa)}return{address:r,mint:n.mint,owner:n.owner,amount:n.amount,delegate:n.delegateOption?n.delegate:null,delegatedAmount:n.delegatedAmount,isInitialized:n.state!==Qa.Uninitialized,isFrozen:n.state===Qa.Frozen,isNative:!!n.isNativeOption,rentExemptReserve:n.isNativeOption?n.isNative:null,closeAuthority:n.closeAuthorityOption?n.closeAuthority:null,tlvData:i}}var Ti=de(De(),1);var g0=(0,Ti.struct)([(0,Ti.u32)("mintAuthorityOption"),We("mintAuthority"),sr("supply"),(0,Ti.u8)("decimals"),Wa("isInitialized"),(0,Ti.u32)("freezeAuthorityOption"),We("freezeAuthority")]),sf=g0.span;async function m0(r,t,e,n=Ht){let i=await r.getAccountInfo(t,e);return Bm(t,i,n)}function Bm(r,t,e=Ht){if(!t)throw new uo;if(!t.owner.equals(e))throw new fo;if(t.data.lengthsf){if(t.data.length<=Dn)throw new Fn;if(t.data.length===Ja)throw new Fn;if(t.data[Dn]!=ho.Mint)throw new $a;i=t.data.slice(Dn+Xa)}return{address:r,mintAuthority:n.mintAuthorityOption?n.mintAuthority:null,supply:n.supply,decimals:n.decimals,isInitialized:n.isInitialized,freezeAuthority:n.freezeAuthorityOption?n.freezeAuthority:null,tlvData:i}}async function fs(r,t,e=!1,n=Ht,i=Ql){if(!e&&!kt.isOnCurve(t.toBuffer()))throw new ja;let[o]=await kt.findProgramAddress([t.toBuffer(),n.toBuffer(),r.toBuffer()],i);return o}var tc=de(De(),1);var w0=(0,tc.struct)([(0,tc.u8)("instruction")]);function x0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==w0.span)throw new ae;let{keys:{account:e,mint:n,owner:i,rent:o},data:s}=Rm(r);if(s.instruction!==At.InitializeAccount)throw new oe;if(!e||!n||!i||!o)throw new le;return{programId:t,keys:{account:e,mint:n,owner:i,rent:o},data:s}}function Rm({programId:r,keys:[t,e,n,i],data:o}){return{programId:r,keys:{account:t,mint:e,owner:n,rent:i},data:w0.decode(o)}}var lo=de(De(),1);var b0=(0,lo.struct)([(0,lo.u8)("instruction"),(0,lo.u8)("decimals"),We("mintAuthority"),(0,lo.u8)("freezeAuthorityOption"),We("freezeAuthority")]);function v0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==b0.span)throw new ae;let{keys:{mint:e},data:n}=Tm(r);if(n.instruction!==At.InitializeMint2)throw new oe;if(!e)throw new le;return{programId:t,keys:{mint:e},data:n}}function Tm({programId:r,keys:[t],data:e}){let{instruction:n,decimals:i,mintAuthority:o,freezeAuthorityOption:s,freezeAuthority:d}=b0.decode(e);return{programId:r,keys:{mint:t},data:{instruction:n,decimals:i,mintAuthority:o,freezeAuthority:s?d:null}}}var hs=de(De(),1);var k0=(0,hs.struct)([(0,hs.u8)("instruction"),(0,hs.u8)("m")]);function I0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==k0.span)throw new ae;let{keys:{account:e,rent:n,signers:i},data:o}=Mm(r);if(o.instruction!==At.InitializeMultisig)throw new oe;if(!e||!n||!i.length)throw new le;return{programId:t,keys:{account:e,rent:n,signers:i},data:o}}function Mm({programId:r,keys:[t,e,...n],data:i}){return{programId:r,keys:{account:t,rent:e,signers:n},data:k0.decode(i)}}var ec=de(De(),1);var A0=(0,ec.struct)([(0,ec.u8)("instruction")]);function _0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==A0.span)throw new ae;let{keys:{account:e},data:n}=Lm(r);if(n.instruction!==At.SyncNative)throw new oe;if(!e)throw new le;return{programId:t,keys:{account:e},data:n}}function Lm({programId:r,keys:[t],data:e}){return{programId:r,keys:{account:t},data:A0.decode(e)}}var rc=de(De(),1);var E0=(0,rc.struct)([(0,rc.u8)("instruction")]);function S0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==E0.span)throw new ae;let{keys:{account:e,mint:n,authority:i,multiSigners:o},data:s}=Pm(r);if(s.instruction!==At.FreezeAccount)throw new oe;if(!e||!n||!i)throw new le;return{programId:t,keys:{account:e,mint:n,authority:i,multiSigners:o},data:s}}function Pm({programId:r,keys:[t,e,n,...i],data:o}){return{programId:r,keys:{account:t,mint:e,authority:n,multiSigners:i},data:E0.decode(o)}}var nc=de(De(),1);var B0=(0,nc.struct)([(0,nc.u8)("instruction"),sr("amount")]);function R0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==B0.span)throw new ae;let{keys:{mint:e,destination:n,authority:i,multiSigners:o},data:s}=Om(r);if(s.instruction!==At.MintTo)throw new oe;if(!e||!n||!i)throw new le;return{programId:t,keys:{mint:e,destination:n,authority:i,multiSigners:o},data:s}}function Om({programId:r,keys:[t,e,n,...i],data:o}){return{programId:r,keys:{mint:t,destination:e,authority:n,multiSigners:i},data:B0.decode(o)}}var ls=de(De(),1);var T0=(0,ls.struct)([(0,ls.u8)("instruction"),sr("amount"),(0,ls.u8)("decimals")]);function M0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==T0.span)throw new ae;let{keys:{mint:e,destination:n,authority:i,multiSigners:o},data:s}=Cm(r);if(s.instruction!==At.MintToChecked)throw new oe;if(!e||!n||!i)throw new le;return{programId:t,keys:{mint:e,destination:n,authority:i,multiSigners:o},data:s}}function Cm({programId:r,keys:[t,e,n,...i],data:o}){return{programId:r,keys:{mint:t,destination:e,authority:n,multiSigners:i},data:T0.decode(o)}}var ic=de(De(),1);var L0=(0,ic.struct)([(0,ic.u8)("instruction")]);function P0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==L0.span)throw new ae;let{keys:{account:e,owner:n,multiSigners:i},data:o}=Um(r);if(o.instruction!==At.Revoke)throw new oe;if(!e||!n)throw new le;return{programId:t,keys:{account:e,owner:n,multiSigners:i},data:o}}function Um({programId:r,keys:[t,e,...n],data:i}){return{programId:r,keys:{account:t,owner:e,multiSigners:n},data:L0.decode(i)}}var po=de(De(),1);var O0;(function(r){r[r.MintTokens=0]="MintTokens",r[r.FreezeAccount=1]="FreezeAccount",r[r.AccountOwner=2]="AccountOwner",r[r.CloseAccount=3]="CloseAccount"})(O0||(O0={}));var C0=(0,po.struct)([(0,po.u8)("instruction"),(0,po.u8)("authorityType"),(0,po.u8)("newAuthorityOption"),We("newAuthority")]);function U0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==C0.span)throw new ae;let{keys:{account:e,currentAuthority:n,multiSigners:i},data:o}=Nm(r);if(o.instruction!==At.SetAuthority)throw new oe;if(!e||!n)throw new le;return{programId:t,keys:{account:e,currentAuthority:n,multiSigners:i},data:o}}function Nm({programId:r,keys:[t,e,...n],data:i}){let{instruction:o,authorityType:s,newAuthorityOption:d,newAuthority:g}=C0.decode(i);return{programId:r,keys:{account:t,currentAuthority:e,multiSigners:n},data:{instruction:o,authorityType:s,newAuthority:d?g:null}}}var oc=de(De(),1);var N0=(0,oc.struct)([(0,oc.u8)("instruction")]);function z0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==N0.span)throw new ae;let{keys:{account:e,mint:n,authority:i,multiSigners:o},data:s}=zm(r);if(s.instruction!==At.ThawAccount)throw new oe;if(!e||!n||!i)throw new le;return{programId:t,keys:{account:e,mint:n,authority:i,multiSigners:o},data:s}}function zm({programId:r,keys:[t,e,n,...i],data:o}){return{programId:r,keys:{account:t,mint:e,authority:n,multiSigners:i},data:N0.decode(o)}}var sc=de(De(),1);var F0=(0,sc.struct)([(0,sc.u8)("instruction"),sr("amount")]);function D0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==F0.span)throw new ae;let{keys:{source:e,destination:n,owner:i,multiSigners:o},data:s}=Fm(r);if(s.instruction!==At.Transfer)throw new oe;if(!e||!n||!i)throw new le;return{programId:t,keys:{source:e,destination:n,owner:i,multiSigners:o},data:s}}function Fm({programId:r,keys:[t,e,n,...i],data:o}){return{programId:r,keys:{source:t,destination:e,owner:n,multiSigners:i},data:F0.decode(o)}}var ds=de(De(),1);var ac=(0,ds.struct)([(0,ds.u8)("instruction"),sr("amount"),(0,ds.u8)("decimals")]);function q0(r,t,e,n,i,o,s=[],d=Ht){let g=i0([{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0}],n,s),A=Buffer.alloc(ac.span);return ac.encode({instruction:At.TransferChecked,amount:BigInt(i),decimals:o},A),new Vt({keys:g,programId:d,data:A})}function K0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==ac.span)throw new ae;let{keys:{source:e,mint:n,destination:i,owner:o,multiSigners:s},data:d}=Dm(r);if(d.instruction!==At.TransferChecked)throw new oe;if(!e||!n||!i||!o)throw new le;return{programId:t,keys:{source:e,mint:n,destination:i,owner:o,multiSigners:s},data:d}}function Dm({programId:r,keys:[t,e,n,i,...o],data:s}){return{programId:r,keys:{source:t,mint:e,destination:n,owner:i,multiSigners:o},data:ac.decode(s)}}var qn=de(De(),1);function W0(r,t=Ht){if(!r.programId.equals(t))throw new he;let e=(0,qn.struct)([(0,qn.u8)("instruction"),(0,qn.blob)(r.data.length-1,"amount")]);if(r.data.length!==e.span)throw new ae;let{keys:{mint:n},data:i}=qm(r);if(i.instruction!==At.UiAmountToAmount)throw new oe;if(!n)throw new le;return{programId:t,keys:{mint:n},data:i}}function qm({programId:r,keys:[t],data:e}){let n=(0,qn.struct)([(0,qn.u8)("instruction"),(0,qn.blob)(e.length-1,"amount")]);return{programId:r,keys:{mint:t},data:n.decode(e)}}var yo=de(De(),1);var H0=(0,yo.struct)([(0,yo.u8)("instruction"),(0,yo.u8)("decimals"),We("mintAuthority"),(0,yo.u8)("freezeAuthorityOption"),We("freezeAuthority")]);function $0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==H0.span)throw new ae;let{keys:{mint:e,rent:n},data:i}=Km(r);if(i.instruction!==At.InitializeMint)throw new oe;if(!e||!n)throw new le;return{programId:t,keys:{mint:e,rent:n},data:i}}function Km({programId:r,keys:[t,e],data:n}){let{instruction:i,decimals:o,mintAuthority:s,freezeAuthorityOption:d,freezeAuthority:g}=H0.decode(n);return{programId:r,keys:{mint:t,rent:e},data:{instruction:i,decimals:o,mintAuthority:s,freezeAuthority:d?g:null}}}var Z0=de(De(),1);var cc=de(De(),1);var j0=(0,cc.struct)([(0,cc.u8)("instruction"),We("owner")]);function G0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==j0.span)throw new ae;let{keys:{account:e,mint:n,rent:i},data:o}=Wm(r);if(o.instruction!==At.InitializeAccount2)throw new oe;if(!e||!n||!i)throw new le;return{programId:t,keys:{account:e,mint:n,rent:i},data:o}}function Wm({programId:r,keys:[t,e,n],data:i}){return{programId:r,keys:{account:t,mint:e,rent:n},data:j0.decode(i)}}var uc=de(De(),1);var V0=(0,uc.struct)([(0,uc.u8)("instruction"),We("owner")]);function Y0(r,t=Ht){if(!r.programId.equals(t))throw new he;if(r.data.length!==V0.span)throw new ae;let{keys:{account:e,mint:n},data:i}=Hm(r);if(i.instruction!==At.InitializeAccount3)throw new oe;if(!e||!n)throw new le;return{programId:t,keys:{account:e,mint:n},data:i}}function Hm({programId:r,keys:[t,e],data:n}){return{programId:r,keys:{account:t,mint:e},data:V0.decode(n)}}function X0(r,t=Ht){if(!r.data.length)throw new ae;let e=(0,Z0.u8)().decode(r.data);if(e===At.InitializeMint)return $0(r,t);if(e===At.InitializeAccount)return x0(r,t);if(e===At.InitializeMultisig)return I0(r,t);if(e===At.Transfer)return D0(r,t);if(e===At.Approve)return s0(r,t);if(e===At.Revoke)return P0(r,t);if(e===At.SetAuthority)return U0(r,t);if(e===At.MintTo)return R0(r,t);if(e===At.Burn)return f0(r,t);if(e===At.CloseAccount)return p0(r,t);if(e===At.FreezeAccount)return S0(r,t);if(e===At.ThawAccount)return z0(r,t);if(e===At.TransferChecked)return K0(r,t);if(e===At.ApproveChecked)return c0(r,t);if(e===At.MintToChecked)return M0(r,t);if(e===At.BurnChecked)return l0(r,t);if(e===At.InitializeAccount2)return G0(r,t);if(e===At.SyncNative)return _0(r,t);if(e===At.InitializeAccount3)return Y0(r,t);if(e===At.InitializeMint2)return v0(r,t);if(e===At.AmountToUiAmount)return n0(r,t);if(e===At.UiAmountToAmount)return W0(r,t);throw e===At.InitializeMultisig2?new oe:new oe}function J0(r){return r.data.instruction===At.Transfer}function Q0(r){return r.data.instruction===At.TransferChecked}var mr=class extends Error{name="CreateTransferError"};async function $m(r,t,{recipient:e,amount:n,splToken:i,reference:o,memo:s},{commitment:d}={}){if(!await r.getAccountInfo(t))throw new mr("sender not found");if(!await r.getAccountInfo(e))throw new mr("recipient not found");let L=i?await Gm(e,n,i,t,r):await jm(e,n,t,r);if(o){Array.isArray(o)||(o=[o]);for(let $ of o)L.keys.push({pubkey:$,isWritable:!1,isSigner:!1})}let M=new Ke;return M.feePayer=t,M.recentBlockhash=(await r.getRecentBlockhash(d)).blockhash,s!=null&&M.add(new Vt({programId:os,keys:[],data:Buffer.from(s,"utf8")})),M.add(L),M}async function jm(r,t,e,n){let i=await n.getAccountInfo(e);if(!i)throw new mr("sender not found");let o=await n.getAccountInfo(r);if(!o)throw new mr("recipient not found");if(!i.owner.equals(yr.programId))throw new mr("sender owner invalid");if(i.executable)throw new mr("sender executable");if(!o.owner.equals(yr.programId))throw new mr("recipient owner invalid");if(o.executable)throw new mr("recipient executable");if((t.decimalPlaces()??0)>tf)throw new mr("amount decimals invalid");t=t.times(is).integerValue(Zr.ROUND_FLOOR);let s=t.toNumber();if(s>i.lamports)throw new mr("insufficient funds");return yr.transfer({fromPubkey:e,toPubkey:r,lamports:s})}async function Gm(r,t,e,n,i){let o=await m0(i,e);if(!o.isInitialized)throw new mr("mint not initialized");if((t.decimalPlaces()??0)>o.decimals)throw new mr("amount decimals invalid");t=t.times(ef.pow(o.decimals)).integerValue(Zr.ROUND_FLOOR);let s=await fs(e,n),d=await of(i,s);if(!d.isInitialized)throw new mr("sender not initialized");if(d.isFrozen)throw new mr("sender frozen");let g=await fs(e,r),A=await of(i,g);if(!A.isInitialized)throw new mr("recipient not initialized");if(A.isFrozen)throw new mr("recipient frozen");let L=BigInt(String(t));if(L>d.amount)throw new mr("insufficient funds");return q0(s,e,g,n,L,o.decimals)}function Vm(r){return"link"in r?Ym(r):Zm(r)}function Ym({link:r,label:t,message:e}){let n=r.search?encodeURIComponent(String(r).replace(/\/\?/,"?")):String(r).replace(/\/$/,""),i=new URL(co+n);return t&&i.searchParams.append("label",t),e&&i.searchParams.append("message",e),i}function Zm({recipient:r,amount:t,splToken:e,reference:n,label:i,message:o,memo:s}){let d=r.toBase58(),g=new URL(co+d);if(t&&g.searchParams.append("amount",t.toFixed(t.decimalPlaces()??0)),e&&g.searchParams.append("spl-token",e.toBase58()),n){Array.isArray(n)||(n=[n]);for(let A of n)g.searchParams.append("reference",A.toBase58())}return i&&g.searchParams.append("label",i),o&&g.searchParams.append("message",o),s&&g.searchParams.append("memo",s),g}var cd=de(rd(),1);var Xm=typeof atob=="function";var id=typeof Buffer=="function",Ik=typeof TextDecoder=="function"?new TextDecoder:void 0,Ak=typeof TextEncoder=="function"?new TextEncoder:void 0,Jm="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Qm=Array.prototype.slice.call(Jm),hc=(r=>{let t={};return r.forEach((e,n)=>t[e]=n),t})(Qm),tw=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,af=String.fromCharCode.bind(String),nd=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):(r,t=e=>e)=>new Uint8Array(Array.prototype.slice.call(r,0).map(t));var od=r=>r.replace(/[^A-Za-z0-9\+\/]/g,"");var ew=r=>{if(r=r.replace(/\s+/g,""),!tw.test(r))throw new TypeError("malformed base64.");r+="==".slice(2-(r.length&3));let t,e="",n,i;for(let o=0;o>16&255):i===64?af(t>>16&255,t>>8&255):af(t>>16&255,t>>8&255,t&255);return e},rw=Xm?r=>atob(od(r)):id?r=>Buffer.from(r,"base64").toString("binary"):ew,nw=id?r=>nd(Buffer.from(r,"base64")):r=>nd(rw(r),t=>t.charCodeAt(0)),sd=r=>nw(iw(r));var iw=r=>od(r.replace(/[-_]/g,t=>t=="-"?"+":"/"));var ud=de(ad(),1),An=class extends Error{name="FetchTransactionError"};async function ow(r,t,e,{commitment:n}={}){let o=await(await(0,cd.default)(String(e),{method:"POST",mode:"cors",cache:"no-cache",credentials:"omit",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify({account:t})})).json();if(!o?.transaction)throw new An("missing transaction");if(typeof o.transaction!="string")throw new An("invalid transaction");let s=Ke.from(sd(o.transaction)),{signatures:d,feePayer:g,recentBlockhash:A}=s;if(d.length){if(!g)throw new An("missing fee payer");if(!g.equals(d[0].publicKey))throw new An("invalid fee payer");if(!A)throw new An("missing recent blockhash");let L=s.serializeMessage();for(let{signature:M,publicKey:$}of d)if(M){if(!ud.default.sign.detached.verify(L,M,$.toBuffer()))throw new An("invalid signature")}else if($.equals(t))d.length===1&&(s.recentBlockhash=(await r.getRecentBlockhash(n)).blockhash);else throw new An("missing signature")}else s.feePayer=t,s.recentBlockhash=(await r.getRecentBlockhash(n)).blockhash;return s}var ps=class extends Error{name="FindReferenceError"};async function fd(r,t,{finality:e,...n}={}){let i=await r.getSignaturesForAddress(t,n,e),o=i.length;if(!o)throw new ps("not found");let s=i[o-1];if(o<(n?.limit||1e3))return s;try{return await fd(r,t,{finality:e,...n,before:s.signature})}catch(d){if(d instanceof ps)return s;throw d}}var Qr=class extends Error{name="ParseURLError"};function sw(r){if(typeof r=="string"){if(r.length>2048)throw new Qr("length invalid");r=new URL(r)}if(r.protocol!==co)throw new Qr("protocol invalid");if(!r.pathname)throw new Qr("pathname missing");return/[:%]/.test(r.pathname)?aw(r):cw(r)}function aw({pathname:r,searchParams:t}){let e=new URL(decodeURIComponent(r));if(e.protocol!==Qu)throw new Qr("link invalid");let n=t.get("label")||void 0,i=t.get("message")||void 0;return{link:e,label:n,message:i}}function cw({pathname:r,searchParams:t}){let e;try{e=new kt(r)}catch{throw new Qr("recipient invalid")}let n,i=t.get("amount");if(i!=null){if(!/^\d+(\.\d+)?$/.test(i))throw new Qr("amount invalid");if(n=new Zr(i),n.isNaN())throw new Qr("amount NaN");if(n.isNegative())throw new Qr("amount negative")}let o,s=t.get("spl-token");if(s!=null)try{o=new kt(s)}catch{throw new Qr("spl-token invalid")}let d,g=t.getAll("reference");if(g.length)try{d=g.map($=>new kt($))}catch{throw new Qr("reference invalid")}let A=t.get("label")||void 0,L=t.get("message")||void 0,M=t.get("memo")||void 0;return{recipient:e,amount:n,splToken:o,reference:d,label:A,message:L,memo:M}}var Er=class extends Error{name="ValidateTransferError"};async function uw(r,t,{recipient:e,amount:n,splToken:i,reference:o,memo:s},d){let g=await r.getTransaction(t,d);if(!g)throw new Er("not found");let{message:A,signatures:L}=g.transaction,M=g.meta;if(!M)throw new Er("missing meta");if(M.err)throw M.err;o&&!Array.isArray(o)&&(o=[o]);let K=Ke.populate(A,L).instructions.slice(),et=K.pop();if(!et)throw new Er("missing transfer instruction");let[tt,ht]=i?await lw(et,A,M,e,i,o):await hw(et,A,M,e,o);if(ht.minus(tt).lt(n))throw new Er("amount not transferred");if(s!==void 0){let mt=K.pop();if(!mt)throw new Er("missing memo instruction");fw(mt,s)}return g}function fw(r,t){if(!r.programId.equals(os))throw new Er("invalid memo program");if(r.keys.length)throw new Er("invalid memo keys");if(!r.data.equals(Buffer.from(t,"utf8")))throw new Er("invalid memo")}async function hw(r,t,e,n,i){let o=t.accountKeys.findIndex(s=>s.equals(n));if(o===-1)throw new Er("recipient not found");if(i){Ca.decodeTransfer(r);let[s,d,...g]=r.keys,A=g.length;if(A!==i.length)throw new Er("invalid references");for(let L=0;LL.equals(s));if(d===-1)throw new Er("recipient not found");if(o){let L=X0(r);if(!Q0(L)&&!J0(L))throw new Er("invalid transfer");let M=L.keys.multiSigners,$=M.length;if($!==o.length)throw new Er("invalid references");for(let K=0;K<$;K++)if(!M[K].pubkey.equals(o[K]))throw new Er(`invalid reference ${K}`)}let g=e.preTokenBalances?.find(L=>L.accountIndex===d),A=e.postTokenBalances?.find(L=>L.accountIndex===d);return[new Zr(g?.uiTokenAmount.uiAmountString||0),new Zr(A?.uiTokenAmount.uiAmountString||0)]}return dc(dw);})(); +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */ +/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */ +/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ +/** + * Support for translating between Uint8Array instances and JavaScript + * native types. + * + * {@link module:Layout~Layout|Layout} is the basis of a class + * hierarchy that associates property names with sequences of encoded + * bytes. + * + * Layouts are supported for these scalar (numeric) types: + * * {@link module:Layout~UInt|Unsigned integers in little-endian + * format} with {@link module:Layout.u8|8-bit}, {@link + * module:Layout.u16|16-bit}, {@link module:Layout.u24|24-bit}, + * {@link module:Layout.u32|32-bit}, {@link + * module:Layout.u40|40-bit}, and {@link module:Layout.u48|48-bit} + * representation ranges; + * * {@link module:Layout~UIntBE|Unsigned integers in big-endian + * format} with {@link module:Layout.u16be|16-bit}, {@link + * module:Layout.u24be|24-bit}, {@link module:Layout.u32be|32-bit}, + * {@link module:Layout.u40be|40-bit}, and {@link + * module:Layout.u48be|48-bit} representation ranges; + * * {@link module:Layout~Int|Signed integers in little-endian + * format} with {@link module:Layout.s8|8-bit}, {@link + * module:Layout.s16|16-bit}, {@link module:Layout.s24|24-bit}, + * {@link module:Layout.s32|32-bit}, {@link + * module:Layout.s40|40-bit}, and {@link module:Layout.s48|48-bit} + * representation ranges; + * * {@link module:Layout~IntBE|Signed integers in big-endian format} + * with {@link module:Layout.s16be|16-bit}, {@link + * module:Layout.s24be|24-bit}, {@link module:Layout.s32be|32-bit}, + * {@link module:Layout.s40be|40-bit}, and {@link + * module:Layout.s48be|48-bit} representation ranges; + * * 64-bit integral values that decode to an exact (if magnitude is + * less than 2^53) or nearby integral Number in {@link + * module:Layout.nu64|unsigned little-endian}, {@link + * module:Layout.nu64be|unsigned big-endian}, {@link + * module:Layout.ns64|signed little-endian}, and {@link + * module:Layout.ns64be|unsigned big-endian} encodings; + * * 32-bit floating point values with {@link + * module:Layout.f32|little-endian} and {@link + * module:Layout.f32be|big-endian} representations; + * * 64-bit floating point values with {@link + * module:Layout.f64|little-endian} and {@link + * module:Layout.f64be|big-endian} representations; + * * {@link module:Layout.const|Constants} that take no space in the + * encoded expression. + * + * and for these aggregate types: + * * {@link module:Layout.seq|Sequence}s of instances of a {@link + * module:Layout~Layout|Layout}, with JavaScript representation as + * an Array and constant or data-dependent {@link + * module:Layout~Sequence#count|length}; + * * {@link module:Layout.struct|Structure}s that aggregate a + * heterogeneous sequence of {@link module:Layout~Layout|Layout} + * instances, with JavaScript representation as an Object; + * * {@link module:Layout.union|Union}s that support multiple {@link + * module:Layout~VariantLayout|variant layouts} over a fixed + * (padded) or variable (not padded) span of bytes, using an + * unsigned integer at the start of the data or a separate {@link + * module:Layout.unionLayoutDiscriminator|layout element} to + * determine which layout to use when interpreting the buffer + * contents; + * * {@link module:Layout.bits|BitStructure}s that contain a sequence + * of individual {@link + * module:Layout~BitStructure#addField|BitField}s packed into an 8, + * 16, 24, or 32-bit unsigned integer starting at the least- or + * most-significant bit; + * * {@link module:Layout.cstr|C strings} of varying length; + * * {@link module:Layout.blob|Blobs} of fixed- or variable-{@link + * module:Layout~Blob#length|length} raw data. + * + * All {@link module:Layout~Layout|Layout} instances are immutable + * after construction, to prevent internal state from becoming + * inconsistent. + * + * @local Layout + * @local ExternalLayout + * @local GreedyCount + * @local OffsetLayout + * @local UInt + * @local UIntBE + * @local Int + * @local IntBE + * @local NearUInt64 + * @local NearUInt64BE + * @local NearInt64 + * @local NearInt64BE + * @local Float + * @local FloatBE + * @local Double + * @local DoubleBE + * @local Sequence + * @local Structure + * @local UnionDiscriminator + * @local UnionLayoutDiscriminator + * @local Union + * @local VariantLayout + * @local BitStructure + * @local BitField + * @local Boolean + * @local Blob + * @local CString + * @local Constant + * @local bindConstructorLayout + * @module Layout + * @license MIT + * @author Peter A. Bigot + * @see {@link https://github.com/pabigot/buffer-layout|buffer-layout on GitHub} + */ diff --git a/static/js/splToken/index.js b/static/js/splToken/index.js new file mode 100644 index 00000000..a70cf60f --- /dev/null +++ b/static/js/splToken/index.js @@ -0,0 +1,127 @@ +"use strict";var splToken=(()=>{var Jm=Object.create;var Hs=Object.defineProperty;var Xm=Object.getOwnPropertyDescriptor;var Qm=Object.getOwnPropertyNames;var ey=Object.getPrototypeOf,ty=Object.prototype.hasOwnProperty;var Pd=(r=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(r,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):r)(function(r){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+r+'" is not supported')});var Wr=(r,e)=>()=>(r&&(e=r(r=0)),e);var Se=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Rd=(r,e)=>{for(var t in e)Hs(r,t,{get:e[t],enumerable:!0})},Cd=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Qm(e))!ty.call(r,i)&&i!==t&&Hs(r,i,{get:()=>e[i],enumerable:!(n=Xm(e,i))||n.enumerable});return r};var Fe=(r,e,t)=>(t=r!=null?Jm(ey(r)):{},Cd(e||!r||!r.__esModule?Hs(t,"default",{value:r,enumerable:!0}):t,r)),Yf=r=>Cd(Hs({},"__esModule",{value:!0}),r);var Zf=Se(()=>{});var Od=Se((Y4,Vs)=>{(function(r){"use strict";var e=function(S){var T,E=new Float64Array(16);if(S)for(T=0;T>24&255,S[T+1]=E>>16&255,S[T+2]=E>>8&255,S[T+3]=E&255,S[T+4]=m>>24&255,S[T+5]=m>>16&255,S[T+6]=m>>8&255,S[T+7]=m&255}function q(S,T,E,m,B){var N,F=0;for(N=0;N>>8)-1}function Z(S,T,E,m){return q(S,T,E,m,16)}function he(S,T,E,m){return q(S,T,E,m,32)}function ce(S,T,E,m){for(var B=m[0]&255|(m[1]&255)<<8|(m[2]&255)<<16|(m[3]&255)<<24,N=E[0]&255|(E[1]&255)<<8|(E[2]&255)<<16|(E[3]&255)<<24,F=E[4]&255|(E[5]&255)<<8|(E[6]&255)<<16|(E[7]&255)<<24,j=E[8]&255|(E[9]&255)<<8|(E[10]&255)<<16|(E[11]&255)<<24,J=E[12]&255|(E[13]&255)<<8|(E[14]&255)<<16|(E[15]&255)<<24,xe=m[4]&255|(m[5]&255)<<8|(m[6]&255)<<16|(m[7]&255)<<24,ue=T[0]&255|(T[1]&255)<<8|(T[2]&255)<<16|(T[3]&255)<<24,Pe=T[4]&255|(T[5]&255)<<8|(T[6]&255)<<16|(T[7]&255)<<24,ge=T[8]&255|(T[9]&255)<<8|(T[10]&255)<<16|(T[11]&255)<<24,Ne=T[12]&255|(T[13]&255)<<8|(T[14]&255)<<16|(T[15]&255)<<24,Ke=m[8]&255|(m[9]&255)<<8|(m[10]&255)<<16|(m[11]&255)<<24,Ge=E[16]&255|(E[17]&255)<<8|(E[18]&255)<<16|(E[19]&255)<<24,We=E[20]&255|(E[21]&255)<<8|(E[22]&255)<<16|(E[23]&255)<<24,Ve=E[24]&255|(E[25]&255)<<8|(E[26]&255)<<16|(E[27]&255)<<24,Je=E[28]&255|(E[29]&255)<<8|(E[30]&255)<<16|(E[31]&255)<<24,Ye=m[12]&255|(m[13]&255)<<8|(m[14]&255)<<16|(m[15]&255)<<24,we=B,Te=N,ve=F,Ie=j,ke=J,ye=xe,H=ue,V=Pe,se=ge,ne=Ne,ie=Ke,le=Ge,tt=We,_t=Ve,Et=Je,kt=Ye,O,Bt=0;Bt<20;Bt+=2)O=we+tt|0,ke^=O<<7|O>>>32-7,O=ke+we|0,se^=O<<9|O>>>32-9,O=se+ke|0,tt^=O<<13|O>>>32-13,O=tt+se|0,we^=O<<18|O>>>32-18,O=ye+Te|0,ne^=O<<7|O>>>32-7,O=ne+ye|0,_t^=O<<9|O>>>32-9,O=_t+ne|0,Te^=O<<13|O>>>32-13,O=Te+_t|0,ye^=O<<18|O>>>32-18,O=ie+H|0,Et^=O<<7|O>>>32-7,O=Et+ie|0,ve^=O<<9|O>>>32-9,O=ve+Et|0,H^=O<<13|O>>>32-13,O=H+ve|0,ie^=O<<18|O>>>32-18,O=kt+le|0,Ie^=O<<7|O>>>32-7,O=Ie+kt|0,V^=O<<9|O>>>32-9,O=V+Ie|0,le^=O<<13|O>>>32-13,O=le+V|0,kt^=O<<18|O>>>32-18,O=we+Ie|0,Te^=O<<7|O>>>32-7,O=Te+we|0,ve^=O<<9|O>>>32-9,O=ve+Te|0,Ie^=O<<13|O>>>32-13,O=Ie+ve|0,we^=O<<18|O>>>32-18,O=ye+ke|0,H^=O<<7|O>>>32-7,O=H+ye|0,V^=O<<9|O>>>32-9,O=V+H|0,ke^=O<<13|O>>>32-13,O=ke+V|0,ye^=O<<18|O>>>32-18,O=ie+ne|0,le^=O<<7|O>>>32-7,O=le+ie|0,se^=O<<9|O>>>32-9,O=se+le|0,ne^=O<<13|O>>>32-13,O=ne+se|0,ie^=O<<18|O>>>32-18,O=kt+Et|0,tt^=O<<7|O>>>32-7,O=tt+kt|0,_t^=O<<9|O>>>32-9,O=_t+tt|0,Et^=O<<13|O>>>32-13,O=Et+_t|0,kt^=O<<18|O>>>32-18;we=we+B|0,Te=Te+N|0,ve=ve+F|0,Ie=Ie+j|0,ke=ke+J|0,ye=ye+xe|0,H=H+ue|0,V=V+Pe|0,se=se+ge|0,ne=ne+Ne|0,ie=ie+Ke|0,le=le+Ge|0,tt=tt+We|0,_t=_t+Ve|0,Et=Et+Je|0,kt=kt+Ye|0,S[0]=we>>>0&255,S[1]=we>>>8&255,S[2]=we>>>16&255,S[3]=we>>>24&255,S[4]=Te>>>0&255,S[5]=Te>>>8&255,S[6]=Te>>>16&255,S[7]=Te>>>24&255,S[8]=ve>>>0&255,S[9]=ve>>>8&255,S[10]=ve>>>16&255,S[11]=ve>>>24&255,S[12]=Ie>>>0&255,S[13]=Ie>>>8&255,S[14]=Ie>>>16&255,S[15]=Ie>>>24&255,S[16]=ke>>>0&255,S[17]=ke>>>8&255,S[18]=ke>>>16&255,S[19]=ke>>>24&255,S[20]=ye>>>0&255,S[21]=ye>>>8&255,S[22]=ye>>>16&255,S[23]=ye>>>24&255,S[24]=H>>>0&255,S[25]=H>>>8&255,S[26]=H>>>16&255,S[27]=H>>>24&255,S[28]=V>>>0&255,S[29]=V>>>8&255,S[30]=V>>>16&255,S[31]=V>>>24&255,S[32]=se>>>0&255,S[33]=se>>>8&255,S[34]=se>>>16&255,S[35]=se>>>24&255,S[36]=ne>>>0&255,S[37]=ne>>>8&255,S[38]=ne>>>16&255,S[39]=ne>>>24&255,S[40]=ie>>>0&255,S[41]=ie>>>8&255,S[42]=ie>>>16&255,S[43]=ie>>>24&255,S[44]=le>>>0&255,S[45]=le>>>8&255,S[46]=le>>>16&255,S[47]=le>>>24&255,S[48]=tt>>>0&255,S[49]=tt>>>8&255,S[50]=tt>>>16&255,S[51]=tt>>>24&255,S[52]=_t>>>0&255,S[53]=_t>>>8&255,S[54]=_t>>>16&255,S[55]=_t>>>24&255,S[56]=Et>>>0&255,S[57]=Et>>>8&255,S[58]=Et>>>16&255,S[59]=Et>>>24&255,S[60]=kt>>>0&255,S[61]=kt>>>8&255,S[62]=kt>>>16&255,S[63]=kt>>>24&255}function Y(S,T,E,m){for(var B=m[0]&255|(m[1]&255)<<8|(m[2]&255)<<16|(m[3]&255)<<24,N=E[0]&255|(E[1]&255)<<8|(E[2]&255)<<16|(E[3]&255)<<24,F=E[4]&255|(E[5]&255)<<8|(E[6]&255)<<16|(E[7]&255)<<24,j=E[8]&255|(E[9]&255)<<8|(E[10]&255)<<16|(E[11]&255)<<24,J=E[12]&255|(E[13]&255)<<8|(E[14]&255)<<16|(E[15]&255)<<24,xe=m[4]&255|(m[5]&255)<<8|(m[6]&255)<<16|(m[7]&255)<<24,ue=T[0]&255|(T[1]&255)<<8|(T[2]&255)<<16|(T[3]&255)<<24,Pe=T[4]&255|(T[5]&255)<<8|(T[6]&255)<<16|(T[7]&255)<<24,ge=T[8]&255|(T[9]&255)<<8|(T[10]&255)<<16|(T[11]&255)<<24,Ne=T[12]&255|(T[13]&255)<<8|(T[14]&255)<<16|(T[15]&255)<<24,Ke=m[8]&255|(m[9]&255)<<8|(m[10]&255)<<16|(m[11]&255)<<24,Ge=E[16]&255|(E[17]&255)<<8|(E[18]&255)<<16|(E[19]&255)<<24,We=E[20]&255|(E[21]&255)<<8|(E[22]&255)<<16|(E[23]&255)<<24,Ve=E[24]&255|(E[25]&255)<<8|(E[26]&255)<<16|(E[27]&255)<<24,Je=E[28]&255|(E[29]&255)<<8|(E[30]&255)<<16|(E[31]&255)<<24,Ye=m[12]&255|(m[13]&255)<<8|(m[14]&255)<<16|(m[15]&255)<<24,we=B,Te=N,ve=F,Ie=j,ke=J,ye=xe,H=ue,V=Pe,se=ge,ne=Ne,ie=Ke,le=Ge,tt=We,_t=Ve,Et=Je,kt=Ye,O,Bt=0;Bt<20;Bt+=2)O=we+tt|0,ke^=O<<7|O>>>32-7,O=ke+we|0,se^=O<<9|O>>>32-9,O=se+ke|0,tt^=O<<13|O>>>32-13,O=tt+se|0,we^=O<<18|O>>>32-18,O=ye+Te|0,ne^=O<<7|O>>>32-7,O=ne+ye|0,_t^=O<<9|O>>>32-9,O=_t+ne|0,Te^=O<<13|O>>>32-13,O=Te+_t|0,ye^=O<<18|O>>>32-18,O=ie+H|0,Et^=O<<7|O>>>32-7,O=Et+ie|0,ve^=O<<9|O>>>32-9,O=ve+Et|0,H^=O<<13|O>>>32-13,O=H+ve|0,ie^=O<<18|O>>>32-18,O=kt+le|0,Ie^=O<<7|O>>>32-7,O=Ie+kt|0,V^=O<<9|O>>>32-9,O=V+Ie|0,le^=O<<13|O>>>32-13,O=le+V|0,kt^=O<<18|O>>>32-18,O=we+Ie|0,Te^=O<<7|O>>>32-7,O=Te+we|0,ve^=O<<9|O>>>32-9,O=ve+Te|0,Ie^=O<<13|O>>>32-13,O=Ie+ve|0,we^=O<<18|O>>>32-18,O=ye+ke|0,H^=O<<7|O>>>32-7,O=H+ye|0,V^=O<<9|O>>>32-9,O=V+H|0,ke^=O<<13|O>>>32-13,O=ke+V|0,ye^=O<<18|O>>>32-18,O=ie+ne|0,le^=O<<7|O>>>32-7,O=le+ie|0,se^=O<<9|O>>>32-9,O=se+le|0,ne^=O<<13|O>>>32-13,O=ne+se|0,ie^=O<<18|O>>>32-18,O=kt+Et|0,tt^=O<<7|O>>>32-7,O=tt+kt|0,_t^=O<<9|O>>>32-9,O=_t+tt|0,Et^=O<<13|O>>>32-13,O=Et+_t|0,kt^=O<<18|O>>>32-18;S[0]=we>>>0&255,S[1]=we>>>8&255,S[2]=we>>>16&255,S[3]=we>>>24&255,S[4]=ye>>>0&255,S[5]=ye>>>8&255,S[6]=ye>>>16&255,S[7]=ye>>>24&255,S[8]=ie>>>0&255,S[9]=ie>>>8&255,S[10]=ie>>>16&255,S[11]=ie>>>24&255,S[12]=kt>>>0&255,S[13]=kt>>>8&255,S[14]=kt>>>16&255,S[15]=kt>>>24&255,S[16]=H>>>0&255,S[17]=H>>>8&255,S[18]=H>>>16&255,S[19]=H>>>24&255,S[20]=V>>>0&255,S[21]=V>>>8&255,S[22]=V>>>16&255,S[23]=V>>>24&255,S[24]=se>>>0&255,S[25]=se>>>8&255,S[26]=se>>>16&255,S[27]=se>>>24&255,S[28]=ne>>>0&255,S[29]=ne>>>8&255,S[30]=ne>>>16&255,S[31]=ne>>>24&255}function Ee(S,T,E,m){ce(S,T,E,m)}function Be(S,T,E,m){Y(S,T,E,m)}var Ue=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function _e(S,T,E,m,B,N,F){var j=new Uint8Array(16),J=new Uint8Array(64),xe,ue;for(ue=0;ue<16;ue++)j[ue]=0;for(ue=0;ue<8;ue++)j[ue]=N[ue];for(;B>=64;){for(Ee(J,j,F,Ue),ue=0;ue<64;ue++)S[T+ue]=E[m+ue]^J[ue];for(xe=1,ue=8;ue<16;ue++)xe=xe+(j[ue]&255)|0,j[ue]=xe&255,xe>>>=8;B-=64,T+=64,m+=64}if(B>0)for(Ee(J,j,F,Ue),ue=0;ue=64;){for(Ee(F,N,B,Ue),J=0;J<64;J++)S[T+J]=F[J];for(j=1,J=8;J<16;J++)j=j+(N[J]&255)|0,N[J]=j&255,j>>>=8;E-=64,T+=64}if(E>0)for(Ee(F,N,B,Ue),J=0;J>>13|E<<3)&8191,m=S[4]&255|(S[5]&255)<<8,this.r[2]=(E>>>10|m<<6)&7939,B=S[6]&255|(S[7]&255)<<8,this.r[3]=(m>>>7|B<<9)&8191,N=S[8]&255|(S[9]&255)<<8,this.r[4]=(B>>>4|N<<12)&255,this.r[5]=N>>>1&8190,F=S[10]&255|(S[11]&255)<<8,this.r[6]=(N>>>14|F<<2)&8191,j=S[12]&255|(S[13]&255)<<8,this.r[7]=(F>>>11|j<<5)&8065,J=S[14]&255|(S[15]&255)<<8,this.r[8]=(j>>>8|J<<8)&8191,this.r[9]=J>>>5&127,this.pad[0]=S[16]&255|(S[17]&255)<<8,this.pad[1]=S[18]&255|(S[19]&255)<<8,this.pad[2]=S[20]&255|(S[21]&255)<<8,this.pad[3]=S[22]&255|(S[23]&255)<<8,this.pad[4]=S[24]&255|(S[25]&255)<<8,this.pad[5]=S[26]&255|(S[27]&255)<<8,this.pad[6]=S[28]&255|(S[29]&255)<<8,this.pad[7]=S[30]&255|(S[31]&255)<<8};x.prototype.blocks=function(S,T,E){for(var m=this.fin?0:2048,B,N,F,j,J,xe,ue,Pe,ge,Ne,Ke,Ge,We,Ve,Je,Ye,we,Te,ve,Ie=this.h[0],ke=this.h[1],ye=this.h[2],H=this.h[3],V=this.h[4],se=this.h[5],ne=this.h[6],ie=this.h[7],le=this.h[8],tt=this.h[9],_t=this.r[0],Et=this.r[1],kt=this.r[2],O=this.r[3],Bt=this.r[4],zt=this.r[5],qt=this.r[6],Tt=this.r[7],Lt=this.r[8],Ut=this.r[9];E>=16;)B=S[T+0]&255|(S[T+1]&255)<<8,Ie+=B&8191,N=S[T+2]&255|(S[T+3]&255)<<8,ke+=(B>>>13|N<<3)&8191,F=S[T+4]&255|(S[T+5]&255)<<8,ye+=(N>>>10|F<<6)&8191,j=S[T+6]&255|(S[T+7]&255)<<8,H+=(F>>>7|j<<9)&8191,J=S[T+8]&255|(S[T+9]&255)<<8,V+=(j>>>4|J<<12)&8191,se+=J>>>1&8191,xe=S[T+10]&255|(S[T+11]&255)<<8,ne+=(J>>>14|xe<<2)&8191,ue=S[T+12]&255|(S[T+13]&255)<<8,ie+=(xe>>>11|ue<<5)&8191,Pe=S[T+14]&255|(S[T+15]&255)<<8,le+=(ue>>>8|Pe<<8)&8191,tt+=Pe>>>5|m,ge=0,Ne=ge,Ne+=Ie*_t,Ne+=ke*(5*Ut),Ne+=ye*(5*Lt),Ne+=H*(5*Tt),Ne+=V*(5*qt),ge=Ne>>>13,Ne&=8191,Ne+=se*(5*zt),Ne+=ne*(5*Bt),Ne+=ie*(5*O),Ne+=le*(5*kt),Ne+=tt*(5*Et),ge+=Ne>>>13,Ne&=8191,Ke=ge,Ke+=Ie*Et,Ke+=ke*_t,Ke+=ye*(5*Ut),Ke+=H*(5*Lt),Ke+=V*(5*Tt),ge=Ke>>>13,Ke&=8191,Ke+=se*(5*qt),Ke+=ne*(5*zt),Ke+=ie*(5*Bt),Ke+=le*(5*O),Ke+=tt*(5*kt),ge+=Ke>>>13,Ke&=8191,Ge=ge,Ge+=Ie*kt,Ge+=ke*Et,Ge+=ye*_t,Ge+=H*(5*Ut),Ge+=V*(5*Lt),ge=Ge>>>13,Ge&=8191,Ge+=se*(5*Tt),Ge+=ne*(5*qt),Ge+=ie*(5*zt),Ge+=le*(5*Bt),Ge+=tt*(5*O),ge+=Ge>>>13,Ge&=8191,We=ge,We+=Ie*O,We+=ke*kt,We+=ye*Et,We+=H*_t,We+=V*(5*Ut),ge=We>>>13,We&=8191,We+=se*(5*Lt),We+=ne*(5*Tt),We+=ie*(5*qt),We+=le*(5*zt),We+=tt*(5*Bt),ge+=We>>>13,We&=8191,Ve=ge,Ve+=Ie*Bt,Ve+=ke*O,Ve+=ye*kt,Ve+=H*Et,Ve+=V*_t,ge=Ve>>>13,Ve&=8191,Ve+=se*(5*Ut),Ve+=ne*(5*Lt),Ve+=ie*(5*Tt),Ve+=le*(5*qt),Ve+=tt*(5*zt),ge+=Ve>>>13,Ve&=8191,Je=ge,Je+=Ie*zt,Je+=ke*Bt,Je+=ye*O,Je+=H*kt,Je+=V*Et,ge=Je>>>13,Je&=8191,Je+=se*_t,Je+=ne*(5*Ut),Je+=ie*(5*Lt),Je+=le*(5*Tt),Je+=tt*(5*qt),ge+=Je>>>13,Je&=8191,Ye=ge,Ye+=Ie*qt,Ye+=ke*zt,Ye+=ye*Bt,Ye+=H*O,Ye+=V*kt,ge=Ye>>>13,Ye&=8191,Ye+=se*Et,Ye+=ne*_t,Ye+=ie*(5*Ut),Ye+=le*(5*Lt),Ye+=tt*(5*Tt),ge+=Ye>>>13,Ye&=8191,we=ge,we+=Ie*Tt,we+=ke*qt,we+=ye*zt,we+=H*Bt,we+=V*O,ge=we>>>13,we&=8191,we+=se*kt,we+=ne*Et,we+=ie*_t,we+=le*(5*Ut),we+=tt*(5*Lt),ge+=we>>>13,we&=8191,Te=ge,Te+=Ie*Lt,Te+=ke*Tt,Te+=ye*qt,Te+=H*zt,Te+=V*Bt,ge=Te>>>13,Te&=8191,Te+=se*O,Te+=ne*kt,Te+=ie*Et,Te+=le*_t,Te+=tt*(5*Ut),ge+=Te>>>13,Te&=8191,ve=ge,ve+=Ie*Ut,ve+=ke*Lt,ve+=ye*Tt,ve+=H*qt,ve+=V*zt,ge=ve>>>13,ve&=8191,ve+=se*Bt,ve+=ne*O,ve+=ie*kt,ve+=le*Et,ve+=tt*_t,ge+=ve>>>13,ve&=8191,ge=(ge<<2)+ge|0,ge=ge+Ne|0,Ne=ge&8191,ge=ge>>>13,Ke+=ge,Ie=Ne,ke=Ke,ye=Ge,H=We,V=Ve,se=Je,ne=Ye,ie=we,le=Te,tt=ve,T+=16,E-=16;this.h[0]=Ie,this.h[1]=ke,this.h[2]=ye,this.h[3]=H,this.h[4]=V,this.h[5]=se,this.h[6]=ne,this.h[7]=ie,this.h[8]=le,this.h[9]=tt},x.prototype.finish=function(S,T){var E=new Uint16Array(10),m,B,N,F;if(this.leftover){for(F=this.leftover,this.buffer[F++]=1;F<16;F++)this.buffer[F]=0;this.fin=1,this.blocks(this.buffer,0,16)}for(m=this.h[1]>>>13,this.h[1]&=8191,F=2;F<10;F++)this.h[F]+=m,m=this.h[F]>>>13,this.h[F]&=8191;for(this.h[0]+=m*5,m=this.h[0]>>>13,this.h[0]&=8191,this.h[1]+=m,m=this.h[1]>>>13,this.h[1]&=8191,this.h[2]+=m,E[0]=this.h[0]+5,m=E[0]>>>13,E[0]&=8191,F=1;F<10;F++)E[F]=this.h[F]+m,m=E[F]>>>13,E[F]&=8191;for(E[9]-=1<<13,B=(m^1)-1,F=0;F<10;F++)E[F]&=B;for(B=~B,F=0;F<10;F++)this.h[F]=this.h[F]&B|E[F];for(this.h[0]=(this.h[0]|this.h[1]<<13)&65535,this.h[1]=(this.h[1]>>>3|this.h[2]<<10)&65535,this.h[2]=(this.h[2]>>>6|this.h[3]<<7)&65535,this.h[3]=(this.h[3]>>>9|this.h[4]<<4)&65535,this.h[4]=(this.h[4]>>>12|this.h[5]<<1|this.h[6]<<14)&65535,this.h[5]=(this.h[6]>>>2|this.h[7]<<11)&65535,this.h[6]=(this.h[7]>>>5|this.h[8]<<8)&65535,this.h[7]=(this.h[8]>>>8|this.h[9]<<5)&65535,N=this.h[0]+this.pad[0],this.h[0]=N&65535,F=1;F<8;F++)N=(this.h[F]+this.pad[F]|0)+(N>>>16)|0,this.h[F]=N&65535;S[T+0]=this.h[0]>>>0&255,S[T+1]=this.h[0]>>>8&255,S[T+2]=this.h[1]>>>0&255,S[T+3]=this.h[1]>>>8&255,S[T+4]=this.h[2]>>>0&255,S[T+5]=this.h[2]>>>8&255,S[T+6]=this.h[3]>>>0&255,S[T+7]=this.h[3]>>>8&255,S[T+8]=this.h[4]>>>0&255,S[T+9]=this.h[4]>>>8&255,S[T+10]=this.h[5]>>>0&255,S[T+11]=this.h[5]>>>8&255,S[T+12]=this.h[6]>>>0&255,S[T+13]=this.h[6]>>>8&255,S[T+14]=this.h[7]>>>0&255,S[T+15]=this.h[7]>>>8&255},x.prototype.update=function(S,T,E){var m,B;if(this.leftover){for(B=16-this.leftover,B>E&&(B=E),m=0;m=16&&(B=E-E%16,this.blocks(S,T,B),T+=B,E-=B),E){for(m=0;m>16&1),N[E-1]&=65535;N[15]=F[15]-32767-(N[14]>>16&1),B=N[15]>>16&1,N[14]&=65535,g(F,N,1-B)}for(E=0;E<16;E++)S[2*E]=F[E]&255,S[2*E+1]=F[E]>>8}function u(S,T){var E=new Uint8Array(32),m=new Uint8Array(32);return d(E,S),d(m,T),he(E,0,m,0)}function w(S){var T=new Uint8Array(32);return d(T,S),T[0]&1}function M(S,T){var E;for(E=0;E<16;E++)S[E]=T[2*E]+(T[2*E+1]<<8);S[15]&=32767}function v(S,T,E){for(var m=0;m<16;m++)S[m]=T[m]+E[m]}function P(S,T,E){for(var m=0;m<16;m++)S[m]=T[m]-E[m]}function z(S,T,E){var m,B,N=0,F=0,j=0,J=0,xe=0,ue=0,Pe=0,ge=0,Ne=0,Ke=0,Ge=0,We=0,Ve=0,Je=0,Ye=0,we=0,Te=0,ve=0,Ie=0,ke=0,ye=0,H=0,V=0,se=0,ne=0,ie=0,le=0,tt=0,_t=0,Et=0,kt=0,O=E[0],Bt=E[1],zt=E[2],qt=E[3],Tt=E[4],Lt=E[5],Ut=E[6],ur=E[7],Jt=E[8],or=E[9],ar=E[10],sr=E[11],pr=E[12],Br=E[13],Pr=E[14],Rr=E[15];m=T[0],N+=m*O,F+=m*Bt,j+=m*zt,J+=m*qt,xe+=m*Tt,ue+=m*Lt,Pe+=m*Ut,ge+=m*ur,Ne+=m*Jt,Ke+=m*or,Ge+=m*ar,We+=m*sr,Ve+=m*pr,Je+=m*Br,Ye+=m*Pr,we+=m*Rr,m=T[1],F+=m*O,j+=m*Bt,J+=m*zt,xe+=m*qt,ue+=m*Tt,Pe+=m*Lt,ge+=m*Ut,Ne+=m*ur,Ke+=m*Jt,Ge+=m*or,We+=m*ar,Ve+=m*sr,Je+=m*pr,Ye+=m*Br,we+=m*Pr,Te+=m*Rr,m=T[2],j+=m*O,J+=m*Bt,xe+=m*zt,ue+=m*qt,Pe+=m*Tt,ge+=m*Lt,Ne+=m*Ut,Ke+=m*ur,Ge+=m*Jt,We+=m*or,Ve+=m*ar,Je+=m*sr,Ye+=m*pr,we+=m*Br,Te+=m*Pr,ve+=m*Rr,m=T[3],J+=m*O,xe+=m*Bt,ue+=m*zt,Pe+=m*qt,ge+=m*Tt,Ne+=m*Lt,Ke+=m*Ut,Ge+=m*ur,We+=m*Jt,Ve+=m*or,Je+=m*ar,Ye+=m*sr,we+=m*pr,Te+=m*Br,ve+=m*Pr,Ie+=m*Rr,m=T[4],xe+=m*O,ue+=m*Bt,Pe+=m*zt,ge+=m*qt,Ne+=m*Tt,Ke+=m*Lt,Ge+=m*Ut,We+=m*ur,Ve+=m*Jt,Je+=m*or,Ye+=m*ar,we+=m*sr,Te+=m*pr,ve+=m*Br,Ie+=m*Pr,ke+=m*Rr,m=T[5],ue+=m*O,Pe+=m*Bt,ge+=m*zt,Ne+=m*qt,Ke+=m*Tt,Ge+=m*Lt,We+=m*Ut,Ve+=m*ur,Je+=m*Jt,Ye+=m*or,we+=m*ar,Te+=m*sr,ve+=m*pr,Ie+=m*Br,ke+=m*Pr,ye+=m*Rr,m=T[6],Pe+=m*O,ge+=m*Bt,Ne+=m*zt,Ke+=m*qt,Ge+=m*Tt,We+=m*Lt,Ve+=m*Ut,Je+=m*ur,Ye+=m*Jt,we+=m*or,Te+=m*ar,ve+=m*sr,Ie+=m*pr,ke+=m*Br,ye+=m*Pr,H+=m*Rr,m=T[7],ge+=m*O,Ne+=m*Bt,Ke+=m*zt,Ge+=m*qt,We+=m*Tt,Ve+=m*Lt,Je+=m*Ut,Ye+=m*ur,we+=m*Jt,Te+=m*or,ve+=m*ar,Ie+=m*sr,ke+=m*pr,ye+=m*Br,H+=m*Pr,V+=m*Rr,m=T[8],Ne+=m*O,Ke+=m*Bt,Ge+=m*zt,We+=m*qt,Ve+=m*Tt,Je+=m*Lt,Ye+=m*Ut,we+=m*ur,Te+=m*Jt,ve+=m*or,Ie+=m*ar,ke+=m*sr,ye+=m*pr,H+=m*Br,V+=m*Pr,se+=m*Rr,m=T[9],Ke+=m*O,Ge+=m*Bt,We+=m*zt,Ve+=m*qt,Je+=m*Tt,Ye+=m*Lt,we+=m*Ut,Te+=m*ur,ve+=m*Jt,Ie+=m*or,ke+=m*ar,ye+=m*sr,H+=m*pr,V+=m*Br,se+=m*Pr,ne+=m*Rr,m=T[10],Ge+=m*O,We+=m*Bt,Ve+=m*zt,Je+=m*qt,Ye+=m*Tt,we+=m*Lt,Te+=m*Ut,ve+=m*ur,Ie+=m*Jt,ke+=m*or,ye+=m*ar,H+=m*sr,V+=m*pr,se+=m*Br,ne+=m*Pr,ie+=m*Rr,m=T[11],We+=m*O,Ve+=m*Bt,Je+=m*zt,Ye+=m*qt,we+=m*Tt,Te+=m*Lt,ve+=m*Ut,Ie+=m*ur,ke+=m*Jt,ye+=m*or,H+=m*ar,V+=m*sr,se+=m*pr,ne+=m*Br,ie+=m*Pr,le+=m*Rr,m=T[12],Ve+=m*O,Je+=m*Bt,Ye+=m*zt,we+=m*qt,Te+=m*Tt,ve+=m*Lt,Ie+=m*Ut,ke+=m*ur,ye+=m*Jt,H+=m*or,V+=m*ar,se+=m*sr,ne+=m*pr,ie+=m*Br,le+=m*Pr,tt+=m*Rr,m=T[13],Je+=m*O,Ye+=m*Bt,we+=m*zt,Te+=m*qt,ve+=m*Tt,Ie+=m*Lt,ke+=m*Ut,ye+=m*ur,H+=m*Jt,V+=m*or,se+=m*ar,ne+=m*sr,ie+=m*pr,le+=m*Br,tt+=m*Pr,_t+=m*Rr,m=T[14],Ye+=m*O,we+=m*Bt,Te+=m*zt,ve+=m*qt,Ie+=m*Tt,ke+=m*Lt,ye+=m*Ut,H+=m*ur,V+=m*Jt,se+=m*or,ne+=m*ar,ie+=m*sr,le+=m*pr,tt+=m*Br,_t+=m*Pr,Et+=m*Rr,m=T[15],we+=m*O,Te+=m*Bt,ve+=m*zt,Ie+=m*qt,ke+=m*Tt,ye+=m*Lt,H+=m*Ut,V+=m*ur,se+=m*Jt,ne+=m*or,ie+=m*ar,le+=m*sr,tt+=m*pr,_t+=m*Br,Et+=m*Pr,kt+=m*Rr,N+=38*Te,F+=38*ve,j+=38*Ie,J+=38*ke,xe+=38*ye,ue+=38*H,Pe+=38*V,ge+=38*se,Ne+=38*ne,Ke+=38*ie,Ge+=38*le,We+=38*tt,Ve+=38*_t,Je+=38*Et,Ye+=38*kt,B=1,m=N+B+65535,B=Math.floor(m/65536),N=m-B*65536,m=F+B+65535,B=Math.floor(m/65536),F=m-B*65536,m=j+B+65535,B=Math.floor(m/65536),j=m-B*65536,m=J+B+65535,B=Math.floor(m/65536),J=m-B*65536,m=xe+B+65535,B=Math.floor(m/65536),xe=m-B*65536,m=ue+B+65535,B=Math.floor(m/65536),ue=m-B*65536,m=Pe+B+65535,B=Math.floor(m/65536),Pe=m-B*65536,m=ge+B+65535,B=Math.floor(m/65536),ge=m-B*65536,m=Ne+B+65535,B=Math.floor(m/65536),Ne=m-B*65536,m=Ke+B+65535,B=Math.floor(m/65536),Ke=m-B*65536,m=Ge+B+65535,B=Math.floor(m/65536),Ge=m-B*65536,m=We+B+65535,B=Math.floor(m/65536),We=m-B*65536,m=Ve+B+65535,B=Math.floor(m/65536),Ve=m-B*65536,m=Je+B+65535,B=Math.floor(m/65536),Je=m-B*65536,m=Ye+B+65535,B=Math.floor(m/65536),Ye=m-B*65536,m=we+B+65535,B=Math.floor(m/65536),we=m-B*65536,N+=B-1+37*(B-1),B=1,m=N+B+65535,B=Math.floor(m/65536),N=m-B*65536,m=F+B+65535,B=Math.floor(m/65536),F=m-B*65536,m=j+B+65535,B=Math.floor(m/65536),j=m-B*65536,m=J+B+65535,B=Math.floor(m/65536),J=m-B*65536,m=xe+B+65535,B=Math.floor(m/65536),xe=m-B*65536,m=ue+B+65535,B=Math.floor(m/65536),ue=m-B*65536,m=Pe+B+65535,B=Math.floor(m/65536),Pe=m-B*65536,m=ge+B+65535,B=Math.floor(m/65536),ge=m-B*65536,m=Ne+B+65535,B=Math.floor(m/65536),Ne=m-B*65536,m=Ke+B+65535,B=Math.floor(m/65536),Ke=m-B*65536,m=Ge+B+65535,B=Math.floor(m/65536),Ge=m-B*65536,m=We+B+65535,B=Math.floor(m/65536),We=m-B*65536,m=Ve+B+65535,B=Math.floor(m/65536),Ve=m-B*65536,m=Je+B+65535,B=Math.floor(m/65536),Je=m-B*65536,m=Ye+B+65535,B=Math.floor(m/65536),Ye=m-B*65536,m=we+B+65535,B=Math.floor(m/65536),we=m-B*65536,N+=B-1+37*(B-1),S[0]=N,S[1]=F,S[2]=j,S[3]=J,S[4]=xe,S[5]=ue,S[6]=Pe,S[7]=ge,S[8]=Ne,S[9]=Ke,S[10]=Ge,S[11]=We,S[12]=Ve,S[13]=Je,S[14]=Ye,S[15]=we}function A(S,T){z(S,T,T)}function L(S,T){var E=e(),m;for(m=0;m<16;m++)E[m]=T[m];for(m=253;m>=0;m--)A(E,E),m!==2&&m!==4&&z(E,E,T);for(m=0;m<16;m++)S[m]=E[m]}function W(S,T){var E=e(),m;for(m=0;m<16;m++)E[m]=T[m];for(m=250;m>=0;m--)A(E,E),m!==1&&z(E,E,T);for(m=0;m<16;m++)S[m]=E[m]}function G(S,T,E){var m=new Uint8Array(32),B=new Float64Array(80),N,F,j=e(),J=e(),xe=e(),ue=e(),Pe=e(),ge=e();for(F=0;F<31;F++)m[F]=T[F];for(m[31]=T[31]&127|64,m[0]&=248,M(B,E),F=0;F<16;F++)J[F]=B[F],ue[F]=j[F]=xe[F]=0;for(j[0]=ue[0]=1,F=254;F>=0;--F)N=m[F>>>3]>>>(F&7)&1,g(j,J,N),g(xe,ue,N),v(Pe,j,xe),P(j,j,xe),v(xe,J,ue),P(J,J,ue),A(ue,Pe),A(ge,j),z(j,xe,j),z(xe,J,Pe),v(Pe,j,xe),P(j,j,xe),A(J,j),P(xe,ue,ge),z(j,xe,h),v(j,j,ue),z(xe,xe,j),z(j,ue,ge),z(ue,J,B),A(J,Pe),g(j,J,N),g(xe,ue,N);for(F=0;F<16;F++)B[F+16]=j[F],B[F+32]=xe[F],B[F+48]=J[F],B[F+64]=ue[F];var Ne=B.subarray(32),Ke=B.subarray(16);return L(Ne,Ne),z(Ke,Ke,Ne),d(S,Ke),0}function re(S,T){return G(S,T,i)}function Me(S,T){return t(T,32),re(S,T)}function oe(S,T,E){var m=new Uint8Array(32);return G(m,E,T),Be(S,n,m,Ue)}var ae=l,Mt=s;function fe(S,T,E,m,B,N){var F=new Uint8Array(32);return oe(F,B,N),ae(S,T,E,m,F)}function be(S,T,E,m,B,N){var F=new Uint8Array(32);return oe(F,B,N),Mt(S,T,E,m,F)}var an=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function lt(S,T,E,m){for(var B=new Int32Array(16),N=new Int32Array(16),F,j,J,xe,ue,Pe,ge,Ne,Ke,Ge,We,Ve,Je,Ye,we,Te,ve,Ie,ke,ye,H,V,se,ne,ie,le,tt=S[0],_t=S[1],Et=S[2],kt=S[3],O=S[4],Bt=S[5],zt=S[6],qt=S[7],Tt=T[0],Lt=T[1],Ut=T[2],ur=T[3],Jt=T[4],or=T[5],ar=T[6],sr=T[7],pr=0;m>=128;){for(ke=0;ke<16;ke++)ye=8*ke+pr,B[ke]=E[ye+0]<<24|E[ye+1]<<16|E[ye+2]<<8|E[ye+3],N[ke]=E[ye+4]<<24|E[ye+5]<<16|E[ye+6]<<8|E[ye+7];for(ke=0;ke<80;ke++)if(F=tt,j=_t,J=Et,xe=kt,ue=O,Pe=Bt,ge=zt,Ne=qt,Ke=Tt,Ge=Lt,We=Ut,Ve=ur,Je=Jt,Ye=or,we=ar,Te=sr,H=qt,V=sr,se=V&65535,ne=V>>>16,ie=H&65535,le=H>>>16,H=(O>>>14|Jt<<32-14)^(O>>>18|Jt<<32-18)^(Jt>>>41-32|O<<32-(41-32)),V=(Jt>>>14|O<<32-14)^(Jt>>>18|O<<32-18)^(O>>>41-32|Jt<<32-(41-32)),se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,H=O&Bt^~O&zt,V=Jt&or^~Jt&ar,se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,H=an[ke*2],V=an[ke*2+1],se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,H=B[ke%16],V=N[ke%16],se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,ne+=se>>>16,ie+=ne>>>16,le+=ie>>>16,ve=ie&65535|le<<16,Ie=se&65535|ne<<16,H=ve,V=Ie,se=V&65535,ne=V>>>16,ie=H&65535,le=H>>>16,H=(tt>>>28|Tt<<32-28)^(Tt>>>34-32|tt<<32-(34-32))^(Tt>>>39-32|tt<<32-(39-32)),V=(Tt>>>28|tt<<32-28)^(tt>>>34-32|Tt<<32-(34-32))^(tt>>>39-32|Tt<<32-(39-32)),se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,H=tt&_t^tt&Et^_t&Et,V=Tt&Lt^Tt&Ut^Lt&Ut,se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,ne+=se>>>16,ie+=ne>>>16,le+=ie>>>16,Ne=ie&65535|le<<16,Te=se&65535|ne<<16,H=xe,V=Ve,se=V&65535,ne=V>>>16,ie=H&65535,le=H>>>16,H=ve,V=Ie,se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,ne+=se>>>16,ie+=ne>>>16,le+=ie>>>16,xe=ie&65535|le<<16,Ve=se&65535|ne<<16,_t=F,Et=j,kt=J,O=xe,Bt=ue,zt=Pe,qt=ge,tt=Ne,Lt=Ke,Ut=Ge,ur=We,Jt=Ve,or=Je,ar=Ye,sr=we,Tt=Te,ke%16===15)for(ye=0;ye<16;ye++)H=B[ye],V=N[ye],se=V&65535,ne=V>>>16,ie=H&65535,le=H>>>16,H=B[(ye+9)%16],V=N[(ye+9)%16],se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,ve=B[(ye+1)%16],Ie=N[(ye+1)%16],H=(ve>>>1|Ie<<32-1)^(ve>>>8|Ie<<32-8)^ve>>>7,V=(Ie>>>1|ve<<32-1)^(Ie>>>8|ve<<32-8)^(Ie>>>7|ve<<32-7),se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,ve=B[(ye+14)%16],Ie=N[(ye+14)%16],H=(ve>>>19|Ie<<32-19)^(Ie>>>61-32|ve<<32-(61-32))^ve>>>6,V=(Ie>>>19|ve<<32-19)^(ve>>>61-32|Ie<<32-(61-32))^(Ie>>>6|ve<<32-6),se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,ne+=se>>>16,ie+=ne>>>16,le+=ie>>>16,B[ye]=ie&65535|le<<16,N[ye]=se&65535|ne<<16;H=tt,V=Tt,se=V&65535,ne=V>>>16,ie=H&65535,le=H>>>16,H=S[0],V=T[0],se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,ne+=se>>>16,ie+=ne>>>16,le+=ie>>>16,S[0]=tt=ie&65535|le<<16,T[0]=Tt=se&65535|ne<<16,H=_t,V=Lt,se=V&65535,ne=V>>>16,ie=H&65535,le=H>>>16,H=S[1],V=T[1],se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,ne+=se>>>16,ie+=ne>>>16,le+=ie>>>16,S[1]=_t=ie&65535|le<<16,T[1]=Lt=se&65535|ne<<16,H=Et,V=Ut,se=V&65535,ne=V>>>16,ie=H&65535,le=H>>>16,H=S[2],V=T[2],se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,ne+=se>>>16,ie+=ne>>>16,le+=ie>>>16,S[2]=Et=ie&65535|le<<16,T[2]=Ut=se&65535|ne<<16,H=kt,V=ur,se=V&65535,ne=V>>>16,ie=H&65535,le=H>>>16,H=S[3],V=T[3],se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,ne+=se>>>16,ie+=ne>>>16,le+=ie>>>16,S[3]=kt=ie&65535|le<<16,T[3]=ur=se&65535|ne<<16,H=O,V=Jt,se=V&65535,ne=V>>>16,ie=H&65535,le=H>>>16,H=S[4],V=T[4],se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,ne+=se>>>16,ie+=ne>>>16,le+=ie>>>16,S[4]=O=ie&65535|le<<16,T[4]=Jt=se&65535|ne<<16,H=Bt,V=or,se=V&65535,ne=V>>>16,ie=H&65535,le=H>>>16,H=S[5],V=T[5],se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,ne+=se>>>16,ie+=ne>>>16,le+=ie>>>16,S[5]=Bt=ie&65535|le<<16,T[5]=or=se&65535|ne<<16,H=zt,V=ar,se=V&65535,ne=V>>>16,ie=H&65535,le=H>>>16,H=S[6],V=T[6],se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,ne+=se>>>16,ie+=ne>>>16,le+=ie>>>16,S[6]=zt=ie&65535|le<<16,T[6]=ar=se&65535|ne<<16,H=qt,V=sr,se=V&65535,ne=V>>>16,ie=H&65535,le=H>>>16,H=S[7],V=T[7],se+=V&65535,ne+=V>>>16,ie+=H&65535,le+=H>>>16,ne+=se>>>16,ie+=ne>>>16,le+=ie>>>16,S[7]=qt=ie&65535|le<<16,T[7]=sr=se&65535|ne<<16,pr+=128,m-=128}return m}function $e(S,T,E){var m=new Int32Array(8),B=new Int32Array(8),N=new Uint8Array(256),F,j=E;for(m[0]=1779033703,m[1]=3144134277,m[2]=1013904242,m[3]=2773480762,m[4]=1359893119,m[5]=2600822924,m[6]=528734635,m[7]=1541459225,B[0]=4089235720,B[1]=2227873595,B[2]=4271175723,B[3]=1595750129,B[4]=2917565137,B[5]=725511199,B[6]=4215389547,B[7]=327033209,lt(m,B,T,E),E%=128,F=0;F=0;--B)m=E[B/8|0]>>(B&7)&1,pt(S,T,m),zr(T,S),zr(S,S),pt(S,T,m)}function rt(S,T){var E=[e(),e(),e(),e()];c(E[0],_),c(E[1],k),c(E[2],a),z(E[3],_,k),Yr(S,E,T)}function st(S,T,E){var m=new Uint8Array(64),B=[e(),e(),e(),e()],N;for(E||t(T,32),$e(m,T,32),m[0]&=248,m[31]&=127,m[31]|=64,rt(B,m),at(S,B),N=0;N<32;N++)T[N+32]=S[N];return 0}var qr=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function ct(S,T){var E,m,B,N;for(m=63;m>=32;--m){for(E=0,B=m-32,N=m-12;B>4)*qr[B],E=T[B]>>8,T[B]&=255;for(B=0;B<32;B++)T[B]-=E*qr[B];for(m=0;m<32;m++)T[m+1]+=T[m]>>8,S[m]=T[m]&255}function ft(S){var T=new Float64Array(64),E;for(E=0;E<64;E++)T[E]=S[E];for(E=0;E<64;E++)S[E]=0;ct(S,T)}function sn(S,T,E,m){var B=new Uint8Array(64),N=new Uint8Array(64),F=new Uint8Array(64),j,J,xe=new Float64Array(64),ue=[e(),e(),e(),e()];$e(B,m,32),B[0]&=248,B[31]&=127,B[31]|=64;var Pe=E+64;for(j=0;j>7&&P(S[0],o,S[0]),z(S[3],S[0],S[1]),0)}function ut(S,T,E,m){var B,N=new Uint8Array(32),F=new Uint8Array(64),j=[e(),e(),e(),e()],J=[e(),e(),e(),e()];if(E<64||gt(J,m))return-1;for(B=0;B=0},r.sign.keyPair=function(){var S=new Uint8Array(He),T=new Uint8Array(Ze);return st(S,T),{publicKey:S,secretKey:T}},r.sign.keyPair.fromSecretKey=function(S){if(Oe(S),S.length!==Ze)throw new Error("bad secret key size");for(var T=new Uint8Array(He),E=0;E{"use strict";Ys.byteLength=ny;Ys.toByteArray=oy;Ys.fromByteArray=cy;var Wn=[],mn=[],ry=typeof Uint8Array<"u"?Uint8Array:Array,Jf="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(io=0,Nd=Jf.length;io0)throw new Error("Invalid string. Length must be a multiple of 4");var t=r.indexOf("=");t===-1&&(t=e);var n=t===e?0:4-t%4;return[t,n]}function ny(r){var e=Dd(r),t=e[0],n=e[1];return(t+n)*3/4-n}function iy(r,e,t){return(e+t)*3/4-t}function oy(r){var e,t=Dd(r),n=t[0],i=t[1],o=new ry(iy(r,n,i)),a=0,h=i>0?n-4:n,y;for(y=0;y>16&255,o[a++]=e>>8&255,o[a++]=e&255;return i===2&&(e=mn[r.charCodeAt(y)]<<2|mn[r.charCodeAt(y+1)]>>4,o[a++]=e&255),i===1&&(e=mn[r.charCodeAt(y)]<<10|mn[r.charCodeAt(y+1)]<<4|mn[r.charCodeAt(y+2)]>>2,o[a++]=e>>8&255,o[a++]=e&255),o}function ay(r){return Wn[r>>18&63]+Wn[r>>12&63]+Wn[r>>6&63]+Wn[r&63]}function sy(r,e,t){for(var n,i=[],o=e;oh?h:a+o));return n===1?(e=r[t-1],i.push(Wn[e>>2]+Wn[e<<4&63]+"==")):n===2&&(e=(r[t-2]<<8)+r[t-1],i.push(Wn[e>>10]+Wn[e>>4&63]+Wn[e<<2&63]+"=")),i.join("")}});var eu=Se(Qf=>{Qf.read=function(r,e,t,n,i){var o,a,h=i*8-n-1,y=(1<>1,_=-7,k=t?i-1:0,K=t?-1:1,D=r[e+k];for(k+=K,o=D&(1<<-_)-1,D>>=-_,_+=h;_>0;o=o*256+r[e+k],k+=K,_-=8);for(a=o&(1<<-_)-1,o>>=-_,_+=n;_>0;a=a*256+r[e+k],k+=K,_-=8);if(o===0)o=1-I;else{if(o===y)return a?NaN:(D?-1:1)*(1/0);a=a+Math.pow(2,n),o=o-I}return(D?-1:1)*a*Math.pow(2,o-n)};Qf.write=function(r,e,t,n,i,o){var a,h,y,I=o*8-i-1,_=(1<>1,K=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,D=n?0:o-1,q=n?1:-1,Z=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(h=isNaN(e)?1:0,a=_):(a=Math.floor(Math.log(e)/Math.LN2),e*(y=Math.pow(2,-a))<1&&(a--,y*=2),a+k>=1?e+=K/y:e+=K*Math.pow(2,1-k),e*y>=2&&(a++,y/=2),a+k>=_?(h=0,a=_):a+k>=1?(h=(e*y-1)*Math.pow(2,i),a=a+k):(h=e*Math.pow(2,k-1)*Math.pow(2,i),a=0));i>=8;r[t+D]=h&255,D+=q,h/=256,i-=8);for(a=a<0;r[t+D]=a&255,D+=q,a/=256,I-=8);r[t+D-q]|=Z*128}});var Qd=Se(Ro=>{"use strict";var tu=Xf(),Bo=eu(),Kd=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Ro.Buffer=Q;Ro.SlowBuffer=py;Ro.INSPECT_MAX_BYTES=50;var Zs=2147483647;Ro.kMaxLength=Zs;Q.TYPED_ARRAY_SUPPORT=fy();!Q.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function fy(){try{let r=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(r,e),r.foo()===42}catch{return!1}}Object.defineProperty(Q.prototype,"parent",{enumerable:!0,get:function(){if(!!Q.isBuffer(this))return this.buffer}});Object.defineProperty(Q.prototype,"offset",{enumerable:!0,get:function(){if(!!Q.isBuffer(this))return this.byteOffset}});function pi(r){if(r>Zs)throw new RangeError('The value "'+r+'" is invalid for option "size"');let e=new Uint8Array(r);return Object.setPrototypeOf(e,Q.prototype),e}function Q(r,e,t){if(typeof r=="number"){if(typeof e=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return ou(r)}return zd(r,e,t)}Q.poolSize=8192;function zd(r,e,t){if(typeof r=="string")return hy(r,e);if(ArrayBuffer.isView(r))return dy(r);if(r==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r);if(jn(r,ArrayBuffer)||r&&jn(r.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(jn(r,SharedArrayBuffer)||r&&jn(r.buffer,SharedArrayBuffer)))return nu(r,e,t);if(typeof r=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=r.valueOf&&r.valueOf();if(n!=null&&n!==r)return Q.from(n,e,t);let i=ly(r);if(i)return i;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof r[Symbol.toPrimitive]=="function")return Q.from(r[Symbol.toPrimitive]("string"),e,t);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r)}Q.from=function(r,e,t){return zd(r,e,t)};Object.setPrototypeOf(Q.prototype,Uint8Array.prototype);Object.setPrototypeOf(Q,Uint8Array);function qd(r){if(typeof r!="number")throw new TypeError('"size" argument must be of type number');if(r<0)throw new RangeError('The value "'+r+'" is invalid for option "size"')}function uy(r,e,t){return qd(r),r<=0?pi(r):e!==void 0?typeof t=="string"?pi(r).fill(e,t):pi(r).fill(e):pi(r)}Q.alloc=function(r,e,t){return uy(r,e,t)};function ou(r){return qd(r),pi(r<0?0:au(r)|0)}Q.allocUnsafe=function(r){return ou(r)};Q.allocUnsafeSlow=function(r){return ou(r)};function hy(r,e){if((typeof e!="string"||e==="")&&(e="utf8"),!Q.isEncoding(e))throw new TypeError("Unknown encoding: "+e);let t=Wd(r,e)|0,n=pi(t),i=n.write(r,e);return i!==t&&(n=n.slice(0,i)),n}function ru(r){let e=r.length<0?0:au(r.length)|0,t=pi(e);for(let n=0;n=Zs)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Zs.toString(16)+" bytes");return r|0}function py(r){return+r!=r&&(r=0),Q.alloc(+r)}Q.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==Q.prototype};Q.compare=function(e,t){if(jn(e,Uint8Array)&&(e=Q.from(e,e.offset,e.byteLength)),jn(t,Uint8Array)&&(t=Q.from(t,t.offset,t.byteLength)),!Q.isBuffer(e)||!Q.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let n=e.length,i=t.length;for(let o=0,a=Math.min(n,i);oi.length?(Q.isBuffer(a)||(a=Q.from(a)),a.copy(i,o)):Uint8Array.prototype.set.call(i,a,o);else if(Q.isBuffer(a))a.copy(i,o);else throw new TypeError('"list" argument must be an Array of Buffers');o+=a.length}return i};function Wd(r,e){if(Q.isBuffer(r))return r.length;if(ArrayBuffer.isView(r)||jn(r,ArrayBuffer))return r.byteLength;if(typeof r!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof r);let t=r.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&t===0)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return t;case"utf8":case"utf-8":return iu(r).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return t*2;case"hex":return t>>>1;case"base64":return Xd(r).length;default:if(i)return n?-1:iu(r).length;e=(""+e).toLowerCase(),i=!0}}Q.byteLength=Wd;function by(r,e,t){let n=!1;if((e===void 0||e<0)&&(e=0),e>this.length||((t===void 0||t>this.length)&&(t=this.length),t<=0)||(t>>>=0,e>>>=0,t<=e))return"";for(r||(r="utf8");;)switch(r){case"hex":return _y(this,e,t);case"utf8":case"utf-8":return Gd(this,e,t);case"ascii":return Ay(this,e,t);case"latin1":case"binary":return Sy(this,e,t);case"base64":return wy(this,e,t);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ky(this,e,t);default:if(n)throw new TypeError("Unknown encoding: "+r);r=(r+"").toLowerCase(),n=!0}}Q.prototype._isBuffer=!0;function oo(r,e,t){let n=r[e];r[e]=r[t],r[t]=n}Q.prototype.swap16=function(){let e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tt&&(e+=" ... "),""};Kd&&(Q.prototype[Kd]=Q.prototype.inspect);Q.prototype.compare=function(e,t,n,i,o){if(jn(e,Uint8Array)&&(e=Q.from(e,e.offset,e.byteLength)),!Q.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(t===void 0&&(t=0),n===void 0&&(n=e?e.length:0),i===void 0&&(i=0),o===void 0&&(o=this.length),t<0||n>e.length||i<0||o>this.length)throw new RangeError("out of range index");if(i>=o&&t>=n)return 0;if(i>=o)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,i>>>=0,o>>>=0,this===e)return 0;let a=o-i,h=n-t,y=Math.min(a,h),I=this.slice(i,o),_=e.slice(t,n);for(let k=0;k2147483647?t=2147483647:t<-2147483648&&(t=-2147483648),t=+t,cu(t)&&(t=i?0:r.length-1),t<0&&(t=r.length+t),t>=r.length){if(i)return-1;t=r.length-1}else if(t<0)if(i)t=0;else return-1;if(typeof e=="string"&&(e=Q.from(e,n)),Q.isBuffer(e))return e.length===0?-1:Ld(r,e,t,n,i);if(typeof e=="number")return e=e&255,typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(r,e,t):Uint8Array.prototype.lastIndexOf.call(r,e,t):Ld(r,[e],t,n,i);throw new TypeError("val must be string, number or Buffer")}function Ld(r,e,t,n,i){let o=1,a=r.length,h=e.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(r.length<2||e.length<2)return-1;o=2,a/=2,h/=2,t/=2}function y(_,k){return o===1?_[k]:_.readUInt16BE(k*o)}let I;if(i){let _=-1;for(I=t;Ia&&(t=a-h),I=t;I>=0;I--){let _=!0;for(let k=0;ki&&(n=i)):n=i;let o=e.length;n>o/2&&(n=o/2);let a;for(a=0;a>>0,isFinite(n)?(n=n>>>0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let o=this.length-t;if((n===void 0||n>o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let a=!1;for(;;)switch(i){case"hex":return my(this,e,t,n);case"utf8":case"utf-8":return yy(this,e,t,n);case"ascii":case"latin1":case"binary":return gy(this,e,t,n);case"base64":return vy(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return xy(this,e,t,n);default:if(a)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),a=!0}};Q.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function wy(r,e,t){return e===0&&t===r.length?tu.fromByteArray(r):tu.fromByteArray(r.slice(e,t))}function Gd(r,e,t){t=Math.min(r.length,t);let n=[],i=e;for(;i239?4:o>223?3:o>191?2:1;if(i+h<=t){let y,I,_,k;switch(h){case 1:o<128&&(a=o);break;case 2:y=r[i+1],(y&192)===128&&(k=(o&31)<<6|y&63,k>127&&(a=k));break;case 3:y=r[i+1],I=r[i+2],(y&192)===128&&(I&192)===128&&(k=(o&15)<<12|(y&63)<<6|I&63,k>2047&&(k<55296||k>57343)&&(a=k));break;case 4:y=r[i+1],I=r[i+2],_=r[i+3],(y&192)===128&&(I&192)===128&&(_&192)===128&&(k=(o&15)<<18|(y&63)<<12|(I&63)<<6|_&63,k>65535&&k<1114112&&(a=k))}}a===null?(a=65533,h=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|a&1023),n.push(a),i+=h}return Iy(n)}var Ud=4096;function Iy(r){let e=r.length;if(e<=Ud)return String.fromCharCode.apply(String,r);let t="",n=0;for(;nn)&&(t=n);let i="";for(let o=e;on&&(e=n),t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),tt)throw new RangeError("Trying to access beyond buffer length")}Q.prototype.readUintLE=Q.prototype.readUIntLE=function(e,t,n){e=e>>>0,t=t>>>0,n||mr(e,t,this.length);let i=this[e],o=1,a=0;for(;++a>>0,t=t>>>0,n||mr(e,t,this.length);let i=this[e+--t],o=1;for(;t>0&&(o*=256);)i+=this[e+--t]*o;return i};Q.prototype.readUint8=Q.prototype.readUInt8=function(e,t){return e=e>>>0,t||mr(e,1,this.length),this[e]};Q.prototype.readUint16LE=Q.prototype.readUInt16LE=function(e,t){return e=e>>>0,t||mr(e,2,this.length),this[e]|this[e+1]<<8};Q.prototype.readUint16BE=Q.prototype.readUInt16BE=function(e,t){return e=e>>>0,t||mr(e,2,this.length),this[e]<<8|this[e+1]};Q.prototype.readUint32LE=Q.prototype.readUInt32LE=function(e,t){return e=e>>>0,t||mr(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};Q.prototype.readUint32BE=Q.prototype.readUInt32BE=function(e,t){return e=e>>>0,t||mr(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};Q.prototype.readBigUInt64LE=Bi(function(e){e=e>>>0,Po(e,"offset");let t=this[e],n=this[e+7];(t===void 0||n===void 0)&&wa(e,this.length-8);let i=t+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24,o=this[++e]+this[++e]*2**8+this[++e]*2**16+n*2**24;return BigInt(i)+(BigInt(o)<>>0,Po(e,"offset");let t=this[e],n=this[e+7];(t===void 0||n===void 0)&&wa(e,this.length-8);let i=t*2**24+this[++e]*2**16+this[++e]*2**8+this[++e],o=this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+n;return(BigInt(i)<>>0,t=t>>>0,n||mr(e,t,this.length);let i=this[e],o=1,a=0;for(;++a=o&&(i-=Math.pow(2,8*t)),i};Q.prototype.readIntBE=function(e,t,n){e=e>>>0,t=t>>>0,n||mr(e,t,this.length);let i=t,o=1,a=this[e+--i];for(;i>0&&(o*=256);)a+=this[e+--i]*o;return o*=128,a>=o&&(a-=Math.pow(2,8*t)),a};Q.prototype.readInt8=function(e,t){return e=e>>>0,t||mr(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]};Q.prototype.readInt16LE=function(e,t){e=e>>>0,t||mr(e,2,this.length);let n=this[e]|this[e+1]<<8;return n&32768?n|4294901760:n};Q.prototype.readInt16BE=function(e,t){e=e>>>0,t||mr(e,2,this.length);let n=this[e+1]|this[e]<<8;return n&32768?n|4294901760:n};Q.prototype.readInt32LE=function(e,t){return e=e>>>0,t||mr(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};Q.prototype.readInt32BE=function(e,t){return e=e>>>0,t||mr(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};Q.prototype.readBigInt64LE=Bi(function(e){e=e>>>0,Po(e,"offset");let t=this[e],n=this[e+7];(t===void 0||n===void 0)&&wa(e,this.length-8);let i=this[e+4]+this[e+5]*2**8+this[e+6]*2**16+(n<<24);return(BigInt(i)<>>0,Po(e,"offset");let t=this[e],n=this[e+7];(t===void 0||n===void 0)&&wa(e,this.length-8);let i=(t<<24)+this[++e]*2**16+this[++e]*2**8+this[++e];return(BigInt(i)<>>0,t||mr(e,4,this.length),Bo.read(this,e,!0,23,4)};Q.prototype.readFloatBE=function(e,t){return e=e>>>0,t||mr(e,4,this.length),Bo.read(this,e,!1,23,4)};Q.prototype.readDoubleLE=function(e,t){return e=e>>>0,t||mr(e,8,this.length),Bo.read(this,e,!0,52,8)};Q.prototype.readDoubleBE=function(e,t){return e=e>>>0,t||mr(e,8,this.length),Bo.read(this,e,!1,52,8)};function Xr(r,e,t,n,i,o){if(!Q.isBuffer(r))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||er.length)throw new RangeError("Index out of range")}Q.prototype.writeUintLE=Q.prototype.writeUIntLE=function(e,t,n,i){if(e=+e,t=t>>>0,n=n>>>0,!i){let h=Math.pow(2,8*n)-1;Xr(this,e,t,n,h,0)}let o=1,a=0;for(this[t]=e&255;++a>>0,n=n>>>0,!i){let h=Math.pow(2,8*n)-1;Xr(this,e,t,n,h,0)}let o=n-1,a=1;for(this[t+o]=e&255;--o>=0&&(a*=256);)this[t+o]=e/a&255;return t+n};Q.prototype.writeUint8=Q.prototype.writeUInt8=function(e,t,n){return e=+e,t=t>>>0,n||Xr(this,e,t,1,255,0),this[t]=e&255,t+1};Q.prototype.writeUint16LE=Q.prototype.writeUInt16LE=function(e,t,n){return e=+e,t=t>>>0,n||Xr(this,e,t,2,65535,0),this[t]=e&255,this[t+1]=e>>>8,t+2};Q.prototype.writeUint16BE=Q.prototype.writeUInt16BE=function(e,t,n){return e=+e,t=t>>>0,n||Xr(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=e&255,t+2};Q.prototype.writeUint32LE=Q.prototype.writeUInt32LE=function(e,t,n){return e=+e,t=t>>>0,n||Xr(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=e&255,t+4};Q.prototype.writeUint32BE=Q.prototype.writeUInt32BE=function(e,t,n){return e=+e,t=t>>>0,n||Xr(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4};function $d(r,e,t,n,i){Jd(e,n,i,r,t,7);let o=Number(e&BigInt(4294967295));r[t++]=o,o=o>>8,r[t++]=o,o=o>>8,r[t++]=o,o=o>>8,r[t++]=o;let a=Number(e>>BigInt(32)&BigInt(4294967295));return r[t++]=a,a=a>>8,r[t++]=a,a=a>>8,r[t++]=a,a=a>>8,r[t++]=a,t}function Hd(r,e,t,n,i){Jd(e,n,i,r,t,7);let o=Number(e&BigInt(4294967295));r[t+7]=o,o=o>>8,r[t+6]=o,o=o>>8,r[t+5]=o,o=o>>8,r[t+4]=o;let a=Number(e>>BigInt(32)&BigInt(4294967295));return r[t+3]=a,a=a>>8,r[t+2]=a,a=a>>8,r[t+1]=a,a=a>>8,r[t]=a,t+8}Q.prototype.writeBigUInt64LE=Bi(function(e,t=0){return $d(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))});Q.prototype.writeBigUInt64BE=Bi(function(e,t=0){return Hd(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))});Q.prototype.writeIntLE=function(e,t,n,i){if(e=+e,t=t>>>0,!i){let y=Math.pow(2,8*n-1);Xr(this,e,t,n,y-1,-y)}let o=0,a=1,h=0;for(this[t]=e&255;++o>0)-h&255;return t+n};Q.prototype.writeIntBE=function(e,t,n,i){if(e=+e,t=t>>>0,!i){let y=Math.pow(2,8*n-1);Xr(this,e,t,n,y-1,-y)}let o=n-1,a=1,h=0;for(this[t+o]=e&255;--o>=0&&(a*=256);)e<0&&h===0&&this[t+o+1]!==0&&(h=1),this[t+o]=(e/a>>0)-h&255;return t+n};Q.prototype.writeInt8=function(e,t,n){return e=+e,t=t>>>0,n||Xr(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=e&255,t+1};Q.prototype.writeInt16LE=function(e,t,n){return e=+e,t=t>>>0,n||Xr(this,e,t,2,32767,-32768),this[t]=e&255,this[t+1]=e>>>8,t+2};Q.prototype.writeInt16BE=function(e,t,n){return e=+e,t=t>>>0,n||Xr(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=e&255,t+2};Q.prototype.writeInt32LE=function(e,t,n){return e=+e,t=t>>>0,n||Xr(this,e,t,4,2147483647,-2147483648),this[t]=e&255,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4};Q.prototype.writeInt32BE=function(e,t,n){return e=+e,t=t>>>0,n||Xr(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4};Q.prototype.writeBigInt64LE=Bi(function(e,t=0){return $d(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});Q.prototype.writeBigInt64BE=Bi(function(e,t=0){return Hd(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Vd(r,e,t,n,i,o){if(t+n>r.length)throw new RangeError("Index out of range");if(t<0)throw new RangeError("Index out of range")}function Yd(r,e,t,n,i){return e=+e,t=t>>>0,i||Vd(r,e,t,4,34028234663852886e22,-34028234663852886e22),Bo.write(r,e,t,n,23,4),t+4}Q.prototype.writeFloatLE=function(e,t,n){return Yd(this,e,t,!0,n)};Q.prototype.writeFloatBE=function(e,t,n){return Yd(this,e,t,!1,n)};function Zd(r,e,t,n,i){return e=+e,t=t>>>0,i||Vd(r,e,t,8,17976931348623157e292,-17976931348623157e292),Bo.write(r,e,t,n,52,8),t+8}Q.prototype.writeDoubleLE=function(e,t,n){return Zd(this,e,t,!0,n)};Q.prototype.writeDoubleBE=function(e,t,n){return Zd(this,e,t,!1,n)};Q.prototype.copy=function(e,t,n,i){if(!Q.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),!i&&i!==0&&(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t>>0,n=n===void 0?this.length:n>>>0,e||(e=0);let o;if(typeof e=="number")for(o=t;o2**32?i=Fd(String(t)):typeof t=="bigint"&&(i=String(t),(t>BigInt(2)**BigInt(32)||t<-(BigInt(2)**BigInt(32)))&&(i=Fd(i)),i+="n"),n+=` It must be ${e}. Received ${i}`,n},RangeError);function Fd(r){let e="",t=r.length,n=r[0]==="-"?1:0;for(;t>=n+4;t-=3)e=`_${r.slice(t-3,t)}${e}`;return`${r.slice(0,t)}${e}`}function My(r,e,t){Po(e,"offset"),(r[e]===void 0||r[e+t]===void 0)&&wa(e,r.length-(t+1))}function Jd(r,e,t,n,i,o){if(r>t||r3?e===0||e===BigInt(0)?h=`>= 0${a} and < 2${a} ** ${(o+1)*8}${a}`:h=`>= -(2${a} ** ${(o+1)*8-1}${a}) and < 2 ** ${(o+1)*8-1}${a}`:h=`>= ${e}${a} and <= ${t}${a}`,new To.ERR_OUT_OF_RANGE("value",h,r)}My(n,i,o)}function Po(r,e){if(typeof r!="number")throw new To.ERR_INVALID_ARG_TYPE(e,"number",r)}function wa(r,e,t){throw Math.floor(r)!==r?(Po(r,t),new To.ERR_OUT_OF_RANGE(t||"offset","an integer",r)):e<0?new To.ERR_BUFFER_OUT_OF_BOUNDS:new To.ERR_OUT_OF_RANGE(t||"offset",`>= ${t?1:0} and <= ${e}`,r)}var Ey=/[^+/0-9A-Za-z-_]/g;function Ty(r){if(r=r.split("=")[0],r=r.trim().replace(Ey,""),r.length<2)return"";for(;r.length%4!==0;)r=r+"=";return r}function iu(r,e){e=e||1/0;let t,n=r.length,i=null,o=[];for(let a=0;a55295&&t<57344){if(!i){if(t>56319){(e-=3)>-1&&o.push(239,191,189);continue}else if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=t;continue}if(t<56320){(e-=3)>-1&&o.push(239,191,189),i=t;continue}t=(i-55296<<10|t-56320)+65536}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,t<128){if((e-=1)<0)break;o.push(t)}else if(t<2048){if((e-=2)<0)break;o.push(t>>6|192,t&63|128)}else if(t<65536){if((e-=3)<0)break;o.push(t>>12|224,t>>6&63|128,t&63|128)}else if(t<1114112){if((e-=4)<0)break;o.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128)}else throw new Error("Invalid code point")}return o}function By(r){let e=[];for(let t=0;t>8,i=t%256,o.push(i),o.push(n);return o}function Xd(r){return tu.toByteArray(Ty(r))}function Js(r,e,t,n){let i;for(i=0;i=e.length||i>=r.length);++i)e[i+t]=r[i];return i}function jn(r,e){return r instanceof e||r!=null&&r.constructor!=null&&r.constructor.name!=null&&r.constructor.name===e.name}function cu(r){return r!==r}var Ry=function(){let r="0123456789abcdef",e=new Array(256);for(let t=0;t<16;++t){let n=t*16;for(let i=0;i<16;++i)e[n+i]=r[t]+r[i]}return e}();function Bi(r){return typeof BigInt>"u"?Cy:r}function Cy(){throw new Error("BigInt not supported")}});var fu=Se(()=>{});var hu=Se((el,uu)=>{(function(r,e){"use strict";function t(l,s){if(!l)throw new Error(s||"Assertion failed")}function n(l,s){l.super_=s;var c=function(){};c.prototype=s.prototype,l.prototype=new c,l.prototype.constructor=l}function i(l,s,c){if(i.isBN(l))return l;this.negative=0,this.words=null,this.length=0,this.red=null,l!==null&&((s==="le"||s==="be")&&(c=s,s=10),this._init(l||0,s||10,c||"be"))}typeof r=="object"?r.exports=i:e.BN=i,i.BN=i,i.wordSize=26;var o;try{typeof window<"u"&&typeof window.Buffer<"u"?o=window.Buffer:o=fu().Buffer}catch{}i.isBN=function(s){return s instanceof i?!0:s!==null&&typeof s=="object"&&s.constructor.wordSize===i.wordSize&&Array.isArray(s.words)},i.max=function(s,c){return s.cmp(c)>0?s:c},i.min=function(s,c){return s.cmp(c)<0?s:c},i.prototype._init=function(s,c,p){if(typeof s=="number")return this._initNumber(s,c,p);if(typeof s=="object")return this._initArray(s,c,p);c==="hex"&&(c=16),t(c===(c|0)&&c>=2&&c<=36),s=s.toString().replace(/\s+/g,"");var g=0;s[0]==="-"&&(g++,this.negative=1),g=0;g-=3)u=s[g]|s[g-1]<<8|s[g-2]<<16,this.words[d]|=u<>>26-w&67108863,w+=24,w>=26&&(w-=26,d++);else if(p==="le")for(g=0,d=0;g>>26-w&67108863,w+=24,w>=26&&(w-=26,d++);return this._strip()};function a(l,s){var c=l.charCodeAt(s);if(c>=48&&c<=57)return c-48;if(c>=65&&c<=70)return c-55;if(c>=97&&c<=102)return c-87;t(!1,"Invalid character in "+l)}function h(l,s,c){var p=a(l,c);return c-1>=s&&(p|=a(l,c-1)<<4),p}i.prototype._parseHex=function(s,c,p){this.length=Math.ceil((s.length-c)/6),this.words=new Array(this.length);for(var g=0;g=c;g-=2)w=h(s,c,g)<=18?(d-=18,u+=1,this.words[u]|=w>>>26):d+=8;else{var M=s.length-c;for(g=M%2===0?c+1:c;g=18?(d-=18,u+=1,this.words[u]|=w>>>26):d+=8}this._strip()};function y(l,s,c,p){for(var g=0,d=0,u=Math.min(l.length,c),w=s;w=49?d=M-49+10:M>=17?d=M-17+10:d=M,t(M>=0&&d1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},i.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{i.prototype[Symbol.for("nodejs.util.inspect.custom")]=_}catch{i.prototype.inspect=_}else i.prototype.inspect=_;function _(){return(this.red?""}var k=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],K=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],D=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(s,c){s=s||10,c=c|0||1;var p;if(s===16||s==="hex"){p="";for(var g=0,d=0,u=0;u>>24-g&16777215,g+=2,g>=26&&(g-=26,u--),d!==0||u!==this.length-1?p=k[6-M.length]+M+p:p=M+p}for(d!==0&&(p=d.toString(16)+p);p.length%c!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}if(s===(s|0)&&s>=2&&s<=36){var v=K[s],P=D[s];p="";var z=this.clone();for(z.negative=0;!z.isZero();){var A=z.modrn(P).toString(s);z=z.idivn(P),z.isZero()?p=A+p:p=k[v-A.length]+A+p}for(this.isZero()&&(p="0"+p);p.length%c!==0;)p="0"+p;return this.negative!==0&&(p="-"+p),p}t(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var s=this.words[0];return this.length===2?s+=this.words[1]*67108864:this.length===3&&this.words[2]===1?s+=4503599627370496+this.words[1]*67108864:this.length>2&&t(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-s:s},i.prototype.toJSON=function(){return this.toString(16,2)},o&&(i.prototype.toBuffer=function(s,c){return this.toArrayLike(o,s,c)}),i.prototype.toArray=function(s,c){return this.toArrayLike(Array,s,c)};var q=function(s,c){return s.allocUnsafe?s.allocUnsafe(c):new s(c)};i.prototype.toArrayLike=function(s,c,p){this._strip();var g=this.byteLength(),d=p||Math.max(1,g);t(g<=d,"byte array longer than desired length"),t(d>0,"Requested array length <= 0");var u=q(s,d),w=c==="le"?"LE":"BE";return this["_toArrayLike"+w](u,g),u},i.prototype._toArrayLikeLE=function(s,c){for(var p=0,g=0,d=0,u=0;d>8&255),p>16&255),u===6?(p>24&255),g=0,u=0):(g=w>>>24,u+=2)}if(p=0&&(s[p--]=w>>8&255),p>=0&&(s[p--]=w>>16&255),u===6?(p>=0&&(s[p--]=w>>24&255),g=0,u=0):(g=w>>>24,u+=2)}if(p>=0)for(s[p--]=g;p>=0;)s[p--]=0},Math.clz32?i.prototype._countBits=function(s){return 32-Math.clz32(s)}:i.prototype._countBits=function(s){var c=s,p=0;return c>=4096&&(p+=13,c>>>=13),c>=64&&(p+=7,c>>>=7),c>=8&&(p+=4,c>>>=4),c>=2&&(p+=2,c>>>=2),p+c},i.prototype._zeroBits=function(s){if(s===0)return 26;var c=s,p=0;return(c&8191)===0&&(p+=13,c>>>=13),(c&127)===0&&(p+=7,c>>>=7),(c&15)===0&&(p+=4,c>>>=4),(c&3)===0&&(p+=2,c>>>=2),(c&1)===0&&p++,p},i.prototype.bitLength=function(){var s=this.words[this.length-1],c=this._countBits(s);return(this.length-1)*26+c};function Z(l){for(var s=new Array(l.bitLength()),c=0;c>>g&1}return s}i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var s=0,c=0;cs.length?this.clone().ior(s):s.clone().ior(this)},i.prototype.uor=function(s){return this.length>s.length?this.clone().iuor(s):s.clone().iuor(this)},i.prototype.iuand=function(s){var c;this.length>s.length?c=s:c=this;for(var p=0;ps.length?this.clone().iand(s):s.clone().iand(this)},i.prototype.uand=function(s){return this.length>s.length?this.clone().iuand(s):s.clone().iuand(this)},i.prototype.iuxor=function(s){var c,p;this.length>s.length?(c=this,p=s):(c=s,p=this);for(var g=0;gs.length?this.clone().ixor(s):s.clone().ixor(this)},i.prototype.uxor=function(s){return this.length>s.length?this.clone().iuxor(s):s.clone().iuxor(this)},i.prototype.inotn=function(s){t(typeof s=="number"&&s>=0);var c=Math.ceil(s/26)|0,p=s%26;this._expand(c),p>0&&c--;for(var g=0;g0&&(this.words[g]=~this.words[g]&67108863>>26-p),this._strip()},i.prototype.notn=function(s){return this.clone().inotn(s)},i.prototype.setn=function(s,c){t(typeof s=="number"&&s>=0);var p=s/26|0,g=s%26;return this._expand(p+1),c?this.words[p]=this.words[p]|1<s.length?(p=this,g=s):(p=s,g=this);for(var d=0,u=0;u>>26;for(;d!==0&&u>>26;if(this.length=p.length,d!==0)this.words[this.length]=d,this.length++;else if(p!==this)for(;us.length?this.clone().iadd(s):s.clone().iadd(this)},i.prototype.isub=function(s){if(s.negative!==0){s.negative=0;var c=this.iadd(s);return s.negative=1,c._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(s),this.negative=1,this._normSign();var p=this.cmp(s);if(p===0)return this.negative=0,this.length=1,this.words[0]=0,this;var g,d;p>0?(g=this,d=s):(g=s,d=this);for(var u=0,w=0;w>26,this.words[w]=c&67108863;for(;u!==0&&w>26,this.words[w]=c&67108863;if(u===0&&w>>26,z=M&67108863,A=Math.min(v,s.length-1),L=Math.max(0,v-l.length+1);L<=A;L++){var W=v-L|0;g=l.words[W]|0,d=s.words[L]|0,u=g*d+z,P+=u/67108864|0,z=u&67108863}c.words[v]=z|0,M=P|0}return M!==0?c.words[v]=M|0:c.length--,c._strip()}var ce=function(s,c,p){var g=s.words,d=c.words,u=p.words,w=0,M,v,P,z=g[0]|0,A=z&8191,L=z>>>13,W=g[1]|0,G=W&8191,re=W>>>13,Me=g[2]|0,oe=Me&8191,ae=Me>>>13,Mt=g[3]|0,fe=Mt&8191,be=Mt>>>13,an=g[4]|0,lt=an&8191,$e=an>>>13,zr=g[5]|0,pt=zr&8191,at=zr>>>13,Yr=g[6]|0,rt=Yr&8191,st=Yr>>>13,qr=g[7]|0,ct=qr&8191,ft=qr>>>13,sn=g[8]|0,gt=sn&8191,ut=sn>>>13,Zr=g[9]|0,nt=Zr&8191,Xe=Zr>>>13,Ar=d[0]|0,Qe=Ar&8191,it=Ar>>>13,Tr=d[1]|0,et=Tr&8191,ht=Tr>>>13,cn=d[2]|0,vt=cn&8191,xt=cn>>>13,hr=d[3]|0,He=hr&8191,Ze=hr>>>13,Jr=d[4]|0,dt=Jr&8191,bt=Jr>>>13,bn=d[5]|0,Oe=bn&8191,mt=bn>>>13,S=d[6]|0,T=S&8191,E=S>>>13,m=d[7]|0,B=m&8191,N=m>>>13,F=d[8]|0,j=F&8191,J=F>>>13,xe=d[9]|0,ue=xe&8191,Pe=xe>>>13;p.negative=s.negative^c.negative,p.length=19,M=Math.imul(A,Qe),v=Math.imul(A,it),v=v+Math.imul(L,Qe)|0,P=Math.imul(L,it);var ge=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(ge>>>26)|0,ge&=67108863,M=Math.imul(G,Qe),v=Math.imul(G,it),v=v+Math.imul(re,Qe)|0,P=Math.imul(re,it),M=M+Math.imul(A,et)|0,v=v+Math.imul(A,ht)|0,v=v+Math.imul(L,et)|0,P=P+Math.imul(L,ht)|0;var Ne=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,M=Math.imul(oe,Qe),v=Math.imul(oe,it),v=v+Math.imul(ae,Qe)|0,P=Math.imul(ae,it),M=M+Math.imul(G,et)|0,v=v+Math.imul(G,ht)|0,v=v+Math.imul(re,et)|0,P=P+Math.imul(re,ht)|0,M=M+Math.imul(A,vt)|0,v=v+Math.imul(A,xt)|0,v=v+Math.imul(L,vt)|0,P=P+Math.imul(L,xt)|0;var Ke=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(Ke>>>26)|0,Ke&=67108863,M=Math.imul(fe,Qe),v=Math.imul(fe,it),v=v+Math.imul(be,Qe)|0,P=Math.imul(be,it),M=M+Math.imul(oe,et)|0,v=v+Math.imul(oe,ht)|0,v=v+Math.imul(ae,et)|0,P=P+Math.imul(ae,ht)|0,M=M+Math.imul(G,vt)|0,v=v+Math.imul(G,xt)|0,v=v+Math.imul(re,vt)|0,P=P+Math.imul(re,xt)|0,M=M+Math.imul(A,He)|0,v=v+Math.imul(A,Ze)|0,v=v+Math.imul(L,He)|0,P=P+Math.imul(L,Ze)|0;var Ge=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(Ge>>>26)|0,Ge&=67108863,M=Math.imul(lt,Qe),v=Math.imul(lt,it),v=v+Math.imul($e,Qe)|0,P=Math.imul($e,it),M=M+Math.imul(fe,et)|0,v=v+Math.imul(fe,ht)|0,v=v+Math.imul(be,et)|0,P=P+Math.imul(be,ht)|0,M=M+Math.imul(oe,vt)|0,v=v+Math.imul(oe,xt)|0,v=v+Math.imul(ae,vt)|0,P=P+Math.imul(ae,xt)|0,M=M+Math.imul(G,He)|0,v=v+Math.imul(G,Ze)|0,v=v+Math.imul(re,He)|0,P=P+Math.imul(re,Ze)|0,M=M+Math.imul(A,dt)|0,v=v+Math.imul(A,bt)|0,v=v+Math.imul(L,dt)|0,P=P+Math.imul(L,bt)|0;var We=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(We>>>26)|0,We&=67108863,M=Math.imul(pt,Qe),v=Math.imul(pt,it),v=v+Math.imul(at,Qe)|0,P=Math.imul(at,it),M=M+Math.imul(lt,et)|0,v=v+Math.imul(lt,ht)|0,v=v+Math.imul($e,et)|0,P=P+Math.imul($e,ht)|0,M=M+Math.imul(fe,vt)|0,v=v+Math.imul(fe,xt)|0,v=v+Math.imul(be,vt)|0,P=P+Math.imul(be,xt)|0,M=M+Math.imul(oe,He)|0,v=v+Math.imul(oe,Ze)|0,v=v+Math.imul(ae,He)|0,P=P+Math.imul(ae,Ze)|0,M=M+Math.imul(G,dt)|0,v=v+Math.imul(G,bt)|0,v=v+Math.imul(re,dt)|0,P=P+Math.imul(re,bt)|0,M=M+Math.imul(A,Oe)|0,v=v+Math.imul(A,mt)|0,v=v+Math.imul(L,Oe)|0,P=P+Math.imul(L,mt)|0;var Ve=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,M=Math.imul(rt,Qe),v=Math.imul(rt,it),v=v+Math.imul(st,Qe)|0,P=Math.imul(st,it),M=M+Math.imul(pt,et)|0,v=v+Math.imul(pt,ht)|0,v=v+Math.imul(at,et)|0,P=P+Math.imul(at,ht)|0,M=M+Math.imul(lt,vt)|0,v=v+Math.imul(lt,xt)|0,v=v+Math.imul($e,vt)|0,P=P+Math.imul($e,xt)|0,M=M+Math.imul(fe,He)|0,v=v+Math.imul(fe,Ze)|0,v=v+Math.imul(be,He)|0,P=P+Math.imul(be,Ze)|0,M=M+Math.imul(oe,dt)|0,v=v+Math.imul(oe,bt)|0,v=v+Math.imul(ae,dt)|0,P=P+Math.imul(ae,bt)|0,M=M+Math.imul(G,Oe)|0,v=v+Math.imul(G,mt)|0,v=v+Math.imul(re,Oe)|0,P=P+Math.imul(re,mt)|0,M=M+Math.imul(A,T)|0,v=v+Math.imul(A,E)|0,v=v+Math.imul(L,T)|0,P=P+Math.imul(L,E)|0;var Je=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(Je>>>26)|0,Je&=67108863,M=Math.imul(ct,Qe),v=Math.imul(ct,it),v=v+Math.imul(ft,Qe)|0,P=Math.imul(ft,it),M=M+Math.imul(rt,et)|0,v=v+Math.imul(rt,ht)|0,v=v+Math.imul(st,et)|0,P=P+Math.imul(st,ht)|0,M=M+Math.imul(pt,vt)|0,v=v+Math.imul(pt,xt)|0,v=v+Math.imul(at,vt)|0,P=P+Math.imul(at,xt)|0,M=M+Math.imul(lt,He)|0,v=v+Math.imul(lt,Ze)|0,v=v+Math.imul($e,He)|0,P=P+Math.imul($e,Ze)|0,M=M+Math.imul(fe,dt)|0,v=v+Math.imul(fe,bt)|0,v=v+Math.imul(be,dt)|0,P=P+Math.imul(be,bt)|0,M=M+Math.imul(oe,Oe)|0,v=v+Math.imul(oe,mt)|0,v=v+Math.imul(ae,Oe)|0,P=P+Math.imul(ae,mt)|0,M=M+Math.imul(G,T)|0,v=v+Math.imul(G,E)|0,v=v+Math.imul(re,T)|0,P=P+Math.imul(re,E)|0,M=M+Math.imul(A,B)|0,v=v+Math.imul(A,N)|0,v=v+Math.imul(L,B)|0,P=P+Math.imul(L,N)|0;var Ye=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,M=Math.imul(gt,Qe),v=Math.imul(gt,it),v=v+Math.imul(ut,Qe)|0,P=Math.imul(ut,it),M=M+Math.imul(ct,et)|0,v=v+Math.imul(ct,ht)|0,v=v+Math.imul(ft,et)|0,P=P+Math.imul(ft,ht)|0,M=M+Math.imul(rt,vt)|0,v=v+Math.imul(rt,xt)|0,v=v+Math.imul(st,vt)|0,P=P+Math.imul(st,xt)|0,M=M+Math.imul(pt,He)|0,v=v+Math.imul(pt,Ze)|0,v=v+Math.imul(at,He)|0,P=P+Math.imul(at,Ze)|0,M=M+Math.imul(lt,dt)|0,v=v+Math.imul(lt,bt)|0,v=v+Math.imul($e,dt)|0,P=P+Math.imul($e,bt)|0,M=M+Math.imul(fe,Oe)|0,v=v+Math.imul(fe,mt)|0,v=v+Math.imul(be,Oe)|0,P=P+Math.imul(be,mt)|0,M=M+Math.imul(oe,T)|0,v=v+Math.imul(oe,E)|0,v=v+Math.imul(ae,T)|0,P=P+Math.imul(ae,E)|0,M=M+Math.imul(G,B)|0,v=v+Math.imul(G,N)|0,v=v+Math.imul(re,B)|0,P=P+Math.imul(re,N)|0,M=M+Math.imul(A,j)|0,v=v+Math.imul(A,J)|0,v=v+Math.imul(L,j)|0,P=P+Math.imul(L,J)|0;var we=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(we>>>26)|0,we&=67108863,M=Math.imul(nt,Qe),v=Math.imul(nt,it),v=v+Math.imul(Xe,Qe)|0,P=Math.imul(Xe,it),M=M+Math.imul(gt,et)|0,v=v+Math.imul(gt,ht)|0,v=v+Math.imul(ut,et)|0,P=P+Math.imul(ut,ht)|0,M=M+Math.imul(ct,vt)|0,v=v+Math.imul(ct,xt)|0,v=v+Math.imul(ft,vt)|0,P=P+Math.imul(ft,xt)|0,M=M+Math.imul(rt,He)|0,v=v+Math.imul(rt,Ze)|0,v=v+Math.imul(st,He)|0,P=P+Math.imul(st,Ze)|0,M=M+Math.imul(pt,dt)|0,v=v+Math.imul(pt,bt)|0,v=v+Math.imul(at,dt)|0,P=P+Math.imul(at,bt)|0,M=M+Math.imul(lt,Oe)|0,v=v+Math.imul(lt,mt)|0,v=v+Math.imul($e,Oe)|0,P=P+Math.imul($e,mt)|0,M=M+Math.imul(fe,T)|0,v=v+Math.imul(fe,E)|0,v=v+Math.imul(be,T)|0,P=P+Math.imul(be,E)|0,M=M+Math.imul(oe,B)|0,v=v+Math.imul(oe,N)|0,v=v+Math.imul(ae,B)|0,P=P+Math.imul(ae,N)|0,M=M+Math.imul(G,j)|0,v=v+Math.imul(G,J)|0,v=v+Math.imul(re,j)|0,P=P+Math.imul(re,J)|0,M=M+Math.imul(A,ue)|0,v=v+Math.imul(A,Pe)|0,v=v+Math.imul(L,ue)|0,P=P+Math.imul(L,Pe)|0;var Te=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(Te>>>26)|0,Te&=67108863,M=Math.imul(nt,et),v=Math.imul(nt,ht),v=v+Math.imul(Xe,et)|0,P=Math.imul(Xe,ht),M=M+Math.imul(gt,vt)|0,v=v+Math.imul(gt,xt)|0,v=v+Math.imul(ut,vt)|0,P=P+Math.imul(ut,xt)|0,M=M+Math.imul(ct,He)|0,v=v+Math.imul(ct,Ze)|0,v=v+Math.imul(ft,He)|0,P=P+Math.imul(ft,Ze)|0,M=M+Math.imul(rt,dt)|0,v=v+Math.imul(rt,bt)|0,v=v+Math.imul(st,dt)|0,P=P+Math.imul(st,bt)|0,M=M+Math.imul(pt,Oe)|0,v=v+Math.imul(pt,mt)|0,v=v+Math.imul(at,Oe)|0,P=P+Math.imul(at,mt)|0,M=M+Math.imul(lt,T)|0,v=v+Math.imul(lt,E)|0,v=v+Math.imul($e,T)|0,P=P+Math.imul($e,E)|0,M=M+Math.imul(fe,B)|0,v=v+Math.imul(fe,N)|0,v=v+Math.imul(be,B)|0,P=P+Math.imul(be,N)|0,M=M+Math.imul(oe,j)|0,v=v+Math.imul(oe,J)|0,v=v+Math.imul(ae,j)|0,P=P+Math.imul(ae,J)|0,M=M+Math.imul(G,ue)|0,v=v+Math.imul(G,Pe)|0,v=v+Math.imul(re,ue)|0,P=P+Math.imul(re,Pe)|0;var ve=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(ve>>>26)|0,ve&=67108863,M=Math.imul(nt,vt),v=Math.imul(nt,xt),v=v+Math.imul(Xe,vt)|0,P=Math.imul(Xe,xt),M=M+Math.imul(gt,He)|0,v=v+Math.imul(gt,Ze)|0,v=v+Math.imul(ut,He)|0,P=P+Math.imul(ut,Ze)|0,M=M+Math.imul(ct,dt)|0,v=v+Math.imul(ct,bt)|0,v=v+Math.imul(ft,dt)|0,P=P+Math.imul(ft,bt)|0,M=M+Math.imul(rt,Oe)|0,v=v+Math.imul(rt,mt)|0,v=v+Math.imul(st,Oe)|0,P=P+Math.imul(st,mt)|0,M=M+Math.imul(pt,T)|0,v=v+Math.imul(pt,E)|0,v=v+Math.imul(at,T)|0,P=P+Math.imul(at,E)|0,M=M+Math.imul(lt,B)|0,v=v+Math.imul(lt,N)|0,v=v+Math.imul($e,B)|0,P=P+Math.imul($e,N)|0,M=M+Math.imul(fe,j)|0,v=v+Math.imul(fe,J)|0,v=v+Math.imul(be,j)|0,P=P+Math.imul(be,J)|0,M=M+Math.imul(oe,ue)|0,v=v+Math.imul(oe,Pe)|0,v=v+Math.imul(ae,ue)|0,P=P+Math.imul(ae,Pe)|0;var Ie=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,M=Math.imul(nt,He),v=Math.imul(nt,Ze),v=v+Math.imul(Xe,He)|0,P=Math.imul(Xe,Ze),M=M+Math.imul(gt,dt)|0,v=v+Math.imul(gt,bt)|0,v=v+Math.imul(ut,dt)|0,P=P+Math.imul(ut,bt)|0,M=M+Math.imul(ct,Oe)|0,v=v+Math.imul(ct,mt)|0,v=v+Math.imul(ft,Oe)|0,P=P+Math.imul(ft,mt)|0,M=M+Math.imul(rt,T)|0,v=v+Math.imul(rt,E)|0,v=v+Math.imul(st,T)|0,P=P+Math.imul(st,E)|0,M=M+Math.imul(pt,B)|0,v=v+Math.imul(pt,N)|0,v=v+Math.imul(at,B)|0,P=P+Math.imul(at,N)|0,M=M+Math.imul(lt,j)|0,v=v+Math.imul(lt,J)|0,v=v+Math.imul($e,j)|0,P=P+Math.imul($e,J)|0,M=M+Math.imul(fe,ue)|0,v=v+Math.imul(fe,Pe)|0,v=v+Math.imul(be,ue)|0,P=P+Math.imul(be,Pe)|0;var ke=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(ke>>>26)|0,ke&=67108863,M=Math.imul(nt,dt),v=Math.imul(nt,bt),v=v+Math.imul(Xe,dt)|0,P=Math.imul(Xe,bt),M=M+Math.imul(gt,Oe)|0,v=v+Math.imul(gt,mt)|0,v=v+Math.imul(ut,Oe)|0,P=P+Math.imul(ut,mt)|0,M=M+Math.imul(ct,T)|0,v=v+Math.imul(ct,E)|0,v=v+Math.imul(ft,T)|0,P=P+Math.imul(ft,E)|0,M=M+Math.imul(rt,B)|0,v=v+Math.imul(rt,N)|0,v=v+Math.imul(st,B)|0,P=P+Math.imul(st,N)|0,M=M+Math.imul(pt,j)|0,v=v+Math.imul(pt,J)|0,v=v+Math.imul(at,j)|0,P=P+Math.imul(at,J)|0,M=M+Math.imul(lt,ue)|0,v=v+Math.imul(lt,Pe)|0,v=v+Math.imul($e,ue)|0,P=P+Math.imul($e,Pe)|0;var ye=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(ye>>>26)|0,ye&=67108863,M=Math.imul(nt,Oe),v=Math.imul(nt,mt),v=v+Math.imul(Xe,Oe)|0,P=Math.imul(Xe,mt),M=M+Math.imul(gt,T)|0,v=v+Math.imul(gt,E)|0,v=v+Math.imul(ut,T)|0,P=P+Math.imul(ut,E)|0,M=M+Math.imul(ct,B)|0,v=v+Math.imul(ct,N)|0,v=v+Math.imul(ft,B)|0,P=P+Math.imul(ft,N)|0,M=M+Math.imul(rt,j)|0,v=v+Math.imul(rt,J)|0,v=v+Math.imul(st,j)|0,P=P+Math.imul(st,J)|0,M=M+Math.imul(pt,ue)|0,v=v+Math.imul(pt,Pe)|0,v=v+Math.imul(at,ue)|0,P=P+Math.imul(at,Pe)|0;var H=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(H>>>26)|0,H&=67108863,M=Math.imul(nt,T),v=Math.imul(nt,E),v=v+Math.imul(Xe,T)|0,P=Math.imul(Xe,E),M=M+Math.imul(gt,B)|0,v=v+Math.imul(gt,N)|0,v=v+Math.imul(ut,B)|0,P=P+Math.imul(ut,N)|0,M=M+Math.imul(ct,j)|0,v=v+Math.imul(ct,J)|0,v=v+Math.imul(ft,j)|0,P=P+Math.imul(ft,J)|0,M=M+Math.imul(rt,ue)|0,v=v+Math.imul(rt,Pe)|0,v=v+Math.imul(st,ue)|0,P=P+Math.imul(st,Pe)|0;var V=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(V>>>26)|0,V&=67108863,M=Math.imul(nt,B),v=Math.imul(nt,N),v=v+Math.imul(Xe,B)|0,P=Math.imul(Xe,N),M=M+Math.imul(gt,j)|0,v=v+Math.imul(gt,J)|0,v=v+Math.imul(ut,j)|0,P=P+Math.imul(ut,J)|0,M=M+Math.imul(ct,ue)|0,v=v+Math.imul(ct,Pe)|0,v=v+Math.imul(ft,ue)|0,P=P+Math.imul(ft,Pe)|0;var se=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(se>>>26)|0,se&=67108863,M=Math.imul(nt,j),v=Math.imul(nt,J),v=v+Math.imul(Xe,j)|0,P=Math.imul(Xe,J),M=M+Math.imul(gt,ue)|0,v=v+Math.imul(gt,Pe)|0,v=v+Math.imul(ut,ue)|0,P=P+Math.imul(ut,Pe)|0;var ne=(w+M|0)+((v&8191)<<13)|0;w=(P+(v>>>13)|0)+(ne>>>26)|0,ne&=67108863,M=Math.imul(nt,ue),v=Math.imul(nt,Pe),v=v+Math.imul(Xe,ue)|0,P=Math.imul(Xe,Pe);var ie=(w+M|0)+((v&8191)<<13)|0;return w=(P+(v>>>13)|0)+(ie>>>26)|0,ie&=67108863,u[0]=ge,u[1]=Ne,u[2]=Ke,u[3]=Ge,u[4]=We,u[5]=Ve,u[6]=Je,u[7]=Ye,u[8]=we,u[9]=Te,u[10]=ve,u[11]=Ie,u[12]=ke,u[13]=ye,u[14]=H,u[15]=V,u[16]=se,u[17]=ne,u[18]=ie,w!==0&&(u[19]=w,p.length++),p};Math.imul||(ce=he);function Y(l,s,c){c.negative=s.negative^l.negative,c.length=l.length+s.length;for(var p=0,g=0,d=0;d>>26)|0,g+=u>>>26,u&=67108863}c.words[d]=w,p=u,u=g}return p!==0?c.words[d]=p:c.length--,c._strip()}function Ee(l,s,c){return Y(l,s,c)}i.prototype.mulTo=function(s,c){var p,g=this.length+s.length;return this.length===10&&s.length===10?p=ce(this,s,c):g<63?p=he(this,s,c):g<1024?p=Y(this,s,c):p=Ee(this,s,c),p};function Be(l,s){this.x=l,this.y=s}Be.prototype.makeRBT=function(s){for(var c=new Array(s),p=i.prototype._countBits(s)-1,g=0;g>=1;return g},Be.prototype.permute=function(s,c,p,g,d,u){for(var w=0;w>>1)d++;return 1<>>13,p[2*u+1]=d&8191,d=d>>>13;for(u=2*c;u>=26,p+=d/67108864|0,p+=u>>>26,this.words[g]=u&67108863}return p!==0&&(this.words[g]=p,this.length++),c?this.ineg():this},i.prototype.muln=function(s){return this.clone().imuln(s)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(s){var c=Z(s);if(c.length===0)return new i(1);for(var p=this,g=0;g=0);var c=s%26,p=(s-c)/26,g=67108863>>>26-c<<26-c,d;if(c!==0){var u=0;for(d=0;d>>26-c}u&&(this.words[d]=u,this.length++)}if(p!==0){for(d=this.length-1;d>=0;d--)this.words[d+p]=this.words[d];for(d=0;d=0);var g;c?g=(c-c%26)/26:g=0;var d=s%26,u=Math.min((s-d)/26,this.length),w=67108863^67108863>>>d<u)for(this.length-=u,v=0;v=0&&(P!==0||v>=g);v--){var z=this.words[v]|0;this.words[v]=P<<26-d|z>>>d,P=z&w}return M&&P!==0&&(M.words[M.length++]=P),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},i.prototype.ishrn=function(s,c,p){return t(this.negative===0),this.iushrn(s,c,p)},i.prototype.shln=function(s){return this.clone().ishln(s)},i.prototype.ushln=function(s){return this.clone().iushln(s)},i.prototype.shrn=function(s){return this.clone().ishrn(s)},i.prototype.ushrn=function(s){return this.clone().iushrn(s)},i.prototype.testn=function(s){t(typeof s=="number"&&s>=0);var c=s%26,p=(s-c)/26,g=1<=0);var c=s%26,p=(s-c)/26;if(t(this.negative===0,"imaskn works only with positive numbers"),this.length<=p)return this;if(c!==0&&p++,this.length=Math.min(p,this.length),c!==0){var g=67108863^67108863>>>c<=67108864;c++)this.words[c]-=67108864,c===this.length-1?this.words[c+1]=1:this.words[c+1]++;return this.length=Math.max(this.length,c+1),this},i.prototype.isubn=function(s){if(t(typeof s=="number"),t(s<67108864),s<0)return this.iaddn(-s);if(this.negative!==0)return this.negative=0,this.iaddn(s),this.negative=1,this;if(this.words[0]-=s,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var c=0;c>26)-(M/67108864|0),this.words[d+p]=u&67108863}for(;d>26,this.words[d+p]=u&67108863;if(w===0)return this._strip();for(t(w===-1),w=0,d=0;d>26,this.words[d]=u&67108863;return this.negative=1,this._strip()},i.prototype._wordDiv=function(s,c){var p=this.length-s.length,g=this.clone(),d=s,u=d.words[d.length-1]|0,w=this._countBits(u);p=26-w,p!==0&&(d=d.ushln(p),g.iushln(p),u=d.words[d.length-1]|0);var M=g.length-d.length,v;if(c!=="mod"){v=new i(null),v.length=M+1,v.words=new Array(v.length);for(var P=0;P=0;A--){var L=(g.words[d.length+A]|0)*67108864+(g.words[d.length+A-1]|0);for(L=Math.min(L/u|0,67108863),g._ishlnsubmul(d,L,A);g.negative!==0;)L--,g.negative=0,g._ishlnsubmul(d,1,A),g.isZero()||(g.negative^=1);v&&(v.words[A]=L)}return v&&v._strip(),g._strip(),c!=="div"&&p!==0&&g.iushrn(p),{div:v||null,mod:g}},i.prototype.divmod=function(s,c,p){if(t(!s.isZero()),this.isZero())return{div:new i(0),mod:new i(0)};var g,d,u;return this.negative!==0&&s.negative===0?(u=this.neg().divmod(s,c),c!=="mod"&&(g=u.div.neg()),c!=="div"&&(d=u.mod.neg(),p&&d.negative!==0&&d.iadd(s)),{div:g,mod:d}):this.negative===0&&s.negative!==0?(u=this.divmod(s.neg(),c),c!=="mod"&&(g=u.div.neg()),{div:g,mod:u.mod}):(this.negative&s.negative)!==0?(u=this.neg().divmod(s.neg(),c),c!=="div"&&(d=u.mod.neg(),p&&d.negative!==0&&d.isub(s)),{div:u.div,mod:d}):s.length>this.length||this.cmp(s)<0?{div:new i(0),mod:this}:s.length===1?c==="div"?{div:this.divn(s.words[0]),mod:null}:c==="mod"?{div:null,mod:new i(this.modrn(s.words[0]))}:{div:this.divn(s.words[0]),mod:new i(this.modrn(s.words[0]))}:this._wordDiv(s,c)},i.prototype.div=function(s){return this.divmod(s,"div",!1).div},i.prototype.mod=function(s){return this.divmod(s,"mod",!1).mod},i.prototype.umod=function(s){return this.divmod(s,"mod",!0).mod},i.prototype.divRound=function(s){var c=this.divmod(s);if(c.mod.isZero())return c.div;var p=c.div.negative!==0?c.mod.isub(s):c.mod,g=s.ushrn(1),d=s.andln(1),u=p.cmp(g);return u<0||d===1&&u===0?c.div:c.div.negative!==0?c.div.isubn(1):c.div.iaddn(1)},i.prototype.modrn=function(s){var c=s<0;c&&(s=-s),t(s<=67108863);for(var p=(1<<26)%s,g=0,d=this.length-1;d>=0;d--)g=(p*g+(this.words[d]|0))%s;return c?-g:g},i.prototype.modn=function(s){return this.modrn(s)},i.prototype.idivn=function(s){var c=s<0;c&&(s=-s),t(s<=67108863);for(var p=0,g=this.length-1;g>=0;g--){var d=(this.words[g]|0)+p*67108864;this.words[g]=d/s|0,p=d%s}return this._strip(),c?this.ineg():this},i.prototype.divn=function(s){return this.clone().idivn(s)},i.prototype.egcd=function(s){t(s.negative===0),t(!s.isZero());var c=this,p=s.clone();c.negative!==0?c=c.umod(s):c=c.clone();for(var g=new i(1),d=new i(0),u=new i(0),w=new i(1),M=0;c.isEven()&&p.isEven();)c.iushrn(1),p.iushrn(1),++M;for(var v=p.clone(),P=c.clone();!c.isZero();){for(var z=0,A=1;(c.words[0]&A)===0&&z<26;++z,A<<=1);if(z>0)for(c.iushrn(z);z-- >0;)(g.isOdd()||d.isOdd())&&(g.iadd(v),d.isub(P)),g.iushrn(1),d.iushrn(1);for(var L=0,W=1;(p.words[0]&W)===0&&L<26;++L,W<<=1);if(L>0)for(p.iushrn(L);L-- >0;)(u.isOdd()||w.isOdd())&&(u.iadd(v),w.isub(P)),u.iushrn(1),w.iushrn(1);c.cmp(p)>=0?(c.isub(p),g.isub(u),d.isub(w)):(p.isub(c),u.isub(g),w.isub(d))}return{a:u,b:w,gcd:p.iushln(M)}},i.prototype._invmp=function(s){t(s.negative===0),t(!s.isZero());var c=this,p=s.clone();c.negative!==0?c=c.umod(s):c=c.clone();for(var g=new i(1),d=new i(0),u=p.clone();c.cmpn(1)>0&&p.cmpn(1)>0;){for(var w=0,M=1;(c.words[0]&M)===0&&w<26;++w,M<<=1);if(w>0)for(c.iushrn(w);w-- >0;)g.isOdd()&&g.iadd(u),g.iushrn(1);for(var v=0,P=1;(p.words[0]&P)===0&&v<26;++v,P<<=1);if(v>0)for(p.iushrn(v);v-- >0;)d.isOdd()&&d.iadd(u),d.iushrn(1);c.cmp(p)>=0?(c.isub(p),g.isub(d)):(p.isub(c),d.isub(g))}var z;return c.cmpn(1)===0?z=g:z=d,z.cmpn(0)<0&&z.iadd(s),z},i.prototype.gcd=function(s){if(this.isZero())return s.abs();if(s.isZero())return this.abs();var c=this.clone(),p=s.clone();c.negative=0,p.negative=0;for(var g=0;c.isEven()&&p.isEven();g++)c.iushrn(1),p.iushrn(1);do{for(;c.isEven();)c.iushrn(1);for(;p.isEven();)p.iushrn(1);var d=c.cmp(p);if(d<0){var u=c;c=p,p=u}else if(d===0||p.cmpn(1)===0)break;c.isub(p)}while(!0);return p.iushln(g)},i.prototype.invm=function(s){return this.egcd(s).a.umod(s)},i.prototype.isEven=function(){return(this.words[0]&1)===0},i.prototype.isOdd=function(){return(this.words[0]&1)===1},i.prototype.andln=function(s){return this.words[0]&s},i.prototype.bincn=function(s){t(typeof s=="number");var c=s%26,p=(s-c)/26,g=1<>>26,w&=67108863,this.words[u]=w}return d!==0&&(this.words[u]=d,this.length++),this},i.prototype.isZero=function(){return this.length===1&&this.words[0]===0},i.prototype.cmpn=function(s){var c=s<0;if(this.negative!==0&&!c)return-1;if(this.negative===0&&c)return 1;this._strip();var p;if(this.length>1)p=1;else{c&&(s=-s),t(s<=67108863,"Number is too big");var g=this.words[0]|0;p=g===s?0:gs.length)return 1;if(this.length=0;p--){var g=this.words[p]|0,d=s.words[p]|0;if(g!==d){gd&&(c=1);break}}return c},i.prototype.gtn=function(s){return this.cmpn(s)===1},i.prototype.gt=function(s){return this.cmp(s)===1},i.prototype.gten=function(s){return this.cmpn(s)>=0},i.prototype.gte=function(s){return this.cmp(s)>=0},i.prototype.ltn=function(s){return this.cmpn(s)===-1},i.prototype.lt=function(s){return this.cmp(s)===-1},i.prototype.lten=function(s){return this.cmpn(s)<=0},i.prototype.lte=function(s){return this.cmp(s)<=0},i.prototype.eqn=function(s){return this.cmpn(s)===0},i.prototype.eq=function(s){return this.cmp(s)===0},i.red=function(s){return new f(s)},i.prototype.toRed=function(s){return t(!this.red,"Already a number in reduction context"),t(this.negative===0,"red works only with positives"),s.convertTo(this)._forceRed(s)},i.prototype.fromRed=function(){return t(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(s){return this.red=s,this},i.prototype.forceRed=function(s){return t(!this.red,"Already a number in reduction context"),this._forceRed(s)},i.prototype.redAdd=function(s){return t(this.red,"redAdd works only with red numbers"),this.red.add(this,s)},i.prototype.redIAdd=function(s){return t(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,s)},i.prototype.redSub=function(s){return t(this.red,"redSub works only with red numbers"),this.red.sub(this,s)},i.prototype.redISub=function(s){return t(this.red,"redISub works only with red numbers"),this.red.isub(this,s)},i.prototype.redShl=function(s){return t(this.red,"redShl works only with red numbers"),this.red.shl(this,s)},i.prototype.redMul=function(s){return t(this.red,"redMul works only with red numbers"),this.red._verify2(this,s),this.red.mul(this,s)},i.prototype.redIMul=function(s){return t(this.red,"redMul works only with red numbers"),this.red._verify2(this,s),this.red.imul(this,s)},i.prototype.redSqr=function(){return t(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return t(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return t(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return t(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return t(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(s){return t(this.red&&!s.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,s)};var Ue={k256:null,p224:null,p192:null,p25519:null};function _e(l,s){this.name=l,this.p=new i(s,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}_e.prototype._tmp=function(){var s=new i(null);return s.words=new Array(Math.ceil(this.n/13)),s},_e.prototype.ireduce=function(s){var c=s,p;do this.split(c,this.tmp),c=this.imulK(c),c=c.iadd(this.tmp),p=c.bitLength();while(p>this.n);var g=p0?c.isub(this.p):c.strip!==void 0?c.strip():c._strip(),c},_e.prototype.split=function(s,c){s.iushrn(this.n,0,c)},_e.prototype.imulK=function(s){return s.imul(this.k)};function je(){_e.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(je,_e),je.prototype.split=function(s,c){for(var p=4194303,g=Math.min(s.length,9),d=0;d>>22,u=w}u>>>=22,s.words[d-10]=u,u===0&&s.length>10?s.length-=10:s.length-=9},je.prototype.imulK=function(s){s.words[s.length]=0,s.words[s.length+1]=0,s.length+=2;for(var c=0,p=0;p>>=26,s.words[p]=d,c=g}return c!==0&&(s.words[s.length++]=c),s},i._prime=function(s){if(Ue[s])return Ue[s];var c;if(s==="k256")c=new je;else if(s==="p224")c=new R;else if(s==="p192")c=new C;else if(s==="p25519")c=new x;else throw new Error("Unknown prime "+s);return Ue[s]=c,c};function f(l){if(typeof l=="string"){var s=i._prime(l);this.m=s.p,this.prime=s}else t(l.gtn(1),"modulus must be greater than 1"),this.m=l,this.prime=null}f.prototype._verify1=function(s){t(s.negative===0,"red works only with positives"),t(s.red,"red works only with red numbers")},f.prototype._verify2=function(s,c){t((s.negative|c.negative)===0,"red works only with positives"),t(s.red&&s.red===c.red,"red works only with red numbers")},f.prototype.imod=function(s){return this.prime?this.prime.ireduce(s)._forceRed(this):(I(s,s.umod(this.m)._forceRed(this)),s)},f.prototype.neg=function(s){return s.isZero()?s.clone():this.m.sub(s)._forceRed(this)},f.prototype.add=function(s,c){this._verify2(s,c);var p=s.add(c);return p.cmp(this.m)>=0&&p.isub(this.m),p._forceRed(this)},f.prototype.iadd=function(s,c){this._verify2(s,c);var p=s.iadd(c);return p.cmp(this.m)>=0&&p.isub(this.m),p},f.prototype.sub=function(s,c){this._verify2(s,c);var p=s.sub(c);return p.cmpn(0)<0&&p.iadd(this.m),p._forceRed(this)},f.prototype.isub=function(s,c){this._verify2(s,c);var p=s.isub(c);return p.cmpn(0)<0&&p.iadd(this.m),p},f.prototype.shl=function(s,c){return this._verify1(s),this.imod(s.ushln(c))},f.prototype.imul=function(s,c){return this._verify2(s,c),this.imod(s.imul(c))},f.prototype.mul=function(s,c){return this._verify2(s,c),this.imod(s.mul(c))},f.prototype.isqr=function(s){return this.imul(s,s.clone())},f.prototype.sqr=function(s){return this.mul(s,s)},f.prototype.sqrt=function(s){if(s.isZero())return s.clone();var c=this.m.andln(3);if(t(c%2===1),c===3){var p=this.m.add(new i(1)).iushrn(2);return this.pow(s,p)}for(var g=this.m.subn(1),d=0;!g.isZero()&&g.andln(1)===0;)d++,g.iushrn(1);t(!g.isZero());var u=new i(1).toRed(this),w=u.redNeg(),M=this.m.subn(1).iushrn(1),v=this.m.bitLength();for(v=new i(2*v*v).toRed(this);this.pow(v,M).cmp(w)!==0;)v.redIAdd(w);for(var P=this.pow(v,g),z=this.pow(s,g.addn(1).iushrn(1)),A=this.pow(s,g),L=d;A.cmp(u)!==0;){for(var W=A,G=0;W.cmp(u)!==0;G++)W=W.redSqr();t(G=0;d--){for(var P=c.words[d],z=v-1;z>=0;z--){var A=P>>z&1;if(u!==g[0]&&(u=this.sqr(u)),A===0&&w===0){M=0;continue}w<<=1,w|=A,M++,!(M!==p&&(d!==0||z!==0))&&(u=this.mul(u,g[w]),M=0,w=0)}v=26}return u},f.prototype.convertTo=function(s){var c=s.umod(this.m);return c===s?c.clone():c},f.prototype.convertFrom=function(s){var c=s.clone();return c.red=null,c},i.mont=function(s){return new b(s)};function b(l){f.call(this,l),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(b,f),b.prototype.convertTo=function(s){return this.imod(s.ushln(this.shift))},b.prototype.convertFrom=function(s){var c=this.imod(s.mul(this.rinv));return c.red=null,c},b.prototype.imul=function(s,c){if(s.isZero()||c.isZero())return s.words[0]=0,s.length=1,s;var p=s.imul(c),g=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),d=p.isub(g).iushrn(this.shift),u=d;return d.cmp(this.m)>=0?u=d.isub(this.m):d.cmpn(0)<0&&(u=d.iadd(this.m)),u._forceRed(this)},b.prototype.mul=function(s,c){if(s.isZero()||c.isZero())return new i(0)._forceRed(this);var p=s.mul(c),g=p.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),d=p.isub(g).iushrn(this.shift),u=d;return d.cmp(this.m)>=0?u=d.isub(this.m):d.cmpn(0)<0&&(u=d.iadd(this.m)),u._forceRed(this)},b.prototype.invm=function(s){var c=this.imod(s._invmp(this.m).mul(this.r2));return c._forceRed(this)}})(typeof uu>"u"||uu,el)});var xu=Se(Do=>{"use strict";var du=Xf(),Oo=eu(),tl=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;Do.Buffer=ee;Do.SlowBuffer=Uy;Do.INSPECT_MAX_BYTES=50;var Xs=2147483647;Do.kMaxLength=Xs;ee.TYPED_ARRAY_SUPPORT=Oy();!ee.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function Oy(){try{let r=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(r,e),r.foo()===42}catch{return!1}}Object.defineProperty(ee.prototype,"parent",{enumerable:!0,get:function(){if(!!ee.isBuffer(this))return this.buffer}});Object.defineProperty(ee.prototype,"offset",{enumerable:!0,get:function(){if(!!ee.isBuffer(this))return this.byteOffset}});function bi(r){if(r>Xs)throw new RangeError('The value "'+r+'" is invalid for option "size"');let e=new Uint8Array(r);return Object.setPrototypeOf(e,ee.prototype),e}function ee(r,e,t){if(typeof r=="number"){if(typeof e=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return mu(r)}return ol(r,e,t)}ee.poolSize=8192;function ol(r,e,t){if(typeof r=="string")return Dy(r,e);if(ArrayBuffer.isView(r))return Ky(r);if(r==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r);if(Gn(r,ArrayBuffer)||r&&Gn(r.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Gn(r,SharedArrayBuffer)||r&&Gn(r.buffer,SharedArrayBuffer)))return pu(r,e,t);if(typeof r=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=r.valueOf&&r.valueOf();if(n!=null&&n!==r)return ee.from(n,e,t);let i=Ly(r);if(i)return i;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof r[Symbol.toPrimitive]=="function")return ee.from(r[Symbol.toPrimitive]("string"),e,t);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof r)}ee.from=function(r,e,t){return ol(r,e,t)};Object.setPrototypeOf(ee.prototype,Uint8Array.prototype);Object.setPrototypeOf(ee,Uint8Array);function al(r){if(typeof r!="number")throw new TypeError('"size" argument must be of type number');if(r<0)throw new RangeError('The value "'+r+'" is invalid for option "size"')}function Ny(r,e,t){return al(r),r<=0?bi(r):e!==void 0?typeof t=="string"?bi(r).fill(e,t):bi(r).fill(e):bi(r)}ee.alloc=function(r,e,t){return Ny(r,e,t)};function mu(r){return al(r),bi(r<0?0:yu(r)|0)}ee.allocUnsafe=function(r){return mu(r)};ee.allocUnsafeSlow=function(r){return mu(r)};function Dy(r,e){if((typeof e!="string"||e==="")&&(e="utf8"),!ee.isEncoding(e))throw new TypeError("Unknown encoding: "+e);let t=sl(r,e)|0,n=bi(t),i=n.write(r,e);return i!==t&&(n=n.slice(0,i)),n}function lu(r){let e=r.length<0?0:yu(r.length)|0,t=bi(e);for(let n=0;n=Xs)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Xs.toString(16)+" bytes");return r|0}function Uy(r){return+r!=r&&(r=0),ee.alloc(+r)}ee.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==ee.prototype};ee.compare=function(e,t){if(Gn(e,Uint8Array)&&(e=ee.from(e,e.offset,e.byteLength)),Gn(t,Uint8Array)&&(t=ee.from(t,t.offset,t.byteLength)),!ee.isBuffer(e)||!ee.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let n=e.length,i=t.length;for(let o=0,a=Math.min(n,i);oi.length?(ee.isBuffer(a)||(a=ee.from(a)),a.copy(i,o)):Uint8Array.prototype.set.call(i,a,o);else if(ee.isBuffer(a))a.copy(i,o);else throw new TypeError('"list" argument must be an Array of Buffers');o+=a.length}return i};function sl(r,e){if(ee.isBuffer(r))return r.length;if(ArrayBuffer.isView(r)||Gn(r,ArrayBuffer))return r.byteLength;if(typeof r!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof r);let t=r.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&t===0)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return t;case"utf8":case"utf-8":return bu(r).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return t*2;case"hex":return t>>>1;case"base64":return ml(r).length;default:if(i)return n?-1:bu(r).length;e=(""+e).toLowerCase(),i=!0}}ee.byteLength=sl;function Fy(r,e,t){let n=!1;if((e===void 0||e<0)&&(e=0),e>this.length||((t===void 0||t>this.length)&&(t=this.length),t<=0)||(t>>>=0,e>>>=0,t<=e))return"";for(r||(r="utf8");;)switch(r){case"hex":return Zy(this,e,t);case"utf8":case"utf-8":return fl(this,e,t);case"ascii":return Vy(this,e,t);case"latin1":case"binary":return Yy(this,e,t);case"base64":return $y(this,e,t);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Jy(this,e,t);default:if(n)throw new TypeError("Unknown encoding: "+r);r=(r+"").toLowerCase(),n=!0}}ee.prototype._isBuffer=!0;function ao(r,e,t){let n=r[e];r[e]=r[t],r[t]=n}ee.prototype.swap16=function(){let e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tt&&(e+=" ... "),""};tl&&(ee.prototype[tl]=ee.prototype.inspect);ee.prototype.compare=function(e,t,n,i,o){if(Gn(e,Uint8Array)&&(e=ee.from(e,e.offset,e.byteLength)),!ee.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(t===void 0&&(t=0),n===void 0&&(n=e?e.length:0),i===void 0&&(i=0),o===void 0&&(o=this.length),t<0||n>e.length||i<0||o>this.length)throw new RangeError("out of range index");if(i>=o&&t>=n)return 0;if(i>=o)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,i>>>=0,o>>>=0,this===e)return 0;let a=o-i,h=n-t,y=Math.min(a,h),I=this.slice(i,o),_=e.slice(t,n);for(let k=0;k2147483647?t=2147483647:t<-2147483648&&(t=-2147483648),t=+t,vu(t)&&(t=i?0:r.length-1),t<0&&(t=r.length+t),t>=r.length){if(i)return-1;t=r.length-1}else if(t<0)if(i)t=0;else return-1;if(typeof e=="string"&&(e=ee.from(e,n)),ee.isBuffer(e))return e.length===0?-1:rl(r,e,t,n,i);if(typeof e=="number")return e=e&255,typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(r,e,t):Uint8Array.prototype.lastIndexOf.call(r,e,t):rl(r,[e],t,n,i);throw new TypeError("val must be string, number or Buffer")}function rl(r,e,t,n,i){let o=1,a=r.length,h=e.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(r.length<2||e.length<2)return-1;o=2,a/=2,h/=2,t/=2}function y(_,k){return o===1?_[k]:_.readUInt16BE(k*o)}let I;if(i){let _=-1;for(I=t;Ia&&(t=a-h),I=t;I>=0;I--){let _=!0;for(let k=0;ki&&(n=i)):n=i;let o=e.length;n>o/2&&(n=o/2);let a;for(a=0;a>>0,isFinite(n)?(n=n>>>0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let o=this.length-t;if((n===void 0||n>o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let a=!1;for(;;)switch(i){case"hex":return zy(this,e,t,n);case"utf8":case"utf-8":return qy(this,e,t,n);case"ascii":case"latin1":case"binary":return Wy(this,e,t,n);case"base64":return jy(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Gy(this,e,t,n);default:if(a)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),a=!0}};ee.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function $y(r,e,t){return e===0&&t===r.length?du.fromByteArray(r):du.fromByteArray(r.slice(e,t))}function fl(r,e,t){t=Math.min(r.length,t);let n=[],i=e;for(;i239?4:o>223?3:o>191?2:1;if(i+h<=t){let y,I,_,k;switch(h){case 1:o<128&&(a=o);break;case 2:y=r[i+1],(y&192)===128&&(k=(o&31)<<6|y&63,k>127&&(a=k));break;case 3:y=r[i+1],I=r[i+2],(y&192)===128&&(I&192)===128&&(k=(o&15)<<12|(y&63)<<6|I&63,k>2047&&(k<55296||k>57343)&&(a=k));break;case 4:y=r[i+1],I=r[i+2],_=r[i+3],(y&192)===128&&(I&192)===128&&(_&192)===128&&(k=(o&15)<<18|(y&63)<<12|(I&63)<<6|_&63,k>65535&&k<1114112&&(a=k))}}a===null?(a=65533,h=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|a&1023),n.push(a),i+=h}return Hy(n)}var nl=4096;function Hy(r){let e=r.length;if(e<=nl)return String.fromCharCode.apply(String,r);let t="",n=0;for(;nn)&&(t=n);let i="";for(let o=e;on&&(e=n),t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),tt)throw new RangeError("Trying to access beyond buffer length")}ee.prototype.readUintLE=ee.prototype.readUIntLE=function(e,t,n){e=e>>>0,t=t>>>0,n||yr(e,t,this.length);let i=this[e],o=1,a=0;for(;++a>>0,t=t>>>0,n||yr(e,t,this.length);let i=this[e+--t],o=1;for(;t>0&&(o*=256);)i+=this[e+--t]*o;return i};ee.prototype.readUint8=ee.prototype.readUInt8=function(e,t){return e=e>>>0,t||yr(e,1,this.length),this[e]};ee.prototype.readUint16LE=ee.prototype.readUInt16LE=function(e,t){return e=e>>>0,t||yr(e,2,this.length),this[e]|this[e+1]<<8};ee.prototype.readUint16BE=ee.prototype.readUInt16BE=function(e,t){return e=e>>>0,t||yr(e,2,this.length),this[e]<<8|this[e+1]};ee.prototype.readUint32LE=ee.prototype.readUInt32LE=function(e,t){return e=e>>>0,t||yr(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};ee.prototype.readUint32BE=ee.prototype.readUInt32BE=function(e,t){return e=e>>>0,t||yr(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};ee.prototype.readBigUInt64LE=Pi(function(e){e=e>>>0,No(e,"offset");let t=this[e],n=this[e+7];(t===void 0||n===void 0)&&Ia(e,this.length-8);let i=t+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24,o=this[++e]+this[++e]*2**8+this[++e]*2**16+n*2**24;return BigInt(i)+(BigInt(o)<>>0,No(e,"offset");let t=this[e],n=this[e+7];(t===void 0||n===void 0)&&Ia(e,this.length-8);let i=t*2**24+this[++e]*2**16+this[++e]*2**8+this[++e],o=this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+n;return(BigInt(i)<>>0,t=t>>>0,n||yr(e,t,this.length);let i=this[e],o=1,a=0;for(;++a=o&&(i-=Math.pow(2,8*t)),i};ee.prototype.readIntBE=function(e,t,n){e=e>>>0,t=t>>>0,n||yr(e,t,this.length);let i=t,o=1,a=this[e+--i];for(;i>0&&(o*=256);)a+=this[e+--i]*o;return o*=128,a>=o&&(a-=Math.pow(2,8*t)),a};ee.prototype.readInt8=function(e,t){return e=e>>>0,t||yr(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]};ee.prototype.readInt16LE=function(e,t){e=e>>>0,t||yr(e,2,this.length);let n=this[e]|this[e+1]<<8;return n&32768?n|4294901760:n};ee.prototype.readInt16BE=function(e,t){e=e>>>0,t||yr(e,2,this.length);let n=this[e+1]|this[e]<<8;return n&32768?n|4294901760:n};ee.prototype.readInt32LE=function(e,t){return e=e>>>0,t||yr(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};ee.prototype.readInt32BE=function(e,t){return e=e>>>0,t||yr(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};ee.prototype.readBigInt64LE=Pi(function(e){e=e>>>0,No(e,"offset");let t=this[e],n=this[e+7];(t===void 0||n===void 0)&&Ia(e,this.length-8);let i=this[e+4]+this[e+5]*2**8+this[e+6]*2**16+(n<<24);return(BigInt(i)<>>0,No(e,"offset");let t=this[e],n=this[e+7];(t===void 0||n===void 0)&&Ia(e,this.length-8);let i=(t<<24)+this[++e]*2**16+this[++e]*2**8+this[++e];return(BigInt(i)<>>0,t||yr(e,4,this.length),Oo.read(this,e,!0,23,4)};ee.prototype.readFloatBE=function(e,t){return e=e>>>0,t||yr(e,4,this.length),Oo.read(this,e,!1,23,4)};ee.prototype.readDoubleLE=function(e,t){return e=e>>>0,t||yr(e,8,this.length),Oo.read(this,e,!0,52,8)};ee.prototype.readDoubleBE=function(e,t){return e=e>>>0,t||yr(e,8,this.length),Oo.read(this,e,!1,52,8)};function Qr(r,e,t,n,i,o){if(!ee.isBuffer(r))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||er.length)throw new RangeError("Index out of range")}ee.prototype.writeUintLE=ee.prototype.writeUIntLE=function(e,t,n,i){if(e=+e,t=t>>>0,n=n>>>0,!i){let h=Math.pow(2,8*n)-1;Qr(this,e,t,n,h,0)}let o=1,a=0;for(this[t]=e&255;++a>>0,n=n>>>0,!i){let h=Math.pow(2,8*n)-1;Qr(this,e,t,n,h,0)}let o=n-1,a=1;for(this[t+o]=e&255;--o>=0&&(a*=256);)this[t+o]=e/a&255;return t+n};ee.prototype.writeUint8=ee.prototype.writeUInt8=function(e,t,n){return e=+e,t=t>>>0,n||Qr(this,e,t,1,255,0),this[t]=e&255,t+1};ee.prototype.writeUint16LE=ee.prototype.writeUInt16LE=function(e,t,n){return e=+e,t=t>>>0,n||Qr(this,e,t,2,65535,0),this[t]=e&255,this[t+1]=e>>>8,t+2};ee.prototype.writeUint16BE=ee.prototype.writeUInt16BE=function(e,t,n){return e=+e,t=t>>>0,n||Qr(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=e&255,t+2};ee.prototype.writeUint32LE=ee.prototype.writeUInt32LE=function(e,t,n){return e=+e,t=t>>>0,n||Qr(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=e&255,t+4};ee.prototype.writeUint32BE=ee.prototype.writeUInt32BE=function(e,t,n){return e=+e,t=t>>>0,n||Qr(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4};function ul(r,e,t,n,i){bl(e,n,i,r,t,7);let o=Number(e&BigInt(4294967295));r[t++]=o,o=o>>8,r[t++]=o,o=o>>8,r[t++]=o,o=o>>8,r[t++]=o;let a=Number(e>>BigInt(32)&BigInt(4294967295));return r[t++]=a,a=a>>8,r[t++]=a,a=a>>8,r[t++]=a,a=a>>8,r[t++]=a,t}function hl(r,e,t,n,i){bl(e,n,i,r,t,7);let o=Number(e&BigInt(4294967295));r[t+7]=o,o=o>>8,r[t+6]=o,o=o>>8,r[t+5]=o,o=o>>8,r[t+4]=o;let a=Number(e>>BigInt(32)&BigInt(4294967295));return r[t+3]=a,a=a>>8,r[t+2]=a,a=a>>8,r[t+1]=a,a=a>>8,r[t]=a,t+8}ee.prototype.writeBigUInt64LE=Pi(function(e,t=0){return ul(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))});ee.prototype.writeBigUInt64BE=Pi(function(e,t=0){return hl(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))});ee.prototype.writeIntLE=function(e,t,n,i){if(e=+e,t=t>>>0,!i){let y=Math.pow(2,8*n-1);Qr(this,e,t,n,y-1,-y)}let o=0,a=1,h=0;for(this[t]=e&255;++o>0)-h&255;return t+n};ee.prototype.writeIntBE=function(e,t,n,i){if(e=+e,t=t>>>0,!i){let y=Math.pow(2,8*n-1);Qr(this,e,t,n,y-1,-y)}let o=n-1,a=1,h=0;for(this[t+o]=e&255;--o>=0&&(a*=256);)e<0&&h===0&&this[t+o+1]!==0&&(h=1),this[t+o]=(e/a>>0)-h&255;return t+n};ee.prototype.writeInt8=function(e,t,n){return e=+e,t=t>>>0,n||Qr(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=e&255,t+1};ee.prototype.writeInt16LE=function(e,t,n){return e=+e,t=t>>>0,n||Qr(this,e,t,2,32767,-32768),this[t]=e&255,this[t+1]=e>>>8,t+2};ee.prototype.writeInt16BE=function(e,t,n){return e=+e,t=t>>>0,n||Qr(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=e&255,t+2};ee.prototype.writeInt32LE=function(e,t,n){return e=+e,t=t>>>0,n||Qr(this,e,t,4,2147483647,-2147483648),this[t]=e&255,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4};ee.prototype.writeInt32BE=function(e,t,n){return e=+e,t=t>>>0,n||Qr(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=e&255,t+4};ee.prototype.writeBigInt64LE=Pi(function(e,t=0){return ul(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});ee.prototype.writeBigInt64BE=Pi(function(e,t=0){return hl(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function dl(r,e,t,n,i,o){if(t+n>r.length)throw new RangeError("Index out of range");if(t<0)throw new RangeError("Index out of range")}function ll(r,e,t,n,i){return e=+e,t=t>>>0,i||dl(r,e,t,4,34028234663852886e22,-34028234663852886e22),Oo.write(r,e,t,n,23,4),t+4}ee.prototype.writeFloatLE=function(e,t,n){return ll(this,e,t,!0,n)};ee.prototype.writeFloatBE=function(e,t,n){return ll(this,e,t,!1,n)};function pl(r,e,t,n,i){return e=+e,t=t>>>0,i||dl(r,e,t,8,17976931348623157e292,-17976931348623157e292),Oo.write(r,e,t,n,52,8),t+8}ee.prototype.writeDoubleLE=function(e,t,n){return pl(this,e,t,!0,n)};ee.prototype.writeDoubleBE=function(e,t,n){return pl(this,e,t,!1,n)};ee.prototype.copy=function(e,t,n,i){if(!ee.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),!i&&i!==0&&(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t>>0,n=n===void 0?this.length:n>>>0,e||(e=0);let o;if(typeof e=="number")for(o=t;o2**32?i=il(String(t)):typeof t=="bigint"&&(i=String(t),(t>BigInt(2)**BigInt(32)||t<-(BigInt(2)**BigInt(32)))&&(i=il(i)),i+="n"),n+=` It must be ${e}. Received ${i}`,n},RangeError);function il(r){let e="",t=r.length,n=r[0]==="-"?1:0;for(;t>=n+4;t-=3)e=`_${r.slice(t-3,t)}${e}`;return`${r.slice(0,t)}${e}`}function Xy(r,e,t){No(e,"offset"),(r[e]===void 0||r[e+t]===void 0)&&Ia(e,r.length-(t+1))}function bl(r,e,t,n,i,o){if(r>t||r3?e===0||e===BigInt(0)?h=`>= 0${a} and < 2${a} ** ${(o+1)*8}${a}`:h=`>= -(2${a} ** ${(o+1)*8-1}${a}) and < 2 ** ${(o+1)*8-1}${a}`:h=`>= ${e}${a} and <= ${t}${a}`,new Co.ERR_OUT_OF_RANGE("value",h,r)}Xy(n,i,o)}function No(r,e){if(typeof r!="number")throw new Co.ERR_INVALID_ARG_TYPE(e,"number",r)}function Ia(r,e,t){throw Math.floor(r)!==r?(No(r,t),new Co.ERR_OUT_OF_RANGE(t||"offset","an integer",r)):e<0?new Co.ERR_BUFFER_OUT_OF_BOUNDS:new Co.ERR_OUT_OF_RANGE(t||"offset",`>= ${t?1:0} and <= ${e}`,r)}var Qy=/[^+/0-9A-Za-z-_]/g;function e2(r){if(r=r.split("=")[0],r=r.trim().replace(Qy,""),r.length<2)return"";for(;r.length%4!==0;)r=r+"=";return r}function bu(r,e){e=e||1/0;let t,n=r.length,i=null,o=[];for(let a=0;a55295&&t<57344){if(!i){if(t>56319){(e-=3)>-1&&o.push(239,191,189);continue}else if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=t;continue}if(t<56320){(e-=3)>-1&&o.push(239,191,189),i=t;continue}t=(i-55296<<10|t-56320)+65536}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,t<128){if((e-=1)<0)break;o.push(t)}else if(t<2048){if((e-=2)<0)break;o.push(t>>6|192,t&63|128)}else if(t<65536){if((e-=3)<0)break;o.push(t>>12|224,t>>6&63|128,t&63|128)}else if(t<1114112){if((e-=4)<0)break;o.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128)}else throw new Error("Invalid code point")}return o}function t2(r){let e=[];for(let t=0;t>8,i=t%256,o.push(i),o.push(n);return o}function ml(r){return du.toByteArray(e2(r))}function Qs(r,e,t,n){let i;for(i=0;i=e.length||i>=r.length);++i)e[i+t]=r[i];return i}function Gn(r,e){return r instanceof e||r!=null&&r.constructor!=null&&r.constructor.name!=null&&r.constructor.name===e.name}function vu(r){return r!==r}var n2=function(){let r="0123456789abcdef",e=new Array(256);for(let t=0;t<16;++t){let n=t*16;for(let i=0;i<16;++i)e[n+i]=r[t]+r[i]}return e}();function Pi(r){return typeof BigInt>"u"?i2:r}function i2(){throw new Error("BigInt not supported")}});var vl=Se((wu,gl)=>{var ec=xu(),$n=ec.Buffer;function yl(r,e){for(var t in r)e[t]=r[t]}$n.from&&$n.alloc&&$n.allocUnsafe&&$n.allocUnsafeSlow?gl.exports=ec:(yl(ec,wu),wu.Buffer=so);function so(r,e,t){return $n(r,e,t)}so.prototype=Object.create($n.prototype);yl($n,so);so.from=function(r,e,t){if(typeof r=="number")throw new TypeError("Argument must not be a number");return $n(r,e,t)};so.alloc=function(r,e,t){if(typeof r!="number")throw new TypeError("Argument must be a number");var n=$n(r);return e!==void 0?typeof t=="string"?n.fill(e,t):n.fill(e):n.fill(0),n};so.allocUnsafe=function(r){if(typeof r!="number")throw new TypeError("Argument must be a number");return $n(r)};so.allocUnsafeSlow=function(r){if(typeof r!="number")throw new TypeError("Argument must be a number");return ec.SlowBuffer(r)}});var wl=Se((o8,xl)=>{"use strict";var tc=vl().Buffer;function o2(r){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),t=0;t>>0,Ee=new Uint8Array(Y);he!==ce;){for(var Be=D[he],Ue=0,_e=Y-1;(Be!==0||Ue>>0,Ee[_e]=Be%a>>>0,Be=Be/a>>>0;if(Be!==0)throw new Error("Non-zero carry");Z=Ue,he++}for(var je=Y-Z;je!==Y&&Ee[je]===0;)je++;for(var R=h.repeat(q);je>>0,Y=new Uint8Array(ce);D[q];){var Ee=e[D.charCodeAt(q)];if(Ee===255)return;for(var Be=0,Ue=ce-1;(Ee!==0||Be>>0,Y[Ue]=Ee%256>>>0,Ee=Ee/256>>>0;if(Ee!==0)throw new Error("Non-zero carry");he=Be,q++}for(var _e=ce-he;_e!==ce&&Y[_e]===0;)_e++;var je=tc.allocUnsafe(Z+(ce-_e));je.fill(0,0,Z);for(var R=Z;_e!==ce;)je[R++]=Y[_e++];return je}function K(D){var q=k(D);if(q)return q;throw new Error("Non-base"+a+" character")}return{encode:_,decodeUnsafe:k,decode:K}}xl.exports=o2});var Iu=Se((a8,Il)=>{var a2=wl(),s2="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";Il.exports=a2(s2)});var Al=Se(_u=>{"use strict";function mi(r,e,t){return e<=r&&r<=t}function ac(r){if(r===void 0)return{};if(r===Object(r))return r;throw TypeError("Could not convert argument to dictionary")}function c2(r){for(var e=String(r),t=e.length,n=0,i=[];n57343)i.push(o);else if(56320<=o&&o<=57343)i.push(65533);else if(55296<=o&&o<=56319)if(n===t-1)i.push(65533);else{var a=r.charCodeAt(n+1);if(56320<=a&&a<=57343){var h=o&1023,y=a&1023;i.push(65536+(h<<10)+y),n+=1}else i.push(65533)}n+=1}return i}function f2(r){for(var e="",t=0;t>10)+55296,(n&1023)+56320))}return e}var rc=-1;function Su(r){this.tokens=[].slice.call(r)}Su.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():rc},prepend:function(r){if(Array.isArray(r))for(var e=r;e.length;)this.tokens.unshift(e.pop());else this.tokens.unshift(r)},push:function(r){if(Array.isArray(r))for(var e=r;e.length;)this.tokens.push(e.shift());else this.tokens.push(r)}};var Ko=-1;function Au(r,e){if(r)throw TypeError("Decoder error");return e||65533}var nc="utf-8";function ic(r,e){if(!(this instanceof ic))return new ic(r,e);if(r=r!==void 0?String(r).toLowerCase():nc,r!==nc)throw new Error("Encoding not supported. Only utf-8 is supported");e=ac(e),this._streaming=!1,this._BOMseen=!1,this._decoder=null,this._fatal=Boolean(e.fatal),this._ignoreBOM=Boolean(e.ignoreBOM),Object.defineProperty(this,"encoding",{value:"utf-8"}),Object.defineProperty(this,"fatal",{value:this._fatal}),Object.defineProperty(this,"ignoreBOM",{value:this._ignoreBOM})}ic.prototype={decode:function(e,t){var n;typeof e=="object"&&e instanceof ArrayBuffer?n=new Uint8Array(e):typeof e=="object"&&"buffer"in e&&e.buffer instanceof ArrayBuffer?n=new Uint8Array(e.buffer,e.byteOffset,e.byteLength):n=new Uint8Array(0),t=ac(t),this._streaming||(this._decoder=new u2({fatal:this._fatal}),this._BOMseen=!1),this._streaming=Boolean(t.stream);for(var i=new Su(n),o=[],a;!i.endOfStream()&&(a=this._decoder.handler(i,i.read()),a!==Ko);)a!==null&&(Array.isArray(a)?o.push.apply(o,a):o.push(a));if(!this._streaming){do{if(a=this._decoder.handler(i,i.read()),a===Ko)break;a!==null&&(Array.isArray(a)?o.push.apply(o,a):o.push(a))}while(!i.endOfStream());this._decoder=null}return o.length&&["utf-8"].indexOf(this.encoding)!==-1&&!this._ignoreBOM&&!this._BOMseen&&(o[0]===65279?(this._BOMseen=!0,o.shift()):this._BOMseen=!0),f2(o)}};function oc(r,e){if(!(this instanceof oc))return new oc(r,e);if(r=r!==void 0?String(r).toLowerCase():nc,r!==nc)throw new Error("Encoding not supported. Only utf-8 is supported");e=ac(e),this._streaming=!1,this._encoder=null,this._options={fatal:Boolean(e.fatal)},Object.defineProperty(this,"encoding",{value:"utf-8"})}oc.prototype={encode:function(e,t){e=e?String(e):"",t=ac(t),this._streaming||(this._encoder=new h2(this._options)),this._streaming=Boolean(t.stream);for(var n=[],i=new Su(c2(e)),o;!i.endOfStream()&&(o=this._encoder.handler(i,i.read()),o!==Ko);)Array.isArray(o)?n.push.apply(n,o):n.push(o);if(!this._streaming){for(;o=this._encoder.handler(i,i.read()),o!==Ko;)Array.isArray(o)?n.push.apply(n,o):n.push(o);this._encoder=null}return new Uint8Array(n)}};function u2(r){var e=r.fatal,t=0,n=0,i=0,o=128,a=191;this.handler=function(h,y){if(y===rc&&i!==0)return i=0,Au(e);if(y===rc)return Ko;if(i===0){if(mi(y,0,127))return y;if(mi(y,194,223))i=1,t=y-192;else if(mi(y,224,239))y===224&&(o=160),y===237&&(a=159),i=2,t=y-224;else if(mi(y,240,244))y===240&&(o=144),y===244&&(a=143),i=3,t=y-240;else return Au(e);return t=t<<6*i,null}if(!mi(y,o,a))return t=i=n=0,o=128,a=191,h.prepend(y),Au(e);if(o=128,a=191,n+=1,t+=y-128<<6*(i-n),n!==i)return null;var I=t;return t=i=n=0,I}}function h2(r){var e=r.fatal;this.handler=function(t,n){if(n===rc)return Ko;if(mi(n,0,127))return n;var i,o;mi(n,128,2047)?(i=1,o=192):mi(n,2048,65535)?(i=2,o=224):mi(n,65536,1114111)&&(i=3,o=240);for(var a=[(n>>6*i)+o];i>0;){var h=n>>6*(i-1);a.push(128|h&63),i-=1}return a}}_u.TextEncoder=oc;_u.TextDecoder=ic});var El=Se(Xt=>{"use strict";var d2=Xt&&Xt.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),l2=Xt&&Xt.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),Hn=Xt&&Xt.__decorate||function(r,e,t,n){var i=arguments.length,o=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,t):n,a;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(r,e,t,n);else for(var h=r.length-1;h>=0;h--)(a=r[h])&&(o=(i<3?a(o):i>3?a(e,t,o):a(e,t))||o);return i>3&&o&&Object.defineProperty(e,t,o),o},p2=Xt&&Xt.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.hasOwnProperty.call(r,t)&&d2(e,r,t);return l2(e,r),e},Sl=Xt&&Xt.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Xt,"__esModule",{value:!0});Xt.deserializeUnchecked=Xt.deserialize=Xt.serialize=Xt.BinaryReader=Xt.BinaryWriter=Xt.BorshError=Xt.baseDecode=Xt.baseEncode=void 0;var Ri=Sl(hu()),_l=Sl(Iu()),b2=p2(Al()),m2=typeof TextDecoder!="function"?b2.TextDecoder:TextDecoder,y2=new m2("utf-8",{fatal:!0});function g2(r){return typeof r=="string"&&(r=Buffer.from(r,"utf8")),_l.default.encode(Buffer.from(r))}Xt.baseEncode=g2;function v2(r){return Buffer.from(_l.default.decode(r))}Xt.baseDecode=v2;var ku=1024,Sr=class extends Error{constructor(e){super(e),this.fieldPath=[],this.originalMessage=e}addToFieldPath(e){this.fieldPath.splice(0,0,e),this.message=this.originalMessage+": "+this.fieldPath.join(".")}};Xt.BorshError=Sr;var sc=class{constructor(){this.buf=Buffer.alloc(ku),this.length=0}maybeResize(){this.buf.length<16+this.length&&(this.buf=Buffer.concat([this.buf,Buffer.alloc(ku)]))}writeU8(e){this.maybeResize(),this.buf.writeUInt8(e,this.length),this.length+=1}writeU16(e){this.maybeResize(),this.buf.writeUInt16LE(e,this.length),this.length+=2}writeU32(e){this.maybeResize(),this.buf.writeUInt32LE(e,this.length),this.length+=4}writeU64(e){this.maybeResize(),this.writeBuffer(Buffer.from(new Ri.default(e).toArray("le",8)))}writeU128(e){this.maybeResize(),this.writeBuffer(Buffer.from(new Ri.default(e).toArray("le",16)))}writeU256(e){this.maybeResize(),this.writeBuffer(Buffer.from(new Ri.default(e).toArray("le",32)))}writeU512(e){this.maybeResize(),this.writeBuffer(Buffer.from(new Ri.default(e).toArray("le",64)))}writeBuffer(e){this.buf=Buffer.concat([Buffer.from(this.buf.subarray(0,this.length)),e,Buffer.alloc(ku)]),this.length+=e.length}writeString(e){this.maybeResize();let t=Buffer.from(e,"utf8");this.writeU32(t.length),this.writeBuffer(t)}writeFixedArray(e){this.writeBuffer(Buffer.from(e))}writeArray(e,t){this.maybeResize(),this.writeU32(e.length);for(let n of e)this.maybeResize(),t(n)}toArray(){return this.buf.subarray(0,this.length)}};Xt.BinaryWriter=sc;function Vn(r,e,t){let n=t.value;t.value=function(...i){try{return n.apply(this,i)}catch(o){if(o instanceof RangeError){let a=o.code;if(["ERR_BUFFER_OUT_OF_BOUNDS","ERR_OUT_OF_RANGE"].indexOf(a)>=0)throw new Sr("Reached the end of buffer when deserializing")}throw o}}}var jr=class{constructor(e){this.buf=e,this.offset=0}readU8(){let e=this.buf.readUInt8(this.offset);return this.offset+=1,e}readU16(){let e=this.buf.readUInt16LE(this.offset);return this.offset+=2,e}readU32(){let e=this.buf.readUInt32LE(this.offset);return this.offset+=4,e}readU64(){let e=this.readBuffer(8);return new Ri.default(e,"le")}readU128(){let e=this.readBuffer(16);return new Ri.default(e,"le")}readU256(){let e=this.readBuffer(32);return new Ri.default(e,"le")}readU512(){let e=this.readBuffer(64);return new Ri.default(e,"le")}readBuffer(e){if(this.offset+e>this.buf.length)throw new Sr(`Expected buffer length ${e} isn't within bounds`);let t=this.buf.slice(this.offset,this.offset+e);return this.offset+=e,t}readString(){let e=this.readU32(),t=this.readBuffer(e);try{return y2.decode(t)}catch(n){throw new Sr(`Error decoding UTF-8 string: ${n}`)}}readFixedArray(e){return new Uint8Array(this.readBuffer(e))}readArray(e){let t=this.readU32(),n=Array();for(let i=0;i{co(r,e,o,n[0],i)});else if(n.kind!==void 0)switch(n.kind){case"option":{t==null?i.writeU8(0):(i.writeU8(1),co(r,e,t,n.type,i));break}case"map":{i.writeU32(t.size),t.forEach((o,a)=>{co(r,e,a,n.key,i),co(r,e,o,n.value,i)});break}default:throw new Sr(`FieldType ${n} unrecognized`)}else Ml(r,t,i)}catch(o){throw o instanceof Sr&&o.addToFieldPath(e),o}}function Ml(r,e,t){if(typeof e.borshSerialize=="function"){e.borshSerialize(t);return}let n=r.get(e.constructor);if(!n)throw new Sr(`Class ${e.constructor.name} is missing in schema`);if(n.kind==="struct")n.fields.map(([i,o])=>{co(r,i,e[i],o,t)});else if(n.kind==="enum"){let i=e[n.field];for(let o=0;ofo(r,e,t[0],n))}if(t.kind==="option")return n.readU8()?fo(r,e,t.type,n):void 0;if(t.kind==="map"){let i=new Map,o=n.readU32();for(let a=0;a=n.values.length)throw new Sr(`Enum index: ${i} is out of range`);let[o,a]=n.values[i],h=fo(r,o,a,t);return new e({[o]:h})}throw new Sr(`Unexpected schema kind: ${n.kind} for ${e.constructor.name}`)}function w2(r,e,t,n=jr){let i=new n(t),o=Mu(r,e,i);if(i.offset{"use strict";Object.defineProperty($,"__esModule",{value:!0});$.s16=$.s8=$.nu64be=$.u48be=$.u40be=$.u32be=$.u24be=$.u16be=$.nu64=$.u48=$.u40=$.u32=$.u24=$.u16=$.u8=$.offset=$.greedy=$.Constant=$.UTF8=$.CString=$.Blob=$.Boolean=$.BitField=$.BitStructure=$.VariantLayout=$.Union=$.UnionLayoutDiscriminator=$.UnionDiscriminator=$.Structure=$.Sequence=$.DoubleBE=$.Double=$.FloatBE=$.Float=$.NearInt64BE=$.NearInt64=$.NearUInt64BE=$.NearUInt64=$.IntBE=$.Int=$.UIntBE=$.UInt=$.OffsetLayout=$.GreedyCount=$.ExternalLayout=$.bindConstructorLayout=$.nameWithProperty=$.Layout=$.uint8ArrayToBuffer=$.checkUint8Array=void 0;$.constant=$.utf8=$.cstr=$.blob=$.unionLayoutDiscriminator=$.union=$.seq=$.bits=$.struct=$.f64be=$.f64=$.f32be=$.f32=$.ns64be=$.s48be=$.s40be=$.s32be=$.s24be=$.s16be=$.ns64=$.s48=$.s40=$.s32=$.s24=void 0;var Tu=xu();function Fo(r){if(!(r instanceof Uint8Array))throw new TypeError("b must be a Uint8Array")}$.checkUint8Array=Fo;function Wt(r){return Fo(r),Tu.Buffer.from(r.buffer,r.byteOffset,r.length)}$.uint8ArrayToBuffer=Wt;var Ht=class{constructor(e,t){if(!Number.isInteger(e))throw new TypeError("span must be an integer");this.span=e,this.property=t}makeDestinationObject(){return{}}getSpan(e,t){if(0>this.span)throw new RangeError("indeterminate span");return this.span}replicate(e){let t=Object.create(this.constructor.prototype);return Object.assign(t,this),t.property=e,t}fromArray(e){}};$.Layout=Ht;function Bu(r,e){return e.property?r+"["+e.property+"]":r}$.nameWithProperty=Bu;function A2(r,e){if(typeof r!="function")throw new TypeError("Class must be constructor");if(Object.prototype.hasOwnProperty.call(r,"layout_"))throw new Error("Class is already bound to a layout");if(!(e&&e instanceof Ht))throw new TypeError("layout must be a Layout");if(Object.prototype.hasOwnProperty.call(e,"boundConstructor_"))throw new Error("layout is already bound to a constructor");r.layout_=e,e.boundConstructor_=r,e.makeDestinationObject=()=>new r,Object.defineProperty(r.prototype,"encode",{value(t,n){return e.encode(this,t,n)},writable:!0}),Object.defineProperty(r,"decode",{value(t,n){return e.decode(t,n)},writable:!0})}$.bindConstructorLayout=A2;var Cr=class extends Ht{isCount(){throw new Error("ExternalLayout is abstract")}};$.ExternalLayout=Cr;var cc=class extends Cr{constructor(e=1,t){if(!Number.isInteger(e)||0>=e)throw new TypeError("elementSpan must be a (positive) integer");super(-1,t),this.elementSpan=e}isCount(){return!0}decode(e,t=0){Fo(e);let n=e.length-t;return Math.floor(n/this.elementSpan)}encode(e,t,n){return 0}};$.GreedyCount=cc;var Aa=class extends Cr{constructor(e,t=0,n){if(!(e instanceof Ht))throw new TypeError("layout must be a Layout");if(!Number.isInteger(t))throw new TypeError("offset must be integer or undefined");super(e.span,n||e.property),this.layout=e,this.offset=t}isCount(){return this.layout instanceof en||this.layout instanceof fn}decode(e,t=0){return this.layout.decode(e,t+this.offset)}encode(e,t,n=0){return this.layout.encode(e,t,n+this.offset)}};$.OffsetLayout=Aa;var en=class extends Ht{constructor(e,t){if(super(e,t),6a+i.encode(h,t,n+a),0);return this.count instanceof Cr&&this.count.encode(e.length,t,n),o}};$.Sequence=yc;var gc=class extends Ht{constructor(e,t,n){if(!(Array.isArray(e)&&e.reduce((o,a)=>o&&a instanceof Ht,!0)))throw new TypeError("fields must be array of Layout instances");typeof t=="boolean"&&n===void 0&&(n=t,t=void 0);for(let o of e)if(0>o.span&&o.property===void 0)throw new Error("fields cannot contain unnamed variable-length layout");let i=-1;try{i=e.reduce((o,a)=>o+a.getSpan(),0)}catch{}super(i,t),this.fields=e,this.decodePrefixes=!!n}getSpan(e,t=0){if(0<=this.span)return this.span;let n=0;try{n=this.fields.reduce((i,o)=>{let a=o.getSpan(e,t);return t+=a,i+a},0)}catch{throw new RangeError("indeterminate span")}return n}decode(e,t=0){Fo(e);let n=this.makeDestinationObject();for(let i of this.fields)if(i.property!==void 0&&(n[i.property]=i.decode(e,t)),t+=i.getSpan(e,t),this.decodePrefixes&&e.length===t)break;return n}encode(e,t,n=0){let i=n,o=0,a=0;for(let h of this.fields){let y=h.span;if(a=0y&&(y=h.getSpan(t,n)))}o=n,n+=y}return o+a-i}fromArray(e){let t=this.makeDestinationObject();for(let n of this.fields)n.property!==void 0&&0n.span?t=-1:0<=t&&(t+=n.span)}}};$.Structure=gc;var Sa=class{constructor(e){this.property=e}decode(e,t){throw new Error("UnionDiscriminator is abstract")}encode(e,t,n){throw new Error("UnionDiscriminator is abstract")}};$.UnionDiscriminator=Sa;var Uo=class extends Sa{constructor(e,t){if(!(e instanceof Cr&&e.isCount()))throw new TypeError("layout must be an unsigned integer ExternalLayout");super(t||e.property||"variant"),this.layout=e}decode(e,t){return this.layout.decode(e,t)}encode(e,t,n){return this.layout.encode(e,t,n)}};$.UnionLayoutDiscriminator=Uo;var _a=class extends Ht{constructor(e,t,n){let i;if(e instanceof en||e instanceof fn)i=new Uo(new Aa(e));else if(e instanceof Cr&&e.isCount())i=new Uo(e);else if(e instanceof Sa)i=e;else throw new TypeError("discr must be a UnionDiscriminator or an unsigned integer layout");if(t===void 0&&(t=null),!(t===null||t instanceof Ht))throw new TypeError("defaultLayout must be null or a Layout");if(t!==null){if(0>t.span)throw new Error("defaultLayout must have constant span");t.property===void 0&&(t=t.replicate("content"))}let o=-1;t&&(o=t.span,0<=o&&(e instanceof en||e instanceof fn)&&(o+=i.layout.span)),super(o,n),this.discriminator=i,this.usesPrefixDiscriminator=e instanceof en||e instanceof fn,this.defaultLayout=t,this.registry={};let a=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(h){return a(h)},this.configGetSourceVariant=function(h){a=h.bind(this)}}getSpan(e,t=0){if(0<=this.span)return this.span;let n=this.getVariant(e,t);if(!n)throw new Error("unable to determine span for unrecognized variant");return n.getSpan(e,t)}defaultGetSourceVariant(e){if(Object.prototype.hasOwnProperty.call(e,this.discriminator.property)){if(this.defaultLayout&&this.defaultLayout.property&&Object.prototype.hasOwnProperty.call(e,this.defaultLayout.property))return;let t=this.registry[e[this.discriminator.property]];if(t&&(!t.layout||t.property&&Object.prototype.hasOwnProperty.call(e,t.property)))return t}else for(let t in this.registry){let n=this.registry[t];if(n.property&&Object.prototype.hasOwnProperty.call(e,n.property))return n}throw new Error("unable to infer src variant")}decode(e,t=0){let n,i=this.discriminator,o=i.decode(e,t),a=this.registry[o];if(a===void 0){let h=this.defaultLayout,y=0;this.usesPrefixDiscriminator&&(y=i.layout.span),n=this.makeDestinationObject(),n[i.property]=o,n[h.property]=h.decode(e,t+y)}else n=a.decode(e,t);return n}encode(e,t,n=0){let i=this.getSourceVariant(e);if(i===void 0){let o=this.discriminator,a=this.defaultLayout,h=0;return this.usesPrefixDiscriminator&&(h=o.layout.span),o.encode(e[o.property],t,n),h+a.encode(e[a.property],t,n+h)}return i.encode(e,t,n)}addVariant(e,t,n){let i=new vc(this,e,t,n);return this.registry[e]=i,i}getVariant(e,t=0){let n;return e instanceof Uint8Array?n=this.discriminator.decode(e,t):n=e,this.registry[n]}};$.Union=_a;var vc=class extends Ht{constructor(e,t,n,i){if(!(e instanceof _a))throw new TypeError("union must be a Union");if(!Number.isInteger(t)||0>t)throw new TypeError("variant must be a (non-negative) integer");if(typeof n=="string"&&i===void 0&&(i=n,n=null),n){if(!(n instanceof Ht))throw new TypeError("layout must be a Layout");if(e.defaultLayout!==null&&0<=n.span&&n.span>e.defaultLayout.span)throw new Error("variant span exceeds span of containing union");if(typeof i!="string")throw new TypeError("variant must have a String property")}let o=e.span;0>e.span&&(o=n?n.span:0,0<=o&&e.usesPrefixDiscriminator&&(o+=e.discriminator.layout.span)),super(o,i),this.union=e,this.variant=t,this.layout=n||null}getSpan(e,t=0){if(0<=this.span)return this.span;let n=0;this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span);let i=0;return this.layout&&(i=this.layout.getSpan(e,t+n)),n+i}decode(e,t=0){let n=this.makeDestinationObject();if(this!==this.union.getVariant(e,t))throw new Error("variant mismatch");let i=0;return this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout?n[this.property]=this.layout.decode(e,t+i):this.property?n[this.property]=!0:this.union.usesPrefixDiscriminator&&(n[this.union.discriminator.property]=this.variant),n}encode(e,t,n=0){let i=0;if(this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout&&!Object.prototype.hasOwnProperty.call(e,this.property))throw new TypeError("variant lacks property "+this.property);this.union.discriminator.encode(this.variant,t,n);let o=i;if(this.layout&&(this.layout.encode(e[this.property],t,n+i),o+=this.layout.getSpan(t,n+i),0<=this.union.span&&o>this.union.span))throw new Error("encoded variant overruns containing union");return o}fromArray(e){if(this.layout)return this.layout.fromArray(e)}};$.VariantLayout=vc;function Lo(r){return 0>r&&(r+=4294967296),r}var ka=class extends Ht{constructor(e,t,n){if(!(e instanceof en||e instanceof fn))throw new TypeError("word must be a UInt or UIntBE layout");if(typeof t=="string"&&n===void 0&&(n=t,t=!1),4=t)throw new TypeError("bits must be positive integer");let i=8*e.span,o=e.fields.reduce((a,h)=>a+h.bits,0);if(t+o>i)throw new Error("bits too long for span remainder ("+(i-o)+" of "+i+" remain)");this.container=e,this.bits=t,this.valueMask=(1<>>this.start}encode(e){if(typeof e!="number"||!Number.isInteger(e)||e!==Lo(e&this.valueMask))throw new TypeError(Bu("BitField.encode",this)+" value must be integer not exceeding "+this.valueMask);let t=this.container._packedGetValue(),n=Lo(e<n&&(n=this.length.decode(e,t)),n}decode(e,t=0){let n=this.span;return 0>n&&(n=this.length.decode(e,t)),Wt(e).slice(t,t+n)}encode(e,t,n){let i=this.length;if(this.length instanceof Cr&&(i=e.length),!(e instanceof Uint8Array&&i===e.length))throw new TypeError(Bu("Blob.encode",this)+" requires (length "+i+") Uint8Array as src");if(n+i>t.length)throw new RangeError("encoding overruns Uint8Array");let o=Wt(e);return Wt(t).write(o.toString("hex"),n,i,"hex"),this.length instanceof Cr&&this.length.encode(i,t,n),i}};$.Blob=wc;var Ic=class extends Ht{constructor(e){super(-1,e)}getSpan(e,t=0){Fo(e);let n=t;for(;nt.length)throw new RangeError("encoding overruns Buffer");let a=Wt(t);return i.copy(a,n),a[n+o]=0,o+1}};$.CString=Ic;var Ac=class extends Ht{constructor(e,t){if(typeof e=="string"&&t===void 0&&(t=e,e=void 0),e===void 0)e=-1;else if(!Number.isInteger(e))throw new TypeError("maxSpan must be an integer");super(-1,t),this.maxSpan=e}getSpan(e,t=0){return Fo(e),e.length-t}decode(e,t=0){let n=this.getSpan(e,t);if(0<=this.maxSpan&&this.maxSpant.length)throw new RangeError("encoding overruns Buffer");return i.copy(Wt(t),n),o}};$.UTF8=Ac;var Sc=class extends Ht{constructor(e,t){super(0,t),this.value=e}decode(e,t){return this.value}encode(e,t,n){return 0}};$.Constant=Sc;$.greedy=(r,e)=>new cc(r,e);$.offset=(r,e,t)=>new Aa(r,e,t);$.u8=r=>new en(1,r);$.u16=r=>new en(2,r);$.u24=r=>new en(3,r);$.u32=r=>new en(4,r);$.u40=r=>new en(5,r);$.u48=r=>new en(6,r);$.nu64=r=>new fc(r);$.u16be=r=>new fn(2,r);$.u24be=r=>new fn(3,r);$.u32be=r=>new fn(4,r);$.u40be=r=>new fn(5,r);$.u48be=r=>new fn(6,r);$.nu64be=r=>new uc(r);$.s8=r=>new yi(1,r);$.s16=r=>new yi(2,r);$.s24=r=>new yi(3,r);$.s32=r=>new yi(4,r);$.s40=r=>new yi(5,r);$.s48=r=>new yi(6,r);$.ns64=r=>new hc(r);$.s16be=r=>new Ci(2,r);$.s24be=r=>new Ci(3,r);$.s32be=r=>new Ci(4,r);$.s40be=r=>new Ci(5,r);$.s48be=r=>new Ci(6,r);$.ns64be=r=>new dc(r);$.f32=r=>new lc(r);$.f32be=r=>new pc(r);$.f64=r=>new bc(r);$.f64be=r=>new mc(r);$.struct=(r,e,t)=>new gc(r,e,t);$.bits=(r,e,t)=>new ka(r,e,t);$.seq=(r,e,t)=>new yc(r,e,t);$.union=(r,e,t)=>new _a(r,e,t);$.unionLayoutDiscriminator=(r,e)=>new Uo(r,e);$.blob=(r,e)=>new wc(r,e);$.cstr=r=>new Ic(r);$.utf8=(r,e)=>new Ac(r,e);$.constant=(r,e)=>new Sc(r,e)});var Pu=Se(zo=>{"use strict";Object.defineProperty(zo,"__esModule",{value:!0});var Mc;function S2(r){{let e=Buffer.from(r);e.reverse();let t=e.toString("hex");return t.length===0?BigInt(0):BigInt(`0x${t}`)}return Mc.toBigInt(r,!1)}zo.toBigIntLE=S2;function _2(r){{let e=r.toString("hex");return e.length===0?BigInt(0):BigInt(`0x${e}`)}return Mc.toBigInt(r,!0)}zo.toBigIntBE=_2;function k2(r,e){{let t=r.toString(16),n=Buffer.from(t.padStart(e*2,"0").slice(0,e*2),"hex");return n.reverse(),n}return Mc.fromBigInt(r,Buffer.allocUnsafe(e),!1)}zo.toBufferLE=k2;function M2(r,e){{let t=r.toString(16);return Buffer.from(t.padStart(e*2,"0").slice(0,e*2),"hex")}return Mc.fromBigInt(r,Buffer.allocUnsafe(e),!0)}zo.toBufferBE=M2});var Bc=Se((d8,Ta)=>{function C2(r){return r&&r.__esModule?r:{default:r}}Ta.exports=C2,Ta.exports.__esModule=!0,Ta.exports.default=Ta.exports});var Pc=Se((l8,Ba)=>{function Cl(r,e){for(var t=0;t{function N2(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}Pa.exports=N2,Pa.exports.__esModule=!0,Pa.exports.default=Pa.exports});var Ol=Se((b8,gi)=>{function Nu(r,e){return gi.exports=Nu=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,i){return n.__proto__=i,n},gi.exports.__esModule=!0,gi.exports.default=gi.exports,Nu(r,e)}gi.exports=Nu,gi.exports.__esModule=!0,gi.exports.default=gi.exports});var Cc=Se((m8,Ra)=>{var D2=Ol();function K2(r,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),Object.defineProperty(r,"prototype",{writable:!1}),e&&D2(r,e)}Ra.exports=K2,Ra.exports.__esModule=!0,Ra.exports.default=Ra.exports});var Oc=Se((y8,vi)=>{function Du(r){return vi.exports=Du=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},vi.exports.__esModule=!0,vi.exports.default=vi.exports,Du(r)}vi.exports=Du,vi.exports.__esModule=!0,vi.exports.default=vi.exports});var Nl=Se((g8,Ca)=>{function L2(r){if(r===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return r}Ca.exports=L2,Ca.exports.__esModule=!0,Ca.exports.default=Ca.exports});var Nc=Se((v8,Oa)=>{var U2=Oc().default,F2=Nl();function z2(r,e){if(e&&(U2(e)==="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return F2(r)}Oa.exports=z2,Oa.exports.__esModule=!0,Oa.exports.default=Oa.exports});var Dc=Se((x8,xi)=>{function Ku(r){return xi.exports=Ku=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},xi.exports.__esModule=!0,xi.exports.default=xi.exports,Ku(r)}xi.exports=Ku,xi.exports.__esModule=!0,xi.exports.default=xi.exports});var Uu=Se((w8,Lu)=>{"use strict";var q2=Object.prototype.hasOwnProperty,Gr="~";function Na(){}Object.create&&(Na.prototype=Object.create(null),new Na().__proto__||(Gr=!1));function W2(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function Dl(r,e,t,n,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var o=new W2(t,n||r,i),a=Gr?Gr+e:e;return r._events[a]?r._events[a].fn?r._events[a]=[r._events[a],o]:r._events[a].push(o):(r._events[a]=o,r._eventsCount++),r}function Kc(r,e){--r._eventsCount===0?r._events=new Na:delete r._events[e]}function Or(){this._events=new Na,this._eventsCount=0}Or.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)q2.call(t,n)&&e.push(Gr?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Or.prototype.listeners=function(e){var t=Gr?Gr+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,o=n.length,a=new Array(o);i{"use strict";var Da=Bc();Object.defineProperty(Fu,"__esModule",{value:!0});Fu.default=X2;var j2=Da(Rc()),G2=Da(Pc()),$2=Da(Cc()),H2=Da(Nc()),Kl=Da(Dc()),V2=Uu();function Y2(r){var e=Z2();return function(){var n=(0,Kl.default)(r),i;if(e){var o=(0,Kl.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,H2.default)(this,i)}}function Z2(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var J2=function(r){(0,$2.default)(t,r);var e=Y2(t);function t(n,i,o){var a;return(0,j2.default)(this,t),a=e.call(this),a.socket=new window.WebSocket(n,o),a.socket.onopen=function(){return a.emit("open")},a.socket.onmessage=function(h){return a.emit("message",h.data)},a.socket.onerror=function(h){return a.emit("error",h)},a.socket.onclose=function(h){a.emit("close",h.code,h.reason)},a}return(0,G2.default)(t,[{key:"send",value:function(i,o,a){var h=a||o;try{this.socket.send(i),h()}catch(y){h(y)}}},{key:"close",value:function(i,o){this.socket.close(i,o)}},{key:"addEventListener",value:function(i,o,a){this.socket.addEventListener(i,o,a)}}]),t}(V2.EventEmitter);function X2(r,e){return new J2(r,e)}});var Fl=Se((A8,wi)=>{var Q2=Oc().default;function Ul(){"use strict";wi.exports=Ul=function(){return r},wi.exports.__esModule=!0,wi.exports.default=wi.exports;var r={},e=Object.prototype,t=e.hasOwnProperty,n=typeof Symbol=="function"?Symbol:{},i=n.iterator||"@@iterator",o=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function h(x,f,b){return Object.defineProperty(x,f,{value:b,enumerable:!0,configurable:!0,writable:!0}),x[f]}try{h({},"")}catch{h=function(b,l,s){return b[l]=s}}function y(x,f,b,l){var s=f&&f.prototype instanceof k?f:k,c=Object.create(s.prototype),p=new je(l||[]);return c._invoke=function(g,d,u){var w="suspendedStart";return function(M,v){if(w==="executing")throw new Error("Generator is already running");if(w==="completed"){if(M==="throw")throw v;return C()}for(u.method=M,u.arg=v;;){var P=u.delegate;if(P){var z=Be(P,u);if(z){if(z===_)continue;return z}}if(u.method==="next")u.sent=u._sent=u.arg;else if(u.method==="throw"){if(w==="suspendedStart")throw w="completed",u.arg;u.dispatchException(u.arg)}else u.method==="return"&&u.abrupt("return",u.arg);w="executing";var A=I(g,d,u);if(A.type==="normal"){if(w=u.done?"completed":"suspendedYield",A.arg===_)continue;return{value:A.arg,done:u.done}}A.type==="throw"&&(w="completed",u.method="throw",u.arg=A.arg)}}}(x,b,p),c}function I(x,f,b){try{return{type:"normal",arg:x.call(f,b)}}catch(l){return{type:"throw",arg:l}}}r.wrap=y;var _={};function k(){}function K(){}function D(){}var q={};h(q,i,function(){return this});var Z=Object.getPrototypeOf,he=Z&&Z(Z(R([])));he&&he!==e&&t.call(he,i)&&(q=he);var ce=D.prototype=k.prototype=Object.create(q);function Y(x){["next","throw","return"].forEach(function(f){h(x,f,function(b){return this._invoke(f,b)})})}function Ee(x,f){function b(s,c,p,g){var d=I(x[s],x,c);if(d.type!=="throw"){var u=d.arg,w=u.value;return w&&Q2(w)=="object"&&t.call(w,"__await")?f.resolve(w.__await).then(function(M){b("next",M,p,g)},function(M){b("throw",M,p,g)}):f.resolve(w).then(function(M){u.value=M,p(u)},function(M){return b("throw",M,p,g)})}g(d.arg)}var l;this._invoke=function(s,c){function p(){return new f(function(g,d){b(s,c,g,d)})}return l=l?l.then(p,p):p()}}function Be(x,f){var b=x.iterator[f.method];if(b===void 0){if(f.delegate=null,f.method==="throw"){if(x.iterator.return&&(f.method="return",f.arg=void 0,Be(x,f),f.method==="throw"))return _;f.method="throw",f.arg=new TypeError("The iterator does not provide a 'throw' method")}return _}var l=I(b,x.iterator,f.arg);if(l.type==="throw")return f.method="throw",f.arg=l.arg,f.delegate=null,_;var s=l.arg;return s?s.done?(f[x.resultName]=s.value,f.next=x.nextLoc,f.method!=="return"&&(f.method="next",f.arg=void 0),f.delegate=null,_):s:(f.method="throw",f.arg=new TypeError("iterator result is not an object"),f.delegate=null,_)}function Ue(x){var f={tryLoc:x[0]};1 in x&&(f.catchLoc=x[1]),2 in x&&(f.finallyLoc=x[2],f.afterLoc=x[3]),this.tryEntries.push(f)}function _e(x){var f=x.completion||{};f.type="normal",delete f.arg,x.completion=f}function je(x){this.tryEntries=[{tryLoc:"root"}],x.forEach(Ue,this),this.reset(!0)}function R(x){if(x){var f=x[i];if(f)return f.call(x);if(typeof x.next=="function")return x;if(!isNaN(x.length)){var b=-1,l=function s(){for(;++b=0;--s){var c=this.tryEntries[s],p=c.completion;if(c.tryLoc==="root")return l("end");if(c.tryLoc<=this.prev){var g=t.call(c,"catchLoc"),d=t.call(c,"finallyLoc");if(g&&d){if(this.prev=0;--l){var s=this.tryEntries[l];if(s.tryLoc<=this.prev&&t.call(s,"finallyLoc")&&this.prev=0;--b){var l=this.tryEntries[b];if(l.finallyLoc===f)return this.complete(l.completion,l.afterLoc),_e(l),_}},catch:function(f){for(var b=this.tryEntries.length-1;b>=0;--b){var l=this.tryEntries[b];if(l.tryLoc===f){var s=l.completion;if(s.type==="throw"){var c=s.arg;_e(l)}return c}}throw new Error("illegal catch attempt")},delegateYield:function(f,b,l){return this.delegate={iterator:R(f),resultName:b,nextLoc:l},this.method==="next"&&(this.arg=void 0),_}},r}wi.exports=Ul,wi.exports.__esModule=!0,wi.exports.default=wi.exports});var ql=Se((S8,zl)=>{var Lc=Fl()();zl.exports=Lc;try{regeneratorRuntime=Lc}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=Lc:Function("r","regeneratorRuntime = r")(Lc)}});var jl=Se((_8,Ka)=>{function Wl(r,e,t,n,i,o,a){try{var h=r[o](a),y=h.value}catch(I){t(I);return}h.done?e(y):Promise.resolve(y).then(n,i)}function eg(r){return function(){var e=this,t=arguments;return new Promise(function(n,i){var o=r.apply(e,t);function a(y){Wl(o,n,i,a,h,"next",y)}function h(y){Wl(o,n,i,a,h,"throw",y)}a(void 0)})}}Ka.exports=eg,Ka.exports.__esModule=!0,Ka.exports.default=Ka.exports});var $l=Se(Fc=>{"use strict";var Di=Bc();Object.defineProperty(Fc,"__esModule",{value:!0});Fc.default=void 0;var Ni=Di(ql()),Uc=Di(jl()),tg=Di(Oc()),rg=Di(Rc()),ng=Di(Pc()),ig=Di(Cc()),og=Di(Nc()),Gl=Di(Dc()),ag=Uu();function sg(r){var e=cg();return function(){var n=(0,Gl.default)(r),i;if(e){var o=(0,Gl.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,og.default)(this,i)}}function cg(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var fg=function(r,e){var t={};for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(r);i1&&arguments[1]!==void 0?arguments[1]:"ws://localhost:8080",a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},h=arguments.length>3?arguments[3]:void 0;(0,rg.default)(this,t);var y=a.autoconnect,I=y===void 0?!0:y,_=a.reconnect,k=_===void 0?!0:_,K=a.reconnect_interval,D=K===void 0?1e3:K,q=a.max_reconnects,Z=q===void 0?5:q,he=fg(a,["autoconnect","reconnect","reconnect_interval","max_reconnects"]);return i=e.call(this),i.webSocketFactory=n,i.queue={},i.rpc_id=0,i.address=o,i.autoconnect=I,i.ready=!1,i.reconnect=k,i.reconnect_interval=D,i.max_reconnects=Z,i.rest_options=he,i.current_reconnects=0,i.generate_request_id=h||function(){return++i.rpc_id},i.autoconnect&&i._connect(i.address,Object.assign({autoconnect:i.autoconnect,reconnect:i.reconnect,reconnect_interval:i.reconnect_interval,max_reconnects:i.max_reconnects},i.rest_options)),i}return(0,ng.default)(t,[{key:"connect",value:function(){this.socket||this._connect(this.address,Object.assign({autoconnect:this.autoconnect,reconnect:this.reconnect,reconnect_interval:this.reconnect_interval,max_reconnects:this.max_reconnects},this.rest_options))}},{key:"call",value:function(i,o,a,h){var y=this;return!h&&(0,tg.default)(a)==="object"&&(h=a,a=null),new Promise(function(I,_){if(!y.ready)return _(new Error("socket not ready"));var k=y.generate_request_id(i,o),K={jsonrpc:"2.0",method:i,params:o||null,id:k};y.socket.send(JSON.stringify(K),h,function(D){if(D)return _(D);y.queue[k]={promise:[I,_]},a&&(y.queue[k].timeout=setTimeout(function(){delete y.queue[k],_(new Error("reply timeout"))},a))})})}},{key:"login",value:function(){var n=(0,Uc.default)(Ni.default.mark(function o(a){var h;return Ni.default.wrap(function(I){for(;;)switch(I.prev=I.next){case 0:return I.next=2,this.call("rpc.login",a);case 2:if(h=I.sent,h){I.next=5;break}throw new Error("authentication failed");case 5:return I.abrupt("return",h);case 6:case"end":return I.stop()}},o,this)}));function i(o){return n.apply(this,arguments)}return i}()},{key:"listMethods",value:function(){var n=(0,Uc.default)(Ni.default.mark(function o(){return Ni.default.wrap(function(h){for(;;)switch(h.prev=h.next){case 0:return h.next=2,this.call("__listMethods");case 2:return h.abrupt("return",h.sent);case 3:case"end":return h.stop()}},o,this)}));function i(){return n.apply(this,arguments)}return i}()},{key:"notify",value:function(i,o){var a=this;return new Promise(function(h,y){if(!a.ready)return y(new Error("socket not ready"));var I={jsonrpc:"2.0",method:i,params:o||null};a.socket.send(JSON.stringify(I),function(_){if(_)return y(_);h()})})}},{key:"subscribe",value:function(){var n=(0,Uc.default)(Ni.default.mark(function o(a){var h;return Ni.default.wrap(function(I){for(;;)switch(I.prev=I.next){case 0:return typeof a=="string"&&(a=[a]),I.next=3,this.call("rpc.on",a);case 3:if(h=I.sent,!(typeof a=="string"&&h[a]!=="ok")){I.next=6;break}throw new Error("Failed subscribing to an event '"+a+"' with: "+h[a]);case 6:return I.abrupt("return",h);case 7:case"end":return I.stop()}},o,this)}));function i(o){return n.apply(this,arguments)}return i}()},{key:"unsubscribe",value:function(){var n=(0,Uc.default)(Ni.default.mark(function o(a){var h;return Ni.default.wrap(function(I){for(;;)switch(I.prev=I.next){case 0:return typeof a=="string"&&(a=[a]),I.next=3,this.call("rpc.off",a);case 3:if(h=I.sent,!(typeof a=="string"&&h[a]!=="ok")){I.next=6;break}throw new Error("Failed unsubscribing from an event with: "+h);case 6:return I.abrupt("return",h);case 7:case"end":return I.stop()}},o,this)}));function i(o){return n.apply(this,arguments)}return i}()},{key:"close",value:function(i,o){this.socket.close(i||1e3,o)}},{key:"_connect",value:function(i,o){var a=this;this.socket=this.webSocketFactory(i,o),this.socket.addEventListener("open",function(){a.ready=!0,a.emit("open"),a.current_reconnects=0}),this.socket.addEventListener("message",function(h){var y=h.data;y instanceof ArrayBuffer&&(y=Buffer.from(y).toString());try{y=JSON.parse(y)}catch{return}if(y.notification&&a.listeners(y.notification).length){if(!Object.keys(y.params).length)return a.emit(y.notification);var I=[y.notification];if(y.params.constructor===Object)I.push(y.params);else for(var _=0;_a.current_reconnects||a.max_reconnects===0)&&setTimeout(function(){return a._connect(i,o)},a.reconnect_interval))})}}]),t}(ag.EventEmitter);Fc.default=ug});var Vl=Se(zc=>{"use strict";var ho=Bc();Object.defineProperty(zc,"__esModule",{value:!0});zc.Client=void 0;var hg=ho(Pc()),dg=ho(Rc()),lg=ho(Cc()),pg=ho(Nc()),Hl=ho(Dc()),bg=ho(Ll()),mg=ho($l());function yg(r){var e=gg();return function(){var n=(0,Hl.default)(r),i;if(e){var o=(0,Hl.default)(this).constructor;i=Reflect.construct(n,arguments,o)}else i=n.apply(this,arguments);return(0,pg.default)(this,i)}}function gg(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}var vg=function(r){(0,lg.default)(t,r);var e=yg(t);function t(){var n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"ws://localhost:8080",i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=i.autoconnect,a=o===void 0?!0:o,h=i.reconnect,y=h===void 0?!0:h,I=i.reconnect_interval,_=I===void 0?1e3:I,k=i.max_reconnects,K=k===void 0?5:k,D=arguments.length>2?arguments[2]:void 0;return(0,dg.default)(this,t),e.call(this,bg.default,n,{autoconnect:a,reconnect:y,reconnect_interval:_,max_reconnects:K},D)}return(0,hg.default)(t)}(mg.default);zc.Client=vg});function La(){if(!qc&&(qc=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||typeof msCrypto<"u"&&typeof msCrypto.getRandomValues=="function"&&msCrypto.getRandomValues.bind(msCrypto),!qc))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return qc(xg)}var qc,xg,zu=Wr(()=>{xg=new Uint8Array(16)});var Yl,Zl=Wr(()=>{Yl=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i});function wg(r){return typeof r=="string"&&Yl.test(r)}var Ki,Ua=Wr(()=>{Zl();Ki=wg});function Ig(r){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,t=(_r[r[e+0]]+_r[r[e+1]]+_r[r[e+2]]+_r[r[e+3]]+"-"+_r[r[e+4]]+_r[r[e+5]]+"-"+_r[r[e+6]]+_r[r[e+7]]+"-"+_r[r[e+8]]+_r[r[e+9]]+"-"+_r[r[e+10]]+_r[r[e+11]]+_r[r[e+12]]+_r[r[e+13]]+_r[r[e+14]]+_r[r[e+15]]).toLowerCase();if(!Ki(t))throw TypeError("Stringified UUID is invalid");return t}var _r,Wc,Li,Fa=Wr(()=>{Ua();_r=[];for(Wc=0;Wc<256;++Wc)_r.push((Wc+256).toString(16).substr(1));Li=Ig});function Ag(r,e,t){var n=e&&t||0,i=e||new Array(16);r=r||{};var o=r.node||Jl,a=r.clockseq!==void 0?r.clockseq:qu;if(o==null||a==null){var h=r.random||(r.rng||La)();o==null&&(o=Jl=[h[0]|1,h[1],h[2],h[3],h[4],h[5]]),a==null&&(a=qu=(h[6]<<8|h[7])&16383)}var y=r.msecs!==void 0?r.msecs:Date.now(),I=r.nsecs!==void 0?r.nsecs:ju+1,_=y-Wu+(I-ju)/1e4;if(_<0&&r.clockseq===void 0&&(a=a+1&16383),(_<0||y>Wu)&&r.nsecs===void 0&&(I=0),I>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");Wu=y,ju=I,qu=a,y+=122192928e5;var k=((y&268435455)*1e4+I)%4294967296;i[n++]=k>>>24&255,i[n++]=k>>>16&255,i[n++]=k>>>8&255,i[n++]=k&255;var K=y/4294967296*1e4&268435455;i[n++]=K>>>8&255,i[n++]=K&255,i[n++]=K>>>24&15|16,i[n++]=K>>>16&255,i[n++]=a>>>8|128,i[n++]=a&255;for(var D=0;D<6;++D)i[n+D]=o[D];return e||Li(i)}var Jl,qu,Wu,ju,Xl,Ql=Wr(()=>{zu();Fa();Wu=0,ju=0;Xl=Ag});function Sg(r){if(!Ki(r))throw TypeError("Invalid UUID");var e,t=new Uint8Array(16);return t[0]=(e=parseInt(r.slice(0,8),16))>>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=e&255,t[4]=(e=parseInt(r.slice(9,13),16))>>>8,t[5]=e&255,t[6]=(e=parseInt(r.slice(14,18),16))>>>8,t[7]=e&255,t[8]=(e=parseInt(r.slice(19,23),16))>>>8,t[9]=e&255,t[10]=(e=parseInt(r.slice(24,36),16))/1099511627776&255,t[11]=e/4294967296&255,t[12]=e>>>24&255,t[13]=e>>>16&255,t[14]=e>>>8&255,t[15]=e&255,t}var jc,Gu=Wr(()=>{Ua();jc=Sg});function _g(r){r=unescape(encodeURIComponent(r));for(var e=[],t=0;t{Fa();Gu();kg="6ba7b810-9dad-11d1-80b4-00c04fd430c8",Mg="6ba7b811-9dad-11d1-80b4-00c04fd430c8"});function Eg(r){if(typeof r=="string"){var e=unescape(encodeURIComponent(r));r=new Uint8Array(e.length);for(var t=0;t>5]>>>i%32&255,a=parseInt(n.charAt(o>>>4&15)+n.charAt(o&15),16);e.push(a)}return e}function e1(r){return(r+64>>>9<<4)+14+1}function Bg(r,e){r[e>>5]|=128<>5]|=(r[n/8]&255)<>16)+(e>>16)+(t>>16);return n<<16|t&65535}function Rg(r,e){return r<>>32-e}function $c(r,e,t,n,i,o){return Ui(Rg(Ui(Ui(e,r),Ui(n,o)),i),t)}function Nr(r,e,t,n,i,o,a){return $c(e&t|~e&n,r,e,i,o,a)}function Dr(r,e,t,n,i,o,a){return $c(e&n|t&~n,r,e,i,o,a)}function Kr(r,e,t,n,i,o,a){return $c(e^t^n,r,e,i,o,a)}function Lr(r,e,t,n,i,o,a){return $c(t^(e|~n),r,e,i,o,a)}var t1,r1=Wr(()=>{t1=Eg});var Cg,n1,i1=Wr(()=>{$u();r1();Cg=Gc("v3",48,t1),n1=Cg});function Og(r,e,t){r=r||{};var n=r.random||(r.rng||La)();if(n[6]=n[6]&15|64,n[8]=n[8]&63|128,e){t=t||0;for(var i=0;i<16;++i)e[t+i]=n[i];return e}return Li(n)}var o1,a1=Wr(()=>{zu();Fa();o1=Og});function Ng(r,e,t,n){switch(r){case 0:return e&t^~e&n;case 1:return e^t^n;case 2:return e&t^e&n^t&n;case 3:return e^t^n}}function Hu(r,e){return r<>>32-e}function Dg(r){var e=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof r=="string"){var n=unescape(encodeURIComponent(r));r=[];for(var i=0;i>>0;Ee=Y,Y=ce,ce=Hu(he,30)>>>0,he=Z,Z=_e}t[0]=t[0]+Z>>>0,t[1]=t[1]+he>>>0,t[2]=t[2]+ce>>>0,t[3]=t[3]+Y>>>0,t[4]=t[4]+Ee>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,t[0]&255,t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,t[1]&255,t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,t[2]&255,t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,t[3]&255,t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,t[4]&255]}var s1,c1=Wr(()=>{s1=Dg});var Kg,f1,u1=Wr(()=>{$u();c1();Kg=Gc("v5",80,s1),f1=Kg});var h1,d1=Wr(()=>{h1="00000000-0000-0000-0000-000000000000"});function Lg(r){if(!Ki(r))throw TypeError("Invalid UUID");return parseInt(r.substr(14,1),16)}var l1,p1=Wr(()=>{Ua();l1=Lg});var Vu={};Rd(Vu,{NIL:()=>h1,parse:()=>jc,stringify:()=>Li,v1:()=>Xl,v3:()=>n1,v4:()=>o1,v5:()=>f1,validate:()=>Ki,version:()=>l1});var Yu=Wr(()=>{Ql();i1();a1();u1();d1();p1();Ua();Fa();Gu()});var m1=Se((h5,b1)=>{"use strict";var Ug=(Yu(),Yf(Vu)).v4,Fg=function(r,e,t,n){if(typeof r!="string")throw new TypeError(r+" must be a string");n=n||{};let i=typeof n.version=="number"?n.version:2;if(i!==1&&i!==2)throw new TypeError(i+" must be 1 or 2");let o={method:r};if(i===2&&(o.jsonrpc="2.0"),e){if(typeof e!="object"&&!Array.isArray(e))throw new TypeError(e+" must be an object, array or omitted");o.params=e}if(typeof t>"u"){let a=typeof n.generator=="function"?n.generator:function(){return Ug()};o.id=a(o,n)}else i===2&&t===null?n.notificationIdNull&&(o.id=null):o.id=t;return o};b1.exports=Fg});var g1=Se((d5,y1)=>{"use strict";var zg=(Yu(),Yf(Vu)).v4,qg=m1(),za=function(r,e){if(!(this instanceof za))return new za(r,e);e||(e={}),this.options={reviver:typeof e.reviver<"u"?e.reviver:null,replacer:typeof e.replacer<"u"?e.replacer:null,generator:typeof e.generator<"u"?e.generator:function(){return zg()},version:typeof e.version<"u"?e.version:2,notificationIdNull:typeof e.notificationIdNull=="boolean"?e.notificationIdNull:!1},this.callServer=r};y1.exports=za;za.prototype.request=function(r,e,t,n){let i=this,o=null,a=Array.isArray(r)&&typeof e=="function";if(this.options.version===1&&a)throw new TypeError("JSON-RPC 1.0 does not support batching");if(a||!a&&r&&typeof r=="object"&&typeof e=="function")n=e,o=r;else{typeof t=="function"&&(n=t,t=void 0);let I=typeof n=="function";try{o=qg(r,e,t,{generator:this.options.generator,version:this.options.version,notificationIdNull:this.options.notificationIdNull})}catch(_){if(I)return n(_);throw _}if(!I)return o}let y;try{y=JSON.stringify(o,this.options.replacer)}catch(I){return n(I)}return this.callServer(y,function(I,_){i._parseResponse(I,_,n)}),o};za.prototype._parseResponse=function(r,e,t){if(r){t(r);return}if(!e)return t();let n;try{n=JSON.parse(e,this.options.reviver)}catch(i){return t(i)}if(t.length===3)if(Array.isArray(n)){let i=function(a){return typeof a.error<"u"},o=function(a){return!i(a)};return t(null,n.filter(i),n.filter(o))}else return t(null,n.error,n.result);t(null,n)}});var x1=Se((l5,v1)=>{var Gt={IMPOSSIBLE_CASE:"Impossible case. Please create issue.",TWEAK_ADD:"The tweak was out of range or the resulted private key is invalid",TWEAK_MUL:"The tweak was out of range or equal to zero",CONTEXT_RANDOMIZE_UNKNOW:"Unknow error on context randomization",SECKEY_INVALID:"Private Key is invalid",PUBKEY_PARSE:"Public Key could not be parsed",PUBKEY_SERIALIZE:"Public Key serialization error",PUBKEY_COMBINE:"The sum of the public keys is not valid",SIG_PARSE:"Signature could not be parsed",SIGN:"The nonce generation function failed, or the private key was invalid",RECOVER:"Public key could not be recover",ECDH:"Scalar was invalid (zero or overflow)"};function gn(r,e){if(!r)throw new Error(e)}function Ft(r,e,t){if(gn(e instanceof Uint8Array,`Expected ${r} to be an Uint8Array`),t!==void 0)if(Array.isArray(t)){let n=t.join(", "),i=`Expected ${r} to be an Uint8Array with length [${n}]`;gn(t.includes(e.length),i)}else{let n=`Expected ${r} to be an Uint8Array with length ${t}`;gn(e.length===t,n)}}function lo(r){gn(Go(r)==="Boolean","Expected compressed to be a Boolean")}function En(r=t=>new Uint8Array(t),e){return typeof r=="function"&&(r=r(e)),Ft("output",r,e),r}function Go(r){return Object.prototype.toString.call(r).slice(8,-1)}v1.exports=r=>({contextRandomize(e){switch(gn(e===null||e instanceof Uint8Array,"Expected seed to be an Uint8Array or null"),e!==null&&Ft("seed",e,32),r.contextRandomize(e)){case 1:throw new Error(Gt.CONTEXT_RANDOMIZE_UNKNOW)}},privateKeyVerify(e){return Ft("private key",e,32),r.privateKeyVerify(e)===0},privateKeyNegate(e){switch(Ft("private key",e,32),r.privateKeyNegate(e)){case 0:return e;case 1:throw new Error(Gt.IMPOSSIBLE_CASE)}},privateKeyTweakAdd(e,t){switch(Ft("private key",e,32),Ft("tweak",t,32),r.privateKeyTweakAdd(e,t)){case 0:return e;case 1:throw new Error(Gt.TWEAK_ADD)}},privateKeyTweakMul(e,t){switch(Ft("private key",e,32),Ft("tweak",t,32),r.privateKeyTweakMul(e,t)){case 0:return e;case 1:throw new Error(Gt.TWEAK_MUL)}},publicKeyVerify(e){return Ft("public key",e,[33,65]),r.publicKeyVerify(e)===0},publicKeyCreate(e,t=!0,n){switch(Ft("private key",e,32),lo(t),n=En(n,t?33:65),r.publicKeyCreate(n,e)){case 0:return n;case 1:throw new Error(Gt.SECKEY_INVALID);case 2:throw new Error(Gt.PUBKEY_SERIALIZE)}},publicKeyConvert(e,t=!0,n){switch(Ft("public key",e,[33,65]),lo(t),n=En(n,t?33:65),r.publicKeyConvert(n,e)){case 0:return n;case 1:throw new Error(Gt.PUBKEY_PARSE);case 2:throw new Error(Gt.PUBKEY_SERIALIZE)}},publicKeyNegate(e,t=!0,n){switch(Ft("public key",e,[33,65]),lo(t),n=En(n,t?33:65),r.publicKeyNegate(n,e)){case 0:return n;case 1:throw new Error(Gt.PUBKEY_PARSE);case 2:throw new Error(Gt.IMPOSSIBLE_CASE);case 3:throw new Error(Gt.PUBKEY_SERIALIZE)}},publicKeyCombine(e,t=!0,n){gn(Array.isArray(e),"Expected public keys to be an Array"),gn(e.length>0,"Expected public keys array will have more than zero items");for(let i of e)Ft("public key",i,[33,65]);switch(lo(t),n=En(n,t?33:65),r.publicKeyCombine(n,e)){case 0:return n;case 1:throw new Error(Gt.PUBKEY_PARSE);case 2:throw new Error(Gt.PUBKEY_COMBINE);case 3:throw new Error(Gt.PUBKEY_SERIALIZE)}},publicKeyTweakAdd(e,t,n=!0,i){switch(Ft("public key",e,[33,65]),Ft("tweak",t,32),lo(n),i=En(i,n?33:65),r.publicKeyTweakAdd(i,e,t)){case 0:return i;case 1:throw new Error(Gt.PUBKEY_PARSE);case 2:throw new Error(Gt.TWEAK_ADD)}},publicKeyTweakMul(e,t,n=!0,i){switch(Ft("public key",e,[33,65]),Ft("tweak",t,32),lo(n),i=En(i,n?33:65),r.publicKeyTweakMul(i,e,t)){case 0:return i;case 1:throw new Error(Gt.PUBKEY_PARSE);case 2:throw new Error(Gt.TWEAK_MUL)}},signatureNormalize(e){switch(Ft("signature",e,64),r.signatureNormalize(e)){case 0:return e;case 1:throw new Error(Gt.SIG_PARSE)}},signatureExport(e,t){Ft("signature",e,64),t=En(t,72);let n={output:t,outputlen:72};switch(r.signatureExport(n,e)){case 0:return t.slice(0,n.outputlen);case 1:throw new Error(Gt.SIG_PARSE);case 2:throw new Error(Gt.IMPOSSIBLE_CASE)}},signatureImport(e,t){switch(Ft("signature",e),t=En(t,64),r.signatureImport(t,e)){case 0:return t;case 1:throw new Error(Gt.SIG_PARSE);case 2:throw new Error(Gt.IMPOSSIBLE_CASE)}},ecdsaSign(e,t,n={},i){Ft("message",e,32),Ft("private key",t,32),gn(Go(n)==="Object","Expected options to be an Object"),n.data!==void 0&&Ft("options.data",n.data),n.noncefn!==void 0&&gn(Go(n.noncefn)==="Function","Expected options.noncefn to be a Function"),i=En(i,64);let o={signature:i,recid:null};switch(r.ecdsaSign(o,e,t,n.data,n.noncefn)){case 0:return o;case 1:throw new Error(Gt.SIGN);case 2:throw new Error(Gt.IMPOSSIBLE_CASE)}},ecdsaVerify(e,t,n){switch(Ft("signature",e,64),Ft("message",t,32),Ft("public key",n,[33,65]),r.ecdsaVerify(e,t,n)){case 0:return!0;case 3:return!1;case 1:throw new Error(Gt.SIG_PARSE);case 2:throw new Error(Gt.PUBKEY_PARSE)}},ecdsaRecover(e,t,n,i=!0,o){switch(Ft("signature",e,64),gn(Go(t)==="Number"&&t>=0&&t<=3,"Expected recovery id to be a Number within interval [0, 3]"),Ft("message",n,32),lo(i),o=En(o,i?33:65),r.ecdsaRecover(o,e,t,n)){case 0:return o;case 1:throw new Error(Gt.SIG_PARSE);case 2:throw new Error(Gt.RECOVER);case 3:throw new Error(Gt.IMPOSSIBLE_CASE)}},ecdh(e,t,n={},i){switch(Ft("public key",e,[33,65]),Ft("private key",t,32),gn(Go(n)==="Object","Expected options to be an Object"),n.data!==void 0&&Ft("options.data",n.data),n.hashfn!==void 0?(gn(Go(n.hashfn)==="Function","Expected options.hashfn to be a Function"),n.xbuf!==void 0&&Ft("options.xbuf",n.xbuf,32),n.ybuf!==void 0&&Ft("options.ybuf",n.ybuf,32),Ft("output",i)):i=En(i,32),r.ecdh(i,e,t,n.data,n.hashfn,n.xbuf,n.ybuf)){case 0:return i;case 1:throw new Error(Gt.PUBKEY_PARSE);case 2:throw new Error(Gt.ECDH)}}})});var w1=Se((p5,Wg)=>{Wg.exports={name:"elliptic",version:"6.5.4",description:"EC cryptography",main:"lib/elliptic.js",files:["lib"],scripts:{lint:"eslint lib test","lint:fix":"npm run lint -- --fix",unit:"istanbul test _mocha --reporter=spec test/index.js",test:"npm run lint && npm run unit",version:"grunt dist && git add dist/"},repository:{type:"git",url:"git@github.com:indutny/elliptic"},keywords:["EC","Elliptic","curve","Cryptography"],author:"Fedor Indutny ",license:"MIT",bugs:{url:"https://github.com/indutny/elliptic/issues"},homepage:"https://github.com/indutny/elliptic",devDependencies:{brfs:"^2.0.2",coveralls:"^3.1.0",eslint:"^7.6.0",grunt:"^1.2.1","grunt-browserify":"^5.3.0","grunt-cli":"^1.3.2","grunt-contrib-connect":"^3.0.0","grunt-contrib-copy":"^1.0.0","grunt-contrib-uglify":"^5.0.0","grunt-mocha-istanbul":"^5.0.2","grunt-saucelabs":"^9.0.1",istanbul:"^0.4.5",mocha:"^8.0.1"},dependencies:{"bn.js":"^4.11.9",brorand:"^1.1.0","hash.js":"^1.0.0","hmac-drbg":"^1.0.1",inherits:"^2.0.4","minimalistic-assert":"^1.0.1","minimalistic-crypto-utils":"^1.0.1"}}});var Zn=Se((I1,Zu)=>{(function(r,e){"use strict";function t(x,f){if(!x)throw new Error(f||"Assertion failed")}function n(x,f){x.super_=f;var b=function(){};b.prototype=f.prototype,x.prototype=new b,x.prototype.constructor=x}function i(x,f,b){if(i.isBN(x))return x;this.negative=0,this.words=null,this.length=0,this.red=null,x!==null&&((f==="le"||f==="be")&&(b=f,f=10),this._init(x||0,f||10,b||"be"))}typeof r=="object"?r.exports=i:e.BN=i,i.BN=i,i.wordSize=26;var o;try{typeof window<"u"&&typeof window.Buffer<"u"?o=window.Buffer:o=fu().Buffer}catch{}i.isBN=function(f){return f instanceof i?!0:f!==null&&typeof f=="object"&&f.constructor.wordSize===i.wordSize&&Array.isArray(f.words)},i.max=function(f,b){return f.cmp(b)>0?f:b},i.min=function(f,b){return f.cmp(b)<0?f:b},i.prototype._init=function(f,b,l){if(typeof f=="number")return this._initNumber(f,b,l);if(typeof f=="object")return this._initArray(f,b,l);b==="hex"&&(b=16),t(b===(b|0)&&b>=2&&b<=36),f=f.toString().replace(/\s+/g,"");var s=0;f[0]==="-"&&(s++,this.negative=1),s=0;s-=3)p=f[s]|f[s-1]<<8|f[s-2]<<16,this.words[c]|=p<>>26-g&67108863,g+=24,g>=26&&(g-=26,c++);else if(l==="le")for(s=0,c=0;s>>26-g&67108863,g+=24,g>=26&&(g-=26,c++);return this.strip()};function a(x,f){var b=x.charCodeAt(f);return b>=65&&b<=70?b-55:b>=97&&b<=102?b-87:b-48&15}function h(x,f,b){var l=a(x,b);return b-1>=f&&(l|=a(x,b-1)<<4),l}i.prototype._parseHex=function(f,b,l){this.length=Math.ceil((f.length-b)/6),this.words=new Array(this.length);for(var s=0;s=b;s-=2)g=h(f,b,s)<=18?(c-=18,p+=1,this.words[p]|=g>>>26):c+=8;else{var d=f.length-b;for(s=d%2===0?b+1:b;s=18?(c-=18,p+=1,this.words[p]|=g>>>26):c+=8}this.strip()};function y(x,f,b,l){for(var s=0,c=Math.min(x.length,b),p=f;p=49?s+=g-49+10:g>=17?s+=g-17+10:s+=g}return s}i.prototype._parseBase=function(f,b,l){this.words=[0],this.length=1;for(var s=0,c=1;c<=67108863;c*=b)s++;s--,c=c/b|0;for(var p=f.length-l,g=p%s,d=Math.min(p,p-g)+l,u=0,w=l;w1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},i.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?""};var I=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],_=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],k=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];i.prototype.toString=function(f,b){f=f||10,b=b|0||1;var l;if(f===16||f==="hex"){l="";for(var s=0,c=0,p=0;p>>24-s&16777215,c!==0||p!==this.length-1?l=I[6-d.length]+d+l:l=d+l,s+=2,s>=26&&(s-=26,p--)}for(c!==0&&(l=c.toString(16)+l);l.length%b!==0;)l="0"+l;return this.negative!==0&&(l="-"+l),l}if(f===(f|0)&&f>=2&&f<=36){var u=_[f],w=k[f];l="";var M=this.clone();for(M.negative=0;!M.isZero();){var v=M.modn(w).toString(f);M=M.idivn(w),M.isZero()?l=v+l:l=I[u-v.length]+v+l}for(this.isZero()&&(l="0"+l);l.length%b!==0;)l="0"+l;return this.negative!==0&&(l="-"+l),l}t(!1,"Base should be between 2 and 36")},i.prototype.toNumber=function(){var f=this.words[0];return this.length===2?f+=this.words[1]*67108864:this.length===3&&this.words[2]===1?f+=4503599627370496+this.words[1]*67108864:this.length>2&&t(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-f:f},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(f,b){return t(typeof o<"u"),this.toArrayLike(o,f,b)},i.prototype.toArray=function(f,b){return this.toArrayLike(Array,f,b)},i.prototype.toArrayLike=function(f,b,l){var s=this.byteLength(),c=l||Math.max(1,s);t(s<=c,"byte array longer than desired length"),t(c>0,"Requested array length <= 0"),this.strip();var p=b==="le",g=new f(c),d,u,w=this.clone();if(p){for(u=0;!w.isZero();u++)d=w.andln(255),w.iushrn(8),g[u]=d;for(;u=4096&&(l+=13,b>>>=13),b>=64&&(l+=7,b>>>=7),b>=8&&(l+=4,b>>>=4),b>=2&&(l+=2,b>>>=2),l+b},i.prototype._zeroBits=function(f){if(f===0)return 26;var b=f,l=0;return(b&8191)===0&&(l+=13,b>>>=13),(b&127)===0&&(l+=7,b>>>=7),(b&15)===0&&(l+=4,b>>>=4),(b&3)===0&&(l+=2,b>>>=2),(b&1)===0&&l++,l},i.prototype.bitLength=function(){var f=this.words[this.length-1],b=this._countBits(f);return(this.length-1)*26+b};function K(x){for(var f=new Array(x.bitLength()),b=0;b>>s}return f}i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var f=0,b=0;bf.length?this.clone().ior(f):f.clone().ior(this)},i.prototype.uor=function(f){return this.length>f.length?this.clone().iuor(f):f.clone().iuor(this)},i.prototype.iuand=function(f){var b;this.length>f.length?b=f:b=this;for(var l=0;lf.length?this.clone().iand(f):f.clone().iand(this)},i.prototype.uand=function(f){return this.length>f.length?this.clone().iuand(f):f.clone().iuand(this)},i.prototype.iuxor=function(f){var b,l;this.length>f.length?(b=this,l=f):(b=f,l=this);for(var s=0;sf.length?this.clone().ixor(f):f.clone().ixor(this)},i.prototype.uxor=function(f){return this.length>f.length?this.clone().iuxor(f):f.clone().iuxor(this)},i.prototype.inotn=function(f){t(typeof f=="number"&&f>=0);var b=Math.ceil(f/26)|0,l=f%26;this._expand(b),l>0&&b--;for(var s=0;s0&&(this.words[s]=~this.words[s]&67108863>>26-l),this.strip()},i.prototype.notn=function(f){return this.clone().inotn(f)},i.prototype.setn=function(f,b){t(typeof f=="number"&&f>=0);var l=f/26|0,s=f%26;return this._expand(l+1),b?this.words[l]=this.words[l]|1<f.length?(l=this,s=f):(l=f,s=this);for(var c=0,p=0;p>>26;for(;c!==0&&p>>26;if(this.length=l.length,c!==0)this.words[this.length]=c,this.length++;else if(l!==this)for(;pf.length?this.clone().iadd(f):f.clone().iadd(this)},i.prototype.isub=function(f){if(f.negative!==0){f.negative=0;var b=this.iadd(f);return f.negative=1,b._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(f),this.negative=1,this._normSign();var l=this.cmp(f);if(l===0)return this.negative=0,this.length=1,this.words[0]=0,this;var s,c;l>0?(s=this,c=f):(s=f,c=this);for(var p=0,g=0;g>26,this.words[g]=b&67108863;for(;p!==0&&g>26,this.words[g]=b&67108863;if(p===0&&g>>26,M=d&67108863,v=Math.min(u,f.length-1),P=Math.max(0,u-x.length+1);P<=v;P++){var z=u-P|0;s=x.words[z]|0,c=f.words[P]|0,p=s*c+M,w+=p/67108864|0,M=p&67108863}b.words[u]=M|0,d=w|0}return d!==0?b.words[u]=d|0:b.length--,b.strip()}var q=function(f,b,l){var s=f.words,c=b.words,p=l.words,g=0,d,u,w,M=s[0]|0,v=M&8191,P=M>>>13,z=s[1]|0,A=z&8191,L=z>>>13,W=s[2]|0,G=W&8191,re=W>>>13,Me=s[3]|0,oe=Me&8191,ae=Me>>>13,Mt=s[4]|0,fe=Mt&8191,be=Mt>>>13,an=s[5]|0,lt=an&8191,$e=an>>>13,zr=s[6]|0,pt=zr&8191,at=zr>>>13,Yr=s[7]|0,rt=Yr&8191,st=Yr>>>13,qr=s[8]|0,ct=qr&8191,ft=qr>>>13,sn=s[9]|0,gt=sn&8191,ut=sn>>>13,Zr=c[0]|0,nt=Zr&8191,Xe=Zr>>>13,Ar=c[1]|0,Qe=Ar&8191,it=Ar>>>13,Tr=c[2]|0,et=Tr&8191,ht=Tr>>>13,cn=c[3]|0,vt=cn&8191,xt=cn>>>13,hr=c[4]|0,He=hr&8191,Ze=hr>>>13,Jr=c[5]|0,dt=Jr&8191,bt=Jr>>>13,bn=c[6]|0,Oe=bn&8191,mt=bn>>>13,S=c[7]|0,T=S&8191,E=S>>>13,m=c[8]|0,B=m&8191,N=m>>>13,F=c[9]|0,j=F&8191,J=F>>>13;l.negative=f.negative^b.negative,l.length=19,d=Math.imul(v,nt),u=Math.imul(v,Xe),u=u+Math.imul(P,nt)|0,w=Math.imul(P,Xe);var xe=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(xe>>>26)|0,xe&=67108863,d=Math.imul(A,nt),u=Math.imul(A,Xe),u=u+Math.imul(L,nt)|0,w=Math.imul(L,Xe),d=d+Math.imul(v,Qe)|0,u=u+Math.imul(v,it)|0,u=u+Math.imul(P,Qe)|0,w=w+Math.imul(P,it)|0;var ue=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(ue>>>26)|0,ue&=67108863,d=Math.imul(G,nt),u=Math.imul(G,Xe),u=u+Math.imul(re,nt)|0,w=Math.imul(re,Xe),d=d+Math.imul(A,Qe)|0,u=u+Math.imul(A,it)|0,u=u+Math.imul(L,Qe)|0,w=w+Math.imul(L,it)|0,d=d+Math.imul(v,et)|0,u=u+Math.imul(v,ht)|0,u=u+Math.imul(P,et)|0,w=w+Math.imul(P,ht)|0;var Pe=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,d=Math.imul(oe,nt),u=Math.imul(oe,Xe),u=u+Math.imul(ae,nt)|0,w=Math.imul(ae,Xe),d=d+Math.imul(G,Qe)|0,u=u+Math.imul(G,it)|0,u=u+Math.imul(re,Qe)|0,w=w+Math.imul(re,it)|0,d=d+Math.imul(A,et)|0,u=u+Math.imul(A,ht)|0,u=u+Math.imul(L,et)|0,w=w+Math.imul(L,ht)|0,d=d+Math.imul(v,vt)|0,u=u+Math.imul(v,xt)|0,u=u+Math.imul(P,vt)|0,w=w+Math.imul(P,xt)|0;var ge=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(ge>>>26)|0,ge&=67108863,d=Math.imul(fe,nt),u=Math.imul(fe,Xe),u=u+Math.imul(be,nt)|0,w=Math.imul(be,Xe),d=d+Math.imul(oe,Qe)|0,u=u+Math.imul(oe,it)|0,u=u+Math.imul(ae,Qe)|0,w=w+Math.imul(ae,it)|0,d=d+Math.imul(G,et)|0,u=u+Math.imul(G,ht)|0,u=u+Math.imul(re,et)|0,w=w+Math.imul(re,ht)|0,d=d+Math.imul(A,vt)|0,u=u+Math.imul(A,xt)|0,u=u+Math.imul(L,vt)|0,w=w+Math.imul(L,xt)|0,d=d+Math.imul(v,He)|0,u=u+Math.imul(v,Ze)|0,u=u+Math.imul(P,He)|0,w=w+Math.imul(P,Ze)|0;var Ne=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,d=Math.imul(lt,nt),u=Math.imul(lt,Xe),u=u+Math.imul($e,nt)|0,w=Math.imul($e,Xe),d=d+Math.imul(fe,Qe)|0,u=u+Math.imul(fe,it)|0,u=u+Math.imul(be,Qe)|0,w=w+Math.imul(be,it)|0,d=d+Math.imul(oe,et)|0,u=u+Math.imul(oe,ht)|0,u=u+Math.imul(ae,et)|0,w=w+Math.imul(ae,ht)|0,d=d+Math.imul(G,vt)|0,u=u+Math.imul(G,xt)|0,u=u+Math.imul(re,vt)|0,w=w+Math.imul(re,xt)|0,d=d+Math.imul(A,He)|0,u=u+Math.imul(A,Ze)|0,u=u+Math.imul(L,He)|0,w=w+Math.imul(L,Ze)|0,d=d+Math.imul(v,dt)|0,u=u+Math.imul(v,bt)|0,u=u+Math.imul(P,dt)|0,w=w+Math.imul(P,bt)|0;var Ke=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(Ke>>>26)|0,Ke&=67108863,d=Math.imul(pt,nt),u=Math.imul(pt,Xe),u=u+Math.imul(at,nt)|0,w=Math.imul(at,Xe),d=d+Math.imul(lt,Qe)|0,u=u+Math.imul(lt,it)|0,u=u+Math.imul($e,Qe)|0,w=w+Math.imul($e,it)|0,d=d+Math.imul(fe,et)|0,u=u+Math.imul(fe,ht)|0,u=u+Math.imul(be,et)|0,w=w+Math.imul(be,ht)|0,d=d+Math.imul(oe,vt)|0,u=u+Math.imul(oe,xt)|0,u=u+Math.imul(ae,vt)|0,w=w+Math.imul(ae,xt)|0,d=d+Math.imul(G,He)|0,u=u+Math.imul(G,Ze)|0,u=u+Math.imul(re,He)|0,w=w+Math.imul(re,Ze)|0,d=d+Math.imul(A,dt)|0,u=u+Math.imul(A,bt)|0,u=u+Math.imul(L,dt)|0,w=w+Math.imul(L,bt)|0,d=d+Math.imul(v,Oe)|0,u=u+Math.imul(v,mt)|0,u=u+Math.imul(P,Oe)|0,w=w+Math.imul(P,mt)|0;var Ge=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(Ge>>>26)|0,Ge&=67108863,d=Math.imul(rt,nt),u=Math.imul(rt,Xe),u=u+Math.imul(st,nt)|0,w=Math.imul(st,Xe),d=d+Math.imul(pt,Qe)|0,u=u+Math.imul(pt,it)|0,u=u+Math.imul(at,Qe)|0,w=w+Math.imul(at,it)|0,d=d+Math.imul(lt,et)|0,u=u+Math.imul(lt,ht)|0,u=u+Math.imul($e,et)|0,w=w+Math.imul($e,ht)|0,d=d+Math.imul(fe,vt)|0,u=u+Math.imul(fe,xt)|0,u=u+Math.imul(be,vt)|0,w=w+Math.imul(be,xt)|0,d=d+Math.imul(oe,He)|0,u=u+Math.imul(oe,Ze)|0,u=u+Math.imul(ae,He)|0,w=w+Math.imul(ae,Ze)|0,d=d+Math.imul(G,dt)|0,u=u+Math.imul(G,bt)|0,u=u+Math.imul(re,dt)|0,w=w+Math.imul(re,bt)|0,d=d+Math.imul(A,Oe)|0,u=u+Math.imul(A,mt)|0,u=u+Math.imul(L,Oe)|0,w=w+Math.imul(L,mt)|0,d=d+Math.imul(v,T)|0,u=u+Math.imul(v,E)|0,u=u+Math.imul(P,T)|0,w=w+Math.imul(P,E)|0;var We=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(We>>>26)|0,We&=67108863,d=Math.imul(ct,nt),u=Math.imul(ct,Xe),u=u+Math.imul(ft,nt)|0,w=Math.imul(ft,Xe),d=d+Math.imul(rt,Qe)|0,u=u+Math.imul(rt,it)|0,u=u+Math.imul(st,Qe)|0,w=w+Math.imul(st,it)|0,d=d+Math.imul(pt,et)|0,u=u+Math.imul(pt,ht)|0,u=u+Math.imul(at,et)|0,w=w+Math.imul(at,ht)|0,d=d+Math.imul(lt,vt)|0,u=u+Math.imul(lt,xt)|0,u=u+Math.imul($e,vt)|0,w=w+Math.imul($e,xt)|0,d=d+Math.imul(fe,He)|0,u=u+Math.imul(fe,Ze)|0,u=u+Math.imul(be,He)|0,w=w+Math.imul(be,Ze)|0,d=d+Math.imul(oe,dt)|0,u=u+Math.imul(oe,bt)|0,u=u+Math.imul(ae,dt)|0,w=w+Math.imul(ae,bt)|0,d=d+Math.imul(G,Oe)|0,u=u+Math.imul(G,mt)|0,u=u+Math.imul(re,Oe)|0,w=w+Math.imul(re,mt)|0,d=d+Math.imul(A,T)|0,u=u+Math.imul(A,E)|0,u=u+Math.imul(L,T)|0,w=w+Math.imul(L,E)|0,d=d+Math.imul(v,B)|0,u=u+Math.imul(v,N)|0,u=u+Math.imul(P,B)|0,w=w+Math.imul(P,N)|0;var Ve=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(Ve>>>26)|0,Ve&=67108863,d=Math.imul(gt,nt),u=Math.imul(gt,Xe),u=u+Math.imul(ut,nt)|0,w=Math.imul(ut,Xe),d=d+Math.imul(ct,Qe)|0,u=u+Math.imul(ct,it)|0,u=u+Math.imul(ft,Qe)|0,w=w+Math.imul(ft,it)|0,d=d+Math.imul(rt,et)|0,u=u+Math.imul(rt,ht)|0,u=u+Math.imul(st,et)|0,w=w+Math.imul(st,ht)|0,d=d+Math.imul(pt,vt)|0,u=u+Math.imul(pt,xt)|0,u=u+Math.imul(at,vt)|0,w=w+Math.imul(at,xt)|0,d=d+Math.imul(lt,He)|0,u=u+Math.imul(lt,Ze)|0,u=u+Math.imul($e,He)|0,w=w+Math.imul($e,Ze)|0,d=d+Math.imul(fe,dt)|0,u=u+Math.imul(fe,bt)|0,u=u+Math.imul(be,dt)|0,w=w+Math.imul(be,bt)|0,d=d+Math.imul(oe,Oe)|0,u=u+Math.imul(oe,mt)|0,u=u+Math.imul(ae,Oe)|0,w=w+Math.imul(ae,mt)|0,d=d+Math.imul(G,T)|0,u=u+Math.imul(G,E)|0,u=u+Math.imul(re,T)|0,w=w+Math.imul(re,E)|0,d=d+Math.imul(A,B)|0,u=u+Math.imul(A,N)|0,u=u+Math.imul(L,B)|0,w=w+Math.imul(L,N)|0,d=d+Math.imul(v,j)|0,u=u+Math.imul(v,J)|0,u=u+Math.imul(P,j)|0,w=w+Math.imul(P,J)|0;var Je=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(Je>>>26)|0,Je&=67108863,d=Math.imul(gt,Qe),u=Math.imul(gt,it),u=u+Math.imul(ut,Qe)|0,w=Math.imul(ut,it),d=d+Math.imul(ct,et)|0,u=u+Math.imul(ct,ht)|0,u=u+Math.imul(ft,et)|0,w=w+Math.imul(ft,ht)|0,d=d+Math.imul(rt,vt)|0,u=u+Math.imul(rt,xt)|0,u=u+Math.imul(st,vt)|0,w=w+Math.imul(st,xt)|0,d=d+Math.imul(pt,He)|0,u=u+Math.imul(pt,Ze)|0,u=u+Math.imul(at,He)|0,w=w+Math.imul(at,Ze)|0,d=d+Math.imul(lt,dt)|0,u=u+Math.imul(lt,bt)|0,u=u+Math.imul($e,dt)|0,w=w+Math.imul($e,bt)|0,d=d+Math.imul(fe,Oe)|0,u=u+Math.imul(fe,mt)|0,u=u+Math.imul(be,Oe)|0,w=w+Math.imul(be,mt)|0,d=d+Math.imul(oe,T)|0,u=u+Math.imul(oe,E)|0,u=u+Math.imul(ae,T)|0,w=w+Math.imul(ae,E)|0,d=d+Math.imul(G,B)|0,u=u+Math.imul(G,N)|0,u=u+Math.imul(re,B)|0,w=w+Math.imul(re,N)|0,d=d+Math.imul(A,j)|0,u=u+Math.imul(A,J)|0,u=u+Math.imul(L,j)|0,w=w+Math.imul(L,J)|0;var Ye=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(Ye>>>26)|0,Ye&=67108863,d=Math.imul(gt,et),u=Math.imul(gt,ht),u=u+Math.imul(ut,et)|0,w=Math.imul(ut,ht),d=d+Math.imul(ct,vt)|0,u=u+Math.imul(ct,xt)|0,u=u+Math.imul(ft,vt)|0,w=w+Math.imul(ft,xt)|0,d=d+Math.imul(rt,He)|0,u=u+Math.imul(rt,Ze)|0,u=u+Math.imul(st,He)|0,w=w+Math.imul(st,Ze)|0,d=d+Math.imul(pt,dt)|0,u=u+Math.imul(pt,bt)|0,u=u+Math.imul(at,dt)|0,w=w+Math.imul(at,bt)|0,d=d+Math.imul(lt,Oe)|0,u=u+Math.imul(lt,mt)|0,u=u+Math.imul($e,Oe)|0,w=w+Math.imul($e,mt)|0,d=d+Math.imul(fe,T)|0,u=u+Math.imul(fe,E)|0,u=u+Math.imul(be,T)|0,w=w+Math.imul(be,E)|0,d=d+Math.imul(oe,B)|0,u=u+Math.imul(oe,N)|0,u=u+Math.imul(ae,B)|0,w=w+Math.imul(ae,N)|0,d=d+Math.imul(G,j)|0,u=u+Math.imul(G,J)|0,u=u+Math.imul(re,j)|0,w=w+Math.imul(re,J)|0;var we=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(we>>>26)|0,we&=67108863,d=Math.imul(gt,vt),u=Math.imul(gt,xt),u=u+Math.imul(ut,vt)|0,w=Math.imul(ut,xt),d=d+Math.imul(ct,He)|0,u=u+Math.imul(ct,Ze)|0,u=u+Math.imul(ft,He)|0,w=w+Math.imul(ft,Ze)|0,d=d+Math.imul(rt,dt)|0,u=u+Math.imul(rt,bt)|0,u=u+Math.imul(st,dt)|0,w=w+Math.imul(st,bt)|0,d=d+Math.imul(pt,Oe)|0,u=u+Math.imul(pt,mt)|0,u=u+Math.imul(at,Oe)|0,w=w+Math.imul(at,mt)|0,d=d+Math.imul(lt,T)|0,u=u+Math.imul(lt,E)|0,u=u+Math.imul($e,T)|0,w=w+Math.imul($e,E)|0,d=d+Math.imul(fe,B)|0,u=u+Math.imul(fe,N)|0,u=u+Math.imul(be,B)|0,w=w+Math.imul(be,N)|0,d=d+Math.imul(oe,j)|0,u=u+Math.imul(oe,J)|0,u=u+Math.imul(ae,j)|0,w=w+Math.imul(ae,J)|0;var Te=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(Te>>>26)|0,Te&=67108863,d=Math.imul(gt,He),u=Math.imul(gt,Ze),u=u+Math.imul(ut,He)|0,w=Math.imul(ut,Ze),d=d+Math.imul(ct,dt)|0,u=u+Math.imul(ct,bt)|0,u=u+Math.imul(ft,dt)|0,w=w+Math.imul(ft,bt)|0,d=d+Math.imul(rt,Oe)|0,u=u+Math.imul(rt,mt)|0,u=u+Math.imul(st,Oe)|0,w=w+Math.imul(st,mt)|0,d=d+Math.imul(pt,T)|0,u=u+Math.imul(pt,E)|0,u=u+Math.imul(at,T)|0,w=w+Math.imul(at,E)|0,d=d+Math.imul(lt,B)|0,u=u+Math.imul(lt,N)|0,u=u+Math.imul($e,B)|0,w=w+Math.imul($e,N)|0,d=d+Math.imul(fe,j)|0,u=u+Math.imul(fe,J)|0,u=u+Math.imul(be,j)|0,w=w+Math.imul(be,J)|0;var ve=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(ve>>>26)|0,ve&=67108863,d=Math.imul(gt,dt),u=Math.imul(gt,bt),u=u+Math.imul(ut,dt)|0,w=Math.imul(ut,bt),d=d+Math.imul(ct,Oe)|0,u=u+Math.imul(ct,mt)|0,u=u+Math.imul(ft,Oe)|0,w=w+Math.imul(ft,mt)|0,d=d+Math.imul(rt,T)|0,u=u+Math.imul(rt,E)|0,u=u+Math.imul(st,T)|0,w=w+Math.imul(st,E)|0,d=d+Math.imul(pt,B)|0,u=u+Math.imul(pt,N)|0,u=u+Math.imul(at,B)|0,w=w+Math.imul(at,N)|0,d=d+Math.imul(lt,j)|0,u=u+Math.imul(lt,J)|0,u=u+Math.imul($e,j)|0,w=w+Math.imul($e,J)|0;var Ie=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,d=Math.imul(gt,Oe),u=Math.imul(gt,mt),u=u+Math.imul(ut,Oe)|0,w=Math.imul(ut,mt),d=d+Math.imul(ct,T)|0,u=u+Math.imul(ct,E)|0,u=u+Math.imul(ft,T)|0,w=w+Math.imul(ft,E)|0,d=d+Math.imul(rt,B)|0,u=u+Math.imul(rt,N)|0,u=u+Math.imul(st,B)|0,w=w+Math.imul(st,N)|0,d=d+Math.imul(pt,j)|0,u=u+Math.imul(pt,J)|0,u=u+Math.imul(at,j)|0,w=w+Math.imul(at,J)|0;var ke=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(ke>>>26)|0,ke&=67108863,d=Math.imul(gt,T),u=Math.imul(gt,E),u=u+Math.imul(ut,T)|0,w=Math.imul(ut,E),d=d+Math.imul(ct,B)|0,u=u+Math.imul(ct,N)|0,u=u+Math.imul(ft,B)|0,w=w+Math.imul(ft,N)|0,d=d+Math.imul(rt,j)|0,u=u+Math.imul(rt,J)|0,u=u+Math.imul(st,j)|0,w=w+Math.imul(st,J)|0;var ye=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(ye>>>26)|0,ye&=67108863,d=Math.imul(gt,B),u=Math.imul(gt,N),u=u+Math.imul(ut,B)|0,w=Math.imul(ut,N),d=d+Math.imul(ct,j)|0,u=u+Math.imul(ct,J)|0,u=u+Math.imul(ft,j)|0,w=w+Math.imul(ft,J)|0;var H=(g+d|0)+((u&8191)<<13)|0;g=(w+(u>>>13)|0)+(H>>>26)|0,H&=67108863,d=Math.imul(gt,j),u=Math.imul(gt,J),u=u+Math.imul(ut,j)|0,w=Math.imul(ut,J);var V=(g+d|0)+((u&8191)<<13)|0;return g=(w+(u>>>13)|0)+(V>>>26)|0,V&=67108863,p[0]=xe,p[1]=ue,p[2]=Pe,p[3]=ge,p[4]=Ne,p[5]=Ke,p[6]=Ge,p[7]=We,p[8]=Ve,p[9]=Je,p[10]=Ye,p[11]=we,p[12]=Te,p[13]=ve,p[14]=Ie,p[15]=ke,p[16]=ye,p[17]=H,p[18]=V,g!==0&&(p[19]=g,l.length++),l};Math.imul||(q=D);function Z(x,f,b){b.negative=f.negative^x.negative,b.length=x.length+f.length;for(var l=0,s=0,c=0;c>>26)|0,s+=p>>>26,p&=67108863}b.words[c]=g,l=p,p=s}return l!==0?b.words[c]=l:b.length--,b.strip()}function he(x,f,b){var l=new ce;return l.mulp(x,f,b)}i.prototype.mulTo=function(f,b){var l,s=this.length+f.length;return this.length===10&&f.length===10?l=q(this,f,b):s<63?l=D(this,f,b):s<1024?l=Z(this,f,b):l=he(this,f,b),l};function ce(x,f){this.x=x,this.y=f}ce.prototype.makeRBT=function(f){for(var b=new Array(f),l=i.prototype._countBits(f)-1,s=0;s>=1;return s},ce.prototype.permute=function(f,b,l,s,c,p){for(var g=0;g>>1)c++;return 1<>>13,l[2*p+1]=c&8191,c=c>>>13;for(p=2*b;p>=26,b+=s/67108864|0,b+=c>>>26,this.words[l]=c&67108863}return b!==0&&(this.words[l]=b,this.length++),this},i.prototype.muln=function(f){return this.clone().imuln(f)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(f){var b=K(f);if(b.length===0)return new i(1);for(var l=this,s=0;s=0);var b=f%26,l=(f-b)/26,s=67108863>>>26-b<<26-b,c;if(b!==0){var p=0;for(c=0;c>>26-b}p&&(this.words[c]=p,this.length++)}if(l!==0){for(c=this.length-1;c>=0;c--)this.words[c+l]=this.words[c];for(c=0;c=0);var s;b?s=(b-b%26)/26:s=0;var c=f%26,p=Math.min((f-c)/26,this.length),g=67108863^67108863>>>c<p)for(this.length-=p,u=0;u=0&&(w!==0||u>=s);u--){var M=this.words[u]|0;this.words[u]=w<<26-c|M>>>c,w=M&g}return d&&w!==0&&(d.words[d.length++]=w),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(f,b,l){return t(this.negative===0),this.iushrn(f,b,l)},i.prototype.shln=function(f){return this.clone().ishln(f)},i.prototype.ushln=function(f){return this.clone().iushln(f)},i.prototype.shrn=function(f){return this.clone().ishrn(f)},i.prototype.ushrn=function(f){return this.clone().iushrn(f)},i.prototype.testn=function(f){t(typeof f=="number"&&f>=0);var b=f%26,l=(f-b)/26,s=1<=0);var b=f%26,l=(f-b)/26;if(t(this.negative===0,"imaskn works only with positive numbers"),this.length<=l)return this;if(b!==0&&l++,this.length=Math.min(l,this.length),b!==0){var s=67108863^67108863>>>b<=67108864;b++)this.words[b]-=67108864,b===this.length-1?this.words[b+1]=1:this.words[b+1]++;return this.length=Math.max(this.length,b+1),this},i.prototype.isubn=function(f){if(t(typeof f=="number"),t(f<67108864),f<0)return this.iaddn(-f);if(this.negative!==0)return this.negative=0,this.iaddn(f),this.negative=1,this;if(this.words[0]-=f,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var b=0;b>26)-(d/67108864|0),this.words[c+l]=p&67108863}for(;c>26,this.words[c+l]=p&67108863;if(g===0)return this.strip();for(t(g===-1),g=0,c=0;c>26,this.words[c]=p&67108863;return this.negative=1,this.strip()},i.prototype._wordDiv=function(f,b){var l=this.length-f.length,s=this.clone(),c=f,p=c.words[c.length-1]|0,g=this._countBits(p);l=26-g,l!==0&&(c=c.ushln(l),s.iushln(l),p=c.words[c.length-1]|0);var d=s.length-c.length,u;if(b!=="mod"){u=new i(null),u.length=d+1,u.words=new Array(u.length);for(var w=0;w=0;v--){var P=(s.words[c.length+v]|0)*67108864+(s.words[c.length+v-1]|0);for(P=Math.min(P/p|0,67108863),s._ishlnsubmul(c,P,v);s.negative!==0;)P--,s.negative=0,s._ishlnsubmul(c,1,v),s.isZero()||(s.negative^=1);u&&(u.words[v]=P)}return u&&u.strip(),s.strip(),b!=="div"&&l!==0&&s.iushrn(l),{div:u||null,mod:s}},i.prototype.divmod=function(f,b,l){if(t(!f.isZero()),this.isZero())return{div:new i(0),mod:new i(0)};var s,c,p;return this.negative!==0&&f.negative===0?(p=this.neg().divmod(f,b),b!=="mod"&&(s=p.div.neg()),b!=="div"&&(c=p.mod.neg(),l&&c.negative!==0&&c.iadd(f)),{div:s,mod:c}):this.negative===0&&f.negative!==0?(p=this.divmod(f.neg(),b),b!=="mod"&&(s=p.div.neg()),{div:s,mod:p.mod}):(this.negative&f.negative)!==0?(p=this.neg().divmod(f.neg(),b),b!=="div"&&(c=p.mod.neg(),l&&c.negative!==0&&c.isub(f)),{div:p.div,mod:c}):f.length>this.length||this.cmp(f)<0?{div:new i(0),mod:this}:f.length===1?b==="div"?{div:this.divn(f.words[0]),mod:null}:b==="mod"?{div:null,mod:new i(this.modn(f.words[0]))}:{div:this.divn(f.words[0]),mod:new i(this.modn(f.words[0]))}:this._wordDiv(f,b)},i.prototype.div=function(f){return this.divmod(f,"div",!1).div},i.prototype.mod=function(f){return this.divmod(f,"mod",!1).mod},i.prototype.umod=function(f){return this.divmod(f,"mod",!0).mod},i.prototype.divRound=function(f){var b=this.divmod(f);if(b.mod.isZero())return b.div;var l=b.div.negative!==0?b.mod.isub(f):b.mod,s=f.ushrn(1),c=f.andln(1),p=l.cmp(s);return p<0||c===1&&p===0?b.div:b.div.negative!==0?b.div.isubn(1):b.div.iaddn(1)},i.prototype.modn=function(f){t(f<=67108863);for(var b=(1<<26)%f,l=0,s=this.length-1;s>=0;s--)l=(b*l+(this.words[s]|0))%f;return l},i.prototype.idivn=function(f){t(f<=67108863);for(var b=0,l=this.length-1;l>=0;l--){var s=(this.words[l]|0)+b*67108864;this.words[l]=s/f|0,b=s%f}return this.strip()},i.prototype.divn=function(f){return this.clone().idivn(f)},i.prototype.egcd=function(f){t(f.negative===0),t(!f.isZero());var b=this,l=f.clone();b.negative!==0?b=b.umod(f):b=b.clone();for(var s=new i(1),c=new i(0),p=new i(0),g=new i(1),d=0;b.isEven()&&l.isEven();)b.iushrn(1),l.iushrn(1),++d;for(var u=l.clone(),w=b.clone();!b.isZero();){for(var M=0,v=1;(b.words[0]&v)===0&&M<26;++M,v<<=1);if(M>0)for(b.iushrn(M);M-- >0;)(s.isOdd()||c.isOdd())&&(s.iadd(u),c.isub(w)),s.iushrn(1),c.iushrn(1);for(var P=0,z=1;(l.words[0]&z)===0&&P<26;++P,z<<=1);if(P>0)for(l.iushrn(P);P-- >0;)(p.isOdd()||g.isOdd())&&(p.iadd(u),g.isub(w)),p.iushrn(1),g.iushrn(1);b.cmp(l)>=0?(b.isub(l),s.isub(p),c.isub(g)):(l.isub(b),p.isub(s),g.isub(c))}return{a:p,b:g,gcd:l.iushln(d)}},i.prototype._invmp=function(f){t(f.negative===0),t(!f.isZero());var b=this,l=f.clone();b.negative!==0?b=b.umod(f):b=b.clone();for(var s=new i(1),c=new i(0),p=l.clone();b.cmpn(1)>0&&l.cmpn(1)>0;){for(var g=0,d=1;(b.words[0]&d)===0&&g<26;++g,d<<=1);if(g>0)for(b.iushrn(g);g-- >0;)s.isOdd()&&s.iadd(p),s.iushrn(1);for(var u=0,w=1;(l.words[0]&w)===0&&u<26;++u,w<<=1);if(u>0)for(l.iushrn(u);u-- >0;)c.isOdd()&&c.iadd(p),c.iushrn(1);b.cmp(l)>=0?(b.isub(l),s.isub(c)):(l.isub(b),c.isub(s))}var M;return b.cmpn(1)===0?M=s:M=c,M.cmpn(0)<0&&M.iadd(f),M},i.prototype.gcd=function(f){if(this.isZero())return f.abs();if(f.isZero())return this.abs();var b=this.clone(),l=f.clone();b.negative=0,l.negative=0;for(var s=0;b.isEven()&&l.isEven();s++)b.iushrn(1),l.iushrn(1);do{for(;b.isEven();)b.iushrn(1);for(;l.isEven();)l.iushrn(1);var c=b.cmp(l);if(c<0){var p=b;b=l,l=p}else if(c===0||l.cmpn(1)===0)break;b.isub(l)}while(!0);return l.iushln(s)},i.prototype.invm=function(f){return this.egcd(f).a.umod(f)},i.prototype.isEven=function(){return(this.words[0]&1)===0},i.prototype.isOdd=function(){return(this.words[0]&1)===1},i.prototype.andln=function(f){return this.words[0]&f},i.prototype.bincn=function(f){t(typeof f=="number");var b=f%26,l=(f-b)/26,s=1<>>26,g&=67108863,this.words[p]=g}return c!==0&&(this.words[p]=c,this.length++),this},i.prototype.isZero=function(){return this.length===1&&this.words[0]===0},i.prototype.cmpn=function(f){var b=f<0;if(this.negative!==0&&!b)return-1;if(this.negative===0&&b)return 1;this.strip();var l;if(this.length>1)l=1;else{b&&(f=-f),t(f<=67108863,"Number is too big");var s=this.words[0]|0;l=s===f?0:sf.length)return 1;if(this.length=0;l--){var s=this.words[l]|0,c=f.words[l]|0;if(s!==c){sc&&(b=1);break}}return b},i.prototype.gtn=function(f){return this.cmpn(f)===1},i.prototype.gt=function(f){return this.cmp(f)===1},i.prototype.gten=function(f){return this.cmpn(f)>=0},i.prototype.gte=function(f){return this.cmp(f)>=0},i.prototype.ltn=function(f){return this.cmpn(f)===-1},i.prototype.lt=function(f){return this.cmp(f)===-1},i.prototype.lten=function(f){return this.cmpn(f)<=0},i.prototype.lte=function(f){return this.cmp(f)<=0},i.prototype.eqn=function(f){return this.cmpn(f)===0},i.prototype.eq=function(f){return this.cmp(f)===0},i.red=function(f){return new R(f)},i.prototype.toRed=function(f){return t(!this.red,"Already a number in reduction context"),t(this.negative===0,"red works only with positives"),f.convertTo(this)._forceRed(f)},i.prototype.fromRed=function(){return t(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},i.prototype._forceRed=function(f){return this.red=f,this},i.prototype.forceRed=function(f){return t(!this.red,"Already a number in reduction context"),this._forceRed(f)},i.prototype.redAdd=function(f){return t(this.red,"redAdd works only with red numbers"),this.red.add(this,f)},i.prototype.redIAdd=function(f){return t(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,f)},i.prototype.redSub=function(f){return t(this.red,"redSub works only with red numbers"),this.red.sub(this,f)},i.prototype.redISub=function(f){return t(this.red,"redISub works only with red numbers"),this.red.isub(this,f)},i.prototype.redShl=function(f){return t(this.red,"redShl works only with red numbers"),this.red.shl(this,f)},i.prototype.redMul=function(f){return t(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.mul(this,f)},i.prototype.redIMul=function(f){return t(this.red,"redMul works only with red numbers"),this.red._verify2(this,f),this.red.imul(this,f)},i.prototype.redSqr=function(){return t(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return t(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return t(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return t(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return t(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(f){return t(this.red&&!f.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,f)};var Y={k256:null,p224:null,p192:null,p25519:null};function Ee(x,f){this.name=x,this.p=new i(f,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}Ee.prototype._tmp=function(){var f=new i(null);return f.words=new Array(Math.ceil(this.n/13)),f},Ee.prototype.ireduce=function(f){var b=f,l;do this.split(b,this.tmp),b=this.imulK(b),b=b.iadd(this.tmp),l=b.bitLength();while(l>this.n);var s=l0?b.isub(this.p):b.strip!==void 0?b.strip():b._strip(),b},Ee.prototype.split=function(f,b){f.iushrn(this.n,0,b)},Ee.prototype.imulK=function(f){return f.imul(this.k)};function Be(){Ee.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(Be,Ee),Be.prototype.split=function(f,b){for(var l=4194303,s=Math.min(f.length,9),c=0;c>>22,p=g}p>>>=22,f.words[c-10]=p,p===0&&f.length>10?f.length-=10:f.length-=9},Be.prototype.imulK=function(f){f.words[f.length]=0,f.words[f.length+1]=0,f.length+=2;for(var b=0,l=0;l>>=26,f.words[l]=c,b=s}return b!==0&&(f.words[f.length++]=b),f},i._prime=function(f){if(Y[f])return Y[f];var b;if(f==="k256")b=new Be;else if(f==="p224")b=new Ue;else if(f==="p192")b=new _e;else if(f==="p25519")b=new je;else throw new Error("Unknown prime "+f);return Y[f]=b,b};function R(x){if(typeof x=="string"){var f=i._prime(x);this.m=f.p,this.prime=f}else t(x.gtn(1),"modulus must be greater than 1"),this.m=x,this.prime=null}R.prototype._verify1=function(f){t(f.negative===0,"red works only with positives"),t(f.red,"red works only with red numbers")},R.prototype._verify2=function(f,b){t((f.negative|b.negative)===0,"red works only with positives"),t(f.red&&f.red===b.red,"red works only with red numbers")},R.prototype.imod=function(f){return this.prime?this.prime.ireduce(f)._forceRed(this):f.umod(this.m)._forceRed(this)},R.prototype.neg=function(f){return f.isZero()?f.clone():this.m.sub(f)._forceRed(this)},R.prototype.add=function(f,b){this._verify2(f,b);var l=f.add(b);return l.cmp(this.m)>=0&&l.isub(this.m),l._forceRed(this)},R.prototype.iadd=function(f,b){this._verify2(f,b);var l=f.iadd(b);return l.cmp(this.m)>=0&&l.isub(this.m),l},R.prototype.sub=function(f,b){this._verify2(f,b);var l=f.sub(b);return l.cmpn(0)<0&&l.iadd(this.m),l._forceRed(this)},R.prototype.isub=function(f,b){this._verify2(f,b);var l=f.isub(b);return l.cmpn(0)<0&&l.iadd(this.m),l},R.prototype.shl=function(f,b){return this._verify1(f),this.imod(f.ushln(b))},R.prototype.imul=function(f,b){return this._verify2(f,b),this.imod(f.imul(b))},R.prototype.mul=function(f,b){return this._verify2(f,b),this.imod(f.mul(b))},R.prototype.isqr=function(f){return this.imul(f,f.clone())},R.prototype.sqr=function(f){return this.mul(f,f)},R.prototype.sqrt=function(f){if(f.isZero())return f.clone();var b=this.m.andln(3);if(t(b%2===1),b===3){var l=this.m.add(new i(1)).iushrn(2);return this.pow(f,l)}for(var s=this.m.subn(1),c=0;!s.isZero()&&s.andln(1)===0;)c++,s.iushrn(1);t(!s.isZero());var p=new i(1).toRed(this),g=p.redNeg(),d=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new i(2*u*u).toRed(this);this.pow(u,d).cmp(g)!==0;)u.redIAdd(g);for(var w=this.pow(u,s),M=this.pow(f,s.addn(1).iushrn(1)),v=this.pow(f,s),P=c;v.cmp(p)!==0;){for(var z=v,A=0;z.cmp(p)!==0;A++)z=z.redSqr();t(A=0;c--){for(var w=b.words[c],M=u-1;M>=0;M--){var v=w>>M&1;if(p!==s[0]&&(p=this.sqr(p)),v===0&&g===0){d=0;continue}g<<=1,g|=v,d++,!(d!==l&&(c!==0||M!==0))&&(p=this.mul(p,s[g]),d=0,g=0)}u=26}return p},R.prototype.convertTo=function(f){var b=f.umod(this.m);return b===f?b.clone():b},R.prototype.convertFrom=function(f){var b=f.clone();return b.red=null,b},i.mont=function(f){return new C(f)};function C(x){R.call(this,x),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(C,R),C.prototype.convertTo=function(f){return this.imod(f.ushln(this.shift))},C.prototype.convertFrom=function(f){var b=this.imod(f.mul(this.rinv));return b.red=null,b},C.prototype.imul=function(f,b){if(f.isZero()||b.isZero())return f.words[0]=0,f.length=1,f;var l=f.imul(b),s=l.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),c=l.isub(s).iushrn(this.shift),p=c;return c.cmp(this.m)>=0?p=c.isub(this.m):c.cmpn(0)<0&&(p=c.iadd(this.m)),p._forceRed(this)},C.prototype.mul=function(f,b){if(f.isZero()||b.isZero())return new i(0)._forceRed(this);var l=f.mul(b),s=l.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),c=l.isub(s).iushrn(this.shift),p=c;return c.cmp(this.m)>=0?p=c.isub(this.m):c.cmpn(0)<0&&(p=c.iadd(this.m)),p._forceRed(this)},C.prototype.invm=function(f){var b=this.imod(f._invmp(this.m).mul(this.r2));return b._forceRed(this)}})(typeof Zu>"u"||Zu,I1)});var Fi=Se((b5,S1)=>{S1.exports=A1;function A1(r,e){if(!r)throw new Error(e||"Assertion failed")}A1.equal=function(e,t,n){if(e!=t)throw new Error(n||"Assertion failed: "+e+" != "+t)}});var Ju=Se(M1=>{"use strict";var Hc=M1;function jg(r,e){if(Array.isArray(r))return r.slice();if(!r)return[];var t=[];if(typeof r!="string"){for(var n=0;n>8,a=i&255;o?t.push(o,a):t.push(a)}return t}Hc.toArray=jg;function _1(r){return r.length===1?"0"+r:r}Hc.zero2=_1;function k1(r){for(var e="",t=0;t{"use strict";var Tn=E1,Gg=Zn(),$g=Fi(),Vc=Ju();Tn.assert=$g;Tn.toArray=Vc.toArray;Tn.zero2=Vc.zero2;Tn.toHex=Vc.toHex;Tn.encode=Vc.encode;function Hg(r,e,t){var n=new Array(Math.max(r.bitLength(),t)+1);n.fill(0);for(var i=1<(i>>1)-1?h=(i>>1)-y:h=y,o.isubn(h)):h=0,n[a]=h,o.iushrn(1)}return n}Tn.getNAF=Hg;function Vg(r,e){var t=[[],[]];r=r.clone(),e=e.clone();for(var n=0,i=0,o;r.cmpn(-n)>0||e.cmpn(-i)>0;){var a=r.andln(3)+n&3,h=e.andln(3)+i&3;a===3&&(a=-1),h===3&&(h=-1);var y;(a&1)===0?y=0:(o=r.andln(7)+n&7,(o===3||o===5)&&h===2?y=-a:y=a),t[0].push(y);var I;(h&1)===0?I=0:(o=e.andln(7)+i&7,(o===3||o===5)&&a===2?I=-h:I=h),t[1].push(I),2*n===y+1&&(n=1-n),2*i===I+1&&(i=1-i),r.iushrn(1),e.iushrn(1)}return t}Tn.getJSF=Vg;function Yg(r,e,t){var n="_"+e;r.prototype[e]=function(){return this[n]!==void 0?this[n]:this[n]=t.call(this)}}Tn.cachedProperty=Yg;function Zg(r){return typeof r=="string"?Tn.toArray(r,"hex"):r}Tn.parseBytes=Zg;function Jg(r){return new Gg(r,"hex","le")}Tn.intFromLE=Jg});var t0=Se((g5,e0)=>{var Xu;e0.exports=function(e){return Xu||(Xu=new zi(null)),Xu.generate(e)};function zi(r){this.rand=r}e0.exports.Rand=zi;zi.prototype.generate=function(e){return this._rand(e)};zi.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var t=new Uint8Array(e),n=0;n{"use strict";var po=Zn(),qa=hn(),Yc=qa.getNAF,Xg=qa.getJSF,Zc=qa.assert;function qi(r,e){this.type=r,this.p=new po(e.p,16),this.red=e.prime?po.red(e.prime):po.mont(this.p),this.zero=new po(0).toRed(this.red),this.one=new po(1).toRed(this.red),this.two=new po(2).toRed(this.red),this.n=e.n&&new po(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var t=this.n&&this.p.div(this.n);!t||t.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}T1.exports=qi;qi.prototype.point=function(){throw new Error("Not implemented")};qi.prototype.validate=function(){throw new Error("Not implemented")};qi.prototype._fixedNafMul=function(e,t){Zc(e.precomputed);var n=e._getDoubles(),i=Yc(t,1,this._bitLength),o=(1<=h;I--)y=(y<<1)+i[I];a.push(y)}for(var _=this.jpoint(null,null,null),k=this.jpoint(null,null,null),K=o;K>0;K--){for(h=0;h=0;y--){for(var I=0;y>=0&&a[y]===0;y--)I++;if(y>=0&&I++,h=h.dblp(I),y<0)break;var _=a[y];Zc(_!==0),e.type==="affine"?_>0?h=h.mixedAdd(o[_-1>>1]):h=h.mixedAdd(o[-_-1>>1].neg()):_>0?h=h.add(o[_-1>>1]):h=h.add(o[-_-1>>1].neg())}return e.type==="affine"?h.toP():h};qi.prototype._wnafMulAdd=function(e,t,n,i,o){var a=this._wnafT1,h=this._wnafT2,y=this._wnafT3,I=0,_,k,K;for(_=0;_=1;_-=2){var q=_-1,Z=_;if(a[q]!==1||a[Z]!==1){y[q]=Yc(n[q],a[q],this._bitLength),y[Z]=Yc(n[Z],a[Z],this._bitLength),I=Math.max(y[q].length,I),I=Math.max(y[Z].length,I);continue}var he=[t[q],null,null,t[Z]];t[q].y.cmp(t[Z].y)===0?(he[1]=t[q].add(t[Z]),he[2]=t[q].toJ().mixedAdd(t[Z].neg())):t[q].y.cmp(t[Z].y.redNeg())===0?(he[1]=t[q].toJ().mixedAdd(t[Z]),he[2]=t[q].add(t[Z].neg())):(he[1]=t[q].toJ().mixedAdd(t[Z]),he[2]=t[q].toJ().mixedAdd(t[Z].neg()));var ce=[-3,-1,-5,-7,0,7,5,1,3],Y=Xg(n[q],n[Z]);for(I=Math.max(Y[0].length,I),y[q]=new Array(I),y[Z]=new Array(I),k=0;k=0;_--){for(var je=0;_>=0;){var R=!0;for(k=0;k=0&&je++,Ue=Ue.dblp(je),_<0)break;for(k=0;k0?K=h[k][C-1>>1]:C<0&&(K=h[k][-C-1>>1].neg()),K.type==="affine"?Ue=Ue.mixedAdd(K):Ue=Ue.add(K))}}for(_=0;_=Math.ceil((e.bitLength()+1)/t.step):!1};vn.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var n=[this],i=this,o=0;o{typeof Object.create=="function"?r0.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:r0.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}});var P1=Se((w5,B1)=>{"use strict";var Qg=hn(),cr=Zn(),n0=ja(),$o=Wa(),e3=Qg.assert;function xn(r){$o.call(this,"short",r),this.a=new cr(r.a,16).toRed(this.red),this.b=new cr(r.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(r),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}n0(xn,$o);B1.exports=xn;xn.prototype._getEndomorphism=function(e){if(!(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)){var t,n;if(e.beta)t=new cr(e.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);t=i[0].cmp(i[1])<0?i[0]:i[1],t=t.toRed(this.red)}if(e.lambda)n=new cr(e.lambda,16);else{var o=this._getEndoRoots(this.n);this.g.mul(o[0]).x.cmp(this.g.x.redMul(t))===0?n=o[0]:(n=o[1],e3(this.g.mul(n).x.cmp(this.g.x.redMul(t))===0))}var a;return e.basis?a=e.basis.map(function(h){return{a:new cr(h.a,16),b:new cr(h.b,16)}}):a=this._getEndoBasis(n),{beta:t,lambda:n,basis:a}}};xn.prototype._getEndoRoots=function(e){var t=e===this.p?this.red:cr.mont(e),n=new cr(2).toRed(t).redInvm(),i=n.redNeg(),o=new cr(3).toRed(t).redNeg().redSqrt().redMul(n),a=i.redAdd(o).fromRed(),h=i.redSub(o).fromRed();return[a,h]};xn.prototype._getEndoBasis=function(e){for(var t=this.n.ushrn(Math.floor(this.n.bitLength()/2)),n=e,i=this.n.clone(),o=new cr(1),a=new cr(0),h=new cr(0),y=new cr(1),I,_,k,K,D,q,Z,he=0,ce,Y;n.cmpn(0)!==0;){var Ee=i.div(n);ce=i.sub(Ee.mul(n)),Y=h.sub(Ee.mul(o));var Be=y.sub(Ee.mul(a));if(!k&&ce.cmp(t)<0)I=Z.neg(),_=o,k=ce.neg(),K=Y;else if(k&&++he===2)break;Z=ce,i=n,n=ce,h=o,o=Y,y=a,a=Be}D=ce.neg(),q=Y;var Ue=k.sqr().add(K.sqr()),_e=D.sqr().add(q.sqr());return _e.cmp(Ue)>=0&&(D=I,q=_),k.negative&&(k=k.neg(),K=K.neg()),D.negative&&(D=D.neg(),q=q.neg()),[{a:k,b:K},{a:D,b:q}]};xn.prototype._endoSplit=function(e){var t=this.endo.basis,n=t[0],i=t[1],o=i.b.mul(e).divRound(this.n),a=n.b.neg().mul(e).divRound(this.n),h=o.mul(n.a),y=a.mul(i.a),I=o.mul(n.b),_=a.mul(i.b),k=e.sub(h).sub(y),K=I.add(_).neg();return{k1:k,k2:K}};xn.prototype.pointFromX=function(e,t){e=new cr(e,16),e.red||(e=e.toRed(this.red));var n=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),i=n.redSqrt();if(i.redSqr().redSub(n).cmp(this.zero)!==0)throw new Error("invalid point");var o=i.fromRed().isOdd();return(t&&!o||!t&&o)&&(i=i.redNeg()),this.point(e,i)};xn.prototype.validate=function(e){if(e.inf)return!0;var t=e.x,n=e.y,i=this.a.redMul(t),o=t.redSqr().redMul(t).redIAdd(i).redIAdd(this.b);return n.redSqr().redISub(o).cmpn(0)===0};xn.prototype._endoWnafMulAdd=function(e,t,n){for(var i=this._endoWnafT1,o=this._endoWnafT2,a=0;a":""};gr.prototype.isInfinity=function(){return this.inf};gr.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(this.x.cmp(e.x)===0)return this.curve.point(null,null);var t=this.y.redSub(e.y);t.cmpn(0)!==0&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var n=t.redSqr().redISub(this.x).redISub(e.x),i=t.redMul(this.x.redSub(n)).redISub(this.y);return this.curve.point(n,i)};gr.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(e.cmpn(0)===0)return this.curve.point(null,null);var t=this.curve.a,n=this.x.redSqr(),i=e.redInvm(),o=n.redAdd(n).redIAdd(n).redIAdd(t).redMul(i),a=o.redSqr().redISub(this.x.redAdd(this.x)),h=o.redMul(this.x.redSub(a)).redISub(this.y);return this.curve.point(a,h)};gr.prototype.getX=function(){return this.x.fromRed()};gr.prototype.getY=function(){return this.y.fromRed()};gr.prototype.mul=function(e){return e=new cr(e,16),this.isInfinity()?this:this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)};gr.prototype.mulAdd=function(e,t,n){var i=[this,t],o=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(i,o):this.curve._wnafMulAdd(1,i,o,2)};gr.prototype.jmulAdd=function(e,t,n){var i=[this,t],o=[e,n];return this.curve.endo?this.curve._endoWnafMulAdd(i,o,!0):this.curve._wnafMulAdd(1,i,o,2,!0)};gr.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||this.x.cmp(e.x)===0&&this.y.cmp(e.y)===0)};gr.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var n=this.precomputed,i=function(o){return o.neg()};t.precomputed={naf:n.naf&&{wnd:n.naf.wnd,points:n.naf.points.map(i)},doubles:n.doubles&&{step:n.doubles.step,points:n.doubles.points.map(i)}}}return t};gr.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var e=this.curve.jpoint(this.x,this.y,this.curve.one);return e};function kr(r,e,t,n){$o.BasePoint.call(this,r,"jacobian"),e===null&&t===null&&n===null?(this.x=this.curve.one,this.y=this.curve.one,this.z=new cr(0)):(this.x=new cr(e,16),this.y=new cr(t,16),this.z=new cr(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}n0(kr,$o.BasePoint);xn.prototype.jpoint=function(e,t,n){return new kr(this,e,t,n)};kr.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),n=this.x.redMul(t),i=this.y.redMul(t).redMul(e);return this.curve.point(n,i)};kr.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};kr.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),n=this.z.redSqr(),i=this.x.redMul(t),o=e.x.redMul(n),a=this.y.redMul(t.redMul(e.z)),h=e.y.redMul(n.redMul(this.z)),y=i.redSub(o),I=a.redSub(h);if(y.cmpn(0)===0)return I.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var _=y.redSqr(),k=_.redMul(y),K=i.redMul(_),D=I.redSqr().redIAdd(k).redISub(K).redISub(K),q=I.redMul(K.redISub(D)).redISub(a.redMul(k)),Z=this.z.redMul(e.z).redMul(y);return this.curve.jpoint(D,q,Z)};kr.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),n=this.x,i=e.x.redMul(t),o=this.y,a=e.y.redMul(t).redMul(this.z),h=n.redSub(i),y=o.redSub(a);if(h.cmpn(0)===0)return y.cmpn(0)!==0?this.curve.jpoint(null,null,null):this.dbl();var I=h.redSqr(),_=I.redMul(h),k=n.redMul(I),K=y.redSqr().redIAdd(_).redISub(k).redISub(k),D=y.redMul(k.redISub(K)).redISub(o.redMul(_)),q=this.z.redMul(h);return this.curve.jpoint(K,D,q)};kr.prototype.dblp=function(e){if(e===0)return this;if(this.isInfinity())return this;if(!e)return this.dbl();var t;if(this.curve.zeroA||this.curve.threeA){var n=this;for(t=0;t=0)return!1;if(n.redIAdd(o),this.x.cmp(n)===0)return!0}};kr.prototype.inspect=function(){return this.isInfinity()?"":""};kr.prototype.isInfinity=function(){return this.z.cmpn(0)===0}});var O1=Se((I5,C1)=>{"use strict";var Ho=Zn(),R1=ja(),Jc=Wa(),t3=hn();function Vo(r){Jc.call(this,"mont",r),this.a=new Ho(r.a,16).toRed(this.red),this.b=new Ho(r.b,16).toRed(this.red),this.i4=new Ho(4).toRed(this.red).redInvm(),this.two=new Ho(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}R1(Vo,Jc);C1.exports=Vo;Vo.prototype.validate=function(e){var t=e.normalize().x,n=t.redSqr(),i=n.redMul(t).redAdd(n.redMul(this.a)).redAdd(t),o=i.redSqrt();return o.redSqr().cmp(i)===0};function vr(r,e,t){Jc.BasePoint.call(this,r,"projective"),e===null&&t===null?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new Ho(e,16),this.z=new Ho(t,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}R1(vr,Jc.BasePoint);Vo.prototype.decodePoint=function(e,t){return this.point(t3.toArray(e,t),1)};Vo.prototype.point=function(e,t){return new vr(this,e,t)};Vo.prototype.pointFromJSON=function(e){return vr.fromJSON(this,e)};vr.prototype.precompute=function(){};vr.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())};vr.fromJSON=function(e,t){return new vr(e,t[0],t[1]||e.one)};vr.prototype.inspect=function(){return this.isInfinity()?"":""};vr.prototype.isInfinity=function(){return this.z.cmpn(0)===0};vr.prototype.dbl=function(){var e=this.x.redAdd(this.z),t=e.redSqr(),n=this.x.redSub(this.z),i=n.redSqr(),o=t.redSub(i),a=t.redMul(i),h=o.redMul(i.redAdd(this.curve.a24.redMul(o)));return this.curve.point(a,h)};vr.prototype.add=function(){throw new Error("Not supported on Montgomery curve")};vr.prototype.diffAdd=function(e,t){var n=this.x.redAdd(this.z),i=this.x.redSub(this.z),o=e.x.redAdd(e.z),a=e.x.redSub(e.z),h=a.redMul(n),y=o.redMul(i),I=t.z.redMul(h.redAdd(y).redSqr()),_=t.x.redMul(h.redISub(y).redSqr());return this.curve.point(I,_)};vr.prototype.mul=function(e){for(var t=e.clone(),n=this,i=this.curve.point(null,null),o=this,a=[];t.cmpn(0)!==0;t.iushrn(1))a.push(t.andln(1));for(var h=a.length-1;h>=0;h--)a[h]===0?(n=n.diffAdd(i,o),i=i.dbl()):(i=n.diffAdd(i,o),n=n.dbl());return i};vr.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")};vr.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")};vr.prototype.eq=function(e){return this.getX().cmp(e.getX())===0};vr.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};vr.prototype.getX=function(){return this.normalize(),this.x.fromRed()}});var K1=Se((A5,D1)=>{"use strict";var r3=hn(),Ii=Zn(),N1=ja(),Xc=Wa(),n3=r3.assert;function Jn(r){this.twisted=(r.a|0)!==1,this.mOneA=this.twisted&&(r.a|0)===-1,this.extended=this.mOneA,Xc.call(this,"edwards",r),this.a=new Ii(r.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new Ii(r.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new Ii(r.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),n3(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(r.c|0)===1}N1(Jn,Xc);D1.exports=Jn;Jn.prototype._mulA=function(e){return this.mOneA?e.redNeg():this.a.redMul(e)};Jn.prototype._mulC=function(e){return this.oneC?e:this.c.redMul(e)};Jn.prototype.jpoint=function(e,t,n,i){return this.point(e,t,n,i)};Jn.prototype.pointFromX=function(e,t){e=new Ii(e,16),e.red||(e=e.toRed(this.red));var n=e.redSqr(),i=this.c2.redSub(this.a.redMul(n)),o=this.one.redSub(this.c2.redMul(this.d).redMul(n)),a=i.redMul(o.redInvm()),h=a.redSqrt();if(h.redSqr().redSub(a).cmp(this.zero)!==0)throw new Error("invalid point");var y=h.fromRed().isOdd();return(t&&!y||!t&&y)&&(h=h.redNeg()),this.point(e,h)};Jn.prototype.pointFromY=function(e,t){e=new Ii(e,16),e.red||(e=e.toRed(this.red));var n=e.redSqr(),i=n.redSub(this.c2),o=n.redMul(this.d).redMul(this.c2).redSub(this.a),a=i.redMul(o.redInvm());if(a.cmp(this.zero)===0){if(t)throw new Error("invalid point");return this.point(this.zero,e)}var h=a.redSqrt();if(h.redSqr().redSub(a).cmp(this.zero)!==0)throw new Error("invalid point");return h.fromRed().isOdd()!==t&&(h=h.redNeg()),this.point(h,e)};Jn.prototype.validate=function(e){if(e.isInfinity())return!0;e.normalize();var t=e.x.redSqr(),n=e.y.redSqr(),i=t.redMul(this.a).redAdd(n),o=this.c2.redMul(this.one.redAdd(this.d.redMul(t).redMul(n)));return i.cmp(o)===0};function tr(r,e,t,n,i){Xc.BasePoint.call(this,r,"projective"),e===null&&t===null&&n===null?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new Ii(e,16),this.y=new Ii(t,16),this.z=n?new Ii(n,16):this.curve.one,this.t=i&&new Ii(i,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}N1(tr,Xc.BasePoint);Jn.prototype.pointFromJSON=function(e){return tr.fromJSON(this,e)};Jn.prototype.point=function(e,t,n,i){return new tr(this,e,t,n,i)};tr.fromJSON=function(e,t){return new tr(e,t[0],t[1],t[2])};tr.prototype.inspect=function(){return this.isInfinity()?"":""};tr.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};tr.prototype._extDbl=function(){var e=this.x.redSqr(),t=this.y.redSqr(),n=this.z.redSqr();n=n.redIAdd(n);var i=this.curve._mulA(e),o=this.x.redAdd(this.y).redSqr().redISub(e).redISub(t),a=i.redAdd(t),h=a.redSub(n),y=i.redSub(t),I=o.redMul(h),_=a.redMul(y),k=o.redMul(y),K=h.redMul(a);return this.curve.point(I,_,K,k)};tr.prototype._projDbl=function(){var e=this.x.redAdd(this.y).redSqr(),t=this.x.redSqr(),n=this.y.redSqr(),i,o,a,h,y,I;if(this.curve.twisted){h=this.curve._mulA(t);var _=h.redAdd(n);this.zOne?(i=e.redSub(t).redSub(n).redMul(_.redSub(this.curve.two)),o=_.redMul(h.redSub(n)),a=_.redSqr().redSub(_).redSub(_)):(y=this.z.redSqr(),I=_.redSub(y).redISub(y),i=e.redSub(t).redISub(n).redMul(I),o=_.redMul(h.redSub(n)),a=_.redMul(I))}else h=t.redAdd(n),y=this.curve._mulC(this.z).redSqr(),I=h.redSub(y).redSub(y),i=this.curve._mulC(e.redISub(h)).redMul(I),o=this.curve._mulC(h).redMul(t.redISub(n)),a=h.redMul(I);return this.curve.point(i,o,a)};tr.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()};tr.prototype._extAdd=function(e){var t=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),n=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),i=this.t.redMul(this.curve.dd).redMul(e.t),o=this.z.redMul(e.z.redAdd(e.z)),a=n.redSub(t),h=o.redSub(i),y=o.redAdd(i),I=n.redAdd(t),_=a.redMul(h),k=y.redMul(I),K=a.redMul(I),D=h.redMul(y);return this.curve.point(_,k,D,K)};tr.prototype._projAdd=function(e){var t=this.z.redMul(e.z),n=t.redSqr(),i=this.x.redMul(e.x),o=this.y.redMul(e.y),a=this.curve.d.redMul(i).redMul(o),h=n.redSub(a),y=n.redAdd(a),I=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(i).redISub(o),_=t.redMul(h).redMul(I),k,K;return this.curve.twisted?(k=t.redMul(y).redMul(o.redSub(this.curve._mulA(i))),K=h.redMul(y)):(k=t.redMul(y).redMul(o.redSub(i)),K=this.curve._mulC(h).redMul(y)),this.curve.point(_,k,K)};tr.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)};tr.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)};tr.prototype.mulAdd=function(e,t,n){return this.curve._wnafMulAdd(1,[this,t],[e,n],2,!1)};tr.prototype.jmulAdd=function(e,t,n){return this.curve._wnafMulAdd(1,[this,t],[e,n],2,!0)};tr.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this};tr.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};tr.prototype.getX=function(){return this.normalize(),this.x.fromRed()};tr.prototype.getY=function(){return this.normalize(),this.y.fromRed()};tr.prototype.eq=function(e){return this===e||this.getX().cmp(e.getX())===0&&this.getY().cmp(e.getY())===0};tr.prototype.eqXToP=function(e){var t=e.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(t)===0)return!0;for(var n=e.clone(),i=this.curve.redN.redMul(this.z);;){if(n.iadd(this.curve.n),n.cmp(this.curve.p)>=0)return!1;if(t.redIAdd(i),this.x.cmp(t)===0)return!0}};tr.prototype.toP=tr.prototype.normalize;tr.prototype.mixedAdd=tr.prototype.add});var i0=Se(L1=>{"use strict";var Qc=L1;Qc.base=Wa();Qc.short=P1();Qc.mont=O1();Qc.edwards=K1()});var Bn=Se(Qt=>{"use strict";var i3=Fi(),o3=ja();Qt.inherits=o3;function a3(r,e){return(r.charCodeAt(e)&64512)!==55296||e<0||e+1>=r.length?!1:(r.charCodeAt(e+1)&64512)===56320}function s3(r,e){if(Array.isArray(r))return r.slice();if(!r)return[];var t=[];if(typeof r=="string")if(e){if(e==="hex")for(r=r.replace(/[^a-z0-9]+/ig,""),r.length%2!==0&&(r="0"+r),i=0;i>6|192,t[n++]=o&63|128):a3(r,i)?(o=65536+((o&1023)<<10)+(r.charCodeAt(++i)&1023),t[n++]=o>>18|240,t[n++]=o>>12&63|128,t[n++]=o>>6&63|128,t[n++]=o&63|128):(t[n++]=o>>12|224,t[n++]=o>>6&63|128,t[n++]=o&63|128)}else for(i=0;i>>24|r>>>8&65280|r<<8&16711680|(r&255)<<24;return e>>>0}Qt.htonl=U1;function f3(r,e){for(var t="",n=0;n>>0}return o}Qt.join32=u3;function h3(r,e){for(var t=new Array(r.length*4),n=0,i=0;n>>24,t[i+1]=o>>>16&255,t[i+2]=o>>>8&255,t[i+3]=o&255):(t[i+3]=o>>>24,t[i+2]=o>>>16&255,t[i+1]=o>>>8&255,t[i]=o&255)}return t}Qt.split32=h3;function d3(r,e){return r>>>e|r<<32-e}Qt.rotr32=d3;function l3(r,e){return r<>>32-e}Qt.rotl32=l3;function p3(r,e){return r+e>>>0}Qt.sum32=p3;function b3(r,e,t){return r+e+t>>>0}Qt.sum32_3=b3;function m3(r,e,t,n){return r+e+t+n>>>0}Qt.sum32_4=m3;function y3(r,e,t,n,i){return r+e+t+n+i>>>0}Qt.sum32_5=y3;function g3(r,e,t,n){var i=r[e],o=r[e+1],a=n+o>>>0,h=(a>>0,r[e+1]=a}Qt.sum64=g3;function v3(r,e,t,n){var i=e+n>>>0,o=(i>>0}Qt.sum64_hi=v3;function x3(r,e,t,n){var i=e+n;return i>>>0}Qt.sum64_lo=x3;function w3(r,e,t,n,i,o,a,h){var y=0,I=e;I=I+n>>>0,y+=I>>0,y+=I>>0,y+=I>>0}Qt.sum64_4_hi=w3;function I3(r,e,t,n,i,o,a,h){var y=e+n+o+h;return y>>>0}Qt.sum64_4_lo=I3;function A3(r,e,t,n,i,o,a,h,y,I){var _=0,k=e;k=k+n>>>0,_+=k>>0,_+=k>>0,_+=k>>0,_+=k>>0}Qt.sum64_5_hi=A3;function S3(r,e,t,n,i,o,a,h,y,I){var _=e+n+o+h+I;return _>>>0}Qt.sum64_5_lo=S3;function _3(r,e,t){var n=e<<32-t|r>>>t;return n>>>0}Qt.rotr64_hi=_3;function k3(r,e,t){var n=r<<32-t|e>>>t;return n>>>0}Qt.rotr64_lo=k3;function M3(r,e,t){return r>>>t}Qt.shr64_hi=M3;function E3(r,e,t){var n=r<<32-t|e>>>t;return n>>>0}Qt.shr64_lo=E3});var Yo=Se(W1=>{"use strict";var q1=Bn(),T3=Fi();function ef(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}W1.BlockHash=ef;ef.prototype.update=function(e,t){if(e=q1.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var n=e.length%this._delta8;this.pending=e.slice(e.length-n,e.length),this.pending.length===0&&(this.pending=null),e=q1.join32(e,0,e.length-n,this.endian);for(var i=0;i>>24&255,i[o++]=e>>>16&255,i[o++]=e>>>8&255,i[o++]=e&255}else for(i[o++]=e&255,i[o++]=e>>>8&255,i[o++]=e>>>16&255,i[o++]=e>>>24&255,i[o++]=0,i[o++]=0,i[o++]=0,i[o++]=0,a=8;a{"use strict";var B3=Bn(),Xn=B3.rotr32;function P3(r,e,t,n){if(r===0)return j1(e,t,n);if(r===1||r===3)return $1(e,t,n);if(r===2)return G1(e,t,n)}Ai.ft_1=P3;function j1(r,e,t){return r&e^~r&t}Ai.ch32=j1;function G1(r,e,t){return r&e^r&t^e&t}Ai.maj32=G1;function $1(r,e,t){return r^e^t}Ai.p32=$1;function R3(r){return Xn(r,2)^Xn(r,13)^Xn(r,22)}Ai.s0_256=R3;function C3(r){return Xn(r,6)^Xn(r,11)^Xn(r,25)}Ai.s1_256=C3;function O3(r){return Xn(r,7)^Xn(r,18)^r>>>3}Ai.g0_256=O3;function N3(r){return Xn(r,17)^Xn(r,19)^r>>>10}Ai.g1_256=N3});var Y1=Se((E5,V1)=>{"use strict";var Zo=Bn(),D3=Yo(),K3=o0(),a0=Zo.rotl32,Ga=Zo.sum32,L3=Zo.sum32_5,U3=K3.ft_1,H1=D3.BlockHash,F3=[1518500249,1859775393,2400959708,3395469782];function Qn(){if(!(this instanceof Qn))return new Qn;H1.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}Zo.inherits(Qn,H1);V1.exports=Qn;Qn.blockSize=512;Qn.outSize=160;Qn.hmacStrength=80;Qn.padLength=64;Qn.prototype._update=function(e,t){for(var n=this.W,i=0;i<16;i++)n[i]=e[t+i];for(;i{"use strict";var Jo=Bn(),z3=Yo(),Xo=o0(),q3=Fi(),Pn=Jo.sum32,W3=Jo.sum32_4,j3=Jo.sum32_5,G3=Xo.ch32,$3=Xo.maj32,H3=Xo.s0_256,V3=Xo.s1_256,Y3=Xo.g0_256,Z3=Xo.g1_256,Z1=z3.BlockHash,J3=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function ei(){if(!(this instanceof ei))return new ei;Z1.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=J3,this.W=new Array(64)}Jo.inherits(ei,Z1);J1.exports=ei;ei.blockSize=512;ei.outSize=256;ei.hmacStrength=192;ei.padLength=64;ei.prototype._update=function(e,t){for(var n=this.W,i=0;i<16;i++)n[i]=e[t+i];for(;i{"use strict";var c0=Bn(),X1=s0();function Si(){if(!(this instanceof Si))return new Si;X1.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}c0.inherits(Si,X1);Q1.exports=Si;Si.blockSize=512;Si.outSize=224;Si.hmacStrength=192;Si.padLength=64;Si.prototype._digest=function(e){return e==="hex"?c0.toHex32(this.h.slice(0,7),"big"):c0.split32(this.h.slice(0,7),"big")}});var h0=Se((P5,ip)=>{"use strict";var tn=Bn(),X3=Yo(),Q3=Fi(),ti=tn.rotr64_hi,ri=tn.rotr64_lo,tp=tn.shr64_hi,rp=tn.shr64_lo,Wi=tn.sum64,f0=tn.sum64_hi,u0=tn.sum64_lo,e6=tn.sum64_4_hi,t6=tn.sum64_4_lo,r6=tn.sum64_5_hi,n6=tn.sum64_5_lo,np=X3.BlockHash,i6=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function Rn(){if(!(this instanceof Rn))return new Rn;np.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=i6,this.W=new Array(160)}tn.inherits(Rn,np);ip.exports=Rn;Rn.blockSize=1024;Rn.outSize=512;Rn.hmacStrength=192;Rn.padLength=128;Rn.prototype._prepareBlock=function(e,t){for(var n=this.W,i=0;i<32;i++)n[i]=e[t+i];for(;i{"use strict";var d0=Bn(),op=h0();function _i(){if(!(this instanceof _i))return new _i;op.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}d0.inherits(_i,op);ap.exports=_i;_i.blockSize=1024;_i.outSize=384;_i.hmacStrength=192;_i.padLength=128;_i.prototype._digest=function(e){return e==="hex"?d0.toHex32(this.h.slice(0,12),"big"):d0.split32(this.h.slice(0,12),"big")}});var cp=Se(Qo=>{"use strict";Qo.sha1=Y1();Qo.sha224=ep();Qo.sha256=s0();Qo.sha384=sp();Qo.sha512=h0()});var pp=Se(lp=>{"use strict";var bo=Bn(),y6=Yo(),tf=bo.rotl32,fp=bo.sum32,$a=bo.sum32_3,up=bo.sum32_4,dp=y6.BlockHash;function ni(){if(!(this instanceof ni))return new ni;dp.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}bo.inherits(ni,dp);lp.ripemd160=ni;ni.blockSize=512;ni.outSize=160;ni.hmacStrength=192;ni.padLength=64;ni.prototype._update=function(e,t){for(var n=this.h[0],i=this.h[1],o=this.h[2],a=this.h[3],h=this.h[4],y=n,I=i,_=o,k=a,K=h,D=0;D<80;D++){var q=fp(tf(up(n,hp(D,i,o,a),e[x6[D]+t],g6(D)),I6[D]),h);n=h,h=a,a=tf(o,10),o=i,i=q,q=fp(tf(up(y,hp(79-D,I,_,k),e[w6[D]+t],v6(D)),A6[D]),K),y=K,K=k,k=tf(_,10),_=I,I=q}q=$a(this.h[1],o,k),this.h[1]=$a(this.h[2],a,K),this.h[2]=$a(this.h[3],h,y),this.h[3]=$a(this.h[4],n,I),this.h[4]=$a(this.h[0],i,_),this.h[0]=q};ni.prototype._digest=function(e){return e==="hex"?bo.toHex32(this.h,"little"):bo.split32(this.h,"little")};function hp(r,e,t,n){return r<=15?e^t^n:r<=31?e&t|~e&n:r<=47?(e|~t)^n:r<=63?e&n|t&~n:e^(t|~n)}function g6(r){return r<=15?0:r<=31?1518500249:r<=47?1859775393:r<=63?2400959708:2840853838}function v6(r){return r<=15?1352829926:r<=31?1548603684:r<=47?1836072691:r<=63?2053994217:0}var x6=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],w6=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],I6=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],A6=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]});var mp=Se((N5,bp)=>{"use strict";var S6=Bn(),_6=Fi();function ea(r,e,t){if(!(this instanceof ea))return new ea(r,e,t);this.Hash=r,this.blockSize=r.blockSize/8,this.outSize=r.outSize/8,this.inner=null,this.outer=null,this._init(S6.toArray(e,t))}bp.exports=ea;ea.prototype._init=function(e){e.length>this.blockSize&&(e=new this.Hash().update(e).digest()),_6(e.length<=this.blockSize);for(var t=e.length;t{var Mr=yp;Mr.utils=Bn();Mr.common=Yo();Mr.sha=cp();Mr.ripemd=pp();Mr.hmac=mp();Mr.sha1=Mr.sha.sha1;Mr.sha256=Mr.sha.sha256;Mr.sha224=Mr.sha.sha224;Mr.sha384=Mr.sha.sha384;Mr.sha512=Mr.sha.sha512;Mr.ripemd160=Mr.ripemd.ripemd160});var vp=Se((K5,gp)=>{gp.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}});var nf=Se(Ip=>{"use strict";var p0=Ip,ji=rf(),l0=i0(),k6=hn(),xp=k6.assert;function wp(r){r.type==="short"?this.curve=new l0.short(r):r.type==="edwards"?this.curve=new l0.edwards(r):this.curve=new l0.mont(r),this.g=this.curve.g,this.n=this.curve.n,this.hash=r.hash,xp(this.g.validate(),"Invalid curve"),xp(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}p0.PresetCurve=wp;function Gi(r,e){Object.defineProperty(p0,r,{configurable:!0,enumerable:!0,get:function(){var t=new wp(e);return Object.defineProperty(p0,r,{configurable:!0,enumerable:!0,value:t}),t}})}Gi("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:ji.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]});Gi("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:ji.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]});Gi("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:ji.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]});Gi("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:ji.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]});Gi("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:ji.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]});Gi("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:ji.sha256,gRed:!1,g:["9"]});Gi("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:ji.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});var b0;try{b0=vp()}catch{b0=void 0}Gi("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:ji.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",b0]})});var _p=Se((U5,Sp)=>{"use strict";var M6=rf(),mo=Ju(),Ap=Fi();function $i(r){if(!(this instanceof $i))return new $i(r);this.hash=r.hash,this.predResist=!!r.predResist,this.outLen=this.hash.outSize,this.minEntropy=r.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=mo.toArray(r.entropy,r.entropyEnc||"hex"),t=mo.toArray(r.nonce,r.nonceEnc||"hex"),n=mo.toArray(r.pers,r.persEnc||"hex");Ap(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,t,n)}Sp.exports=$i;$i.prototype._init=function(e,t,n){var i=e.concat(t).concat(n);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var o=0;o=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(e.concat(n||[])),this._reseed=1};$i.prototype.generate=function(e,t,n,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");typeof t!="string"&&(i=n,n=t,t=null),n&&(n=mo.toArray(n,i||"hex"),this._update(n));for(var o=[];o.length{"use strict";var E6=Zn(),T6=hn(),m0=T6.assert;function Ur(r,e){this.ec=r,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}kp.exports=Ur;Ur.fromPublic=function(e,t,n){return t instanceof Ur?t:new Ur(e,{pub:t,pubEnc:n})};Ur.fromPrivate=function(e,t,n){return t instanceof Ur?t:new Ur(e,{priv:t,privEnc:n})};Ur.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:"Invalid public key"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}};Ur.prototype.getPublic=function(e,t){return typeof e=="string"&&(t=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),t?this.pub.encode(t,e):this.pub};Ur.prototype.getPrivate=function(e){return e==="hex"?this.priv.toString(16,2):this.priv};Ur.prototype._importPrivate=function(e,t){this.priv=new E6(e,t||16),this.priv=this.priv.umod(this.ec.curve.n)};Ur.prototype._importPublic=function(e,t){if(e.x||e.y){this.ec.curve.type==="mont"?m0(e.x,"Need x coordinate"):(this.ec.curve.type==="short"||this.ec.curve.type==="edwards")&&m0(e.x&&e.y,"Need both x and y coordinate"),this.pub=this.ec.curve.point(e.x,e.y);return}this.pub=this.ec.curve.decodePoint(e,t)};Ur.prototype.derive=function(e){return e.validate()||m0(e.validate(),"public point not validated"),e.mul(this.priv).getX()};Ur.prototype.sign=function(e,t,n){return this.ec.sign(e,this,t,n)};Ur.prototype.verify=function(e,t){return this.ec.verify(e,t,this)};Ur.prototype.inspect=function(){return""}});var Bp=Se((z5,Tp)=>{"use strict";var of=Zn(),v0=hn(),B6=v0.assert;function af(r,e){if(r instanceof af)return r;this._importDER(r,e)||(B6(r.r&&r.s,"Signature without r or s"),this.r=new of(r.r,16),this.s=new of(r.s,16),r.recoveryParam===void 0?this.recoveryParam=null:this.recoveryParam=r.recoveryParam)}Tp.exports=af;function P6(){this.place=0}function y0(r,e){var t=r[e.place++];if(!(t&128))return t;var n=t&15;if(n===0||n>4)return!1;for(var i=0,o=0,a=e.place;o>>=0;return i<=127?!1:(e.place=a,i)}function Ep(r){for(var e=0,t=r.length-1;!r[e]&&!(r[e+1]&128)&&e>>3);for(r.push(t|128);--t;)r.push(e>>>(t<<3)&255);r.push(e)}af.prototype.toDER=function(e){var t=this.r.toArray(),n=this.s.toArray();for(t[0]&128&&(t=[0].concat(t)),n[0]&128&&(n=[0].concat(n)),t=Ep(t),n=Ep(n);!n[0]&&!(n[1]&128);)n=n.slice(1);var i=[2];g0(i,t.length),i=i.concat(t),i.push(2),g0(i,n.length);var o=i.concat(n),a=[48];return g0(a,o.length),a=a.concat(o),v0.encode(a,e)}});var Op=Se((q5,Cp)=>{"use strict";var yo=Zn(),Pp=_p(),R6=hn(),x0=nf(),C6=t0(),Rp=R6.assert,w0=Mp(),sf=Bp();function wn(r){if(!(this instanceof wn))return new wn(r);typeof r=="string"&&(Rp(Object.prototype.hasOwnProperty.call(x0,r),"Unknown curve "+r),r=x0[r]),r instanceof x0.PresetCurve&&(r={curve:r}),this.curve=r.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=r.curve.g,this.g.precompute(r.curve.n.bitLength()+1),this.hash=r.hash||r.curve.hash}Cp.exports=wn;wn.prototype.keyPair=function(e){return new w0(this,e)};wn.prototype.keyFromPrivate=function(e,t){return w0.fromPrivate(this,e,t)};wn.prototype.keyFromPublic=function(e,t){return w0.fromPublic(this,e,t)};wn.prototype.genKeyPair=function(e){e||(e={});for(var t=new Pp({hash:this.hash,pers:e.pers,persEnc:e.persEnc||"utf8",entropy:e.entropy||C6(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||"utf8",nonce:this.n.toArray()}),n=this.n.byteLength(),i=this.n.sub(new yo(2));;){var o=new yo(t.generate(n));if(!(o.cmp(i)>0))return o.iaddn(1),this.keyFromPrivate(o)}};wn.prototype._truncateToN=function(e,t){var n=e.byteLength()*8-this.n.bitLength();return n>0&&(e=e.ushrn(n)),!t&&e.cmp(this.n)>=0?e.sub(this.n):e};wn.prototype.sign=function(e,t,n,i){typeof n=="object"&&(i=n,n=null),i||(i={}),t=this.keyFromPrivate(t,n),e=this._truncateToN(new yo(e,16));for(var o=this.n.byteLength(),a=t.getPrivate().toArray("be",o),h=e.toArray("be",o),y=new Pp({hash:this.hash,entropy:a,nonce:h,pers:i.pers,persEnc:i.persEnc||"utf8"}),I=this.n.sub(new yo(1)),_=0;;_++){var k=i.k?i.k(_):new yo(y.generate(this.n.byteLength()));if(k=this._truncateToN(k,!0),!(k.cmpn(1)<=0||k.cmp(I)>=0)){var K=this.g.mul(k);if(!K.isInfinity()){var D=K.getX(),q=D.umod(this.n);if(q.cmpn(0)!==0){var Z=k.invm(this.n).mul(q.mul(t.getPrivate()).iadd(e));if(Z=Z.umod(this.n),Z.cmpn(0)!==0){var he=(K.getY().isOdd()?1:0)|(D.cmp(q)!==0?2:0);return i.canonical&&Z.cmp(this.nh)>0&&(Z=this.n.sub(Z),he^=1),new sf({r:q,s:Z,recoveryParam:he})}}}}}};wn.prototype.verify=function(e,t,n,i){e=this._truncateToN(new yo(e,16)),n=this.keyFromPublic(n,i),t=new sf(t,"hex");var o=t.r,a=t.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0||a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var h=a.invm(this.n),y=h.mul(e).umod(this.n),I=h.mul(o).umod(this.n),_;return this.curve._maxwellTrick?(_=this.g.jmulAdd(y,n.getPublic(),I),_.isInfinity()?!1:_.eqXToP(o)):(_=this.g.mulAdd(y,n.getPublic(),I),_.isInfinity()?!1:_.getX().umod(this.n).cmp(o)===0)};wn.prototype.recoverPubKey=function(r,e,t,n){Rp((3&t)===t,"The recovery param is more than two bits"),e=new sf(e,n);var i=this.n,o=new yo(r),a=e.r,h=e.s,y=t&1,I=t>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&I)throw new Error("Unable to find sencond key candinate");I?a=this.curve.pointFromX(a.add(this.curve.n),y):a=this.curve.pointFromX(a,y);var _=e.r.invm(i),k=i.sub(o).mul(_).umod(i),K=h.mul(_).umod(i);return this.g.mulAdd(k,a,K)};wn.prototype.getKeyRecoveryParam=function(r,e,t,n){if(e=new sf(e,n),e.recoveryParam!==null)return e.recoveryParam;for(var i=0;i<4;i++){var o;try{o=this.recoverPubKey(r,e,i)}catch{continue}if(o.eq(t))return i}throw new Error("Unable to find valid recovery factor")}});var Lp=Se((W5,Kp)=>{"use strict";var Ha=hn(),Dp=Ha.assert,Np=Ha.parseBytes,ta=Ha.cachedProperty;function xr(r,e){this.eddsa=r,this._secret=Np(e.secret),r.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=Np(e.pub)}xr.fromPublic=function(e,t){return t instanceof xr?t:new xr(e,{pub:t})};xr.fromSecret=function(e,t){return t instanceof xr?t:new xr(e,{secret:t})};xr.prototype.secret=function(){return this._secret};ta(xr,"pubBytes",function(){return this.eddsa.encodePoint(this.pub())});ta(xr,"pub",function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())});ta(xr,"privBytes",function(){var e=this.eddsa,t=this.hash(),n=e.encodingLength-1,i=t.slice(0,e.encodingLength);return i[0]&=248,i[n]&=127,i[n]|=64,i});ta(xr,"priv",function(){return this.eddsa.decodeInt(this.privBytes())});ta(xr,"hash",function(){return this.eddsa.hash().update(this.secret()).digest()});ta(xr,"messagePrefix",function(){return this.hash().slice(this.eddsa.encodingLength)});xr.prototype.sign=function(e){return Dp(this._secret,"KeyPair can only verify"),this.eddsa.sign(e,this)};xr.prototype.verify=function(e,t){return this.eddsa.verify(e,t,this)};xr.prototype.getSecret=function(e){return Dp(this._secret,"KeyPair is public only"),Ha.encode(this.secret(),e)};xr.prototype.getPublic=function(e){return Ha.encode(this.pubBytes(),e)};Kp.exports=xr});var Fp=Se((j5,Up)=>{"use strict";var O6=Zn(),cf=hn(),N6=cf.assert,ff=cf.cachedProperty,D6=cf.parseBytes;function go(r,e){this.eddsa=r,typeof e!="object"&&(e=D6(e)),Array.isArray(e)&&(e={R:e.slice(0,r.encodingLength),S:e.slice(r.encodingLength)}),N6(e.R&&e.S,"Signature without R or S"),r.isPoint(e.R)&&(this._R=e.R),e.S instanceof O6&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}ff(go,"S",function(){return this.eddsa.decodeInt(this.Sencoded())});ff(go,"R",function(){return this.eddsa.decodePoint(this.Rencoded())});ff(go,"Rencoded",function(){return this.eddsa.encodePoint(this.R())});ff(go,"Sencoded",function(){return this.eddsa.encodeInt(this.S())});go.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};go.prototype.toHex=function(){return cf.encode(this.toBytes(),"hex").toUpperCase()};Up.exports=go});var Gp=Se((G5,jp)=>{"use strict";var K6=rf(),L6=nf(),ra=hn(),U6=ra.assert,qp=ra.parseBytes,Wp=Lp(),zp=Fp();function rn(r){if(U6(r==="ed25519","only tested with ed25519 so far"),!(this instanceof rn))return new rn(r);r=L6[r].curve,this.curve=r,this.g=r.g,this.g.precompute(r.n.bitLength()+1),this.pointClass=r.point().constructor,this.encodingLength=Math.ceil(r.n.bitLength()/8),this.hash=K6.sha512}jp.exports=rn;rn.prototype.sign=function(e,t){e=qp(e);var n=this.keyFromSecret(t),i=this.hashInt(n.messagePrefix(),e),o=this.g.mul(i),a=this.encodePoint(o),h=this.hashInt(a,n.pubBytes(),e).mul(n.priv()),y=i.add(h).umod(this.curve.n);return this.makeSignature({R:o,S:y,Rencoded:a})};rn.prototype.verify=function(e,t,n){e=qp(e),t=this.makeSignature(t);var i=this.keyFromPublic(n),o=this.hashInt(t.Rencoded(),i.pubBytes(),e),a=this.g.mul(t.S()),h=t.R().add(i.pub().mul(o));return h.eq(a)};rn.prototype.hashInt=function(){for(var e=this.hash(),t=0;t{"use strict";var vo=$p;vo.version=w1().version;vo.utils=hn();vo.rand=t0();vo.curve=i0();vo.curves=nf();vo.ec=Op();vo.eddsa=Gp()});var Yp=Se((H5,Vp)=>{var F6=Hp().ec,ii=new F6("secp256k1"),Nt=ii.curve,er=Nt.n.constructor;function z6(r,e){let t=new er(e);if(t.cmp(Nt.p)>=0)return null;t=t.toRed(Nt.red);let n=t.redSqr().redIMul(t).redIAdd(Nt.b).redSqrt();return r===3!==n.isOdd()&&(n=n.redNeg()),ii.keyPair({pub:{x:t,y:n}})}function q6(r,e,t){let n=new er(e),i=new er(t);if(n.cmp(Nt.p)>=0||i.cmp(Nt.p)>=0||(n=n.toRed(Nt.red),i=i.toRed(Nt.red),(r===6||r===7)&&i.isOdd()!==(r===7)))return null;let o=n.redSqr().redIMul(n);return i.redSqr().redISub(o.redIAdd(Nt.b)).isZero()?ii.keyPair({pub:{x:n,y:i}}):null}function Hi(r){let e=r[0];switch(e){case 2:case 3:return r.length!==33?null:z6(e,r.subarray(1,33));case 4:case 6:case 7:return r.length!==65?null:q6(e,r.subarray(1,33),r.subarray(33,65));default:return null}}function xo(r,e){let t=e.encode(null,r.length===33);for(let n=0;n=0||(t.iadd(new er(r)),t.cmp(Nt.n)>=0&&t.isub(Nt.n),t.isZero()))return 1;let n=t.toArrayLike(Uint8Array,"be",32);return r.set(n),0},privateKeyTweakMul(r,e){let t=new er(e);if(t.cmp(Nt.n)>=0||t.isZero())return 1;t.imul(new er(r)),t.cmp(Nt.n)>=0&&(t=t.umod(Nt.n));let n=t.toArrayLike(Uint8Array,"be",32);return r.set(n),0},publicKeyVerify(r){return Hi(r)===null?1:0},publicKeyCreate(r,e){let t=new er(e);if(t.cmp(Nt.n)>=0||t.isZero())return 1;let n=ii.keyFromPrivate(e).getPublic();return xo(r,n),0},publicKeyConvert(r,e){let t=Hi(e);if(t===null)return 1;let n=t.getPublic();return xo(r,n),0},publicKeyNegate(r,e){let t=Hi(e);if(t===null)return 1;let n=t.getPublic();return n.y=n.y.redNeg(),xo(r,n),0},publicKeyCombine(r,e){let t=new Array(e.length);for(let i=0;i=0)return 2;let i=n.getPublic().add(Nt.g.mul(t));return i.isInfinity()?2:(xo(r,i),0)},publicKeyTweakMul(r,e,t){let n=Hi(e);if(n===null)return 1;if(t=new er(t),t.cmp(Nt.n)>=0||t.isZero())return 2;let i=n.getPublic().mul(t);return xo(r,i),0},signatureNormalize(r){let e=new er(r.subarray(0,32)),t=new er(r.subarray(32,64));return e.cmp(Nt.n)>=0||t.cmp(Nt.n)>=0?1:(t.cmp(ii.nh)===1&&r.set(Nt.n.sub(t).toArrayLike(Uint8Array,"be",32),32),0)},signatureExport(r,e){let t=e.subarray(0,32),n=e.subarray(32,64);if(new er(t).cmp(Nt.n)>=0||new er(n).cmp(Nt.n)>=0)return 1;let{output:i}=r,o=i.subarray(4,4+33);o[0]=0,o.set(t,1);let a=33,h=0;for(;a>1&&o[h]===0&&!(o[h+1]&128);--a,++h);if(o=o.subarray(h),o[0]&128||a>1&&o[0]===0&&!(o[1]&128))return 1;let y=i.subarray(6+33,6+33+33);y[0]=0,y.set(n,1);let I=33,_=0;for(;I>1&&y[_]===0&&!(y[_+1]&128);--I,++_);return y=y.subarray(_),y[0]&128||I>1&&y[0]===0&&!(y[1]&128)?1:(r.outputlen=6+a+I,i[0]=48,i[1]=r.outputlen-2,i[2]=2,i[3]=o.length,i.set(o,4),i[4+a]=2,i[5+a]=y.length,i.set(y,6+a),0)},signatureImport(r,e){if(e.length<8||e.length>72||e[0]!==48||e[1]!==e.length-2||e[2]!==2)return 1;let t=e[3];if(t===0||5+t>=e.length||e[4+t]!==2)return 1;let n=e[5+t];if(n===0||6+t+n!==e.length||e[4]&128||t>1&&e[4]===0&&!(e[5]&128)||e[t+6]&128||n>1&&e[t+6]===0&&!(e[t+7]&128))return 1;let i=e.subarray(4,4+t);if(i.length===33&&i[0]===0&&(i=i.subarray(1)),i.length>32)return 1;let o=e.subarray(6+t);if(o.length===33&&o[0]===0&&(o=o.slice(1)),o.length>32)throw new Error("S length is too long");let a=new er(i);a.cmp(Nt.n)>=0&&(a=new er(0));let h=new er(e.subarray(6+t));return h.cmp(Nt.n)>=0&&(h=new er(0)),r.set(a.toArrayLike(Uint8Array,"be",32),0),r.set(h.toArrayLike(Uint8Array,"be",32),32),0},ecdsaSign(r,e,t,n,i){if(i){let h=i;i=y=>{let I=h(e,t,null,n,y);if(!(I instanceof Uint8Array&&I.length===32))throw new Error("This is the way");return new er(I)}}let o=new er(t);if(o.cmp(Nt.n)>=0||o.isZero())return 1;let a;try{a=ii.sign(e,t,{canonical:!0,k:i,pers:n})}catch{return 1}return r.signature.set(a.r.toArrayLike(Uint8Array,"be",32),0),r.signature.set(a.s.toArrayLike(Uint8Array,"be",32),32),r.recid=a.recoveryParam,0},ecdsaVerify(r,e,t){let n={r:r.subarray(0,32),s:r.subarray(32,64)},i=new er(n.r),o=new er(n.s);if(i.cmp(Nt.n)>=0||o.cmp(Nt.n)>=0)return 1;if(o.cmp(ii.nh)===1||i.isZero()||o.isZero())return 3;let a=Hi(t);if(a===null)return 2;let h=a.getPublic();return ii.verify(e,n,h)?0:3},ecdsaRecover(r,e,t,n){let i={r:e.slice(0,32),s:e.slice(32,64)},o=new er(i.r),a=new er(i.s);if(o.cmp(Nt.n)>=0||a.cmp(Nt.n)>=0)return 1;if(o.isZero()||a.isZero())return 2;let h;try{h=ii.recoverPubKey(n,i,t)}catch{return 2}return xo(r,h),0},ecdh(r,e,t,n,i,o,a){let h=Hi(e);if(h===null)return 1;let y=new er(t);if(y.cmp(Nt.n)>=0||y.isZero())return 2;let I=h.getPublic().mul(y);if(i===void 0){let _=I.encode(null,!0),k=ii.hash().update(_).digest();for(let K=0;K<32;++K)r[K]=k[K]}else{o||(o=new Uint8Array(32));let _=I.getX().toArray("be",32);for(let q=0;q<32;++q)o[q]=_[q];a||(a=new Uint8Array(32));let k=I.getY().toArray("be",32);for(let q=0;q<32;++q)a[q]=k[q];let K=i(o,a,n);if(!(K instanceof Uint8Array&&K.length===r.length))return 2;r.set(K)}return 0}}});var Jp=Se((V5,Zp)=>{Zp.exports=x1()(Yp())});var Xp=Se((Y5,uf)=>{(function(){"use strict";var r="input is invalid type",e="finalize already called",t=typeof window=="object",n=t?window:{};n.JS_SHA3_NO_WINDOW&&(t=!1);var i=!t&&typeof self=="object",o=!n.JS_SHA3_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;o?n=global:i&&(n=self);var a=!n.JS_SHA3_NO_COMMON_JS&&typeof uf=="object"&&uf.exports,h=typeof define=="function"&&define.amd,y=!n.JS_SHA3_NO_ARRAY_BUFFER&&typeof ArrayBuffer<"u",I="0123456789abcdef".split(""),_=[31,7936,2031616,520093696],k=[4,1024,262144,67108864],K=[1,256,65536,16777216],D=[6,1536,393216,100663296],q=[0,8,16,24],Z=[1,0,32898,0,32906,2147483648,2147516416,2147483648,32907,0,2147483649,0,2147516545,2147483648,32777,2147483648,138,0,136,0,2147516425,0,2147483658,0,2147516555,0,139,2147483648,32905,2147483648,32771,2147483648,32770,2147483648,128,2147483648,32778,0,2147483658,2147483648,2147516545,2147483648,32896,2147483648,2147483649,0,2147516424,2147483648],he=[224,256,384,512],ce=[128,256],Y=["hex","buffer","arrayBuffer","array","digest"],Ee={128:168,256:136};(n.JS_SHA3_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(A){return Object.prototype.toString.call(A)==="[object Array]"}),y&&(n.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(A){return typeof A=="object"&&A.buffer&&A.buffer.constructor===ArrayBuffer});for(var Be=function(A,L,W){return function(G){return new v(A,L,A).update(G)[W]()}},Ue=function(A,L,W){return function(G,re){return new v(A,L,re).update(G)[W]()}},_e=function(A,L,W){return function(G,re,Me,oe){return s["cshake"+A].update(G,re,Me,oe)[W]()}},je=function(A,L,W){return function(G,re,Me,oe){return s["kmac"+A].update(G,re,Me,oe)[W]()}},R=function(A,L,W,G){for(var re=0;re>5,this.byteCount=this.blockCount<<2,this.outputBlocks=W>>5,this.extraBytes=(W&31)>>3;for(var G=0;G<50;++G)this.s[G]=0}v.prototype.update=function(A){if(this.finalized)throw new Error(e);var L,W=typeof A;if(W!=="string"){if(W==="object"){if(A===null)throw new Error(r);if(y&&A.constructor===ArrayBuffer)A=new Uint8Array(A);else if(!Array.isArray(A)&&(!y||!ArrayBuffer.isView(A)))throw new Error(r)}else throw new Error(r);L=!0}for(var G=this.blocks,re=this.byteCount,Me=A.length,oe=this.blockCount,ae=0,Mt=this.s,fe,be;ae>2]|=A[ae]<>2]|=be<>2]|=(192|be>>6)<>2]|=(128|be&63)<=57344?(G[fe>>2]|=(224|be>>12)<>2]|=(128|be>>6&63)<>2]|=(128|be&63)<>2]|=(240|be>>18)<>2]|=(128|be>>12&63)<>2]|=(128|be>>6&63)<>2]|=(128|be&63)<=re){for(this.start=fe-re,this.block=G[oe],fe=0;fe>8,W=A&255;W>0;)re.unshift(W),A=A>>8,W=A&255,++G;return L?re.push(G):re.unshift(G),this.update(re),re.length},v.prototype.encodeString=function(A){var L,W=typeof A;if(W!=="string"){if(W==="object"){if(A===null)throw new Error(r);if(y&&A.constructor===ArrayBuffer)A=new Uint8Array(A);else if(!Array.isArray(A)&&(!y||!ArrayBuffer.isView(A)))throw new Error(r)}else throw new Error(r);L=!0}var G=0,re=A.length;if(L)G=re;else for(var Me=0;Me=57344?G+=3:(oe=65536+((oe&1023)<<10|A.charCodeAt(++Me)&1023),G+=4)}return G+=this.encode(G*8),this.update(A),G},v.prototype.bytepad=function(A,L){for(var W=this.encode(L),G=0;G>2]|=this.padding[L&3],this.lastByteIndex===this.byteCount)for(A[0]=A[W],L=1;L>4&15]+I[ae&15]+I[ae>>12&15]+I[ae>>8&15]+I[ae>>20&15]+I[ae>>16&15]+I[ae>>28&15]+I[ae>>24&15];Me%A===0&&(z(L),re=0)}return G&&(ae=L[re],oe+=I[ae>>4&15]+I[ae&15],G>1&&(oe+=I[ae>>12&15]+I[ae>>8&15]),G>2&&(oe+=I[ae>>20&15]+I[ae>>16&15])),oe},v.prototype.arrayBuffer=function(){this.finalize();var A=this.blockCount,L=this.s,W=this.outputBlocks,G=this.extraBytes,re=0,Me=0,oe=this.outputBits>>3,ae;G?ae=new ArrayBuffer(W+1<<2):ae=new ArrayBuffer(oe);for(var Mt=new Uint32Array(ae);Me>8&255,oe[ae+2]=Mt>>16&255,oe[ae+3]=Mt>>24&255;Me%A===0&&z(L)}return G&&(ae=Me<<2,Mt=L[re],oe[ae]=Mt&255,G>1&&(oe[ae+1]=Mt>>8&255),G>2&&(oe[ae+2]=Mt>>16&255)),oe};function P(A,L,W){v.call(this,A,L,W)}P.prototype=new v,P.prototype.finalize=function(){return this.encode(this.outputBits,!0),v.prototype.finalize.call(this)};var z=function(A){var L,W,G,re,Me,oe,ae,Mt,fe,be,an,lt,$e,zr,pt,at,Yr,rt,st,qr,ct,ft,sn,gt,ut,Zr,nt,Xe,Ar,Qe,it,Tr,et,ht,cn,vt,xt,hr,He,Ze,Jr,dt,bt,bn,Oe,mt,S,T,E,m,B,N,F,j,J,xe,ue,Pe,ge,Ne,Ke,Ge,We;for(G=0;G<48;G+=2)re=A[0]^A[10]^A[20]^A[30]^A[40],Me=A[1]^A[11]^A[21]^A[31]^A[41],oe=A[2]^A[12]^A[22]^A[32]^A[42],ae=A[3]^A[13]^A[23]^A[33]^A[43],Mt=A[4]^A[14]^A[24]^A[34]^A[44],fe=A[5]^A[15]^A[25]^A[35]^A[45],be=A[6]^A[16]^A[26]^A[36]^A[46],an=A[7]^A[17]^A[27]^A[37]^A[47],lt=A[8]^A[18]^A[28]^A[38]^A[48],$e=A[9]^A[19]^A[29]^A[39]^A[49],L=lt^(oe<<1|ae>>>31),W=$e^(ae<<1|oe>>>31),A[0]^=L,A[1]^=W,A[10]^=L,A[11]^=W,A[20]^=L,A[21]^=W,A[30]^=L,A[31]^=W,A[40]^=L,A[41]^=W,L=re^(Mt<<1|fe>>>31),W=Me^(fe<<1|Mt>>>31),A[2]^=L,A[3]^=W,A[12]^=L,A[13]^=W,A[22]^=L,A[23]^=W,A[32]^=L,A[33]^=W,A[42]^=L,A[43]^=W,L=oe^(be<<1|an>>>31),W=ae^(an<<1|be>>>31),A[4]^=L,A[5]^=W,A[14]^=L,A[15]^=W,A[24]^=L,A[25]^=W,A[34]^=L,A[35]^=W,A[44]^=L,A[45]^=W,L=Mt^(lt<<1|$e>>>31),W=fe^($e<<1|lt>>>31),A[6]^=L,A[7]^=W,A[16]^=L,A[17]^=W,A[26]^=L,A[27]^=W,A[36]^=L,A[37]^=W,A[46]^=L,A[47]^=W,L=be^(re<<1|Me>>>31),W=an^(Me<<1|re>>>31),A[8]^=L,A[9]^=W,A[18]^=L,A[19]^=W,A[28]^=L,A[29]^=W,A[38]^=L,A[39]^=W,A[48]^=L,A[49]^=W,zr=A[0],pt=A[1],mt=A[11]<<4|A[10]>>>28,S=A[10]<<4|A[11]>>>28,Xe=A[20]<<3|A[21]>>>29,Ar=A[21]<<3|A[20]>>>29,Ne=A[31]<<9|A[30]>>>23,Ke=A[30]<<9|A[31]>>>23,dt=A[40]<<18|A[41]>>>14,bt=A[41]<<18|A[40]>>>14,ht=A[2]<<1|A[3]>>>31,cn=A[3]<<1|A[2]>>>31,at=A[13]<<12|A[12]>>>20,Yr=A[12]<<12|A[13]>>>20,T=A[22]<<10|A[23]>>>22,E=A[23]<<10|A[22]>>>22,Qe=A[33]<<13|A[32]>>>19,it=A[32]<<13|A[33]>>>19,Ge=A[42]<<2|A[43]>>>30,We=A[43]<<2|A[42]>>>30,j=A[5]<<30|A[4]>>>2,J=A[4]<<30|A[5]>>>2,vt=A[14]<<6|A[15]>>>26,xt=A[15]<<6|A[14]>>>26,rt=A[25]<<11|A[24]>>>21,st=A[24]<<11|A[25]>>>21,m=A[34]<<15|A[35]>>>17,B=A[35]<<15|A[34]>>>17,Tr=A[45]<<29|A[44]>>>3,et=A[44]<<29|A[45]>>>3,gt=A[6]<<28|A[7]>>>4,ut=A[7]<<28|A[6]>>>4,xe=A[17]<<23|A[16]>>>9,ue=A[16]<<23|A[17]>>>9,hr=A[26]<<25|A[27]>>>7,He=A[27]<<25|A[26]>>>7,qr=A[36]<<21|A[37]>>>11,ct=A[37]<<21|A[36]>>>11,N=A[47]<<24|A[46]>>>8,F=A[46]<<24|A[47]>>>8,bn=A[8]<<27|A[9]>>>5,Oe=A[9]<<27|A[8]>>>5,Zr=A[18]<<20|A[19]>>>12,nt=A[19]<<20|A[18]>>>12,Pe=A[29]<<7|A[28]>>>25,ge=A[28]<<7|A[29]>>>25,Ze=A[38]<<8|A[39]>>>24,Jr=A[39]<<8|A[38]>>>24,ft=A[48]<<14|A[49]>>>18,sn=A[49]<<14|A[48]>>>18,A[0]=zr^~at&rt,A[1]=pt^~Yr&st,A[10]=gt^~Zr&Xe,A[11]=ut^~nt&Ar,A[20]=ht^~vt&hr,A[21]=cn^~xt&He,A[30]=bn^~mt&T,A[31]=Oe^~S&E,A[40]=j^~xe&Pe,A[41]=J^~ue&ge,A[2]=at^~rt&qr,A[3]=Yr^~st&ct,A[12]=Zr^~Xe&Qe,A[13]=nt^~Ar&it,A[22]=vt^~hr&Ze,A[23]=xt^~He&Jr,A[32]=mt^~T&m,A[33]=S^~E&B,A[42]=xe^~Pe&Ne,A[43]=ue^~ge&Ke,A[4]=rt^~qr&ft,A[5]=st^~ct&sn,A[14]=Xe^~Qe&Tr,A[15]=Ar^~it&et,A[24]=hr^~Ze&dt,A[25]=He^~Jr&bt,A[34]=T^~m&N,A[35]=E^~B&F,A[44]=Pe^~Ne&Ge,A[45]=ge^~Ke&We,A[6]=qr^~ft&zr,A[7]=ct^~sn&pt,A[16]=Qe^~Tr>,A[17]=it^~et&ut,A[26]=Ze^~dt&ht,A[27]=Jr^~bt&cn,A[36]=m^~N&bn,A[37]=B^~F&Oe,A[46]=Ne^~Ge&j,A[47]=Ke^~We&J,A[8]=ft^~zr&at,A[9]=sn^~pt&Yr,A[18]=Tr^~gt&Zr,A[19]=et^~ut&nt,A[28]=dt^~ht&vt,A[29]=bt^~cn&xt,A[38]=N^~bn&mt,A[39]=F^~Oe&S,A[48]=Ge^~j&xe,A[49]=We^~J&ue,A[0]^=Z[G],A[1]^=Z[G+1]};if(a)uf.exports=s;else{for(p=0;pVr,ACCOUNT_TYPE_SIZE:()=>_o,ASSOCIATED_TOKEN_PROGRAM_ID:()=>Er,AccountLayout:()=>ph,AccountState:()=>sm,AccountType:()=>Rf,AuthorityType:()=>Lm,DEFAULT_ACCOUNT_STATE_SIZE:()=>Ah,DefaultAccountStateInstruction:()=>hm,DefaultAccountStateLayout:()=>Ih,ExtensionType:()=>li,IMMUTABLE_OWNER_SIZE:()=>_h,INTEREST_BEARING_MINT_CONFIG_STATE_SIZE:()=>Mh,ImmutableOwnerLayout:()=>Sh,InterestBearingMintConfigStateLayout:()=>kh,InterestBearingMintInstruction:()=>Gm,LENGTH_SIZE:()=>Df,MAX_FEE_BASIS_POINTS:()=>Sm,MEMO_TRANSFER_SIZE:()=>Rh,MINT_CLOSE_AUTHORITY_SIZE:()=>Oh,MINT_SIZE:()=>to,MULTISIG_SIZE:()=>zn,MemoTransferInstruction:()=>lm,MemoTransferLayout:()=>Ph,MintCloseAuthorityLayout:()=>Ch,MintLayout:()=>yh,MultisigLayout:()=>dh,NATIVE_MINT:()=>Y0,NATIVE_MINT_2022:()=>is,NON_TRANSFERABLE_SIZE:()=>Dh,NonTransferableLayout:()=>Nh,ONE_IN_BASIS_POINTS:()=>Hw,TOKEN_2022_PROGRAM_ID:()=>Ot,TOKEN_PROGRAM_ID:()=>X,TRANSFER_FEE_AMOUNT_SIZE:()=>Gh,TRANSFER_FEE_CONFIG_SIZE:()=>Wh,TYPE_SIZE:()=>Mo,TokenAccountNotFoundError:()=>Un,TokenError:()=>Hr,TokenInstruction:()=>Qb,TokenInvalidAccountError:()=>os,TokenInvalidAccountOwnerError:()=>Fn,TokenInvalidAccountSizeError:()=>_n,TokenInvalidInstructionDataError:()=>Le,TokenInvalidInstructionKeysError:()=>qe,TokenInvalidInstructionProgramError:()=>ze,TokenInvalidInstructionTypeError:()=>De,TokenInvalidMintError:()=>So,TokenInvalidOwnerError:()=>as,TokenOwnerOffCurveError:()=>ba,TokenUnsupportedInstructionError:()=>fr,TransferFeeAmountLayout:()=>jh,TransferFeeConfigLayout:()=>qh,TransferFeeInstruction:()=>gm,amountToUiAmount:()=>gw,amountToUiAmountInstructionData:()=>ss,approve:()=>vw,approveChecked:()=>xw,approveCheckedInstructionData:()=>us,approveInstructionData:()=>cs,burn:()=>ww,burnChecked:()=>Iw,burnCheckedInstructionData:()=>ls,burnInstructionData:()=>hs,closeAccount:()=>Aw,closeAccountInstructionData:()=>ps,createAccount:()=>Zh,createAmountToUiAmountInstruction:()=>eh,createApproveCheckedInstruction:()=>ih,createApproveInstruction:()=>rh,createAssociatedTokenAccount:()=>Yh,createAssociatedTokenAccountIdempotent:()=>Zw,createAssociatedTokenAccountIdempotentInstruction:()=>Vh,createAssociatedTokenAccountInstruction:()=>Eo,createBurnCheckedInstruction:()=>ch,createBurnInstruction:()=>ah,createCloseAccountInstruction:()=>uh,createCreateNativeMintInstruction:()=>rd,createDisableRequiredMemoTransfersInstruction:()=>Bh,createEnableRequiredMemoTransfersInstruction:()=>Th,createFreezeAccountInstruction:()=>id,createHarvestWithheldTokensToMintInstruction:()=>Fh,createInitializeAccount2Instruction:()=>p4,createInitializeAccount3Instruction:()=>b4,createInitializeAccountInstruction:()=>_s,createInitializeDefaultAccountStateInstruction:()=>xh,createInitializeImmutableOwnerInstruction:()=>U4,createInitializeInterestBearingMintInstruction:()=>kd,createInitializeMint2Instruction:()=>Jh,createInitializeMintCloseAuthorityInstruction:()=>z4,createInitializeMintInstruction:()=>Id,createInitializeMultisigInstruction:()=>Qh,createInitializeNonTransferableMintInstruction:()=>j4,createInitializeTransferFeeConfigInstruction:()=>Kw,createInterestBearingMint:()=>d4,createMint:()=>Jw,createMintToCheckedInstruction:()=>cd,createMintToInstruction:()=>ad,createMultisig:()=>Xw,createNativeMint:()=>Qw,createNativeMintInstructionData:()=>td,createReallocateInstruction:()=>W4,createRevokeInstruction:()=>ud,createSetAuthorityInstruction:()=>dd,createSyncNativeInstruction:()=>Bs,createThawAccountInstruction:()=>pd,createTransferCheckedInstruction:()=>gd,createTransferCheckedWithFeeInstruction:()=>Kh,createTransferInstruction:()=>md,createUiAmountToAmountInstruction:()=>xd,createUpdateDefaultAccountStateInstruction:()=>wh,createUpdateRateInterestBearingMintInstruction:()=>Md,createWithdrawWithheldTokensFromAccountsInstruction:()=>Uh,createWithdrawWithheldTokensFromMintInstruction:()=>Lh,createWrappedNativeAccount:()=>e4,decodeAmountToUiAmountInstruction:()=>th,decodeAmountToUiAmountInstructionUnchecked:()=>em,decodeApproveCheckedInstruction:()=>oh,decodeApproveCheckedInstructionUnchecked:()=>rm,decodeApproveInstruction:()=>nh,decodeApproveInstructionUnchecked:()=>tm,decodeBurnCheckedInstruction:()=>fh,decodeBurnCheckedInstructionUnchecked:()=>im,decodeBurnInstruction:()=>sh,decodeBurnInstructionUnchecked:()=>nm,decodeCloseAccountInstruction:()=>hh,decodeCloseAccountInstructionUnchecked:()=>om,decodeFreezeAccountInstruction:()=>od,decodeFreezeAccountInstructionUnchecked:()=>Om,decodeHarvestWithheldTokensToMintInstruction:()=>qw,decodeHarvestWithheldTokensToMintInstructionUnchecked:()=>Am,decodeInitializeAccount2Instruction:()=>Ed,decodeInitializeAccount2InstructionUnchecked:()=>$m,decodeInitializeAccount3Instruction:()=>Td,decodeInitializeAccount3InstructionUnchecked:()=>Hm,decodeInitializeAccountInstruction:()=>Hh,decodeInitializeAccountInstructionUnchecked:()=>Tm,decodeInitializeImmutableOwnerInstruction:()=>F4,decodeInitializeImmutableOwnerInstructionUnchecked:()=>Ym,decodeInitializeMint2Instruction:()=>Xh,decodeInitializeMint2InstructionUnchecked:()=>Pm,decodeInitializeMintCloseAuthorityInstruction:()=>q4,decodeInitializeMintCloseAuthorityInstructionUnchecked:()=>Zm,decodeInitializeMintInstruction:()=>Ad,decodeInitializeMintInstructionUnchecked:()=>jm,decodeInitializeMultisigInstruction:()=>ed,decodeInitializeMultisigInstructionUnchecked:()=>Rm,decodeInitializeTransferFeeConfigInstruction:()=>Lw,decodeInitializeTransferFeeConfigInstructionUnchecked:()=>vm,decodeInstruction:()=>m4,decodeMintToCheckedInstruction:()=>fd,decodeMintToCheckedInstructionUnchecked:()=>Dm,decodeMintToInstruction:()=>sd,decodeMintToInstructionUnchecked:()=>Nm,decodeRevokeInstruction:()=>hd,decodeRevokeInstructionUnchecked:()=>Km,decodeSetAuthorityInstruction:()=>ld,decodeSetAuthorityInstructionUnchecked:()=>Um,decodeSyncNativeInstruction:()=>nd,decodeSyncNativeInstructionUnchecked:()=>Cm,decodeThawAccountInstruction:()=>bd,decodeThawAccountInstructionUnchecked:()=>Fm,decodeTransferCheckedInstruction:()=>vd,decodeTransferCheckedInstructionUnchecked:()=>qm,decodeTransferCheckedWithFeeInstruction:()=>Uw,decodeTransferCheckedWithFeeInstructionUnchecked:()=>xm,decodeTransferInstruction:()=>yd,decodeTransferInstructionUnchecked:()=>zm,decodeUiAmountToAmountInstruction:()=>wd,decodeUiAmountToAmountInstructionUnchecked:()=>Wm,decodeWithdrawWithheldTokensFromAccountsInstruction:()=>zw,decodeWithdrawWithheldTokensFromAccountsInstructionUnchecked:()=>Im,decodeWithdrawWithheldTokensFromMintInstruction:()=>Fw,decodeWithdrawWithheldTokensFromMintInstructionUnchecked:()=>wm,defaultAccountStateInstructionData:()=>ys,disableRequiredMemoTransfers:()=>Cw,enableRequiredMemoTransfers:()=>Rw,freezeAccount:()=>t4,freezeAccountInstructionData:()=>Ps,getAccount:()=>Cf,getAccountLen:()=>Of,getAccountLenForMint:()=>$h,getAccountTypeOfMintType:()=>km,getAssociatedTokenAddress:()=>Ti,getAssociatedTokenAddressSync:()=>kw,getDefaultAccountState:()=>Tw,getExtensionData:()=>Fr,getExtensionTypes:()=>Em,getImmutableOwner:()=>Bw,getInterestBearingMintConfigState:()=>Pw,getMemoTransfer:()=>Ow,getMinimumBalanceForRentExemptAccount:()=>bh,getMinimumBalanceForRentExemptAccountWithExtensions:()=>cm,getMinimumBalanceForRentExemptMint:()=>vh,getMinimumBalanceForRentExemptMintWithExtensions:()=>um,getMinimumBalanceForRentExemptMultisig:()=>lh,getMint:()=>gh,getMintCloseAuthority:()=>Nw,getMintLen:()=>ms,getMultipleAccounts:()=>_w,getMultisig:()=>Sw,getNonTransferable:()=>Dw,getOrCreateAssociatedTokenAccount:()=>r4,getTransferFeeAmount:()=>Yw,getTransferFeeConfig:()=>Vw,getTypeLen:()=>_m,harvestWithheldTokensToMint:()=>$w,harvestWithheldTokensToMintInstructionData:()=>As,initializeAccount2InstructionData:()=>qs,initializeAccount3InstructionData:()=>Ws,initializeAccountInstructionData:()=>Ss,initializeDefaultAccountState:()=>Mw,initializeImmutableOwnerInstructionData:()=>js,initializeMint2InstructionData:()=>ks,initializeMintCloseAuthorityInstructionData:()=>$s,initializeMintInstructionData:()=>zs,initializeMultisigInstructionData:()=>Es,initializeNonTransferableMintInstructionData:()=>Bd,initializeTransferFeeConfigInstructionData:()=>vs,interestBearingMintInitializeInstructionData:()=>Sd,interestBearingMintUpdateRateInstructionData:()=>_d,isAmountToUiAmountInstruction:()=>K4,isApproveCheckedInstruction:()=>B4,isApproveInstruction:()=>w4,isBurnCheckedInstruction:()=>R4,isBurnInstruction:()=>_4,isCloseAccountInstruction:()=>k4,isFreezeAccountInstruction:()=>M4,isInitializeAccount2Instruction:()=>C4,isInitializeAccount3Instruction:()=>N4,isInitializeAccountInstruction:()=>g4,isInitializeMint2Instruction:()=>D4,isInitializeMintInstruction:()=>y4,isInitializeMultisigInstruction:()=>v4,isMintToCheckedInstruction:()=>P4,isMintToInstruction:()=>S4,isRevokeInstruction:()=>I4,isSetAuthorityInstruction:()=>A4,isSyncNativeInstruction:()=>O4,isThawAccountInstruction:()=>E4,isTransferCheckedInstruction:()=>T4,isTransferInstruction:()=>x4,isUiamountToAmountInstruction:()=>L4,memoTransferInstructionData:()=>Eh,mintTo:()=>n4,mintToChecked:()=>i4,mintToCheckedInstructionData:()=>Os,mintToInstructionData:()=>Rs,programSupportsExtensions:()=>lr,revoke:()=>o4,revokeInstructionData:()=>Ns,setAuthority:()=>a4,setAuthorityInstructionData:()=>Ds,syncNative:()=>s4,syncNativeInstructionData:()=>Ts,thawAccount:()=>c4,thawAccountInstructionData:()=>Ks,transfer:()=>f4,transferChecked:()=>u4,transferCheckedInstructionData:()=>Fs,transferCheckedWithFee:()=>Ww,transferCheckedWithFeeInstructionData:()=>xs,transferFeeLayout:()=>zh,transferInstructionData:()=>Ls,uiAmountToAmount:()=>h4,unpackAccount:()=>mh,unpackMint:()=>fm,unpackMultisig:()=>am,updateDefaultAccountState:()=>Ew,updateRateInterestBearingMint:()=>l4,withdrawWithheldTokensFromAccounts:()=>Gw,withdrawWithheldTokensFromAccountsInstructionData:()=>Is,withdrawWithheldTokensFromMint:()=>jw,withdrawWithheldTokensFromMintInstructionData:()=>ws});var Nn=Fe(Od()),yt=Fe(Qd()),pf=Fe(hu()),dn=Fe(Iu()),fa=Fe(El()),U=Fe(wt()),wb=Fe(wt()),rs=Fe(Pu());var Ru=class extends TypeError{constructor(e,t){let n,{message:i,...o}=e,{path:a}=e,h=a.length===0?i:"At path: "+a.join(".")+" -- "+i;super(h),Object.assign(this,o),this.name=this.constructor.name,this.failures=()=>{var y;return(y=n)!=null?y:n=[e,...t()]}}};function E2(r){return Oi(r)&&typeof r[Symbol.iterator]=="function"}function Oi(r){return typeof r=="object"&&r!=null}function Mn(r){return typeof r=="string"?JSON.stringify(r):""+r}function T2(r){let{done:e,value:t}=r.next();return e?void 0:t}function B2(r,e,t,n){if(r===!0)return;r===!1?r={}:typeof r=="string"&&(r={message:r});let{path:i,branch:o}=e,{type:a}=t,{refinement:h,message:y="Expected a value of type `"+a+"`"+(h?" with refinement `"+h+"`":"")+", but received: `"+Mn(n)+"`"}=r;return{value:n,type:a,refinement:h,key:i[i.length-1],path:i,branch:o,...r,message:y}}function*Tl(r,e,t,n){E2(r)||(r=[r]);for(let i of r){let o=B2(i,e,t,n);o&&(yield o)}}function*Cu(r,e,t={}){let{path:n=[],branch:i=[r],coerce:o=!1,mask:a=!1}=t,h={path:n,branch:i};if(o&&(r=e.coercer(r,h),a&&e.type!=="type"&&Oi(e.schema)&&Oi(r)&&!Array.isArray(r)))for(let I in r)e.schema[I]===void 0&&delete r[I];let y=!0;for(let I of e.validator(r,h))y=!1,yield[I,void 0];for(let[I,_,k]of e.entries(r,h)){let K=Cu(_,k,{path:I===void 0?n:[...n,I],branch:I===void 0?i:[...i,_],coerce:o,mask:a});for(let D of K)D[0]?(y=!1,yield[D[0],void 0]):o&&(_=D[1],I===void 0?r=_:r instanceof Map?r.set(I,_):r instanceof Set?r.add(_):Oi(r)&&(r[I]=_))}if(y)for(let I of e.refiner(r,h))y=!1,yield[I,void 0];y&&(yield[void 0,r])}var yn=class{constructor(e){let{type:t,schema:n,validator:i,refiner:o,coercer:a=y=>y,entries:h=function*(){}}=e;this.type=t,this.schema=n,this.entries=h,this.coercer=a,i?this.validator=(y,I)=>{let _=i(y,I);return Tl(_,I,this,y)}:this.validator=()=>[],o?this.refiner=(y,I)=>{let _=o(y,I);return Tl(_,I,this,y)}:this.refiner=()=>[]}assert(e){return Bl(e,this)}create(e){return qo(e,this)}is(e){return Pl(e,this)}mask(e){return P2(e,this)}validate(e,t={}){return Ea(e,this,t)}};function Bl(r,e){let t=Ea(r,e);if(t[0])throw t[0]}function qo(r,e){let t=Ea(r,e,{coerce:!0});if(t[0])throw t[0];return t[1]}function P2(r,e){let t=Ea(r,e,{coerce:!0,mask:!0});if(t[0])throw t[0];return t[1]}function Pl(r,e){return!Ea(r,e)[0]}function Ea(r,e,t={}){let n=Cu(r,e,t),i=T2(n);return i[0]?[new Ru(i[0],function*(){for(let a of n)a[0]&&(yield a[0])}),void 0]:[void 0,i[1]]}function uo(r,e){return new yn({type:r,schema:null,validator:e})}function Rl(){return uo("any",()=>!0)}function ot(r){return new yn({type:"array",schema:r,*entries(e){if(r&&Array.isArray(e))for(let[t,n]of e.entries())yield[t,n,r]},coercer(e){return Array.isArray(e)?e.slice():e},validator(e){return Array.isArray(e)||"Expected an array value, but received: "+Mn(e)}})}function Yn(){return uo("boolean",r=>typeof r=="boolean")}function Ec(r){return uo("instance",e=>e instanceof r||"Expected a `"+r.name+"` instance, but received: "+Mn(e))}function dr(r){let e=Mn(r),t=typeof r;return new yn({type:"literal",schema:t==="string"||t==="number"||t==="boolean"?r:null,validator(n){return n===r||"Expected the literal `"+e+"`, but received: "+Mn(n)}})}function R2(){return uo("never",()=>!1)}function It(r){return new yn({...r,validator:(e,t)=>e===null||r.validator(e,t),refiner:(e,t)=>e===null||r.refiner(e,t)})}function te(){return uo("number",r=>typeof r=="number"&&!isNaN(r)||"Expected a number, but received: "+Mn(r))}function jt(r){return new yn({...r,validator:(e,t)=>e===void 0||r.validator(e,t),refiner:(e,t)=>e===void 0||r.refiner(e,t)})}function Ou(r,e){return new yn({type:"record",schema:null,*entries(t){if(Oi(t))for(let n in t){let i=t[n];yield[n,n,r],yield[n,i,e]}},validator(t){return Oi(t)||"Expected an object, but received: "+Mn(t)}})}function Ae(){return uo("string",r=>typeof r=="string"||"Expected a string, but received: "+Mn(r))}function Tc(r){let e=R2();return new yn({type:"tuple",schema:null,*entries(t){if(Array.isArray(t)){let n=Math.max(r.length,t.length);for(let i=0;it.type).join(" | ");return new yn({type:"union",schema:null,validator(t,n){let i=[];for(let o of r){let[...a]=Cu(t,o,n),[h]=a;if(h[0])for(let[y]of a)y&&i.push(y);else return[]}return["Expected the value to satisfy a union of `"+e+"`, but received: "+Mn(t),...i]}})}function Wo(){return uo("unknown",()=>!0)}function jo(r,e,t){return new yn({...r,coercer:(n,i)=>Pl(n,e)?r.coercer(t(n,i),i):r.coercer(n,i)})}var W6=Fe(Vl()),j6=Fe(g1()),Ib=Fe(Jp()),C0=Fe(Xp()),Yt=r=>yt.Buffer.isBuffer(r)?r:r instanceof Uint8Array?yt.Buffer.from(r.buffer,r.byteOffset,r.byteLength):yt.Buffer.from(r),Ab={},Ct={},ns=Sb;function Sb(r,e){if(!r)throw new Error(e||"Assertion failed")}Sb.equal=function(e,t,n){if(e!=t)throw new Error(n||"Assertion failed: "+e+" != "+t)};var O0={exports:{}};typeof Object.create=="function"?O0.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:O0.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}};var G6=ns,$6=O0.exports;Ct.inherits=$6;function H6(r,e){return(r.charCodeAt(e)&64512)!==55296||e<0||e+1>=r.length?!1:(r.charCodeAt(e+1)&64512)===56320}function V6(r,e){if(Array.isArray(r))return r.slice();if(!r)return[];var t=[];if(typeof r=="string")if(e){if(e==="hex")for(r=r.replace(/[^a-z0-9]+/ig,""),r.length%2!==0&&(r="0"+r),i=0;i>6|192,t[n++]=o&63|128):H6(r,i)?(o=65536+((o&1023)<<10)+(r.charCodeAt(++i)&1023),t[n++]=o>>18|240,t[n++]=o>>12&63|128,t[n++]=o>>6&63|128,t[n++]=o&63|128):(t[n++]=o>>12|224,t[n++]=o>>6&63|128,t[n++]=o&63|128)}else for(i=0;i>>24|r>>>8&65280|r<<8&16711680|(r&255)<<24;return e>>>0}Ct.htonl=_b;function Z6(r,e){for(var t="",n=0;n>>0}return o}Ct.join32=J6;function X6(r,e){for(var t=new Array(r.length*4),n=0,i=0;n>>24,t[i+1]=o>>>16&255,t[i+2]=o>>>8&255,t[i+3]=o&255):(t[i+3]=o>>>24,t[i+2]=o>>>16&255,t[i+1]=o>>>8&255,t[i]=o&255)}return t}Ct.split32=X6;function Q6(r,e){return r>>>e|r<<32-e}Ct.rotr32=Q6;function ev(r,e){return r<>>32-e}Ct.rotl32=ev;function tv(r,e){return r+e>>>0}Ct.sum32=tv;function rv(r,e,t){return r+e+t>>>0}Ct.sum32_3=rv;function nv(r,e,t,n){return r+e+t+n>>>0}Ct.sum32_4=nv;function iv(r,e,t,n,i){return r+e+t+n+i>>>0}Ct.sum32_5=iv;function ov(r,e,t,n){var i=r[e],o=r[e+1],a=n+o>>>0,h=(a>>0,r[e+1]=a}Ct.sum64=ov;function av(r,e,t,n){var i=e+n>>>0,o=(i>>0}Ct.sum64_hi=av;function sv(r,e,t,n){var i=e+n;return i>>>0}Ct.sum64_lo=sv;function cv(r,e,t,n,i,o,a,h){var y=0,I=e;I=I+n>>>0,y+=I>>0,y+=I>>0,y+=I>>0}Ct.sum64_4_hi=cv;function fv(r,e,t,n,i,o,a,h){var y=e+n+o+h;return y>>>0}Ct.sum64_4_lo=fv;function uv(r,e,t,n,i,o,a,h,y,I){var _=0,k=e;k=k+n>>>0,_+=k>>0,_+=k>>0,_+=k>>0,_+=k>>0}Ct.sum64_5_hi=uv;function hv(r,e,t,n,i,o,a,h,y,I){var _=e+n+o+h+I;return _>>>0}Ct.sum64_5_lo=hv;function dv(r,e,t){var n=e<<32-t|r>>>t;return n>>>0}Ct.rotr64_hi=dv;function lv(r,e,t){var n=r<<32-t|e>>>t;return n>>>0}Ct.rotr64_lo=lv;function pv(r,e,t){return r>>>t}Ct.shr64_hi=pv;function bv(r,e,t){var n=r<<32-t|e>>>t;return n>>>0}Ct.shr64_lo=bv;var ua={},Qp=Ct,mv=ns;function If(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}ua.BlockHash=If;If.prototype.update=function(e,t){if(e=Qp.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){e=this.pending;var n=e.length%this._delta8;this.pending=e.slice(e.length-n,e.length),this.pending.length===0&&(this.pending=null),e=Qp.join32(e,0,e.length-n,this.endian);for(var i=0;i>>24&255,i[o++]=e>>>16&255,i[o++]=e>>>8&255,i[o++]=e&255}else for(i[o++]=e&255,i[o++]=e>>>8&255,i[o++]=e>>>16&255,i[o++]=e>>>24&255,i[o++]=0,i[o++]=0,i[o++]=0,i[o++]=0,a=8;a>>3}hi.g0_256=wv;function Iv(r){return oi(r,17)^oi(r,19)^r>>>10}hi.g1_256=Iv;var na=Ct,Av=ua,Sv=hi,I0=na.rotl32,Va=na.sum32,_v=na.sum32_5,kv=Sv.ft_1,Pb=Av.BlockHash,Mv=[1518500249,1859775393,2400959708,3395469782];function ci(){if(!(this instanceof ci))return new ci;Pb.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}na.inherits(ci,Pb);var Ev=ci;ci.blockSize=512;ci.outSize=160;ci.hmacStrength=80;ci.padLength=64;ci.prototype._update=function(e,t){for(var n=this.W,i=0;i<16;i++)n[i]=e[t+i];for(;ithis.blockSize&&(e=new this.Hash().update(e).digest()),bx(e.length<=this.blockSize);for(var t=e.length;t{try{if("test".normalize(e)!=="test")throw new Error("bad normalize")}catch{r.push(e)}}),r.length)throw new Error("missing "+r.join(", "));if(String.fromCharCode(233).normalize("NFD")!==String.fromCharCode(101,769))throw new Error("broken implementation")}catch(r){return r.message}return null}var ab=vx(),K0;(function(r){r.DEBUG="DEBUG",r.INFO="INFO",r.WARNING="WARNING",r.ERROR="ERROR",r.OFF="OFF"})(K0||(K0={}));var On;(function(r){r.UNKNOWN_ERROR="UNKNOWN_ERROR",r.NOT_IMPLEMENTED="NOT_IMPLEMENTED",r.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",r.NETWORK_ERROR="NETWORK_ERROR",r.SERVER_ERROR="SERVER_ERROR",r.TIMEOUT="TIMEOUT",r.BUFFER_OVERRUN="BUFFER_OVERRUN",r.NUMERIC_FAULT="NUMERIC_FAULT",r.MISSING_NEW="MISSING_NEW",r.INVALID_ARGUMENT="INVALID_ARGUMENT",r.MISSING_ARGUMENT="MISSING_ARGUMENT",r.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",r.CALL_EXCEPTION="CALL_EXCEPTION",r.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",r.NONCE_EXPIRED="NONCE_EXPIRED",r.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",r.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",r.TRANSACTION_REPLACED="TRANSACTION_REPLACED"})(On||(On={}));var sb="0123456789abcdef",rr=class{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,t){let n=e.toLowerCase();bf[n]==null&&this.throwArgumentError("invalid log level name","logLevel",e),!(ob>bf[n])&&console.log.apply(console,t)}debug(...e){this._log(rr.levels.DEBUG,e)}info(...e){this._log(rr.levels.INFO,e)}warn(...e){this._log(rr.levels.WARNING,e)}makeError(e,t,n){if(ib)return this.makeError("censored error",t,{});t||(t=rr.errors.UNKNOWN_ERROR),n||(n={});let i=[];Object.keys(n).forEach(y=>{let I=n[y];try{if(I instanceof Uint8Array){let _="";for(let k=0;k>4],_+=sb[I[k]&15];i.push(y+"=Uint8Array(0x"+_+")")}else i.push(y+"="+JSON.stringify(I))}catch{i.push(y+"="+JSON.stringify(n[y].toString()))}}),i.push(`code=${t}`),i.push(`version=${this.version}`);let o=e,a="";switch(t){case On.NUMERIC_FAULT:{a="NUMERIC_FAULT";let y=e;switch(y){case"overflow":case"underflow":case"division-by-zero":a+="-"+y;break;case"negative-power":case"negative-width":a+="-unsupported";break;case"unbound-bitwise-result":a+="-unbound-result";break}break}case On.CALL_EXCEPTION:case On.INSUFFICIENT_FUNDS:case On.MISSING_NEW:case On.NONCE_EXPIRED:case On.REPLACEMENT_UNDERPRICED:case On.TRANSACTION_REPLACED:case On.UNPREDICTABLE_GAS_LIMIT:a=t;break}a&&(e+=" [ See: https://links.ethers.org/v5-errors-"+a+" ]"),i.length&&(e+=" ("+i.join(", ")+")");let h=new Error(e);return h.reason=o,h.code=t,Object.keys(n).forEach(function(y){h[y]=n[y]}),h}throwError(e,t,n){throw this.makeError(e,t,n)}throwArgumentError(e,t,n){return this.throwError(e,rr.errors.INVALID_ARGUMENT,{argument:t,value:n})}assert(e,t,n,i){e||this.throwError(t,n,i)}assertArgument(e,t,n,i){e||this.throwArgumentError(t,n,i)}checkNormalize(e){ab&&this.throwError("platform missing String.prototype.normalize",rr.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:ab})}checkSafeUint53(e,t){typeof e=="number"&&(t==null&&(t="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(t,rr.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(t,rr.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,t,n){n?n=": "+n:n="",et&&this.throwError("too many arguments"+n,rr.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:t})}checkNew(e,t){(e===Object||e==null)&&this.throwError("missing new",rr.errors.MISSING_NEW,{name:t.name})}checkAbstract(e,t){e===t?this.throwError("cannot instantiate abstract class "+JSON.stringify(t.name)+" directly; use a sub-class",rr.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):(e===Object||e==null)&&this.throwError("missing new",rr.errors.MISSING_NEW,{name:t.name})}static globalLogger(){return _0||(_0=new rr(gx)),_0}static setCensorship(e,t){if(!e&&t&&this.globalLogger().throwError("cannot permanently disable censorship",rr.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),nb){if(!e)return;this.globalLogger().throwError("error censorship permanent",rr.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}ib=!!e,nb=!!t}static setLogLevel(e){let t=bf[e.toLowerCase()];if(t==null){rr.globalLogger().warn("invalid log level - "+e);return}ob=t}static from(e){return new rr(e)}};rr.errors=On;rr.levels=K0;var xx="bytes/5.6.0",k0=new rr(xx);function wx(r){return!!r.toHexString}function mf(r){return r.slice||(r.slice=function(){let e=Array.prototype.slice.call(arguments);return mf(new Uint8Array(Array.prototype.slice.apply(r,e)))}),r}function cb(r){return typeof r=="number"&&r==r&&r%1===0}function Ix(r){if(r==null)return!1;if(r.constructor===Uint8Array)return!0;if(typeof r=="string"||!cb(r.length)||r.length<0)return!1;for(let e=0;e=256)return!1}return!0}function Ax(r,e){if(e||(e={}),typeof r=="number"){k0.checkSafeUint53(r,"invalid arrayify value");let t=[];for(;r;)t.unshift(r&255),r=parseInt(String(r/256));return t.length===0&&t.push(0),mf(new Uint8Array(t))}if(e.allowMissingPrefix&&typeof r=="string"&&r.substring(0,2)!=="0x"&&(r="0x"+r),wx(r)&&(r=r.toHexString()),Sx(r)){let t=r.substring(2);t.length%2&&(e.hexPad==="left"?t="0x0"+t.substring(2):e.hexPad==="right"?t+="0":k0.throwArgumentError("hex data is odd-length","value",r));let n=[];for(let i=0;i32)throw new Error("Invalid public key input")}}equals(e){return this._bn.eq(e._bn)}toBase58(){return dn.default.encode(this.toBytes())}toJSON(){return this.toBase58()}toBytes(){return this.toBuffer()}toBuffer(){let e=this._bn.toArrayLike(yt.Buffer);if(e.length===32)return e;let t=yt.Buffer.alloc(32);return e.copy(t,32-e.length),t}toString(){return this.toBase58()}static async createWithSeed(e,t,n){let i=yt.Buffer.concat([e.toBuffer(),yt.Buffer.from(t),n.toBuffer()]),o=fb(new Uint8Array(i)).slice(2);return new Re(yt.Buffer.from(o,"hex"))}static createProgramAddressSync(e,t){let n=yt.Buffer.alloc(0);e.forEach(function(a){if(a.length>kx)throw new TypeError("Max seed length exceeded");n=yt.Buffer.concat([n,Yt(a)])}),n=yt.Buffer.concat([n,t.toBuffer(),yt.Buffer.from("ProgramDerivedAddress")]);let i=fb(new Uint8Array(n)).slice(2),o=new pf.default(i,16).toArray(void 0,32);if(ub(o))throw new Error("Invalid seeds, address must fall off the curve");return new Re(o)}static async createProgramAddress(e,t){return this.createProgramAddressSync(e,t)}static findProgramAddressSync(e,t){let n=255,i;for(;n!=0;){try{let o=e.concat(yt.Buffer.from([n]));i=this.createProgramAddressSync(o,t)}catch(o){if(o instanceof TypeError)throw o;n--;continue}return[i,n]}throw new Error("Unable to find a viable program address nonce")}static async findProgramAddress(e,t){return this.findProgramAddressSync(e,t)}static isOnCurve(e){let t=new Re(e);return ub(t.toBytes())==1}};Re.default=new Re("11111111111111111111111111111111");yf.set(Re,{kind:"struct",fields:[["_bn","u256"]]});var Pt=Nn.default.lowlevel;function ub(r){var e=[Pt.gf(),Pt.gf(),Pt.gf(),Pt.gf()],t=Pt.gf(),n=Pt.gf(),i=Pt.gf(),o=Pt.gf(),a=Pt.gf(),h=Pt.gf(),y=Pt.gf();return Pt.set25519(e[2],Ex),Pt.unpack25519(e[1],r),Pt.S(i,e[1]),Pt.M(o,i,Pt.D),Pt.Z(i,i,e[2]),Pt.A(o,e[2],o),Pt.S(a,o),Pt.S(h,a),Pt.M(y,h,a),Pt.M(t,y,i),Pt.M(t,t,o),Pt.pow2523(t,t),Pt.M(t,t,i),Pt.M(t,t,o),Pt.M(t,t,o),Pt.M(e[0],t,o),Pt.S(n,e[0]),Pt.M(n,n,o),hb(n,i)&&Pt.M(e[0],e[0],Tx),Pt.S(n,e[0]),Pt.M(n,n,o),hb(n,i)?0:1}var Ex=Pt.gf([1]),Tx=Pt.gf([41136,18958,6951,50414,58488,44335,6150,12099,55207,15867,153,11085,57099,20417,9344,11139]);function hb(r,e){var t=new Uint8Array(32),n=new Uint8Array(32);return Pt.pack25519(t,r),Pt.pack25519(n,e),Pt.crypto_verify_32(t,0,n,0)}var J5=new Re("BPFLoader1111111111111111111111111111111111"),gf=1280-40-8,U0=64,F0=class extends Error{constructor(e){super(`Signature ${e} has expired: block height exceeded.`),this.signature=void 0,this.signature=e}};Object.defineProperty(F0.prototype,"name",{value:"TransactionExpiredBlockheightExceededError"});var z0=class extends Error{constructor(e,t){super(`Transaction was not confirmed in ${t.toFixed(2)} seconds. It is unknown if it succeeded or failed. Check signature ${e} using the Solana Explorer or CLI tools.`),this.signature=void 0,this.signature=e}};Object.defineProperty(z0.prototype,"name",{value:"TransactionExpiredTimeoutError"});var Vt=(r="publicKey")=>U.blob(32,r),Ja=(r="string")=>{let e=U.struct([U.u32("length"),U.u32("lengthPadding"),U.blob(U.offset(U.u32(),-8),"chars")],r),t=e.decode.bind(e),n=e.encode.bind(e),i=e;return i.decode=(o,a)=>t(o,a).chars.toString(),i.encode=(o,a,h)=>{let y={chars:yt.Buffer.from(o,"utf8")};return n(y,a,h)},i.alloc=o=>U.u32().span+U.u32().span+yt.Buffer.from(o,"utf8").length,i},Bx=(r="authorized")=>U.struct([Vt("staker"),Vt("withdrawer")],r),Px=(r="lockup")=>U.struct([U.ns64("unixTimestamp"),U.ns64("epoch"),Vt("custodian")],r),Rx=(r="voteInit")=>U.struct([Vt("nodePubkey"),Vt("authorizedVoter"),Vt("authorizedWithdrawer"),U.u8("commission")],r);function Cx(r,e){let t=i=>{if(i.span>=0)return i.span;if(typeof i.alloc=="function")return i.alloc(e[i.property]);if("count"in i&&"elementLayout"in i){let o=e[i.property];if(Array.isArray(o))return o.length*t(i.elementLayout)}return 0},n=0;return r.layout.fields.forEach(i=>{n+=t(i)}),n}function Xa(r){let e=0,t=0;for(;;){let n=r.shift();if(e|=(n&127)<>=7,t==0){r.push(n);break}else n|=128,r.push(n)}}var df=32,aa=class{constructor(e){this.header=void 0,this.accountKeys=void 0,this.recentBlockhash=void 0,this.instructions=void 0,this.indexToProgramIds=new Map,this.header=e.header,this.accountKeys=e.accountKeys.map(t=>new Re(t)),this.recentBlockhash=e.recentBlockhash,this.instructions=e.instructions,this.instructions.forEach(t=>this.indexToProgramIds.set(t.programIdIndex,this.accountKeys[t.programIdIndex]))}isAccountSigner(e){return e=this.header.numRequiredSignatures&&e!this.isProgramId(t))}serialize(){let e=this.accountKeys.length,t=[];Qa(t,e);let n=this.instructions.map(k=>{let{accounts:K,programIdIndex:D}=k,q=Array.from(dn.default.decode(k.data)),Z=[];Qa(Z,K.length);let he=[];return Qa(he,q.length),{programIdIndex:D,keyIndicesCount:yt.Buffer.from(Z),keyIndices:K,dataLength:yt.Buffer.from(he),data:q}}),i=[];Qa(i,n.length);let o=yt.Buffer.alloc(gf);yt.Buffer.from(i).copy(o);let a=i.length;n.forEach(k=>{let D=U.struct([U.u8("programIdIndex"),U.blob(k.keyIndicesCount.length,"keyIndicesCount"),U.seq(U.u8("keyIndex"),k.keyIndices.length,"keyIndices"),U.blob(k.dataLength.length,"dataLength"),U.seq(U.u8("userdatum"),k.data.length,"data")]).encode(k,o,a);a+=D}),o=o.slice(0,a);let h=U.struct([U.blob(1,"numRequiredSignatures"),U.blob(1,"numReadonlySignedAccounts"),U.blob(1,"numReadonlyUnsignedAccounts"),U.blob(t.length,"keyCount"),U.seq(Vt("key"),e,"keys"),Vt("recentBlockhash")]),y={numRequiredSignatures:yt.Buffer.from([this.header.numRequiredSignatures]),numReadonlySignedAccounts:yt.Buffer.from([this.header.numReadonlySignedAccounts]),numReadonlyUnsignedAccounts:yt.Buffer.from([this.header.numReadonlyUnsignedAccounts]),keyCount:yt.Buffer.from(t),keys:this.accountKeys.map(k=>Yt(k.toBytes())),recentBlockhash:dn.default.decode(this.recentBlockhash)},I=yt.Buffer.alloc(2048),_=h.encode(y,I);return o.copy(I,_),I.slice(0,_+o.length)}static from(e){let t=[...e],n=t.shift(),i=t.shift(),o=t.shift(),a=Xa(t),h=[];for(let K=0;K({pubkey:e.toJSON(),isSigner:t,isWritable:n})),programId:this.programId.toJSON(),data:[...this.data]}}},me=class{get signature(){return this.signatures.length>0?this.signatures[0].signature:null}constructor(e){if(this.signatures=[],this.feePayer=void 0,this.instructions=[],this.recentBlockhash=void 0,this.lastValidBlockHeight=void 0,this.nonceInfo=void 0,this._message=void 0,this._json=void 0,!!e)if(e.feePayer&&(this.feePayer=e.feePayer),e.signatures&&(this.signatures=e.signatures),Object.prototype.hasOwnProperty.call(e,"lastValidBlockHeight")){let{blockhash:t,lastValidBlockHeight:n}=e;this.recentBlockhash=t,this.lastValidBlockHeight=n}else{let{recentBlockhash:t,nonceInfo:n}=e;n&&(this.nonceInfo=n),this.recentBlockhash=t}}toJSON(){return{recentBlockhash:this.recentBlockhash||null,feePayer:this.feePayer?this.feePayer.toJSON():null,nonceInfo:this.nonceInfo?{nonce:this.nonceInfo.nonce,nonceInstruction:this.nonceInfo.nonceInstruction.toJSON()}:null,instructions:this.instructions.map(e=>e.toJSON()),signers:this.signatures.map(({publicKey:e})=>e.toJSON())}}add(...e){if(e.length===0)throw new Error("No instructions");return e.forEach(t=>{"instructions"in t?this.instructions=this.instructions.concat(t.instructions):"data"in t&&"programId"in t&&"keys"in t?this.instructions.push(t):this.instructions.push(new de(t))}),this}compileMessage(){if(this._message&&JSON.stringify(this.toJSON())===JSON.stringify(this._json))return this._message;let e,t;if(this.nonceInfo?(e=this.nonceInfo.nonce,this.instructions[0]!=this.nonceInfo.nonceInstruction?t=[this.nonceInfo.nonceInstruction,...this.instructions]:t=this.instructions):(e=this.recentBlockhash,t=this.instructions),!e)throw new Error("Transaction recentBlockhash required");t.length<1&&console.warn("No instructions provided");let n;if(this.feePayer)n=this.feePayer;else if(this.signatures.length>0&&this.signatures[0].publicKey)n=this.signatures[0].publicKey;else throw new Error("Transaction fee payer required");for(let Z=0;Z{Z.keys.forEach(ce=>{o.push({...ce})});let he=Z.programId.toString();i.includes(he)||i.push(he)}),i.forEach(Z=>{o.push({pubkey:new Re(Z),isSigner:!1,isWritable:!1})});let a=[];o.forEach(Z=>{let he=Z.pubkey.toString(),ce=a.findIndex(Y=>Y.pubkey.toString()===he);ce>-1?(a[ce].isWritable=a[ce].isWritable||Z.isWritable,a[ce].isSigner=a[ce].isSigner||Z.isSigner):a.push(Z)}),a.sort(function(Z,he){return Z.isSigner!==he.isSigner?Z.isSigner?-1:1:Z.isWritable!==he.isWritable?Z.isWritable?-1:1:Z.pubkey.toBase58().localeCompare(he.pubkey.toBase58())});let h=a.findIndex(Z=>Z.pubkey.equals(n));if(h>-1){let[Z]=a.splice(h,1);Z.isSigner=!0,Z.isWritable=!0,a.unshift(Z)}else a.unshift({pubkey:n,isSigner:!0,isWritable:!0});for(let Z of this.signatures){let he=a.findIndex(ce=>ce.pubkey.equals(Z.publicKey));if(he>-1)a[he].isSigner||(a[he].isSigner=!0,console.warn("Transaction references a signature that is unnecessary, only the fee payer and instruction signer accounts should sign a transaction. This behavior is deprecated and will throw an error in the next major version release."));else throw new Error(`unknown signer: ${Z.publicKey.toString()}`)}let y=0,I=0,_=0,k=[],K=[];a.forEach(({pubkey:Z,isSigner:he,isWritable:ce})=>{he?(k.push(Z.toString()),y+=1,ce||(I+=1)):(K.push(Z.toString()),ce||(_+=1))});let D=k.concat(K),q=t.map(Z=>{let{data:he,programId:ce}=Z;return{programIdIndex:D.indexOf(ce.toString()),accounts:Z.keys.map(Y=>D.indexOf(Y.pubkey.toString())),data:dn.default.encode(he)}});return q.forEach(Z=>{$r(Z.programIdIndex>=0),Z.accounts.forEach(he=>$r(he>=0))}),new aa({header:{numRequiredSignatures:y,numReadonlySignedAccounts:I,numReadonlyUnsignedAccounts:_},accountKeys:D,recentBlockhash:e,instructions:q})}_compile(){let e=this.compileMessage(),t=e.accountKeys.slice(0,e.header.numRequiredSignatures);return this.signatures.length===t.length&&this.signatures.every((i,o)=>t[o].equals(i.publicKey))||(this.signatures=t.map(n=>({signature:null,publicKey:n}))),e}serializeMessage(){return this._compile().serialize()}async getEstimatedFee(e){return(await e.getFeeForMessage(this.compileMessage())).value}setSigners(...e){if(e.length===0)throw new Error("No signers");let t=new Set;this.signatures=e.filter(n=>{let i=n.toString();return t.has(i)?!1:(t.add(i),!0)}).map(n=>({signature:null,publicKey:n}))}sign(...e){if(e.length===0)throw new Error("No signers");let t=new Set,n=[];for(let o of e){let a=o.publicKey.toString();t.has(a)||(t.add(a),n.push(o))}this.signatures=n.map(o=>({signature:null,publicKey:o.publicKey}));let i=this._compile();this._partialSign(i,...n)}partialSign(...e){if(e.length===0)throw new Error("No signers");let t=new Set,n=[];for(let o of e){let a=o.publicKey.toString();t.has(a)||(t.add(a),n.push(o))}let i=this._compile();this._partialSign(i,...n)}_partialSign(e,...t){let n=e.serialize();t.forEach(i=>{let o=Nn.default.sign.detached(n,i.secretKey);this._addSignature(i.publicKey,Yt(o))})}addSignature(e,t){this._compile(),this._addSignature(e,t)}_addSignature(e,t){$r(t.length===64);let n=this.signatures.findIndex(i=>e.equals(i.publicKey));if(n<0)throw new Error(`unknown signer: ${e.toString()}`);this.signatures[n].signature=yt.Buffer.from(t)}verifySignatures(){return this._verifySignatures(this.serializeMessage(),!0)}_verifySignatures(e,t){for(let{signature:n,publicKey:i}of this.signatures)if(n===null){if(t)return!1}else if(!Nn.default.sign.detached.verify(e,n,i.toBuffer()))return!1;return!0}serialize(e){let{requireAllSignatures:t,verifySignatures:n}=Object.assign({requireAllSignatures:!0,verifySignatures:!0},e),i=this.serializeMessage();if(n&&!this._verifySignatures(i,t))throw new Error("Signature verification failed");return this._serialize(i)}_serialize(e){let{signatures:t}=this,n=[];Qa(n,t.length);let i=n.length+t.length*64+e.length,o=yt.Buffer.alloc(i);return $r(t.length<256),yt.Buffer.from(n).copy(o,0),t.forEach(({signature:a},h)=>{a!==null&&($r(a.length===64,"signature has invalid length"),yt.Buffer.from(a).copy(o,n.length+h*64))}),e.copy(o,n.length+t.length*64),$r(o.length<=gf,`Transaction too large: ${o.length} > ${gf}`),o}get keys(){return $r(this.instructions.length===1),this.instructions[0].keys.map(e=>e.pubkey)}get programId(){return $r(this.instructions.length===1),this.instructions[0].programId}get data(){return $r(this.instructions.length===1),this.instructions[0].data}static from(e){let t=[...e],n=Xa(t),i=[];for(let o=0;o0&&(n.feePayer=e.accountKeys[0]),t.forEach((i,o)=>{let a={signature:i==dn.default.encode(Ox)?null:dn.default.decode(i),publicKey:e.accountKeys[o]};n.signatures.push(a)}),e.instructions.forEach(i=>{let o=i.accounts.map(a=>{let h=e.accountKeys[a];return{pubkey:h,isSigner:n.signatures.some(y=>y.publicKey.toString()===h.toString())||e.isAccountSigner(a),isWritable:e.isAccountWritable(a)}});n.instructions.push(new de({keys:o,programId:e.accountKeys[i.programIdIndex],data:dn.default.decode(i.data)}))}),n._message=e,n._json=n.toJSON(),n}},Zi=new Re("SysvarC1ock11111111111111111111111111111111"),X5=new Re("SysvarEpochSchedu1e111111111111111111111111"),Q5=new Re("Sysvar1nstructions1111111111111111111111111"),M0=new Re("SysvarRecentB1ockHashes11111111111111111111"),pn=new Re("SysvarRent111111111111111111111111111111111"),eI=new Re("SysvarRewards111111111111111111111111111111"),tI=new Re("SysvarS1otHashes111111111111111111111111111"),rI=new Re("SysvarS1otHistory11111111111111111111111111"),E0=new Re("SysvarStakeHistory1111111111111111111111111");async function Ce(r,e,t,n){let i=n&&{skipPreflight:n.skipPreflight,preflightCommitment:n.preflightCommitment||n.commitment,maxRetries:n.maxRetries,minContextSlot:n.minContextSlot},o=await r.sendTransaction(e,t,i),a=e.recentBlockhash!=null&&e.lastValidBlockHeight!=null?(await r.confirmTransaction({signature:o,blockhash:e.recentBlockhash,lastValidBlockHeight:e.lastValidBlockHeight},n&&n.commitment)).value:(await r.confirmTransaction(o,n&&n.commitment)).value;if(a.err)throw new Error(`Transaction ${o} failed (${JSON.stringify(a)})`);return o}function Nx(r){return new Promise(e=>setTimeout(e,r))}function $t(r,e){let t=r.layout.span>=0?r.layout.span:Cx(r,e),n=yt.Buffer.alloc(t),i=Object.assign({instruction:r.index},e);return r.layout.encode(i,n),n}var Dx=U.nu64("lamportsPerSignature"),Kx=U.struct([U.u32("version"),U.u32("state"),Vt("authorizedPubkey"),Vt("nonce"),U.struct([Dx],"feeCalculator")]),lb=Kx.span;var Lx=r=>{let e=r.decode.bind(r),t=r.encode.bind(r);return{decode:e,encode:t}},Ux=r=>e=>{let t=(0,wb.blob)(r,e),{encode:n,decode:i}=Lx(t),o=t;return o.decode=(a,h)=>{let y=i(a,h);return(0,rs.toBigIntLE)(yt.Buffer.from(y))},o.encode=(a,h,y)=>{let I=(0,rs.toBufferLE)(a,r);return n(I,h,y)},o},sa=Ux(8);var In=Object.freeze({Create:{index:0,layout:U.struct([U.u32("instruction"),U.ns64("lamports"),U.ns64("space"),Vt("programId")])},Assign:{index:1,layout:U.struct([U.u32("instruction"),Vt("programId")])},Transfer:{index:2,layout:U.struct([U.u32("instruction"),sa("lamports")])},CreateWithSeed:{index:3,layout:U.struct([U.u32("instruction"),Vt("base"),Ja("seed"),U.ns64("lamports"),U.ns64("space"),Vt("programId")])},AdvanceNonceAccount:{index:4,layout:U.struct([U.u32("instruction")])},WithdrawNonceAccount:{index:5,layout:U.struct([U.u32("instruction"),U.ns64("lamports")])},InitializeNonceAccount:{index:6,layout:U.struct([U.u32("instruction"),Vt("authorized")])},AuthorizeNonceAccount:{index:7,layout:U.struct([U.u32("instruction"),Vt("authorized")])},Allocate:{index:8,layout:U.struct([U.u32("instruction"),U.ns64("space")])},AllocateWithSeed:{index:9,layout:U.struct([U.u32("instruction"),Vt("base"),Ja("seed"),U.ns64("space"),Vt("programId")])},AssignWithSeed:{index:10,layout:U.struct([U.u32("instruction"),Vt("base"),Ja("seed"),Vt("programId")])},TransferWithSeed:{index:11,layout:U.struct([U.u32("instruction"),sa("lamports"),Ja("seed"),Vt("programId")])},UpgradeNonceAccount:{index:12,layout:U.struct([U.u32("instruction")])}}),Dt=class{constructor(){}static createAccount(e){let t=In.Create,n=$t(t,{lamports:e.lamports,space:e.space,programId:Yt(e.programId.toBuffer())});return new de({keys:[{pubkey:e.fromPubkey,isSigner:!0,isWritable:!0},{pubkey:e.newAccountPubkey,isSigner:!0,isWritable:!0}],programId:this.programId,data:n})}static transfer(e){let t,n;if("basePubkey"in e){let i=In.TransferWithSeed;t=$t(i,{lamports:BigInt(e.lamports),seed:e.seed,programId:Yt(e.programId.toBuffer())}),n=[{pubkey:e.fromPubkey,isSigner:!1,isWritable:!0},{pubkey:e.basePubkey,isSigner:!0,isWritable:!1},{pubkey:e.toPubkey,isSigner:!1,isWritable:!0}]}else{let i=In.Transfer;t=$t(i,{lamports:BigInt(e.lamports)}),n=[{pubkey:e.fromPubkey,isSigner:!0,isWritable:!0},{pubkey:e.toPubkey,isSigner:!1,isWritable:!0}]}return new de({keys:n,programId:this.programId,data:t})}static assign(e){let t,n;if("basePubkey"in e){let i=In.AssignWithSeed;t=$t(i,{base:Yt(e.basePubkey.toBuffer()),seed:e.seed,programId:Yt(e.programId.toBuffer())}),n=[{pubkey:e.accountPubkey,isSigner:!1,isWritable:!0},{pubkey:e.basePubkey,isSigner:!0,isWritable:!1}]}else{let i=In.Assign;t=$t(i,{programId:Yt(e.programId.toBuffer())}),n=[{pubkey:e.accountPubkey,isSigner:!0,isWritable:!0}]}return new de({keys:n,programId:this.programId,data:t})}static createAccountWithSeed(e){let t=In.CreateWithSeed,n=$t(t,{base:Yt(e.basePubkey.toBuffer()),seed:e.seed,lamports:e.lamports,space:e.space,programId:Yt(e.programId.toBuffer())}),i=[{pubkey:e.fromPubkey,isSigner:!0,isWritable:!0},{pubkey:e.newAccountPubkey,isSigner:!1,isWritable:!0}];return e.basePubkey!=e.fromPubkey&&i.push({pubkey:e.basePubkey,isSigner:!0,isWritable:!1}),new de({keys:i,programId:this.programId,data:n})}static createNonceAccount(e){let t=new me;"basePubkey"in e&&"seed"in e?t.add(Dt.createAccountWithSeed({fromPubkey:e.fromPubkey,newAccountPubkey:e.noncePubkey,basePubkey:e.basePubkey,seed:e.seed,lamports:e.lamports,space:lb,programId:this.programId})):t.add(Dt.createAccount({fromPubkey:e.fromPubkey,newAccountPubkey:e.noncePubkey,lamports:e.lamports,space:lb,programId:this.programId}));let n={noncePubkey:e.noncePubkey,authorizedPubkey:e.authorizedPubkey};return t.add(this.nonceInitialize(n)),t}static nonceInitialize(e){let t=In.InitializeNonceAccount,n=$t(t,{authorized:Yt(e.authorizedPubkey.toBuffer())}),i={keys:[{pubkey:e.noncePubkey,isSigner:!1,isWritable:!0},{pubkey:M0,isSigner:!1,isWritable:!1},{pubkey:pn,isSigner:!1,isWritable:!1}],programId:this.programId,data:n};return new de(i)}static nonceAdvance(e){let t=In.AdvanceNonceAccount,n=$t(t),i={keys:[{pubkey:e.noncePubkey,isSigner:!1,isWritable:!0},{pubkey:M0,isSigner:!1,isWritable:!1},{pubkey:e.authorizedPubkey,isSigner:!0,isWritable:!1}],programId:this.programId,data:n};return new de(i)}static nonceWithdraw(e){let t=In.WithdrawNonceAccount,n=$t(t,{lamports:e.lamports});return new de({keys:[{pubkey:e.noncePubkey,isSigner:!1,isWritable:!0},{pubkey:e.toPubkey,isSigner:!1,isWritable:!0},{pubkey:M0,isSigner:!1,isWritable:!1},{pubkey:pn,isSigner:!1,isWritable:!1},{pubkey:e.authorizedPubkey,isSigner:!0,isWritable:!1}],programId:this.programId,data:n})}static nonceAuthorize(e){let t=In.AuthorizeNonceAccount,n=$t(t,{authorized:Yt(e.newAuthorizedPubkey.toBuffer())});return new de({keys:[{pubkey:e.noncePubkey,isSigner:!1,isWritable:!0},{pubkey:e.authorizedPubkey,isSigner:!0,isWritable:!1}],programId:this.programId,data:n})}static allocate(e){let t,n;if("basePubkey"in e){let i=In.AllocateWithSeed;t=$t(i,{base:Yt(e.basePubkey.toBuffer()),seed:e.seed,space:e.space,programId:Yt(e.programId.toBuffer())}),n=[{pubkey:e.accountPubkey,isSigner:!1,isWritable:!0},{pubkey:e.basePubkey,isSigner:!0,isWritable:!1}]}else{let i=In.Allocate;t=$t(i,{space:e.space}),n=[{pubkey:e.accountPubkey,isSigner:!0,isWritable:!0}]}return new de({keys:n,programId:this.programId,data:t})}};Dt.programId=new Re("11111111111111111111111111111111");var Fx=gf-300,ca=class{constructor(){}static getMinNumSignatures(e){return 2*(Math.ceil(e/ca.chunkSize)+1+1)}static async load(e,t,n,i,o){{let k=await e.getMinimumBalanceForRentExemption(o.length),K=await e.getAccountInfo(n.publicKey,"confirmed"),D=null;if(K!==null){if(K.executable)return console.error("Program load failed, account is already executable"),!1;K.data.length!==o.length&&(D=D||new me,D.add(Dt.allocate({accountPubkey:n.publicKey,space:o.length}))),K.owner.equals(i)||(D=D||new me,D.add(Dt.assign({accountPubkey:n.publicKey,programId:i}))),K.lamports0?k:1,space:o.length,programId:i}));D!==null&&await Ce(e,D,[t,n],{commitment:"confirmed"})}let a=U.struct([U.u32("instruction"),U.u32("offset"),U.u32("bytesLength"),U.u32("bytesLengthPadding"),U.seq(U.u8("byte"),U.offset(U.u32(),-8),"bytes")]),h=ca.chunkSize,y=0,I=o,_=[];for(;I.length>0;){let k=I.slice(0,h),K=yt.Buffer.alloc(h+16);a.encode({instruction:0,offset:y,bytes:k,bytesLength:0,bytesLengthPadding:0},K);let D=new me().add({keys:[{pubkey:n.publicKey,isSigner:!0,isWritable:!0}],programId:i,data:K});_.push(Ce(e,D,[t,n],{commitment:"confirmed"})),e._rpcEndpoint.includes("solana.com")&&await Nx(1e3/4),y+=h,I=I.slice(h)}await Promise.all(_);{let k=U.struct([U.u32("instruction")]),K=yt.Buffer.alloc(k.span);k.encode({instruction:1},K);let D=new me().add({keys:[{pubkey:n.publicKey,isSigner:!0,isWritable:!0},{pubkey:pn,isSigner:!1,isWritable:!1}],programId:i,data:K});await Ce(e,D,[t,n],{commitment:"confirmed"})}return!0}};ca.chunkSize=Fx;var nI=new Re("BPFLoader2111111111111111111111111111111111");var iI=globalThis.fetch,zx=160,qx=64,Wx=zx/qx,oI=1e3/Wx;var aI={index:1,layout:U.struct([U.u32("typeIndex"),sa("deactivationSlot"),U.nu64("lastExtendedSlot"),U.u8("lastExtendedStartIndex"),U.u8(),U.seq(Vt(),U.offset(U.u8(),-1),"authority")])},sI=globalThis.URL;var T0,wr=jo(Ec(Re),Ae(),r=>new Re(r)),qb=Tc([Ae(),dr("base64")]),G0=jo(Ec(yt.Buffer),qb,r=>yt.Buffer.from(r[0],"base64")),cI=30*1e3;function Wb(r){return un([pe({jsonrpc:dr("2.0"),id:Ae(),result:r}),pe({jsonrpc:dr("2.0"),id:Ae(),error:pe({code:Wo(),message:Ae(),data:jt(Rl())})})])}var jx=Wb(Wo());function br(r){return jo(Wb(r),jx,e=>"error"in e?e:{...e,result:qo(e.result,r)})}function Kn(r){return br(pe({context:pe({slot:te()}),value:r}))}function Af(r){return pe({context:pe({slot:te()}),value:r})}var Gx=pe({foundation:te(),foundationTerm:te(),initial:te(),taper:te(),terminal:te()}),fI=br(ot(It(pe({epoch:te(),effectiveSlot:te(),amount:te(),postBalance:te()})))),$x=pe({epoch:te(),slotIndex:te(),slotsInEpoch:te(),absoluteSlot:te(),blockHeight:jt(te()),transactionCount:jt(te())}),Hx=pe({slotsPerEpoch:te(),leaderScheduleSlotOffset:te(),warmup:Yn(),firstNormalEpoch:te(),firstNormalSlot:te()}),Vx=Ou(Ae(),ot(te())),Ao=It(un([pe({}),Ae()])),Yx=pe({err:Ao}),Zx=dr("receivedSignature"),uI=pe({"solana-core":Ae(),"feature-set":jt(te())}),hI=Kn(pe({err:It(un([pe({}),Ae()])),logs:It(ot(Ae())),accounts:jt(It(ot(It(pe({executable:Yn(),owner:Ae(),lamports:te(),data:ot(Ae()),rentEpoch:jt(te())}))))),unitsConsumed:jt(te()),returnData:jt(It(pe({programId:Ae(),data:Tc([Ae(),dr("base64")])})))})),dI=Kn(pe({byIdentity:Ou(Ae(),ot(te())),range:pe({firstSlot:te(),lastSlot:te()})}));var lI=br(Gx),pI=br($x),bI=br(Hx),mI=br(Vx),yI=br(te()),gI=Kn(pe({total:te(),circulating:te(),nonCirculating:te(),nonCirculatingAccounts:ot(wr)})),Jx=pe({amount:Ae(),uiAmount:It(te()),decimals:te(),uiAmountString:jt(Ae())}),vI=Kn(ot(pe({address:wr,amount:Ae(),uiAmount:It(te()),decimals:te(),uiAmountString:jt(Ae())}))),xI=Kn(ot(pe({pubkey:wr,account:pe({executable:Yn(),owner:wr,lamports:te(),data:G0,rentEpoch:te()})}))),q0=pe({program:Ae(),parsed:Wo(),space:te()}),wI=Kn(ot(pe({pubkey:wr,account:pe({executable:Yn(),owner:wr,lamports:te(),data:q0,rentEpoch:te()})}))),II=Kn(ot(pe({lamports:te(),address:wr}))),$0=pe({executable:Yn(),owner:wr,lamports:te(),data:G0,rentEpoch:te()}),AI=pe({pubkey:wr,account:$0}),Xx=jo(un([Ec(yt.Buffer),q0]),un([qb,q0]),r=>Array.isArray(r)?qo(r,G0):r),Qx=pe({executable:Yn(),owner:wr,lamports:te(),data:Xx,rentEpoch:te()}),SI=pe({pubkey:wr,account:Qx}),_I=pe({state:un([dr("active"),dr("inactive"),dr("activating"),dr("deactivating")]),active:te(),inactive:te()}),kI=br(ot(pe({signature:Ae(),slot:te(),err:Ao,memo:It(Ae()),blockTime:jt(It(te()))}))),MI=br(ot(pe({signature:Ae(),slot:te(),err:Ao,memo:It(Ae()),blockTime:jt(It(te()))}))),EI=pe({subscription:te(),result:Af($0)}),ew=pe({pubkey:wr,account:$0}),TI=pe({subscription:te(),result:Af(ew)}),tw=pe({parent:te(),slot:te(),root:te()}),BI=pe({subscription:te(),result:tw}),rw=un([pe({type:un([dr("firstShredReceived"),dr("completed"),dr("optimisticConfirmation"),dr("root")]),slot:te(),timestamp:te()}),pe({type:dr("createdBank"),parent:te(),slot:te(),timestamp:te()}),pe({type:dr("frozen"),slot:te(),timestamp:te(),stats:pe({numTransactionEntries:te(),numSuccessfulTransactions:te(),numFailedTransactions:te(),maxTransactionsPerEntry:te()})}),pe({type:dr("dead"),slot:te(),timestamp:te(),err:Ae()})]),PI=pe({subscription:te(),result:rw}),RI=pe({subscription:te(),result:Af(un([Yx,Zx]))}),CI=pe({subscription:te(),result:te()}),OI=pe({pubkey:Ae(),gossip:It(Ae()),tpu:It(Ae()),rpc:It(Ae()),version:It(Ae())}),pb=pe({votePubkey:Ae(),nodePubkey:Ae(),activatedStake:te(),epochVoteAccount:Yn(),epochCredits:ot(Tc([te(),te(),te()])),commission:te(),lastVote:te(),rootSlot:It(te())}),NI=br(pe({current:ot(pb),delinquent:ot(pb)})),nw=un([dr("processed"),dr("confirmed"),dr("finalized")]),iw=pe({slot:te(),confirmations:It(te()),err:Ao,confirmationStatus:jt(nw)}),DI=Kn(ot(It(iw))),KI=br(te()),H0=pe({signatures:ot(Ae()),message:pe({accountKeys:ot(Ae()),header:pe({numRequiredSignatures:te(),numReadonlySignedAccounts:te(),numReadonlyUnsignedAccounts:te()}),instructions:ot(pe({accounts:ot(te()),data:Ae(),programIdIndex:te()})),recentBlockhash:Ae()})}),jb=pe({parsed:Wo(),program:Ae(),programId:wr}),Gb=pe({accounts:ot(wr),data:Ae(),programId:wr}),ow=un([Gb,jb]),aw=un([pe({parsed:Wo(),program:Ae(),programId:Ae()}),pe({accounts:ot(Ae()),data:Ae(),programId:Ae()})]),$b=jo(ow,aw,r=>"accounts"in r?qo(r,Gb):qo(r,jb)),sw=pe({signatures:ot(Ae()),message:pe({accountKeys:ot(pe({pubkey:wr,signer:Yn(),writable:Yn()})),instructions:ot($b),recentBlockhash:Ae()})}),vf=pe({accountIndex:te(),mint:Ae(),owner:jt(Ae()),uiTokenAmount:Jx}),Hb=pe({writable:ot(wr),readonly:ot(wr)}),V0=pe({err:Ao,fee:te(),innerInstructions:jt(It(ot(pe({index:te(),instructions:ot(pe({accounts:ot(te()),data:Ae(),programIdIndex:te()}))})))),preBalances:ot(te()),postBalances:ot(te()),logMessages:jt(It(ot(Ae()))),preTokenBalances:jt(It(ot(vf))),postTokenBalances:jt(It(ot(vf))),loadedAddresses:jt(Hb)}),cw=pe({err:Ao,fee:te(),innerInstructions:jt(It(ot(pe({index:te(),instructions:ot($b)})))),preBalances:ot(te()),postBalances:ot(te()),logMessages:jt(It(ot(Ae()))),preTokenBalances:jt(It(ot(vf))),postTokenBalances:jt(It(ot(vf))),loadedAddresses:jt(Hb)}),LI=br(It(pe({blockhash:Ae(),previousBlockhash:Ae(),parentSlot:te(),transactions:ot(pe({transaction:H0,meta:It(V0)})),rewards:jt(ot(pe({pubkey:Ae(),lamports:te(),postBalance:It(te()),rewardType:It(Ae())}))),blockTime:It(te()),blockHeight:It(te())}))),UI=br(It(pe({blockhash:Ae(),previousBlockhash:Ae(),parentSlot:te(),transactions:ot(pe({transaction:H0,meta:It(V0)})),rewards:jt(ot(pe({pubkey:Ae(),lamports:te(),postBalance:It(te()),rewardType:It(Ae())}))),blockTime:It(te())}))),FI=br(It(pe({blockhash:Ae(),previousBlockhash:Ae(),parentSlot:te(),signatures:ot(Ae()),blockTime:It(te())}))),zI=br(It(pe({slot:te(),meta:V0,blockTime:jt(It(te())),transaction:H0}))),qI=br(It(pe({slot:te(),transaction:sw,meta:It(cw),blockTime:jt(It(te()))}))),WI=Kn(pe({blockhash:Ae(),feeCalculator:pe({lamportsPerSignature:te()})})),jI=Kn(pe({blockhash:Ae(),lastValidBlockHeight:te()})),fw=pe({slot:te(),numTransactions:te(),numSlots:te(),samplePeriodSecs:te()}),GI=br(ot(fw)),$I=Kn(It(pe({feeCalculator:pe({lamportsPerSignature:te()})}))),HI=br(Ae()),VI=br(Ae()),uw=pe({err:Ao,logs:ot(Ae()),signature:Ae()}),YI=pe({result:Af(uw),subscription:te()}),ZI={"solana-client":`js/${(T0="0.0.0-development")!==null&&T0!==void 0?T0:"UNKNOWN"}`};var ln=class{constructor(e){this._keypair=void 0,e?this._keypair=e:this._keypair=Nn.default.sign.keyPair()}static generate(){return new ln(Nn.default.sign.keyPair())}static fromSecretKey(e,t){let n=Nn.default.sign.keyPair.fromSecretKey(e);if(!t||!t.skipValidation){let o=new TextEncoder().encode("@solana/web3.js-validation-v1"),a=Nn.default.sign.detached(o,n.secretKey);if(!Nn.default.sign.detached.verify(o,a,n.publicKey))throw new Error("provided secretKey is invalid")}return new ln(n)}static fromSeed(e){return new ln(Nn.default.sign.keyPair.fromSeed(e))}get publicKey(){return new Re(this._keypair.publicKey)}get secretKey(){return this._keypair.secretKey}},Za=Object.freeze({CreateLookupTable:{index:0,layout:U.struct([U.u32("instruction"),sa("recentSlot"),U.u8("bumpSeed")])},FreezeLookupTable:{index:1,layout:U.struct([U.u32("instruction")])},ExtendLookupTable:{index:2,layout:U.struct([U.u32("instruction"),sa(),U.seq(Vt(),U.offset(U.u32(),-8),"addresses")])},DeactivateLookupTable:{index:3,layout:U.struct([U.u32("instruction")])},CloseLookupTable:{index:4,layout:U.struct([U.u32("instruction")])}});var W0=class{constructor(){}static createLookupTable(e){let[t,n]=Re.findProgramAddressSync([e.authority.toBuffer(),(0,rs.toBufferLE)(BigInt(e.recentSlot),8)],this.programId),i=Za.CreateLookupTable,o=$t(i,{recentSlot:BigInt(e.recentSlot),bumpSeed:n}),a=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1},{pubkey:e.payer,isSigner:!0,isWritable:!0},{pubkey:Dt.programId,isSigner:!1,isWritable:!1}];return[new de({programId:this.programId,keys:a,data:o}),t]}static freezeLookupTable(e){let t=Za.FreezeLookupTable,n=$t(t),i=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1}];return new de({programId:this.programId,keys:i,data:n})}static extendLookupTable(e){let t=Za.ExtendLookupTable,n=$t(t,{addresses:e.addresses.map(o=>o.toBytes())}),i=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1}];return e.payer&&i.push({pubkey:e.payer,isSigner:!0,isWritable:!0},{pubkey:Dt.programId,isSigner:!1,isWritable:!1}),new de({programId:this.programId,keys:i,data:n})}static deactivateLookupTable(e){let t=Za.DeactivateLookupTable,n=$t(t),i=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1}];return new de({programId:this.programId,keys:i,data:n})}static closeLookupTable(e){let t=Za.CloseLookupTable,n=$t(t),i=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1},{pubkey:e.recipient,isSigner:!1,isWritable:!0}];return new de({programId:this.programId,keys:i,data:n})}};W0.programId=new Re("AddressLookupTab1e1111111111111111111111111");var lf=Object.freeze({RequestUnits:{index:0,layout:U.struct([U.u8("instruction"),U.u32("units"),U.u32("additionalFee")])},RequestHeapFrame:{index:1,layout:U.struct([U.u8("instruction"),U.u32("bytes")])},SetComputeUnitLimit:{index:2,layout:U.struct([U.u8("instruction"),U.u32("units")])},SetComputeUnitPrice:{index:3,layout:U.struct([U.u8("instruction"),sa("microLamports")])}}),j0=class{constructor(){}static requestUnits(e){let t=lf.RequestUnits,n=$t(t,e);return new de({keys:[],programId:this.programId,data:n})}static requestHeapFrame(e){let t=lf.RequestHeapFrame,n=$t(t,e);return new de({keys:[],programId:this.programId,data:n})}static setComputeUnitLimit(e){let t=lf.SetComputeUnitLimit,n=$t(t,e);return new de({keys:[],programId:this.programId,data:n})}static setComputeUnitPrice(e){let t=lf.SetComputeUnitPrice,n=$t(t,{microLamports:BigInt(e.microLamports)});return new de({keys:[],programId:this.programId,data:n})}};j0.programId=new Re("ComputeBudget111111111111111111111111111111");var bb=64,mb=32,yb=64,gb=U.struct([U.u8("numSignatures"),U.u8("padding"),U.u16("signatureOffset"),U.u16("signatureInstructionIndex"),U.u16("publicKeyOffset"),U.u16("publicKeyInstructionIndex"),U.u16("messageDataOffset"),U.u16("messageDataSize"),U.u16("messageInstructionIndex")]),es=class{constructor(){}static createInstructionWithPublicKey(e){let{publicKey:t,message:n,signature:i,instructionIndex:o}=e;$r(t.length===mb,`Public Key must be ${mb} bytes but received ${t.length} bytes`),$r(i.length===yb,`Signature must be ${yb} bytes but received ${i.length} bytes`);let a=gb.span,h=a+t.length,y=h+i.length,I=1,_=yt.Buffer.alloc(y+n.length),k=o??65535;return gb.encode({numSignatures:I,padding:0,signatureOffset:h,signatureInstructionIndex:k,publicKeyOffset:a,publicKeyInstructionIndex:k,messageDataOffset:y,messageDataSize:n.length,messageInstructionIndex:k},_),_.fill(t,a),_.fill(i,h),_.fill(n,y),new de({keys:[],programId:es.programId,data:_})}static createInstructionWithPrivateKey(e){let{privateKey:t,message:n,instructionIndex:i}=e;$r(t.length===bb,`Private key must be ${bb} bytes but received ${t.length} bytes`);try{let o=ln.fromSecretKey(t),a=o.publicKey.toBytes(),h=Nn.default.sign.detached(n,o.secretKey);return this.createInstructionWithPublicKey({publicKey:a,message:n,signature:h,instructionIndex:i})}catch(o){throw new Error(`Error creating instruction; ${o}`)}}};es.programId=new Re("Ed25519SigVerify111111111111111111111111111");var{publicKeyCreate:hw,ecdsaSign:dw}=Ib.default,vb=32,B0=20,xb=64,lw=11,P0=U.struct([U.u8("numSignatures"),U.u16("signatureOffset"),U.u8("signatureInstructionIndex"),U.u16("ethAddressOffset"),U.u8("ethAddressInstructionIndex"),U.u16("messageDataOffset"),U.u16("messageDataSize"),U.u8("messageInstructionIndex"),U.blob(20,"ethAddress"),U.blob(64,"signature"),U.u8("recoveryId")]),wo=class{constructor(){}static publicKeyToEthAddress(e){$r(e.length===xb,`Public key must be ${xb} bytes but received ${e.length} bytes`);try{return yt.Buffer.from(C0.default.keccak_256.update(Yt(e)).digest()).slice(-B0)}catch(t){throw new Error(`Error constructing Ethereum address: ${t}`)}}static createInstructionWithPublicKey(e){let{publicKey:t,message:n,signature:i,recoveryId:o,instructionIndex:a}=e;return wo.createInstructionWithEthAddress({ethAddress:wo.publicKeyToEthAddress(t),message:n,signature:i,recoveryId:o,instructionIndex:a})}static createInstructionWithEthAddress(e){let{ethAddress:t,message:n,signature:i,recoveryId:o,instructionIndex:a=0}=e,h;typeof t=="string"?t.startsWith("0x")?h=yt.Buffer.from(t.substr(2),"hex"):h=yt.Buffer.from(t,"hex"):h=t,$r(h.length===B0,`Address must be ${B0} bytes but received ${h.length} bytes`);let y=1+lw,I=y,_=y+h.length,k=_+i.length+1,K=1,D=yt.Buffer.alloc(P0.span+n.length);return P0.encode({numSignatures:K,signatureOffset:_,signatureInstructionIndex:a,ethAddressOffset:I,ethAddressInstructionIndex:a,messageDataOffset:k,messageDataSize:n.length,messageInstructionIndex:a,signature:Yt(i),ethAddress:Yt(h),recoveryId:o},D),D.fill(Yt(n),P0.span),new de({keys:[],programId:wo.programId,data:D})}static createInstructionWithPrivateKey(e){let{privateKey:t,message:n,instructionIndex:i}=e;$r(t.length===vb,`Private key must be ${vb} bytes but received ${t.length} bytes`);try{let o=Yt(t),a=hw(o,!1).slice(1),h=yt.Buffer.from(C0.default.keccak_256.update(Yt(n)).digest()),{signature:y,recid:I}=dw(h,o);return this.createInstructionWithPublicKey({publicKey:a,message:n,signature:y,recoveryId:I,instructionIndex:i})}catch(o){throw new Error(`Error creating instruction; ${o}`)}}};wo.programId=new Re("KeccakSecp256k11111111111111111111111111111");var pw=new Re("StakeConfig11111111111111111111111111111111");var ts=class{constructor(e,t,n){this.unixTimestamp=void 0,this.epoch=void 0,this.custodian=void 0,this.unixTimestamp=e,this.epoch=t,this.custodian=n}};ts.default=new ts(0,0,Re.default);var Yi=Object.freeze({Initialize:{index:0,layout:U.struct([U.u32("instruction"),Bx(),Px()])},Authorize:{index:1,layout:U.struct([U.u32("instruction"),Vt("newAuthorized"),U.u32("stakeAuthorizationType")])},Delegate:{index:2,layout:U.struct([U.u32("instruction")])},Split:{index:3,layout:U.struct([U.u32("instruction"),U.ns64("lamports")])},Withdraw:{index:4,layout:U.struct([U.u32("instruction"),U.ns64("lamports")])},Deactivate:{index:5,layout:U.struct([U.u32("instruction")])},Merge:{index:7,layout:U.struct([U.u32("instruction")])},AuthorizeWithSeed:{index:8,layout:U.struct([U.u32("instruction"),Vt("newAuthorized"),U.u32("stakeAuthorizationType"),Ja("authoritySeed"),Vt("authorityOwner")])}}),JI=Object.freeze({Staker:{index:0},Withdrawer:{index:1}}),xf=class{constructor(){}static initialize(e){let{stakePubkey:t,authorized:n,lockup:i}=e,o=i||ts.default,a=Yi.Initialize,h=$t(a,{authorized:{staker:Yt(n.staker.toBuffer()),withdrawer:Yt(n.withdrawer.toBuffer())},lockup:{unixTimestamp:o.unixTimestamp,epoch:o.epoch,custodian:Yt(o.custodian.toBuffer())}}),y={keys:[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:pn,isSigner:!1,isWritable:!1}],programId:this.programId,data:h};return new de(y)}static createAccountWithSeed(e){let t=new me;t.add(Dt.createAccountWithSeed({fromPubkey:e.fromPubkey,newAccountPubkey:e.stakePubkey,basePubkey:e.basePubkey,seed:e.seed,lamports:e.lamports,space:this.space,programId:this.programId}));let{stakePubkey:n,authorized:i,lockup:o}=e;return t.add(this.initialize({stakePubkey:n,authorized:i,lockup:o}))}static createAccount(e){let t=new me;t.add(Dt.createAccount({fromPubkey:e.fromPubkey,newAccountPubkey:e.stakePubkey,lamports:e.lamports,space:this.space,programId:this.programId}));let{stakePubkey:n,authorized:i,lockup:o}=e;return t.add(this.initialize({stakePubkey:n,authorized:i,lockup:o}))}static delegate(e){let{stakePubkey:t,authorizedPubkey:n,votePubkey:i}=e,o=Yi.Delegate,a=$t(o);return new me().add({keys:[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:Zi,isSigner:!1,isWritable:!1},{pubkey:E0,isSigner:!1,isWritable:!1},{pubkey:pw,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}],programId:this.programId,data:a})}static authorize(e){let{stakePubkey:t,authorizedPubkey:n,newAuthorizedPubkey:i,stakeAuthorizationType:o,custodianPubkey:a}=e,h=Yi.Authorize,y=$t(h,{newAuthorized:Yt(i.toBuffer()),stakeAuthorizationType:o.index}),I=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:Zi,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return a&&I.push({pubkey:a,isSigner:!1,isWritable:!1}),new me().add({keys:I,programId:this.programId,data:y})}static authorizeWithSeed(e){let{stakePubkey:t,authorityBase:n,authoritySeed:i,authorityOwner:o,newAuthorizedPubkey:a,stakeAuthorizationType:h,custodianPubkey:y}=e,I=Yi.AuthorizeWithSeed,_=$t(I,{newAuthorized:Yt(a.toBuffer()),stakeAuthorizationType:h.index,authoritySeed:i,authorityOwner:Yt(o.toBuffer())}),k=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:Zi,isSigner:!1,isWritable:!1}];return y&&k.push({pubkey:y,isSigner:!1,isWritable:!1}),new me().add({keys:k,programId:this.programId,data:_})}static splitInstruction(e){let{stakePubkey:t,authorizedPubkey:n,splitStakePubkey:i,lamports:o}=e,a=Yi.Split,h=$t(a,{lamports:o});return new de({keys:[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}],programId:this.programId,data:h})}static split(e){let t=new me;return t.add(Dt.createAccount({fromPubkey:e.authorizedPubkey,newAccountPubkey:e.splitStakePubkey,lamports:0,space:this.space,programId:this.programId})),t.add(this.splitInstruction(e))}static splitWithSeed(e){let{stakePubkey:t,authorizedPubkey:n,splitStakePubkey:i,basePubkey:o,seed:a,lamports:h}=e,y=new me;return y.add(Dt.allocate({accountPubkey:i,basePubkey:o,seed:a,space:this.space,programId:this.programId})),y.add(this.splitInstruction({stakePubkey:t,authorizedPubkey:n,splitStakePubkey:i,lamports:h}))}static merge(e){let{stakePubkey:t,sourceStakePubKey:n,authorizedPubkey:i}=e,o=Yi.Merge,a=$t(o);return new me().add({keys:[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:Zi,isSigner:!1,isWritable:!1},{pubkey:E0,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1}],programId:this.programId,data:a})}static withdraw(e){let{stakePubkey:t,authorizedPubkey:n,toPubkey:i,lamports:o,custodianPubkey:a}=e,h=Yi.Withdraw,y=$t(h,{lamports:o}),I=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:Zi,isSigner:!1,isWritable:!1},{pubkey:E0,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}];return a&&I.push({pubkey:a,isSigner:!1,isWritable:!1}),new me().add({keys:I,programId:this.programId,data:y})}static deactivate(e){let{stakePubkey:t,authorizedPubkey:n}=e,i=Yi.Deactivate,o=$t(i);return new me().add({keys:[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:Zi,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}],programId:this.programId,data:o})}};xf.programId=new Re("Stake11111111111111111111111111111111111111");xf.space=200;var R0=Object.freeze({InitializeAccount:{index:0,layout:U.struct([U.u32("instruction"),Rx()])},Authorize:{index:1,layout:U.struct([U.u32("instruction"),Vt("newAuthorized"),U.u32("voteAuthorizationType")])},Withdraw:{index:3,layout:U.struct([U.u32("instruction"),U.ns64("lamports")])}}),XI=Object.freeze({Voter:{index:0},Withdrawer:{index:1}}),wf=class{constructor(){}static initializeAccount(e){let{votePubkey:t,nodePubkey:n,voteInit:i}=e,o=R0.InitializeAccount,a=$t(o,{voteInit:{nodePubkey:Yt(i.nodePubkey.toBuffer()),authorizedVoter:Yt(i.authorizedVoter.toBuffer()),authorizedWithdrawer:Yt(i.authorizedWithdrawer.toBuffer()),commission:i.commission}}),h={keys:[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:pn,isSigner:!1,isWritable:!1},{pubkey:Zi,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}],programId:this.programId,data:a};return new de(h)}static createAccount(e){let t=new me;return t.add(Dt.createAccount({fromPubkey:e.fromPubkey,newAccountPubkey:e.votePubkey,lamports:e.lamports,space:this.space,programId:this.programId})),t.add(this.initializeAccount({votePubkey:e.votePubkey,nodePubkey:e.voteInit.nodePubkey,voteInit:e.voteInit}))}static authorize(e){let{votePubkey:t,authorizedPubkey:n,newAuthorizedPubkey:i,voteAuthorizationType:o}=e,a=R0.Authorize,h=$t(a,{newAuthorized:Yt(i.toBuffer()),voteAuthorizationType:o.index}),y=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:Zi,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}];return new me().add({keys:y,programId:this.programId,data:h})}static withdraw(e){let{votePubkey:t,authorizedWithdrawerPubkey:n,lamports:i,toPubkey:o}=e,a=R0.Withdraw,h=$t(a,{lamports:i}),y=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return new me().add({keys:y,programId:this.programId,data:h})}};wf.programId=new Re("Vote111111111111111111111111111111111111111");wf.space=3731;var QI=new Re("Va1idator1nfo111111111111111111111111111111"),e7=pe({name:Ae(),website:jt(Ae()),details:jt(Ae()),keybaseUsername:jt(Ae())});var t7=new Re("Vote111111111111111111111111111111111111111"),r7=U.struct([Vt("nodePubkey"),Vt("authorizedWithdrawer"),U.u8("commission"),U.nu64(),U.seq(U.struct([U.nu64("slot"),U.u32("confirmationCount")]),U.offset(U.u32(),-8),"votes"),U.u8("rootSlotValid"),U.nu64("rootSlot"),U.nu64(),U.seq(U.struct([U.nu64("epoch"),Vt("authorizedVoter")]),U.offset(U.u32(),-8),"authorizedVoters"),U.struct([U.seq(U.struct([Vt("authorizedPubkey"),U.nu64("epochOfLastAuthorizedSwitch"),U.nu64("targetEpoch")]),32,"buf"),U.nu64("idx"),U.u8("isEmpty")],"priorVoters"),U.nu64(),U.seq(U.struct([U.nu64("epoch"),U.nu64("credits"),U.nu64("prevCredits")]),U.offset(U.u32(),-8),"epochCredits"),U.struct([U.nu64("slot"),U.nu64("timestamp")],"lastTimestamp")]);var X=new Re("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),Ot=new Re("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"),Er=new Re("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),Y0=new Re("So11111111111111111111111111111111111111112"),is=new Re("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");function lr(r){return r!==X}var Ef=Fe(wt(),1);var Ji=r=>{let e=r.decode.bind(r),t=r.encode.bind(r);return{decode:e,encode:t}};var Z0=Fe(wt(),1),Xi=Fe(Pu(),1);var Sf=r=>e=>{let t=(0,Z0.blob)(r,e),{encode:n,decode:i}=Ji(t),o=t;return o.decode=(a,h)=>{let y=i(a,h);return(0,Xi.toBigIntLE)(Buffer.from(y))},o.encode=(a,h,y)=>{let I=(0,Xi.toBufferLE)(a,r);return n(I,h,y)},o},_f=r=>e=>{let t=(0,Z0.blob)(r,e),{encode:n,decode:i}=Ji(t),o=t;return o.decode=(a,h)=>{let y=i(a,h);return(0,Xi.toBigIntBE)(Buffer.from(y))},o.encode=(a,h,y)=>{let I=(0,Xi.toBufferBE)(a,r);return n(I,h,y)},o},Kt=Sf(8),c7=_f(8),bw=Sf(16),f7=_f(16),u7=Sf(24),h7=_f(24),d7=Sf(32),l7=_f(32);var mw=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,J0=Math.ceil,di=Math.floor,on="[BigNumber Error] ",Vb=on+"Number primitive has more than 15 significant digits: ",Ln=1e14,St=14,X0=9007199254740991,Q0=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Qi=1e7,Ir=1e9;function Yb(r){var e,t,n,i=Y.prototype={constructor:Y,toString:null,valueOf:null},o=new Y(1),a=20,h=4,y=-7,I=21,_=-1e7,k=1e7,K=!1,D=1,q=0,Z={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},he="0123456789abcdefghijklmnopqrstuvwxyz",ce=!0;function Y(R,C){var x,f,b,l,s,c,p,g,d=this;if(!(d instanceof Y))return new Y(R,C);if(C==null){if(R&&R._isBigNumber===!0){d.s=R.s,!R.c||R.e>k?d.c=d.e=null:R.e<_?d.c=[d.e=0]:(d.e=R.e,d.c=R.c.slice());return}if((c=typeof R=="number")&&R*0==0){if(d.s=1/R<0?(R=-R,-1):1,R===~~R){for(l=0,s=R;s>=10;s/=10,l++);l>k?d.c=d.e=null:(d.e=l,d.c=[R]);return}g=String(R)}else{if(!mw.test(g=String(R)))return n(d,g,c);d.s=g.charCodeAt(0)==45?(g=g.slice(1),-1):1}(l=g.indexOf("."))>-1&&(g=g.replace(".","")),(s=g.search(/e/i))>0?(l<0&&(l=s),l+=+g.slice(s+1),g=g.substring(0,s)):l<0&&(l=g.length)}else{if(nr(C,2,he.length,"Base"),C==10&&ce)return d=new Y(R),_e(d,a+d.e+1,h);if(g=String(R),c=typeof R=="number"){if(R*0!=0)return n(d,g,c,C);if(d.s=1/R<0?(g=g.slice(1),-1):1,Y.DEBUG&&g.replace(/^0\.0*|\./,"").length>15)throw Error(Vb+R)}else d.s=g.charCodeAt(0)===45?(g=g.slice(1),-1):1;for(x=he.slice(0,C),l=s=0,p=g.length;sl){l=p;continue}}else if(!b&&(g==g.toUpperCase()&&(g=g.toLowerCase())||g==g.toLowerCase()&&(g=g.toUpperCase()))){b=!0,s=-1,l=0;continue}return n(d,String(R),c,C)}c=!1,g=t(g,C,10,d.s),(l=g.indexOf("."))>-1?g=g.replace(".",""):l=g.length}for(s=0;g.charCodeAt(s)===48;s++);for(p=g.length;g.charCodeAt(--p)===48;);if(g=g.slice(s,++p)){if(p-=s,c&&Y.DEBUG&&p>15&&(R>X0||R!==di(R)))throw Error(Vb+d.s*R);if((l=l-s-1)>k)d.c=d.e=null;else if(l<_)d.c=[d.e=0];else{if(d.e=l,d.c=[],s=(l+1)%St,l<0&&(s+=St),s=-Ir&&b<=Ir&&b===di(b)){if(f[0]===0){if(b===0&&f.length===1)return!0;break e}if(C=(b+1)%St,C<1&&(C+=St),String(f[0]).length==C){for(C=0;C=Ln||x!==di(x))break e;if(x!==0)return!0}}}else if(f===null&&b===null&&(l===null||l===1||l===-1))return!0;throw Error(on+"Invalid BigNumber: "+R)},Y.maximum=Y.max=function(){return Be(arguments,i.lt)},Y.minimum=Y.min=function(){return Be(arguments,i.gt)},Y.random=function(){var R=9007199254740992,C=Math.random()*R&2097151?function(){return di(Math.random()*R)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(x){var f,b,l,s,c,p=0,g=[],d=new Y(o);if(x==null?x=a:nr(x,0,Ir),s=J0(x/St),K)if(crypto.getRandomValues){for(f=crypto.getRandomValues(new Uint32Array(s*=2));p>>11),c>=9e15?(b=crypto.getRandomValues(new Uint32Array(2)),f[p]=b[0],f[p+1]=b[1]):(g.push(c%1e14),p+=2);p=s/2}else if(crypto.randomBytes){for(f=crypto.randomBytes(s*=7);p=9e15?crypto.randomBytes(7).copy(f,p):(g.push(c%1e14),p+=7);p=s/7}else throw K=!1,Error(on+"crypto unavailable");if(!K)for(;p=10;c/=10,p++);pb-1&&(c[s+1]==null&&(c[s+1]=0),c[s+1]+=c[s]/b|0,c[s]%=b)}return c.reverse()}return function(x,f,b,l,s){var c,p,g,d,u,w,M,v,P=x.indexOf("."),z=a,A=h;for(P>=0&&(d=q,q=0,x=x.replace(".",""),v=new Y(f),w=v.pow(x.length-P),q=d,v.c=C(Ei(An(w.c),w.e,"0"),10,b,R),v.e=v.c.length),M=C(x,f,b,s?(c=he,R):(c=R,he)),g=d=M.length;M[--d]==0;M.pop());if(!M[0])return c.charAt(0);if(P<0?--g:(w.c=M,w.e=g,w.s=l,w=e(w,v,z,A,b),M=w.c,u=w.r,g=w.e),p=g+z+1,P=M[p],d=b/2,u=u||p<0||M[p+1]!=null,u=A<4?(P!=null||u)&&(A==0||A==(w.s<0?3:2)):P>d||P==d&&(A==4||u||A==6&&M[p-1]&1||A==(w.s<0?8:7)),p<1||!M[0])x=u?Ei(c.charAt(1),-z,c.charAt(0)):c.charAt(0);else{if(M.length=p,u)for(--b;++M[--p]>b;)M[p]=0,p||(++g,M=[1].concat(M));for(d=M.length;!M[--d];);for(P=0,x="";P<=d;x+=c.charAt(M[P++]));x=Ei(x,g,c.charAt(0))}return x}}(),e=function(){function R(f,b,l){var s,c,p,g,d=0,u=f.length,w=b%Qi,M=b/Qi|0;for(f=f.slice();u--;)p=f[u]%Qi,g=f[u]/Qi|0,s=M*p+g*w,c=w*p+s%Qi*Qi+d,d=(c/l|0)+(s/Qi|0)+M*g,f[u]=c%l;return d&&(f=[d].concat(f)),f}function C(f,b,l,s){var c,p;if(l!=s)p=l>s?1:-1;else for(c=p=0;cb[c]?1:-1;break}return p}function x(f,b,l,s){for(var c=0;l--;)f[l]-=c,c=f[l]1;f.splice(0,1));}return function(f,b,l,s,c){var p,g,d,u,w,M,v,P,z,A,L,W,G,re,Me,oe,ae,Mt=f.s==b.s?1:-1,fe=f.c,be=b.c;if(!fe||!fe[0]||!be||!be[0])return new Y(!f.s||!b.s||(fe?be&&fe[0]==be[0]:!be)?NaN:fe&&fe[0]==0||!be?Mt*0:Mt/0);for(P=new Y(Mt),z=P.c=[],g=f.e-b.e,Mt=l+g+1,c||(c=Ln,g=Sn(f.e/St)-Sn(b.e/St),Mt=Mt/St|0),d=0;be[d]==(fe[d]||0);d++);if(be[d]>(fe[d]||0)&&g--,Mt<0)z.push(1),u=!0;else{for(re=fe.length,oe=be.length,d=0,Mt+=2,w=di(c/(be[0]+1)),w>1&&(be=R(be,w,c),fe=R(fe,w,c),oe=be.length,re=fe.length),G=oe,A=fe.slice(0,oe),L=A.length;L=c/2&&Me++;do{if(w=0,p=C(be,A,oe,L),p<0){if(W=A[0],oe!=L&&(W=W*c+(A[1]||0)),w=di(W/Me),w>1)for(w>=c&&(w=c-1),M=R(be,w,c),v=M.length,L=A.length;C(M,A,v,L)==1;)w--,x(M,oe=10;Mt/=10,d++);_e(P,l+(P.e=d+g*St-1)+1,s,u)}else P.e=g,P.r=+u;return P}}();function Ee(R,C,x,f){var b,l,s,c,p;if(x==null?x=h:nr(x,0,8),!R.c)return R.toString();if(b=R.c[0],s=R.e,C==null)p=An(R.c),p=f==1||f==2&&(s<=y||s>=I)?Mf(p,s):Ei(p,s,"0");else if(R=_e(new Y(R),C,x),l=R.e,p=An(R.c),c=p.length,f==1||f==2&&(C<=l||l<=y)){for(;cc){if(--C>0)for(p+=".";C--;p+="0");}else if(C+=l-c,C>0)for(l+1==c&&(p+=".");C--;p+="0");return R.s<0&&b?"-"+p:p}function Be(R,C){for(var x,f=1,b=new Y(R[0]);f=10;b/=10,f++);return(x=f+x*St-1)>k?R.c=R.e=null:x<_?R.c=[R.e=0]:(R.e=x,R.c=C),R}n=function(){var R=/^(-?)0([xbo])(?=\w[\w.]*$)/i,C=/^([^.]+)\.$/,x=/^\.([^.]+)$/,f=/^-?(Infinity|NaN)$/,b=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(l,s,c,p){var g,d=c?s:s.replace(b,"");if(f.test(d))l.s=isNaN(d)?null:d<0?-1:1;else{if(!c&&(d=d.replace(R,function(u,w,M){return g=(M=M.toLowerCase())=="x"?16:M=="b"?2:8,!p||p==g?w:u}),p&&(g=p,d=d.replace(C,"$1").replace(x,"0.$1")),s!=d))return new Y(d,g);if(Y.DEBUG)throw Error(on+"Not a"+(p?" base "+p:"")+" number: "+s);l.s=null}l.c=l.e=null}}();function _e(R,C,x,f){var b,l,s,c,p,g,d,u=R.c,w=Q0;if(u){e:{for(b=1,c=u[0];c>=10;c/=10,b++);if(l=C-b,l<0)l+=St,s=C,p=u[g=0],d=p/w[b-s-1]%10|0;else if(g=J0((l+1)/St),g>=u.length)if(f){for(;u.length<=g;u.push(0));p=d=0,b=1,l%=St,s=l-St+1}else break e;else{for(p=c=u[g],b=1;c>=10;c/=10,b++);l%=St,s=l-St+b,d=s<0?0:p/w[b-s-1]%10|0}if(f=f||C<0||u[g+1]!=null||(s<0?p:p%w[b-s-1]),f=x<4?(d||f)&&(x==0||x==(R.s<0?3:2)):d>5||d==5&&(x==4||f||x==6&&(l>0?s>0?p/w[b-s]:0:u[g-1])%10&1||x==(R.s<0?8:7)),C<1||!u[0])return u.length=0,f?(C-=R.e+1,u[0]=w[(St-C%St)%St],R.e=-C||0):u[0]=R.e=0,R;if(l==0?(u.length=g,c=1,g--):(u.length=g+1,c=w[St-l],u[g]=s>0?di(p/w[b-s]%w[s])*c:0),f)for(;;)if(g==0){for(l=1,s=u[0];s>=10;s/=10,l++);for(s=u[0]+=c,c=1;s>=10;s/=10,c++);l!=c&&(R.e++,u[0]==Ln&&(u[0]=1));break}else{if(u[g]+=c,u[g]!=Ln)break;u[g--]=0,c=1}for(l=u.length;u[--l]===0;u.pop());}R.e>k?R.c=R.e=null:R.e<_&&(R.c=[R.e=0])}return R}function je(R){var C,x=R.e;return x===null?R.toString():(C=An(R.c),C=x<=y||x>=I?Mf(C,x):Ei(C,x,"0"),R.s<0?"-"+C:C)}return i.absoluteValue=i.abs=function(){var R=new Y(this);return R.s<0&&(R.s=1),R},i.comparedTo=function(R,C){return la(this,new Y(R,C))},i.decimalPlaces=i.dp=function(R,C){var x,f,b,l=this;if(R!=null)return nr(R,0,Ir),C==null?C=h:nr(C,0,8),_e(new Y(l),R+l.e+1,C);if(!(x=l.c))return null;if(f=((b=x.length-1)-Sn(this.e/St))*St,b=x[b])for(;b%10==0;b/=10,f--);return f<0&&(f=0),f},i.dividedBy=i.div=function(R,C){return e(this,new Y(R,C),a,h)},i.dividedToIntegerBy=i.idiv=function(R,C){return e(this,new Y(R,C),0,1)},i.exponentiatedBy=i.pow=function(R,C){var x,f,b,l,s,c,p,g,d,u=this;if(R=new Y(R),R.c&&!R.isInteger())throw Error(on+"Exponent not an integer: "+je(R));if(C!=null&&(C=new Y(C)),c=R.e>14,!u.c||!u.c[0]||u.c[0]==1&&!u.e&&u.c.length==1||!R.c||!R.c[0])return d=new Y(Math.pow(+je(u),c?2-kf(R):+je(R))),C?d.mod(C):d;if(p=R.s<0,C){if(C.c?!C.c[0]:!C.s)return new Y(NaN);f=!p&&u.isInteger()&&C.isInteger(),f&&(u=u.mod(C))}else{if(R.e>9&&(u.e>0||u.e<-1||(u.e==0?u.c[0]>1||c&&u.c[1]>=24e7:u.c[0]<8e13||c&&u.c[0]<=9999975e7)))return l=u.s<0&&kf(R)?-0:0,u.e>-1&&(l=1/l),new Y(p?1/l:l);q&&(l=J0(q/St+2))}for(c?(x=new Y(.5),p&&(R.s=1),g=kf(R)):(b=Math.abs(+je(R)),g=b%2),d=new Y(o);;){if(g){if(d=d.times(u),!d.c)break;l?d.c.length>l&&(d.c.length=l):f&&(d=d.mod(C))}if(b){if(b=di(b/2),b===0)break;g=b%2}else if(R=R.times(x),_e(R,R.e+1,1),R.e>14)g=kf(R);else{if(b=+je(R),b===0)break;g=b%2}u=u.times(u),l?u.c&&u.c.length>l&&(u.c.length=l):f&&(u=u.mod(C))}return f?d:(p&&(d=o.div(d)),C?d.mod(C):l?_e(d,q,h,s):d)},i.integerValue=function(R){var C=new Y(this);return R==null?R=h:nr(R,0,8),_e(C,C.e+1,R)},i.isEqualTo=i.eq=function(R,C){return la(this,new Y(R,C))===0},i.isFinite=function(){return!!this.c},i.isGreaterThan=i.gt=function(R,C){return la(this,new Y(R,C))>0},i.isGreaterThanOrEqualTo=i.gte=function(R,C){return(C=la(this,new Y(R,C)))===1||C===0},i.isInteger=function(){return!!this.c&&Sn(this.e/St)>this.c.length-2},i.isLessThan=i.lt=function(R,C){return la(this,new Y(R,C))<0},i.isLessThanOrEqualTo=i.lte=function(R,C){return(C=la(this,new Y(R,C)))===-1||C===0},i.isNaN=function(){return!this.s},i.isNegative=function(){return this.s<0},i.isPositive=function(){return this.s>0},i.isZero=function(){return!!this.c&&this.c[0]==0},i.minus=function(R,C){var x,f,b,l,s=this,c=s.s;if(R=new Y(R,C),C=R.s,!c||!C)return new Y(NaN);if(c!=C)return R.s=-C,s.plus(R);var p=s.e/St,g=R.e/St,d=s.c,u=R.c;if(!p||!g){if(!d||!u)return d?(R.s=-C,R):new Y(u?s:NaN);if(!d[0]||!u[0])return u[0]?(R.s=-C,R):new Y(d[0]?s:h==3?-0:0)}if(p=Sn(p),g=Sn(g),d=d.slice(),c=p-g){for((l=c<0)?(c=-c,b=d):(g=p,b=u),b.reverse(),C=c;C--;b.push(0));b.reverse()}else for(f=(l=(c=d.length)<(C=u.length))?c:C,c=C=0;C0)for(;C--;d[x++]=0);for(C=Ln-1;f>c;){if(d[--f]=0;){for(x=0,w=W[b]%z,M=W[b]/z|0,s=p,l=b+s;l>b;)g=L[--s]%z,d=L[s]/z|0,c=M*g+d*w,g=w*g+c%z*z+v[l]+x,x=(g/P|0)+(c/z|0)+M*d,v[l--]=g%P;v[l]=x}return x?++f:v.splice(0,1),Ue(R,v,f)},i.negated=function(){var R=new Y(this);return R.s=-R.s||null,R},i.plus=function(R,C){var x,f=this,b=f.s;if(R=new Y(R,C),C=R.s,!b||!C)return new Y(NaN);if(b!=C)return R.s=-C,f.minus(R);var l=f.e/St,s=R.e/St,c=f.c,p=R.c;if(!l||!s){if(!c||!p)return new Y(b/0);if(!c[0]||!p[0])return p[0]?R:new Y(c[0]?f:b*0)}if(l=Sn(l),s=Sn(s),c=c.slice(),b=l-s){for(b>0?(s=l,x=p):(b=-b,x=c),x.reverse();b--;x.push(0));x.reverse()}for(b=c.length,C=p.length,b-C<0&&(x=p,p=c,c=x,C=b),b=0;C;)b=(c[--C]=c[C]+p[C]+b)/Ln|0,c[C]=Ln===c[C]?0:c[C]%Ln;return b&&(c=[b].concat(c),++s),Ue(R,c,s)},i.precision=i.sd=function(R,C){var x,f,b,l=this;if(R!=null&&R!==!!R)return nr(R,1,Ir),C==null?C=h:nr(C,0,8),_e(new Y(l),R,C);if(!(x=l.c))return null;if(b=x.length-1,f=b*St+1,b=x[b]){for(;b%10==0;b/=10,f--);for(b=x[0];b>=10;b/=10,f++);}return R&&l.e+1>f&&(f=l.e+1),f},i.shiftedBy=function(R){return nr(R,-X0,X0),this.times("1e"+R)},i.squareRoot=i.sqrt=function(){var R,C,x,f,b,l=this,s=l.c,c=l.s,p=l.e,g=a+4,d=new Y("0.5");if(c!==1||!s||!s[0])return new Y(!c||c<0&&(!s||s[0])?NaN:s?l:1/0);if(c=Math.sqrt(+je(l)),c==0||c==1/0?(C=An(s),(C.length+p)%2==0&&(C+="0"),c=Math.sqrt(+C),p=Sn((p+1)/2)-(p<0||p%2),c==1/0?C="5e"+p:(C=c.toExponential(),C=C.slice(0,C.indexOf("e")+1)+p),x=new Y(C)):x=new Y(c+""),x.c[0]){for(p=x.e,c=p+g,c<3&&(c=0);;)if(b=x,x=d.times(b.plus(e(l,b,g,1))),An(b.c).slice(0,c)===(C=An(x.c)).slice(0,c))if(x.e0&&v>0){for(l=v%c||c,d=M.substr(0,l);l0&&(d+=g+M.slice(l)),w&&(d="-"+d)}f=u?d+(x.decimalSeparator||"")+((p=+x.fractionGroupSize)?u.replace(new RegExp("\\d{"+p+"}\\B","g"),"$&"+(x.fractionGroupSeparator||"")):u):d}return(x.prefix||"")+f+(x.suffix||"")},i.toFraction=function(R){var C,x,f,b,l,s,c,p,g,d,u,w,M=this,v=M.c;if(R!=null&&(c=new Y(R),!c.isInteger()&&(c.c||c.s!==1)||c.lt(o)))throw Error(on+"Argument "+(c.isInteger()?"out of range: ":"not an integer: ")+je(c));if(!v)return new Y(M);for(C=new Y(o),g=x=new Y(o),f=p=new Y(o),w=An(v),l=C.e=w.length-M.e-1,C.c[0]=Q0[(s=l%St)<0?St+s:s],R=!R||c.comparedTo(C)>0?l>0?C:g:c,s=k,k=1/0,c=new Y(w),p.c[0]=0;d=e(c,C,0,1),b=x.plus(d.times(f)),b.comparedTo(R)!=1;)x=f,f=b,g=p.plus(d.times(b=g)),p=b,C=c.minus(d.times(b=C)),c=b;return b=e(R.minus(x),f,0,1),p=p.plus(b.times(g)),x=x.plus(b.times(f)),p.s=g.s=M.s,l=l*2,u=e(g,f,l,h).minus(M).abs().comparedTo(e(p,x,l,h).minus(M).abs())<1?[g,f]:[p,x],k=s,u},i.toNumber=function(){return+je(this)},i.toPrecision=function(R,C){return R!=null&&nr(R,1,Ir),Ee(this,R,C,2)},i.toString=function(R){var C,x=this,f=x.s,b=x.e;return b===null?f?(C="Infinity",f<0&&(C="-"+C)):C="NaN":(R==null?C=b<=y||b>=I?Mf(An(x.c),b):Ei(An(x.c),b,"0"):R===10&&ce?(x=_e(new Y(x),a+b+1,h),C=Ei(An(x.c),x.e,"0")):(nr(R,2,he.length,"Base"),C=t(Ei(An(x.c),b,"0"),10,R,f,!0)),f<0&&x.c[0]&&(C="-"+C)),C},i.valueOf=i.toJSON=function(){return je(this)},i._isBigNumber=!0,i[Symbol.toStringTag]="BigNumber",i[Symbol.for("nodejs.util.inspect.custom")]=i.valueOf,r!=null&&Y.set(r),Y}function Sn(r){var e=r|0;return r>0||r===e?e:e-1}function An(r){for(var e,t,n=1,i=r.length,o=r[0]+"";nI^t?1:-1;for(h=(y=i.length)<(I=o.length)?y:I,a=0;ao[a]^t?1:-1;return y==I?0:y>I^t?1:-1}function nr(r,e,t,n){if(rt||r!==di(r))throw Error(on+(n||"Argument")+(typeof r=="number"?rt?" out of range: ":" not an integer: ":" not a primitive number: ")+String(r))}function kf(r){var e=r.c.length-1;return Sn(r.e/St)==e&&r.c[e]%2!=0}function Mf(r,e){return(r.length>1?r.charAt(0)+"."+r.slice(1):r)+(e<0?"e":"e+")+e}function Ei(r,e,t){var n,i;if(e<0){for(i=t+".";++e;i+=t);r=i+r}else if(n=r.length,++e>n){for(i=t,e-=n;--e;i+=t);r+=i}else e{let e=(0,Jb.u8)(r),{encode:t,decode:n}=Ji(e),i=e;return i.decode=(o,a)=>!!n(o,a),i.encode=(o,a,h)=>{let y=Number(o);return t(y,a,h)},i};var Xb=Fe(wt(),1);var At=r=>{let e=(0,Xb.blob)(32,r),{encode:t,decode:n}=Ji(e),i=e;return i.decode=(o,a)=>{let h=n(o,a);return new Re(h)},i.encode=(o,a,h)=>{let y=o.toBuffer();return t(y,a,h)},i};var Hr=class extends Error{constructor(e){super(e)}},Un=class extends Hr{name="TokenAccountNotFoundError"},os=class extends Hr{name="TokenInvalidAccountError"},Fn=class extends Hr{name="TokenInvalidAccountOwnerError"},_n=class extends Hr{name="TokenInvalidAccountSizeError"},So=class extends Hr{name="TokenInvalidMintError"},as=class extends Hr{name="TokenInvalidOwnerError"},ba=class extends Hr{name="TokenOwnerOffCurveError"},ze=class extends Hr{name="TokenInvalidInstructionProgramError"},qe=class extends Hr{name="TokenInvalidInstructionKeysError"},Le=class extends Hr{name="TokenInvalidInstructionDataError"},De=class extends Hr{name="TokenInvalidInstructionTypeError"},fr=class extends Hr{name="TokenUnsupportedInstructionError"};var Qb=(d=>(d[d.InitializeMint=0]="InitializeMint",d[d.InitializeAccount=1]="InitializeAccount",d[d.InitializeMultisig=2]="InitializeMultisig",d[d.Transfer=3]="Transfer",d[d.Approve=4]="Approve",d[d.Revoke=5]="Revoke",d[d.SetAuthority=6]="SetAuthority",d[d.MintTo=7]="MintTo",d[d.Burn=8]="Burn",d[d.CloseAccount=9]="CloseAccount",d[d.FreezeAccount=10]="FreezeAccount",d[d.ThawAccount=11]="ThawAccount",d[d.TransferChecked=12]="TransferChecked",d[d.ApproveChecked=13]="ApproveChecked",d[d.MintToChecked=14]="MintToChecked",d[d.BurnChecked=15]="BurnChecked",d[d.InitializeAccount2=16]="InitializeAccount2",d[d.SyncNative=17]="SyncNative",d[d.InitializeAccount3=18]="InitializeAccount3",d[d.InitializeMultisig2=19]="InitializeMultisig2",d[d.InitializeMint2=20]="InitializeMint2",d[d.GetAccountDataSize=21]="GetAccountDataSize",d[d.InitializeImmutableOwner=22]="InitializeImmutableOwner",d[d.AmountToUiAmount=23]="AmountToUiAmount",d[d.UiAmountToAmount=24]="UiAmountToAmount",d[d.InitializeMintCloseAuthority=25]="InitializeMintCloseAuthority",d[d.TransferFeeExtension=26]="TransferFeeExtension",d[d.ConfidentialTransferExtension=27]="ConfidentialTransferExtension",d[d.DefaultAccountStateExtension=28]="DefaultAccountStateExtension",d[d.Reallocate=29]="Reallocate",d[d.MemoTransferExtension=30]="MemoTransferExtension",d[d.CreateNativeMint=31]="CreateNativeMint",d[d.InitializeNonTransferableMint=32]="InitializeNonTransferableMint",d[d.InterestBearingMintExtension=33]="InterestBearingMintExtension",d))(Qb||{});var ss=(0,Ef.struct)([(0,Ef.u8)("instruction"),Kt("amount")]);function eh(r,e,t=X){let n=[{pubkey:r,isSigner:!1,isWritable:!1}],i=Buffer.alloc(ss.span);return ss.encode({instruction:23,amount:BigInt(e)},i),new de({keys:n,programId:t,data:i})}function th(r,e=X){if(!r.programId.equals(e))throw new ze;if(r.data.length!==ss.span)throw new Le;let{keys:{mint:t},data:n}=em(r);if(n.instruction!==23)throw new De;if(!t)throw new qe;return{programId:e,keys:{mint:t},data:n}}function em({programId:r,keys:[e],data:t}){return{programId:r,keys:{mint:e},data:ss.decode(t)}}async function gw(r,e,t,n,i=X){let o=new me().add(eh(t,n,i)),{returnData:a,err:h}=(await r.simulateTransaction(o,[e],!1)).value;return a?.data?Buffer.from(a.data[0],a.data[1]).toString("utf-8"):h}var Tf=Fe(wt(),1);function Zt(r,e,t){if(t.length){r.push({pubkey:e,isSigner:!1,isWritable:!1});for(let n of t)r.push({pubkey:n.publicKey,isSigner:!0,isWritable:!1})}else r.push({pubkey:e,isSigner:!0,isWritable:!1});return r}var cs=(0,Tf.struct)([(0,Tf.u8)("instruction"),Kt("amount")]);function rh(r,e,t,n,i=[],o=X){let a=Zt([{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1}],t,i),h=Buffer.alloc(cs.span);return cs.encode({instruction:4,amount:BigInt(n)},h),new de({keys:a,programId:o,data:h})}function nh(r,e=X){if(!r.programId.equals(e))throw new ze;if(r.data.length!==cs.span)throw new Le;let{keys:{account:t,delegate:n,owner:i,multiSigners:o},data:a}=tm(r);if(a.instruction!==4)throw new De;if(!t||!n||!i)throw new qe;return{programId:e,keys:{account:t,delegate:n,owner:i,multiSigners:o},data:a}}function tm({programId:r,keys:[e,t,n,...i],data:o}){return{programId:r,keys:{account:e,delegate:t,owner:n,multiSigners:i},data:cs.decode(o)}}function Rt(r,e){return r instanceof Re?[r,e]:[r.publicKey,[r]]}async function vw(r,e,t,n,i,o,a=[],h,y=X){let[I,_]=Rt(i,a),k=new me().add(rh(t,n,I,o,a,y));return await Ce(r,k,[e,..._],h)}var fs=Fe(wt(),1);var us=(0,fs.struct)([(0,fs.u8)("instruction"),Kt("amount"),(0,fs.u8)("decimals")]);function ih(r,e,t,n,i,o,a=[],h=X){let y=Zt([{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1}],n,a),I=Buffer.alloc(us.span);return us.encode({instruction:13,amount:BigInt(i),decimals:o},I),new de({keys:y,programId:h,data:I})}function oh(r,e=X){if(!r.programId.equals(e))throw new ze;if(r.data.length!==us.span)throw new Le;let{keys:{account:t,mint:n,delegate:i,owner:o,multiSigners:a},data:h}=rm(r);if(h.instruction!==13)throw new De;if(!t||!n||!i||!o)throw new qe;return{programId:e,keys:{account:t,mint:n,delegate:i,owner:o,multiSigners:a},data:h}}function rm({programId:r,keys:[e,t,n,i,...o],data:a}){return{programId:r,keys:{account:e,mint:t,delegate:n,owner:i,multiSigners:o},data:us.decode(a)}}async function xw(r,e,t,n,i,o,a,h,y=[],I,_=X){let[k,K]=Rt(o,y),D=new me().add(ih(n,t,i,k,a,h,y,_));return await Ce(r,D,[e,...K],I)}var Bf=Fe(wt(),1);var hs=(0,Bf.struct)([(0,Bf.u8)("instruction"),Kt("amount")]);function ah(r,e,t,n,i=[],o=X){let a=Zt([{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0}],t,i),h=Buffer.alloc(hs.span);return hs.encode({instruction:8,amount:BigInt(n)},h),new de({keys:a,programId:o,data:h})}function sh(r,e=X){if(!r.programId.equals(e))throw new ze;if(r.data.length!==hs.span)throw new Le;let{keys:{account:t,mint:n,owner:i,multiSigners:o},data:a}=nm(r);if(a.instruction!==8)throw new De;if(!t||!n||!i)throw new qe;return{programId:e,keys:{account:t,mint:n,owner:i,multiSigners:o},data:a}}function nm({programId:r,keys:[e,t,n,...i],data:o}){return{programId:r,keys:{account:e,mint:t,owner:n,multiSigners:i},data:hs.decode(o)}}async function ww(r,e,t,n,i,o,a=[],h,y=X){let[I,_]=Rt(i,a),k=new me().add(ah(t,n,I,o,a,y));return await Ce(r,k,[e,..._],h)}var ds=Fe(wt(),1);var ls=(0,ds.struct)([(0,ds.u8)("instruction"),Kt("amount"),(0,ds.u8)("decimals")]);function ch(r,e,t,n,i,o=[],a=X){let h=Zt([{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0}],t,o),y=Buffer.alloc(ls.span);return ls.encode({instruction:15,amount:BigInt(n),decimals:i},y),new de({keys:h,programId:a,data:y})}function fh(r,e=X){if(!r.programId.equals(e))throw new ze;if(r.data.length!==ls.span)throw new Le;let{keys:{account:t,mint:n,owner:i,multiSigners:o},data:a}=im(r);if(a.instruction!==15)throw new De;if(!t||!n||!i)throw new qe;return{programId:e,keys:{account:t,mint:n,owner:i,multiSigners:o},data:a}}function im({programId:r,keys:[e,t,n,...i],data:o}){return{programId:r,keys:{account:e,mint:t,owner:n,multiSigners:i},data:ls.decode(o)}}async function Iw(r,e,t,n,i,o,a,h=[],y,I=X){let[_,k]=Rt(i,h),K=new me().add(ch(t,n,_,o,a,h,I));return await Ce(r,K,[e,...k],y)}var Pf=Fe(wt(),1);var ps=(0,Pf.struct)([(0,Pf.u8)("instruction")]);function uh(r,e,t,n=[],i=X){let o=Zt([{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0}],t,n),a=Buffer.alloc(ps.span);return ps.encode({instruction:9},a),new de({keys:o,programId:i,data:a})}function hh(r,e=X){if(!r.programId.equals(e))throw new ze;if(r.data.length!==ps.span)throw new Le;let{keys:{account:t,destination:n,authority:i,multiSigners:o},data:a}=om(r);if(a.instruction!==9)throw new De;if(!t||!n||!i)throw new qe;return{programId:e,keys:{account:t,destination:n,authority:i,multiSigners:o},data:a}}function om({programId:r,keys:[e,t,n,...i],data:o}){return{programId:r,keys:{account:e,destination:t,authority:n,multiSigners:i},data:ps.decode(o)}}async function Aw(r,e,t,n,i,o=[],a,h=X){let[y,I]=Rt(i,o),_=new me().add(uh(t,n,y,o,h));return await Ce(r,_,[e,...I],a)}var eo=Fe(wt(),1);var Rf=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Rf||{}),_o=1;var bs=Fe(wt(),1);var dh=(0,bs.struct)([(0,bs.u8)("m"),(0,bs.u8)("n"),pa("isInitialized"),At("signer1"),At("signer2"),At("signer3"),At("signer4"),At("signer5"),At("signer6"),At("signer7"),At("signer8"),At("signer9"),At("signer10"),At("signer11")]),zn=dh.span;async function Sw(r,e,t,n=X){let i=await r.getAccountInfo(e,t);return am(e,i,n)}function am(r,e,t=X){if(!e)throw new Un;if(!e.owner.equals(t))throw new Fn;if(e.data.length!=zn)throw new _n;let n=dh.decode(e.data);return{address:r,...n}}async function lh(r,e){return await r.getMinimumBalanceForRentExemption(zn,e)}var sm=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Initialized=1]="Initialized",n[n.Frozen=2]="Frozen",n))(sm||{}),ph=(0,eo.struct)([At("mint"),At("owner"),Kt("amount"),(0,eo.u32)("delegateOption"),At("delegate"),(0,eo.u8)("state"),(0,eo.u32)("isNativeOption"),Kt("isNative"),Kt("delegatedAmount"),(0,eo.u32)("closeAuthorityOption"),At("closeAuthority")]),Vr=ph.span;async function Cf(r,e,t,n=X){let i=await r.getAccountInfo(e,t);return mh(e,i,n)}async function _w(r,e,t,n=X){let i=await r.getMultipleAccountsInfo(e,t);return e.map((o,a)=>mh(o,i[a],n))}async function bh(r,e){return await cm(r,[],e)}async function cm(r,e,t){let n=Of(e);return await r.getMinimumBalanceForRentExemption(n,t)}function mh(r,e,t=X){if(!e)throw new Un;if(!e.owner.equals(t))throw new Fn;if(e.data.lengthVr){if(e.data.length===zn)throw new _n;if(e.data[Vr]!=2)throw new os;i=e.data.slice(Vr+_o)}return{address:r,mint:n.mint,owner:n.owner,amount:n.amount,delegate:n.delegateOption?n.delegate:null,delegatedAmount:n.delegatedAmount,isInitialized:n.state!==0,isFrozen:n.state===2,isNative:!!n.isNativeOption,rentExemptReserve:n.isNativeOption?n.isNative:null,closeAuthority:n.closeAuthorityOption?n.closeAuthority:null,tlvData:i}}var ko=Fe(wt(),1);var yh=(0,ko.struct)([(0,ko.u32)("mintAuthorityOption"),At("mintAuthority"),Kt("supply"),(0,ko.u8)("decimals"),pa("isInitialized"),(0,ko.u32)("freezeAuthorityOption"),At("freezeAuthority")]),to=yh.span;async function gh(r,e,t,n=X){let i=await r.getAccountInfo(e,t);return fm(e,i,n)}function fm(r,e,t=X){if(!e)throw new Un;if(!e.owner.equals(t))throw new Fn;if(e.data.lengthto){if(e.data.length<=Vr)throw new _n;if(e.data.length===zn)throw new _n;if(e.data[Vr]!=1)throw new So;i=e.data.slice(Vr+_o)}return{address:r,mintAuthority:n.mintAuthorityOption?n.mintAuthority:null,supply:n.supply,decimals:n.decimals,isInitialized:n.isInitialized,freezeAuthority:n.freezeAuthorityOption?n.freezeAuthority:null,tlvData:i}}async function vh(r,e){return await um(r,[],e)}async function um(r,e,t){let n=ms(e);return await r.getMinimumBalanceForRentExemption(n,t)}async function Ti(r,e,t=!1,n=X,i=Er){if(!t&&!Re.isOnCurve(e.toBuffer()))throw new ba;let[o]=await Re.findProgramAddress([e.toBuffer(),n.toBuffer(),r.toBuffer()],i);return o}function kw(r,e,t=!1,n=X,i=Er){if(!t&&!Re.isOnCurve(e.toBuffer()))throw new ba;let[o]=Re.findProgramAddressSync([e.toBuffer(),n.toBuffer(),r.toBuffer()],i);return o}var ma=Fe(wt(),1);var hm=(t=>(t[t.Initialize=0]="Initialize",t[t.Update=1]="Update",t))(hm||{}),ys=(0,ma.struct)([(0,ma.u8)("instruction"),(0,ma.u8)("defaultAccountStateInstruction"),(0,ma.u8)("accountState")]);function xh(r,e,t=Ot){if(!lr(t))throw new fr;let n=[{pubkey:r,isSigner:!1,isWritable:!0}],i=Buffer.alloc(ys.span);return ys.encode({instruction:28,defaultAccountStateInstruction:0,accountState:e},i),new de({keys:n,programId:t,data:i})}function wh(r,e,t,n=[],i=Ot){if(!lr(i))throw new fr;let o=[{pubkey:r,isSigner:!1,isWritable:!0}];o.push({pubkey:t,isSigner:!n.length,isWritable:!1});for(let h of n)o.push({pubkey:h.publicKey,isSigner:!0,isWritable:!1});let a=Buffer.alloc(ys.span);return ys.encode({instruction:28,defaultAccountStateInstruction:1,accountState:e},a),new de({keys:o,programId:i,data:a})}async function Mw(r,e,t,n,i,o=Ot){let a=new me().add(xh(t,n,o));return await Ce(r,a,[e],i)}async function Ew(r,e,t,n,i,o=[],a,h=Ot){let[y,I]=Rt(i,o),_=new me().add(wh(t,n,y,I,h));return await Ce(r,_,[e,...I],a)}var Nf=Fe(wt(),1);var Ih=(0,Nf.struct)([(0,Nf.u8)("state")]),Ah=Ih.span;function Tw(r){let e=Fr(6,r.tlvData);return e!==null?Ih.decode(e):null}var dm=Fe(wt(),1);var Sh=(0,dm.struct)([]),_h=Sh.span;function Bw(r){let e=Fr(7,r.tlvData);return e!==null?Sh.decode(e):null}var ro=Fe(wt(),1);var kh=(0,ro.struct)([At("rateAuthority"),(0,ro.ns64)("initializationTimestamp"),(0,ro.s16)("preUpdateAverageRate"),(0,ro.ns64)("lastUpdateTimestamp"),(0,ro.s16)("currentRate")]),Mh=kh.span;function Pw(r){let e=Fr(10,r.tlvData);return e!==null?kh.decode(e):null}var gs=Fe(wt(),1);var lm=(t=>(t[t.Enable=0]="Enable",t[t.Disable=1]="Disable",t))(lm||{}),Eh=(0,gs.struct)([(0,gs.u8)("instruction"),(0,gs.u8)("memoTransferInstruction")]);function Th(r,e,t=[],n=Ot){return pm(!0,r,e,t,n)}function Bh(r,e,t=[],n=Ot){return pm(!1,r,e,t,n)}function pm(r,e,t,n,i){if(!lr(i))throw new fr;let o=[{pubkey:e,isSigner:!1,isWritable:!0}];o.push({pubkey:t,isSigner:!n.length,isWritable:!1});for(let h of n)o.push({pubkey:h.publicKey,isSigner:!0,isWritable:!1});let a=Buffer.alloc(Eh.span);return Eh.encode({instruction:30,memoTransferInstruction:r?0:1},a),new de({keys:o,programId:i,data:a})}async function Rw(r,e,t,n,i=[],o,a=Ot){let[h,y]=Rt(n,i),I=new me().add(Th(t,h,y,a));return await Ce(r,I,[e,...y],o)}async function Cw(r,e,t,n,i=[],o,a=Ot){let[h,y]=Rt(n,i),I=new me().add(Bh(t,h,y,a));return await Ce(r,I,[e,...y],o)}var bm=Fe(wt(),1);var Ph=(0,bm.struct)([pa("requireIncomingTransferMemos")]),Rh=Ph.span;function Ow(r){let e=Fr(8,r.tlvData);return e!==null?Ph.decode(e):null}var mm=Fe(wt(),1);var Ch=(0,mm.struct)([At("closeAuthority")]),Oh=Ch.span;function Nw(r){let e=Fr(3,r.tlvData);return e!==null?Ch.decode(e):null}var ym=Fe(wt(),1);var Nh=(0,ym.struct)([]),Dh=Nh.span;function Dw(r){let e=Fr(9,r.tlvData);return e!==null?Nh.decode(e):null}var ir=Fe(wt(),1);var gm=(a=>(a[a.InitializeTransferFeeConfig=0]="InitializeTransferFeeConfig",a[a.TransferCheckedWithFee=1]="TransferCheckedWithFee",a[a.WithdrawWithheldTokensFromMint=2]="WithdrawWithheldTokensFromMint",a[a.WithdrawWithheldTokensFromAccounts=3]="WithdrawWithheldTokensFromAccounts",a[a.HarvestWithheldTokensToMint=4]="HarvestWithheldTokensToMint",a[a.SetTransferFee=5]="SetTransferFee",a))(gm||{}),vs=(0,ir.struct)([(0,ir.u8)("instruction"),(0,ir.u8)("transferFeeInstruction"),(0,ir.u8)("transferFeeConfigAuthorityOption"),At("transferFeeConfigAuthority"),(0,ir.u8)("withdrawWithheldAuthorityOption"),At("withdrawWithheldAuthority"),(0,ir.u16)("transferFeeBasisPoints"),Kt("maximumFee")]);function Kw(r,e,t,n,i,o=Ot){if(!lr(o))throw new fr;let a=[{pubkey:r,isSigner:!1,isWritable:!0}],h=Buffer.alloc(vs.span);return vs.encode({instruction:26,transferFeeInstruction:0,transferFeeConfigAuthorityOption:e?1:0,transferFeeConfigAuthority:e||new Re(0),withdrawWithheldAuthorityOption:t?1:0,withdrawWithheldAuthority:t||new Re(0),transferFeeBasisPoints:n,maximumFee:i},h),new de({keys:a,programId:o,data:h})}function Lw(r,e){if(!r.programId.equals(e))throw new ze;if(r.data.length!==vs.span)throw new Le;let{keys:{mint:t},data:n}=vm(r);if(n.instruction!==26||n.transferFeeInstruction!==0)throw new De;if(!t)throw new qe;return{programId:e,keys:{mint:t},data:n}}function vm({programId:r,keys:[e],data:t}){let{instruction:n,transferFeeInstruction:i,transferFeeConfigAuthorityOption:o,transferFeeConfigAuthority:a,withdrawWithheldAuthorityOption:h,withdrawWithheldAuthority:y,transferFeeBasisPoints:I,maximumFee:_}=vs.decode(t);return{programId:r,keys:{mint:e},data:{instruction:n,transferFeeInstruction:i,transferFeeConfigAuthority:o?a:null,withdrawWithheldAuthority:h?y:null,transferFeeBasisPoints:I,maximumFee:_}}}var xs=(0,ir.struct)([(0,ir.u8)("instruction"),(0,ir.u8)("transferFeeInstruction"),Kt("amount"),(0,ir.u8)("decimals"),Kt("fee")]);function Kh(r,e,t,n,i,o,a,h=[],y=Ot){if(!lr(y))throw new fr;let I=Buffer.alloc(xs.span);xs.encode({instruction:26,transferFeeInstruction:1,amount:i,decimals:o,fee:a},I);let _=[];_.push({pubkey:r,isSigner:!1,isWritable:!0}),_.push({pubkey:e,isSigner:!1,isWritable:!1}),_.push({pubkey:t,isSigner:!1,isWritable:!0}),_.push({pubkey:n,isSigner:!h.length,isWritable:!1});for(let k of h)_.push({pubkey:k.publicKey,isSigner:!0,isWritable:!1});return new de({keys:_,programId:y,data:I})}function Uw(r,e){if(!r.programId.equals(e))throw new ze;if(r.data.length!==xs.span)throw new Le;let{keys:{source:t,mint:n,destination:i,authority:o,signers:a},data:h}=xm(r);if(h.instruction!==26||h.transferFeeInstruction!==1)throw new De;if(!n)throw new qe;return{programId:e,keys:{source:t,mint:n,destination:i,authority:o,signers:a||null},data:h}}function xm({programId:r,keys:[e,t,n,i,...o],data:a}){let{instruction:h,transferFeeInstruction:y,amount:I,decimals:_,fee:k}=xs.decode(a);return{programId:r,keys:{source:e,mint:t,destination:n,authority:i,signers:o},data:{instruction:h,transferFeeInstruction:y,amount:I,decimals:_,fee:k}}}var ws=(0,ir.struct)([(0,ir.u8)("instruction"),(0,ir.u8)("transferFeeInstruction")]);function Lh(r,e,t,n=[],i=Ot){if(!lr(i))throw new fr;let o=Buffer.alloc(ws.span);ws.encode({instruction:26,transferFeeInstruction:2},o);let a=[];a.push({pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!n.length,isWritable:!1});for(let h of n)a.push({pubkey:h.publicKey,isSigner:!0,isWritable:!1});return new de({keys:a,programId:i,data:o})}function Fw(r,e){if(!r.programId.equals(e))throw new ze;if(r.data.length!==ws.span)throw new Le;let{keys:{mint:t,destination:n,authority:i,signers:o},data:a}=wm(r);if(a.instruction!==26||a.transferFeeInstruction!==2)throw new De;if(!t)throw new qe;return{programId:e,keys:{mint:t,destination:n,authority:i,signers:o||null},data:a}}function wm({programId:r,keys:[e,t,n,...i],data:o}){let{instruction:a,transferFeeInstruction:h}=ws.decode(o);return{programId:r,keys:{mint:e,destination:t,authority:n,signers:i},data:{instruction:a,transferFeeInstruction:h}}}var Is=(0,ir.struct)([(0,ir.u8)("instruction"),(0,ir.u8)("transferFeeInstruction"),(0,ir.u8)("numTokenAccounts")]);function Uh(r,e,t,n,i,o=Ot){if(!lr(o))throw new fr;let a=Buffer.alloc(Is.span);Is.encode({instruction:26,transferFeeInstruction:3,numTokenAccounts:i.length},a);let h=[];h.push({pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!n.length,isWritable:!1});for(let y of n)h.push({pubkey:y.publicKey,isSigner:!0,isWritable:!1});for(let y of i)h.push({pubkey:y,isSigner:!1,isWritable:!0});return new de({keys:h,programId:o,data:a})}function zw(r,e){if(!r.programId.equals(e))throw new ze;if(r.data.length!==Is.span)throw new Le;let{keys:{mint:t,destination:n,authority:i,signers:o,sources:a},data:h}=Im(r);if(h.instruction!==26||h.transferFeeInstruction!==3)throw new De;if(!t)throw new qe;return{programId:e,keys:{mint:t,destination:n,authority:i,signers:o||null,sources:a||null},data:h}}function Im({programId:r,keys:e,data:t}){let{instruction:n,transferFeeInstruction:i,numTokenAccounts:o}=Is.decode(t),[a,h,y,I,_]=[e[0],e[1],e[2],e.slice(3,3+o),e.slice(-1*o)];return{programId:r,keys:{mint:a,destination:h,authority:y,signers:I,sources:_},data:{instruction:n,transferFeeInstruction:i,numTokenAccounts:o}}}var As=(0,ir.struct)([(0,ir.u8)("instruction"),(0,ir.u8)("transferFeeInstruction")]);function Fh(r,e,t=Ot){if(!lr(t))throw new fr;let n=Buffer.alloc(As.span);As.encode({instruction:26,transferFeeInstruction:4},n);let i=[];i.push({pubkey:r,isSigner:!1,isWritable:!0});for(let o of e)i.push({pubkey:o,isSigner:!1,isWritable:!0});return new de({keys:i,programId:t,data:n})}function qw(r,e){if(!r.programId.equals(e))throw new ze;if(r.data.length!==As.span)throw new Le;let{keys:{mint:t,sources:n},data:i}=Am(r);if(i.instruction!==26||i.transferFeeInstruction!==4)throw new De;if(!t)throw new qe;return{programId:e,keys:{mint:t,sources:n},data:i}}function Am({programId:r,keys:[e,...t],data:n}){let{instruction:i,transferFeeInstruction:o}=As.decode(n);return{programId:r,keys:{mint:e,sources:t},data:{instruction:i,transferFeeInstruction:o}}}async function Ww(r,e,t,n,i,o,a,h,y,I=[],_,k=Ot){let[K,D]=Rt(o,I),q=new me().add(Kh(t,n,i,K,a,h,y,I,k));return await Ce(r,q,[e,...D],_)}async function jw(r,e,t,n,i,o=[],a,h=Ot){let[y,I]=Rt(i,o),_=new me().add(Lh(t,n,y,I,h));return await Ce(r,_,[e,...I],a)}async function Gw(r,e,t,n,i,o,a,h,y=Ot){let[I,_]=Rt(i,o),k=new me().add(Uh(t,n,I,_,a,y));return await Ce(r,k,[e,..._],h)}async function $w(r,e,t,n,i,o=Ot){let a=new me().add(Fh(t,n,o));return await Ce(r,a,[e],i)}var ya=Fe(wt(),1);var Sm=1e4,Hw=Sm;function zh(r){return(0,ya.struct)([Kt("epoch"),Kt("maximumFee"),(0,ya.u16)("transferFeeBasisPoints")],r)}var qh=(0,ya.struct)([At("transferFeeConfigAuthority"),At("withdrawWithheldAuthority"),Kt("withheldAmount"),zh("olderTransferFee"),zh("newerTransferFee")]),Wh=qh.span,jh=(0,ya.struct)([Kt("withheldAmount")]),Gh=jh.span;function Vw(r){let e=Fr(1,r.tlvData);return e!==null?qh.decode(e):null}function Yw(r){let e=Fr(2,r.tlvData);return e!==null?jh.decode(e):null}var li=(k=>(k[k.Uninitialized=0]="Uninitialized",k[k.TransferFeeConfig=1]="TransferFeeConfig",k[k.TransferFeeAmount=2]="TransferFeeAmount",k[k.MintCloseAuthority=3]="MintCloseAuthority",k[k.ConfidentialTransferMint=4]="ConfidentialTransferMint",k[k.ConfidentialTransferAccount=5]="ConfidentialTransferAccount",k[k.DefaultAccountState=6]="DefaultAccountState",k[k.ImmutableOwner=7]="ImmutableOwner",k[k.MemoTransfer=8]="MemoTransfer",k[k.NonTransferable=9]="NonTransferable",k[k.InterestBearingMint=10]="InterestBearingMint",k))(li||{}),Mo=2,Df=2;function _m(r){switch(r){case 0:return 0;case 1:return Wh;case 2:return Gh;case 3:return Oh;case 4:return 97;case 5:return 286;case 6:return Ah;case 7:return _h;case 8:return Rh;case 9:return Dh;case 10:return Mh;default:throw Error(`Unknown extension type: ${r}`)}}function km(r){switch(r){case 1:return 2;case 4:return 5;case 2:case 5:case 6:case 7:case 8:case 3:case 9:case 0:case 10:return 0}}function Mm(r,e){if(r.length===0)return e;{let t=Vr+_o+r.filter((n,i)=>i===r.indexOf(n)).map(n=>_m(n)+Mo+Df).reduce((n,i)=>n+i);return t===zn?t+Mo:t}}function ms(r){return Mm(r,to)}function Of(r){return Mm(r,Vr)}function Fr(r,e){let t=0;for(;t(i[i.MintTokens=0]="MintTokens",i[i.FreezeAccount=1]="FreezeAccount",i[i.AccountOwner=2]="AccountOwner",i[i.CloseAccount=3]="CloseAccount",i))(Lm||{}),Ds=(0,va.struct)([(0,va.u8)("instruction"),(0,va.u8)("authorityType"),(0,va.u8)("newAuthorityOption"),At("newAuthority")]);function dd(r,e,t,n,i=[],o=X){let a=Zt([{pubkey:r,isSigner:!1,isWritable:!0}],e,i),h=Buffer.alloc(Ds.span);return Ds.encode({instruction:6,authorityType:t,newAuthorityOption:n?1:0,newAuthority:n||new Re(0)},h),new de({keys:a,programId:o,data:h})}function ld(r,e=X){if(!r.programId.equals(e))throw new ze;if(r.data.length!==Ds.span)throw new Le;let{keys:{account:t,currentAuthority:n,multiSigners:i},data:o}=Um(r);if(o.instruction!==6)throw new De;if(!t||!n)throw new qe;return{programId:e,keys:{account:t,currentAuthority:n,multiSigners:i},data:o}}function Um({programId:r,keys:[e,t,...n],data:i}){let{instruction:o,authorityType:a,newAuthorityOption:h,newAuthority:y}=Ds.decode(i);return{programId:r,keys:{account:e,currentAuthority:t,multiSigners:n},data:{instruction:o,authorityType:a,newAuthority:h?y:null}}}async function a4(r,e,t,n,i,o,a=[],h,y=X){let[I,_]=Rt(n,a),k=new me().add(dd(t,I,i,o,a,y));return await Ce(r,k,[e,..._],h)}async function s4(r,e,t,n,i=X){let o=new me().add(Bs(t,i));return await Ce(r,o,[e],n)}var Wf=Fe(wt(),1);var Ks=(0,Wf.struct)([(0,Wf.u8)("instruction")]);function pd(r,e,t,n=[],i=X){let o=Zt([{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1}],t,n),a=Buffer.alloc(Ks.span);return Ks.encode({instruction:11},a),new de({keys:o,programId:i,data:a})}function bd(r,e=X){if(!r.programId.equals(e))throw new ze;if(r.data.length!==Ks.span)throw new Le;let{keys:{account:t,mint:n,authority:i,multiSigners:o},data:a}=Fm(r);if(a.instruction!==11)throw new De;if(!t||!n||!i)throw new qe;return{programId:e,keys:{account:t,mint:n,authority:i,multiSigners:o},data:a}}function Fm({programId:r,keys:[e,t,n,...i],data:o}){return{programId:r,keys:{account:e,mint:t,authority:n,multiSigners:i},data:Ks.decode(o)}}async function c4(r,e,t,n,i,o=[],a,h=X){let[y,I]=Rt(i,o),_=new me().add(pd(t,n,y,o,h));return await Ce(r,_,[e,...I],a)}var jf=Fe(wt(),1);var Ls=(0,jf.struct)([(0,jf.u8)("instruction"),Kt("amount")]);function md(r,e,t,n,i=[],o=X){let a=Zt([{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0}],t,i),h=Buffer.alloc(Ls.span);return Ls.encode({instruction:3,amount:BigInt(n)},h),new de({keys:a,programId:o,data:h})}function yd(r,e=X){if(!r.programId.equals(e))throw new ze;if(r.data.length!==Ls.span)throw new Le;let{keys:{source:t,destination:n,owner:i,multiSigners:o},data:a}=zm(r);if(a.instruction!==3)throw new De;if(!t||!n||!i)throw new qe;return{programId:e,keys:{source:t,destination:n,owner:i,multiSigners:o},data:a}}function zm({programId:r,keys:[e,t,n,...i],data:o}){return{programId:r,keys:{source:e,destination:t,owner:n,multiSigners:i},data:Ls.decode(o)}}async function f4(r,e,t,n,i,o,a=[],h,y=X){let[I,_]=Rt(i,a),k=new me().add(md(t,n,I,o,a,y));return await Ce(r,k,[e,..._],h)}var Us=Fe(wt(),1);var Fs=(0,Us.struct)([(0,Us.u8)("instruction"),Kt("amount"),(0,Us.u8)("decimals")]);function gd(r,e,t,n,i,o,a=[],h=X){let y=Zt([{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0}],n,a),I=Buffer.alloc(Fs.span);return Fs.encode({instruction:12,amount:BigInt(i),decimals:o},I),new de({keys:y,programId:h,data:I})}function vd(r,e=X){if(!r.programId.equals(e))throw new ze;if(r.data.length!==Fs.span)throw new Le;let{keys:{source:t,mint:n,destination:i,owner:o,multiSigners:a},data:h}=qm(r);if(h.instruction!==12)throw new De;if(!t||!n||!i||!o)throw new qe;return{programId:e,keys:{source:t,mint:n,destination:i,owner:o,multiSigners:a},data:h}}function qm({programId:r,keys:[e,t,n,i,...o],data:a}){return{programId:r,keys:{source:e,mint:t,destination:n,owner:i,multiSigners:o},data:Fs.decode(a)}}async function u4(r,e,t,n,i,o,a,h,y=[],I,_=X){let[k,K]=Rt(o,y),D=new me().add(gd(t,n,i,k,a,h,y,_));return await Ce(r,D,[e,...K],I)}var kn=Fe(wt(),1);function xd(r,e,t=X){let n=[{pubkey:r,isSigner:!1,isWritable:!1}],i=Buffer.from(e,"utf8"),o=(0,kn.struct)([(0,kn.u8)("instruction"),(0,kn.blob)(i.length,"amount")]),a=Buffer.alloc(o.span);return o.encode({instruction:24,amount:i},a),new de({keys:n,programId:t,data:a})}function wd(r,e=X){if(!r.programId.equals(e))throw new ze;let t=(0,kn.struct)([(0,kn.u8)("instruction"),(0,kn.blob)(r.data.length-1,"amount")]);if(r.data.length!==t.span)throw new Le;let{keys:{mint:n},data:i}=Wm(r);if(i.instruction!==24)throw new De;if(!n)throw new qe;return{programId:e,keys:{mint:n},data:i}}function Wm({programId:r,keys:[e],data:t}){let n=(0,kn.struct)([(0,kn.u8)("instruction"),(0,kn.blob)(t.length-1,"amount")]);return{programId:r,keys:{mint:e},data:n.decode(t)}}async function h4(r,e,t,n,i=X){let o=new me().add(xd(t,n,i)),{returnData:a,err:h}=(await r.simulateTransaction(o,[e],!1)).value;if(a){let y=Buffer.from(a.data[0],a.data[1]);return Kt().decode(y)}return h}var xa=Fe(wt(),1);var zs=(0,xa.struct)([(0,xa.u8)("instruction"),(0,xa.u8)("decimals"),At("mintAuthority"),(0,xa.u8)("freezeAuthorityOption"),At("freezeAuthority")]);function Id(r,e,t,n,i=X){let o=[{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:pn,isSigner:!1,isWritable:!1}],a=Buffer.alloc(zs.span);return zs.encode({instruction:0,decimals:e,mintAuthority:t,freezeAuthorityOption:n?1:0,freezeAuthority:n||new Re(0)},a),new de({keys:o,programId:i,data:a})}function Ad(r,e=X){if(!r.programId.equals(e))throw new ze;if(r.data.length!==zs.span)throw new Le;let{keys:{mint:t,rent:n},data:i}=jm(r);if(i.instruction!==0)throw new De;if(!t||!n)throw new qe;return{programId:e,keys:{mint:t,rent:n},data:i}}function jm({programId:r,keys:[e,t],data:n}){let{instruction:i,decimals:o,mintAuthority:a,freezeAuthorityOption:h,freezeAuthority:y}=zs.decode(n);return{programId:r,keys:{mint:e,rent:t},data:{instruction:i,decimals:o,mintAuthority:a,freezeAuthority:h?y:null}}}var qn=Fe(wt(),1);var Gm=(t=>(t[t.Initialize=0]="Initialize",t[t.UpdateRate=1]="UpdateRate",t))(Gm||{}),Sd=(0,qn.struct)([(0,qn.u8)("instruction"),(0,qn.u8)("interestBearingMintInstruction"),At("rateAuthority"),(0,qn.s16)("rate")]),_d=(0,qn.struct)([(0,qn.u8)("instruction"),(0,qn.u8)("interestBearingMintInstruction"),(0,qn.s16)("rate")]);function kd(r,e,t,n=Ot){let i=[{pubkey:r,isSigner:!1,isWritable:!0}],o=Buffer.alloc(Sd.span);return Sd.encode({instruction:33,interestBearingMintInstruction:0,rateAuthority:e,rate:t},o),new de({keys:i,programId:n,data:o})}function Md(r,e,t,n=[],i=Ot){let o=Zt([{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!n.length,isWritable:!1}],e,n),a=Buffer.alloc(_d.span);return _d.encode({instruction:33,interestBearingMintInstruction:1,rate:t},a),new de({keys:o,programId:i,data:a})}async function d4(r,e,t,n,i,o,a,h=ln.generate(),y,I=Ot){let _=ms([10]),k=await r.getMinimumBalanceForRentExemption(_),K=new me().add(Dt.createAccount({fromPubkey:e.publicKey,newAccountPubkey:h.publicKey,space:_,lamports:k,programId:I}),kd(h.publicKey,i,o,I),Id(h.publicKey,a,t,n,I));return await Ce(r,K,[e,h],y),h.publicKey}async function l4(r,e,t,n,i,o=[],a,h=Ot){let[y,I]=Rt(n,o),_=new me().add(Md(t,y,i,I,h));return await Ce(r,_,[e,n,...I],a)}var Vm=Fe(wt(),1);var Gf=Fe(wt(),1);var qs=(0,Gf.struct)([(0,Gf.u8)("instruction"),At("owner")]);function p4(r,e,t,n=X){let i=[{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:pn,isSigner:!1,isWritable:!1}],o=Buffer.alloc(qs.span);return qs.encode({instruction:16,owner:t},o),new de({keys:i,programId:n,data:o})}function Ed(r,e=X){if(!r.programId.equals(e))throw new ze;if(r.data.length!==qs.span)throw new Le;let{keys:{account:t,mint:n,rent:i},data:o}=$m(r);if(o.instruction!==16)throw new De;if(!t||!n||!i)throw new qe;return{programId:e,keys:{account:t,mint:n,rent:i},data:o}}function $m({programId:r,keys:[e,t,n],data:i}){return{programId:r,keys:{account:e,mint:t,rent:n},data:qs.decode(i)}}var $f=Fe(wt(),1);var Ws=(0,$f.struct)([(0,$f.u8)("instruction"),At("owner")]);function b4(r,e,t,n=X){let i=[{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1}],o=Buffer.alloc(Ws.span);return Ws.encode({instruction:18,owner:t},o),new de({keys:i,programId:n,data:o})}function Td(r,e=X){if(!r.programId.equals(e))throw new ze;if(r.data.length!==Ws.span)throw new Le;let{keys:{account:t,mint:n},data:i}=Hm(r);if(i.instruction!==18)throw new De;if(!t||!n)throw new qe;return{programId:e,keys:{account:t,mint:n},data:i}}function Hm({programId:r,keys:[e,t],data:n}){return{programId:r,keys:{account:e,mint:t},data:Ws.decode(n)}}function m4(r,e=X){if(!r.data.length)throw new Le;let t=(0,Vm.u8)().decode(r.data);if(t===0)return Ad(r,e);if(t===1)return Hh(r,e);if(t===2)return ed(r,e);if(t===3)return yd(r,e);if(t===4)return nh(r,e);if(t===5)return hd(r,e);if(t===6)return ld(r,e);if(t===7)return sd(r,e);if(t===8)return sh(r,e);if(t===9)return hh(r,e);if(t===10)return od(r,e);if(t===11)return bd(r,e);if(t===12)return vd(r,e);if(t===13)return oh(r,e);if(t===14)return fd(r,e);if(t===15)return fh(r,e);if(t===16)return Ed(r,e);if(t===17)return nd(r,e);if(t===18)return Td(r,e);if(t===20)return Xh(r,e);if(t===23)return th(r,e);if(t===24)return wd(r,e);throw t===19?new De:new De}function y4(r){return r.data.instruction===0}function g4(r){return r.data.instruction===1}function v4(r){return r.data.instruction===2}function x4(r){return r.data.instruction===3}function w4(r){return r.data.instruction===4}function I4(r){return r.data.instruction===5}function A4(r){return r.data.instruction===6}function S4(r){return r.data.instruction===7}function _4(r){return r.data.instruction===8}function k4(r){return r.data.instruction===9}function M4(r){return r.data.instruction===10}function E4(r){return r.data.instruction===11}function T4(r){return r.data.instruction===12}function B4(r){return r.data.instruction===13}function P4(r){return r.data.instruction===14}function R4(r){return r.data.instruction===15}function C4(r){return r.data.instruction===16}function O4(r){return r.data.instruction===17}function N4(r){return r.data.instruction===18}function D4(r){return r.data.instruction===20}function K4(r){return r.data.instruction===23}function L4(r){return r.data.instruction===24}var Hf=Fe(wt(),1);var js=(0,Hf.struct)([(0,Hf.u8)("instruction")]);function U4(r,e){let t=[{pubkey:r,isSigner:!1,isWritable:!0}],n=Buffer.alloc(js.span);return js.encode({instruction:22},n),new de({keys:t,programId:e,data:n})}function F4(r,e){if(!r.programId.equals(e))throw new ze;if(r.data.length!==js.span)throw new Le;let{keys:{account:t},data:n}=Ym(r);if(n.instruction!==22)throw new De;if(!t)throw new qe;return{programId:e,keys:{account:t},data:n}}function Ym({programId:r,keys:[e],data:t}){let{instruction:n}=js.decode(t);return{programId:r,keys:{account:e},data:{instruction:n}}}var Gs=Fe(wt(),1);var $s=(0,Gs.struct)([(0,Gs.u8)("instruction"),(0,Gs.u8)("closeAuthorityOption"),At("closeAuthority")]);function z4(r,e,t){if(!lr(t))throw new fr;let n=[{pubkey:r,isSigner:!1,isWritable:!0}],i=Buffer.alloc($s.span);return $s.encode({instruction:25,closeAuthorityOption:e?1:0,closeAuthority:e||new Re(0)},i),new de({keys:n,programId:t,data:i})}function q4(r,e){if(!r.programId.equals(e))throw new ze;if(r.data.length!==$s.span)throw new Le;let{keys:{mint:t},data:n}=Zm(r);if(n.instruction!==25)throw new De;if(!t)throw new qe;return{programId:e,keys:{mint:t},data:n}}function Zm({programId:r,keys:[e],data:t}){let{instruction:n,closeAuthorityOption:i,closeAuthority:o}=$s.decode(t);return{programId:r,keys:{mint:e},data:{instruction:n,closeAuthority:i?o:null}}}var no=Fe(wt(),1);function W4(r,e,t,n,i=[],o=Ot){if(!lr(o))throw new fr;let a=[{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:Dt.programId,isSigner:!1,isWritable:!1}],h=Zt(a,n,i),y=(0,no.struct)([(0,no.u8)("instruction"),(0,no.seq)((0,no.u16)(),t.length,"extensionTypes")]),I=Buffer.alloc(y.span);return y.encode({instruction:29,extensionTypes:t},I),new de({keys:h,programId:o,data:I})}var Vf=Fe(wt(),1);var Bd=(0,Vf.struct)([(0,Vf.u8)("instruction")]);function j4(r,e){if(!lr(e))throw new fr;let t=[{pubkey:r,isSigner:!1,isWritable:!0}],n=Buffer.alloc(Bd.span);return Bd.encode({instruction:32},n),new de({keys:t,programId:e,data:n})}return Yf(G4);})(); +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ +/** + * Support for translating between Uint8Array instances and JavaScript + * native types. + * + * {@link module:Layout~Layout|Layout} is the basis of a class + * hierarchy that associates property names with sequences of encoded + * bytes. + * + * Layouts are supported for these scalar (numeric) types: + * * {@link module:Layout~UInt|Unsigned integers in little-endian + * format} with {@link module:Layout.u8|8-bit}, {@link + * module:Layout.u16|16-bit}, {@link module:Layout.u24|24-bit}, + * {@link module:Layout.u32|32-bit}, {@link + * module:Layout.u40|40-bit}, and {@link module:Layout.u48|48-bit} + * representation ranges; + * * {@link module:Layout~UIntBE|Unsigned integers in big-endian + * format} with {@link module:Layout.u16be|16-bit}, {@link + * module:Layout.u24be|24-bit}, {@link module:Layout.u32be|32-bit}, + * {@link module:Layout.u40be|40-bit}, and {@link + * module:Layout.u48be|48-bit} representation ranges; + * * {@link module:Layout~Int|Signed integers in little-endian + * format} with {@link module:Layout.s8|8-bit}, {@link + * module:Layout.s16|16-bit}, {@link module:Layout.s24|24-bit}, + * {@link module:Layout.s32|32-bit}, {@link + * module:Layout.s40|40-bit}, and {@link module:Layout.s48|48-bit} + * representation ranges; + * * {@link module:Layout~IntBE|Signed integers in big-endian format} + * with {@link module:Layout.s16be|16-bit}, {@link + * module:Layout.s24be|24-bit}, {@link module:Layout.s32be|32-bit}, + * {@link module:Layout.s40be|40-bit}, and {@link + * module:Layout.s48be|48-bit} representation ranges; + * * 64-bit integral values that decode to an exact (if magnitude is + * less than 2^53) or nearby integral Number in {@link + * module:Layout.nu64|unsigned little-endian}, {@link + * module:Layout.nu64be|unsigned big-endian}, {@link + * module:Layout.ns64|signed little-endian}, and {@link + * module:Layout.ns64be|unsigned big-endian} encodings; + * * 32-bit floating point values with {@link + * module:Layout.f32|little-endian} and {@link + * module:Layout.f32be|big-endian} representations; + * * 64-bit floating point values with {@link + * module:Layout.f64|little-endian} and {@link + * module:Layout.f64be|big-endian} representations; + * * {@link module:Layout.const|Constants} that take no space in the + * encoded expression. + * + * and for these aggregate types: + * * {@link module:Layout.seq|Sequence}s of instances of a {@link + * module:Layout~Layout|Layout}, with JavaScript representation as + * an Array and constant or data-dependent {@link + * module:Layout~Sequence#count|length}; + * * {@link module:Layout.struct|Structure}s that aggregate a + * heterogeneous sequence of {@link module:Layout~Layout|Layout} + * instances, with JavaScript representation as an Object; + * * {@link module:Layout.union|Union}s that support multiple {@link + * module:Layout~VariantLayout|variant layouts} over a fixed + * (padded) or variable (not padded) span of bytes, using an + * unsigned integer at the start of the data or a separate {@link + * module:Layout.unionLayoutDiscriminator|layout element} to + * determine which layout to use when interpreting the buffer + * contents; + * * {@link module:Layout.bits|BitStructure}s that contain a sequence + * of individual {@link + * module:Layout~BitStructure#addField|BitField}s packed into an 8, + * 16, 24, or 32-bit unsigned integer starting at the least- or + * most-significant bit; + * * {@link module:Layout.cstr|C strings} of varying length; + * * {@link module:Layout.blob|Blobs} of fixed- or variable-{@link + * module:Layout~Blob#length|length} raw data. + * + * All {@link module:Layout~Layout|Layout} instances are immutable + * after construction, to prevent internal state from becoming + * inconsistent. + * + * @local Layout + * @local ExternalLayout + * @local GreedyCount + * @local OffsetLayout + * @local UInt + * @local UIntBE + * @local Int + * @local IntBE + * @local NearUInt64 + * @local NearUInt64BE + * @local NearInt64 + * @local NearInt64BE + * @local Float + * @local FloatBE + * @local Double + * @local DoubleBE + * @local Sequence + * @local Structure + * @local UnionDiscriminator + * @local UnionLayoutDiscriminator + * @local Union + * @local VariantLayout + * @local BitStructure + * @local BitField + * @local Boolean + * @local Blob + * @local CString + * @local Constant + * @local bindConstructorLayout + * @module Layout + * @license MIT + * @author Peter A. Bigot + * @see {@link https://github.com/pabigot/buffer-layout|buffer-layout on GitHub} + */ +/** + * [js-sha3]{@link https://github.com/emn178/js-sha3} + * + * @version 0.8.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2015-2018 + * @license MIT + */ +//# sourceMappingURL=index.js.map diff --git a/static/js/splToken/index.js.map b/static/js/splToken/index.js.map new file mode 100644 index 00000000..523ccdd4 --- /dev/null +++ b/static/js/splToken/index.js.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["(disabled):crypto", "../node_modules/tweetnacl/nacl-fast.js", "../node_modules/base64-js/index.js", "../node_modules/ieee754/index.js", "../node_modules/@solana/web3.js/node_modules/buffer/index.js", "../node_modules/buffer/index.js", "../node_modules/bn.js/lib/bn.js", "../node_modules/buffer/index.js", "../node_modules/safe-buffer/index.js", "../node_modules/base-x/src/index.js", "../node_modules/bs58/index.js", "../node_modules/text-encoding-utf-8/lib/encoding.lib.js", "../node_modules/borsh/lib/index.js", "../node_modules/@solana/buffer-layout/src/Layout.ts", "../node_modules/bigint-buffer/dist/browser.js", "../node_modules/@babel/runtime/helpers/interopRequireDefault.js", "../node_modules/@babel/runtime/helpers/createClass.js", "../node_modules/@babel/runtime/helpers/classCallCheck.js", "../node_modules/@babel/runtime/helpers/setPrototypeOf.js", "../node_modules/@babel/runtime/helpers/inherits.js", "../node_modules/@babel/runtime/helpers/typeof.js", "../node_modules/@babel/runtime/helpers/assertThisInitialized.js", "../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js", "../node_modules/@babel/runtime/helpers/getPrototypeOf.js", "../node_modules/eventemitter3/index.js", "../node_modules/rpc-websockets/dist/lib/client/websocket.browser.js", "../node_modules/@babel/runtime/helpers/regeneratorRuntime.js", "../node_modules/@babel/runtime/regenerator/index.js", "../node_modules/@babel/runtime/helpers/asyncToGenerator.js", "../node_modules/rpc-websockets/dist/lib/client.js", "../node_modules/rpc-websockets/dist/index.browser.js", "../node_modules/uuid/dist/esm-browser/rng.js", "../node_modules/uuid/dist/esm-browser/regex.js", "../node_modules/uuid/dist/esm-browser/validate.js", "../node_modules/uuid/dist/esm-browser/stringify.js", "../node_modules/uuid/dist/esm-browser/v1.js", "../node_modules/uuid/dist/esm-browser/parse.js", "../node_modules/uuid/dist/esm-browser/v35.js", "../node_modules/uuid/dist/esm-browser/md5.js", "../node_modules/uuid/dist/esm-browser/v3.js", "../node_modules/uuid/dist/esm-browser/v4.js", "../node_modules/uuid/dist/esm-browser/sha1.js", "../node_modules/uuid/dist/esm-browser/v5.js", "../node_modules/uuid/dist/esm-browser/nil.js", "../node_modules/uuid/dist/esm-browser/version.js", "../node_modules/uuid/dist/esm-browser/index.js", "../node_modules/jayson/lib/generateRequest.js", "../node_modules/jayson/lib/client/browser/index.js", "../node_modules/secp256k1/lib/index.js", "../node_modules/elliptic/node_modules/bn.js/lib/bn.js", "../node_modules/minimalistic-assert/index.js", "../node_modules/minimalistic-crypto-utils/lib/utils.js", "../node_modules/elliptic/lib/elliptic/utils.js", "../node_modules/brorand/index.js", "../node_modules/elliptic/lib/elliptic/curve/base.js", "../node_modules/inherits/inherits_browser.js", "../node_modules/elliptic/lib/elliptic/curve/short.js", "../node_modules/elliptic/lib/elliptic/curve/mont.js", "../node_modules/elliptic/lib/elliptic/curve/edwards.js", "../node_modules/elliptic/lib/elliptic/curve/index.js", "../node_modules/hash.js/lib/hash/utils.js", "../node_modules/hash.js/lib/hash/common.js", "../node_modules/hash.js/lib/hash/sha/common.js", "../node_modules/hash.js/lib/hash/sha/1.js", "../node_modules/hash.js/lib/hash/sha/256.js", "../node_modules/hash.js/lib/hash/sha/224.js", "../node_modules/hash.js/lib/hash/sha/512.js", "../node_modules/hash.js/lib/hash/sha/384.js", "../node_modules/hash.js/lib/hash/sha.js", "../node_modules/hash.js/lib/hash/ripemd.js", "../node_modules/hash.js/lib/hash/hmac.js", "../node_modules/hash.js/lib/hash.js", "../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js", "../node_modules/elliptic/lib/elliptic/curves.js", "../node_modules/hmac-drbg/lib/hmac-drbg.js", "../node_modules/elliptic/lib/elliptic/ec/key.js", "../node_modules/elliptic/lib/elliptic/ec/signature.js", "../node_modules/elliptic/lib/elliptic/ec/index.js", "../node_modules/elliptic/lib/elliptic/eddsa/key.js", "../node_modules/elliptic/lib/elliptic/eddsa/signature.js", "../node_modules/elliptic/lib/elliptic/eddsa/index.js", "../node_modules/elliptic/lib/elliptic.js", "../node_modules/secp256k1/lib/elliptic.js", "../node_modules/secp256k1/elliptic.js", "../node_modules/js-sha3/src/sha3.js", "../src/index.ts", "../node_modules/superstruct/src/error.ts", "../node_modules/superstruct/src/utils.ts", "../node_modules/superstruct/src/struct.ts", "../node_modules/superstruct/src/structs/utilities.ts", "../node_modules/superstruct/src/structs/types.ts", "../node_modules/superstruct/src/structs/coercions.ts", "../node_modules/superstruct/src/structs/refinements.ts", "../node_modules/@solana/web3.js/src/utils/to-buffer.ts", "../node_modules/@solana/web3.js/node_modules/minimalistic-assert/index.js", "../node_modules/@solana/web3.js/node_modules/inherits/inherits_browser.js", "../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/utils.js", "../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/common.js", "../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/sha/common.js", "../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/sha/1.js", "../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/sha/256.js", "../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/sha/224.js", "../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/sha/512.js", "../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/sha/384.js", "../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/sha.js", "../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/ripemd.js", "../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash/hmac.js", "../node_modules/@solana/web3.js/node_modules/hash.js/lib/hash.js", "../node_modules/@solana/web3.js/node_modules/@ethersproject/logger/lib.esm/_version.js", "../node_modules/@solana/web3.js/node_modules/@ethersproject/logger/lib.esm/index.js", "../node_modules/@solana/web3.js/node_modules/@ethersproject/bytes/lib.esm/_version.js", "../node_modules/@solana/web3.js/node_modules/@ethersproject/bytes/lib.esm/index.js", "../node_modules/@solana/web3.js/node_modules/@ethersproject/sha2/lib.esm/_version.js", "../node_modules/@solana/web3.js/node_modules/@ethersproject/sha2/lib.esm/sha2.js", "../node_modules/@solana/web3.js/src/utils/borsh-schema.ts", "../node_modules/@solana/web3.js/src/publickey.ts", "../node_modules/@solana/web3.js/src/account.ts", "../node_modules/@solana/web3.js/src/bpf-loader-deprecated.ts", "../node_modules/@solana/web3.js/src/transaction/constants.ts", "../node_modules/@solana/web3.js/src/transaction/expiry-custom-errors.ts", "../node_modules/@solana/web3.js/src/layout.ts", "../node_modules/@solana/web3.js/src/utils/shortvec-encoding.ts", "../node_modules/@solana/web3.js/src/message/legacy.ts", "../node_modules/@solana/web3.js/src/utils/assert.ts", "../node_modules/@solana/web3.js/src/transaction/legacy.ts", "../node_modules/@solana/web3.js/src/sysvar.ts", "../node_modules/@solana/web3.js/src/utils/send-and-confirm-transaction.ts", "../node_modules/@solana/web3.js/src/utils/sleep.ts", "../node_modules/@solana/web3.js/src/instruction.ts", "../node_modules/@solana/web3.js/src/fee-calculator.ts", "../node_modules/@solana/web3.js/src/nonce-account.ts", "../node_modules/@solana/web3.js/src/utils/bigint.ts", "../node_modules/@solana/web3.js/src/programs/system.ts", "../node_modules/@solana/web3.js/src/loader.ts", "../node_modules/@solana/web3.js/src/bpf-loader.ts", "../node_modules/@solana/web3.js/node_modules/fast-stable-stringify/index.js", "../node_modules/@solana/web3.js/src/epoch-schedule.ts", "../node_modules/@solana/web3.js/src/errors.ts", "../node_modules/@solana/web3.js/src/__forks__/browser/fetch-impl.ts", "../node_modules/@solana/web3.js/src/timing.ts", "../node_modules/@solana/web3.js/src/account-data.ts", "../node_modules/@solana/web3.js/src/programs/address-lookup-table/state.ts", "../node_modules/@solana/web3.js/src/utils/url-impl.ts", "../node_modules/@solana/web3.js/src/utils/makeWebsocketUrl.ts", "../node_modules/@solana/web3.js/src/connection.ts", "../node_modules/@solana/web3.js/src/keypair.ts", "../node_modules/@solana/web3.js/src/programs/address-lookup-table/index.ts", "../node_modules/@solana/web3.js/src/programs/compute-budget.ts", "../node_modules/@solana/web3.js/src/programs/ed25519.ts", "../node_modules/@solana/web3.js/src/programs/secp256k1.ts", "../node_modules/@solana/web3.js/src/programs/stake.ts", "../node_modules/@solana/web3.js/src/programs/vote.ts", "../node_modules/@solana/web3.js/src/validator-info.ts", "../node_modules/@solana/web3.js/src/vote-account.ts", "../node_modules/@solana/web3.js/src/utils/cluster.ts", "../node_modules/@solana/web3.js/src/utils/send-and-confirm-raw-transaction.ts", "../node_modules/@solana/web3.js/src/index.ts", "../src/constants.ts", "../src/instructions/amountToUiAmount.ts", "../node_modules/@solana/buffer-layout-utils/src/base.ts", "../node_modules/@solana/buffer-layout-utils/src/bigint.ts", "../node_modules/bignumber.js/bignumber.mjs", "../node_modules/@solana/buffer-layout-utils/src/decimal.ts", "../node_modules/@solana/buffer-layout-utils/src/native.ts", "../node_modules/@solana/buffer-layout-utils/src/web3.ts", "../src/errors.ts", "../src/instructions/types.ts", "../src/actions/amountToUiAmount.ts", "../src/instructions/approve.ts", "../src/instructions/internal.ts", "../src/actions/internal.ts", "../src/actions/approve.ts", "../src/instructions/approveChecked.ts", "../src/actions/approveChecked.ts", "../src/instructions/burn.ts", "../src/actions/burn.ts", "../src/instructions/burnChecked.ts", "../src/actions/burnChecked.ts", "../src/instructions/closeAccount.ts", "../src/actions/closeAccount.ts", "../src/state/account.ts", "../src/extensions/accountType.ts", "../src/state/multisig.ts", "../src/state/mint.ts", "../src/extensions/defaultAccountState/instructions.ts", "../src/extensions/defaultAccountState/actions.ts", "../src/extensions/defaultAccountState/state.ts", "../src/extensions/immutableOwner.ts", "../src/extensions/interestBearingMint/state.ts", "../src/extensions/memoTransfer/instructions.ts", "../src/extensions/memoTransfer/actions.ts", "../src/extensions/memoTransfer/state.ts", "../src/extensions/mintCloseAuthority.ts", "../src/extensions/nonTransferable.ts", "../src/extensions/transferFee/instructions.ts", "../src/extensions/transferFee/actions.ts", "../src/extensions/transferFee/state.ts", "../src/extensions/extensionType.ts", "../src/instructions/initializeAccount.ts", "../src/instructions/associatedTokenAccount.ts", "../src/actions/createAssociatedTokenAccount.ts", "../src/actions/createAccount.ts", "../src/actions/createAssociatedTokenAccountIdempotent.ts", "../src/instructions/initializeMint2.ts", "../src/actions/createMint.ts", "../src/instructions/initializeMultisig.ts", "../src/actions/createMultisig.ts", "../src/instructions/createNativeMint.ts", "../src/actions/createNativeMint.ts", "../src/instructions/syncNative.ts", "../src/actions/createWrappedNativeAccount.ts", "../src/instructions/freezeAccount.ts", "../src/actions/freezeAccount.ts", "../src/actions/getOrCreateAssociatedTokenAccount.ts", "../src/instructions/mintTo.ts", "../src/actions/mintTo.ts", "../src/instructions/mintToChecked.ts", "../src/actions/mintToChecked.ts", "../src/instructions/revoke.ts", "../src/actions/revoke.ts", "../src/instructions/setAuthority.ts", "../src/actions/setAuthority.ts", "../src/actions/syncNative.ts", "../src/instructions/thawAccount.ts", "../src/actions/thawAccount.ts", "../src/instructions/transfer.ts", "../src/actions/transfer.ts", "../src/instructions/transferChecked.ts", "../src/actions/transferChecked.ts", "../src/instructions/uiAmountToAmount.ts", "../src/actions/uiAmountToAmount.ts", "../src/instructions/initializeMint.ts", "../src/extensions/interestBearingMint/instructions.ts", "../src/extensions/interestBearingMint/actions.ts", "../src/instructions/decode.ts", "../src/instructions/initializeAccount2.ts", "../src/instructions/initializeAccount3.ts", "../src/instructions/initializeImmutableOwner.ts", "../src/instructions/initializeMintCloseAuthority.ts", "../src/instructions/reallocate.ts", "../src/instructions/initializeNonTransferableMint.ts"], + "sourcesContent": ["", "(function(nacl) {\n'use strict';\n\n// Ported in 2014 by Dmitry Chestnykh and Devi Mandiri.\n// Public domain.\n//\n// Implementation derived from TweetNaCl version 20140427.\n// See for details: http://tweetnacl.cr.yp.to/\n\nvar gf = function(init) {\n var i, r = new Float64Array(16);\n if (init) for (i = 0; i < init.length; i++) r[i] = init[i];\n return r;\n};\n\n// Pluggable, initialized in high-level API below.\nvar randombytes = function(/* x, n */) { throw new Error('no PRNG'); };\n\nvar _0 = new Uint8Array(16);\nvar _9 = new Uint8Array(32); _9[0] = 9;\n\nvar gf0 = gf(),\n gf1 = gf([1]),\n _121665 = gf([0xdb41, 1]),\n D = gf([0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070, 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]),\n D2 = gf([0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0, 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]),\n X = gf([0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c, 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]),\n Y = gf([0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]),\n I = gf([0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\nfunction ts64(x, i, h, l) {\n x[i] = (h >> 24) & 0xff;\n x[i+1] = (h >> 16) & 0xff;\n x[i+2] = (h >> 8) & 0xff;\n x[i+3] = h & 0xff;\n x[i+4] = (l >> 24) & 0xff;\n x[i+5] = (l >> 16) & 0xff;\n x[i+6] = (l >> 8) & 0xff;\n x[i+7] = l & 0xff;\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i,d = 0;\n for (i = 0; i < n; i++) d |= x[xi+i]^y[yi+i];\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction crypto_verify_16(x, xi, y, yi) {\n return vn(x,xi,y,yi,16);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x,xi,y,yi,32);\n}\n\nfunction core_salsa20(o, p, k, c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n x0 = x0 + j0 | 0;\n x1 = x1 + j1 | 0;\n x2 = x2 + j2 | 0;\n x3 = x3 + j3 | 0;\n x4 = x4 + j4 | 0;\n x5 = x5 + j5 | 0;\n x6 = x6 + j6 | 0;\n x7 = x7 + j7 | 0;\n x8 = x8 + j8 | 0;\n x9 = x9 + j9 | 0;\n x10 = x10 + j10 | 0;\n x11 = x11 + j11 | 0;\n x12 = x12 + j12 | 0;\n x13 = x13 + j13 | 0;\n x14 = x14 + j14 | 0;\n x15 = x15 + j15 | 0;\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x1 >>> 0 & 0xff;\n o[ 5] = x1 >>> 8 & 0xff;\n o[ 6] = x1 >>> 16 & 0xff;\n o[ 7] = x1 >>> 24 & 0xff;\n\n o[ 8] = x2 >>> 0 & 0xff;\n o[ 9] = x2 >>> 8 & 0xff;\n o[10] = x2 >>> 16 & 0xff;\n o[11] = x2 >>> 24 & 0xff;\n\n o[12] = x3 >>> 0 & 0xff;\n o[13] = x3 >>> 8 & 0xff;\n o[14] = x3 >>> 16 & 0xff;\n o[15] = x3 >>> 24 & 0xff;\n\n o[16] = x4 >>> 0 & 0xff;\n o[17] = x4 >>> 8 & 0xff;\n o[18] = x4 >>> 16 & 0xff;\n o[19] = x4 >>> 24 & 0xff;\n\n o[20] = x5 >>> 0 & 0xff;\n o[21] = x5 >>> 8 & 0xff;\n o[22] = x5 >>> 16 & 0xff;\n o[23] = x5 >>> 24 & 0xff;\n\n o[24] = x6 >>> 0 & 0xff;\n o[25] = x6 >>> 8 & 0xff;\n o[26] = x6 >>> 16 & 0xff;\n o[27] = x6 >>> 24 & 0xff;\n\n o[28] = x7 >>> 0 & 0xff;\n o[29] = x7 >>> 8 & 0xff;\n o[30] = x7 >>> 16 & 0xff;\n o[31] = x7 >>> 24 & 0xff;\n\n o[32] = x8 >>> 0 & 0xff;\n o[33] = x8 >>> 8 & 0xff;\n o[34] = x8 >>> 16 & 0xff;\n o[35] = x8 >>> 24 & 0xff;\n\n o[36] = x9 >>> 0 & 0xff;\n o[37] = x9 >>> 8 & 0xff;\n o[38] = x9 >>> 16 & 0xff;\n o[39] = x9 >>> 24 & 0xff;\n\n o[40] = x10 >>> 0 & 0xff;\n o[41] = x10 >>> 8 & 0xff;\n o[42] = x10 >>> 16 & 0xff;\n o[43] = x10 >>> 24 & 0xff;\n\n o[44] = x11 >>> 0 & 0xff;\n o[45] = x11 >>> 8 & 0xff;\n o[46] = x11 >>> 16 & 0xff;\n o[47] = x11 >>> 24 & 0xff;\n\n o[48] = x12 >>> 0 & 0xff;\n o[49] = x12 >>> 8 & 0xff;\n o[50] = x12 >>> 16 & 0xff;\n o[51] = x12 >>> 24 & 0xff;\n\n o[52] = x13 >>> 0 & 0xff;\n o[53] = x13 >>> 8 & 0xff;\n o[54] = x13 >>> 16 & 0xff;\n o[55] = x13 >>> 24 & 0xff;\n\n o[56] = x14 >>> 0 & 0xff;\n o[57] = x14 >>> 8 & 0xff;\n o[58] = x14 >>> 16 & 0xff;\n o[59] = x14 >>> 24 & 0xff;\n\n o[60] = x15 >>> 0 & 0xff;\n o[61] = x15 >>> 8 & 0xff;\n o[62] = x15 >>> 16 & 0xff;\n o[63] = x15 >>> 24 & 0xff;\n}\n\nfunction core_hsalsa20(o,p,k,c) {\n var j0 = c[ 0] & 0xff | (c[ 1] & 0xff)<<8 | (c[ 2] & 0xff)<<16 | (c[ 3] & 0xff)<<24,\n j1 = k[ 0] & 0xff | (k[ 1] & 0xff)<<8 | (k[ 2] & 0xff)<<16 | (k[ 3] & 0xff)<<24,\n j2 = k[ 4] & 0xff | (k[ 5] & 0xff)<<8 | (k[ 6] & 0xff)<<16 | (k[ 7] & 0xff)<<24,\n j3 = k[ 8] & 0xff | (k[ 9] & 0xff)<<8 | (k[10] & 0xff)<<16 | (k[11] & 0xff)<<24,\n j4 = k[12] & 0xff | (k[13] & 0xff)<<8 | (k[14] & 0xff)<<16 | (k[15] & 0xff)<<24,\n j5 = c[ 4] & 0xff | (c[ 5] & 0xff)<<8 | (c[ 6] & 0xff)<<16 | (c[ 7] & 0xff)<<24,\n j6 = p[ 0] & 0xff | (p[ 1] & 0xff)<<8 | (p[ 2] & 0xff)<<16 | (p[ 3] & 0xff)<<24,\n j7 = p[ 4] & 0xff | (p[ 5] & 0xff)<<8 | (p[ 6] & 0xff)<<16 | (p[ 7] & 0xff)<<24,\n j8 = p[ 8] & 0xff | (p[ 9] & 0xff)<<8 | (p[10] & 0xff)<<16 | (p[11] & 0xff)<<24,\n j9 = p[12] & 0xff | (p[13] & 0xff)<<8 | (p[14] & 0xff)<<16 | (p[15] & 0xff)<<24,\n j10 = c[ 8] & 0xff | (c[ 9] & 0xff)<<8 | (c[10] & 0xff)<<16 | (c[11] & 0xff)<<24,\n j11 = k[16] & 0xff | (k[17] & 0xff)<<8 | (k[18] & 0xff)<<16 | (k[19] & 0xff)<<24,\n j12 = k[20] & 0xff | (k[21] & 0xff)<<8 | (k[22] & 0xff)<<16 | (k[23] & 0xff)<<24,\n j13 = k[24] & 0xff | (k[25] & 0xff)<<8 | (k[26] & 0xff)<<16 | (k[27] & 0xff)<<24,\n j14 = k[28] & 0xff | (k[29] & 0xff)<<8 | (k[30] & 0xff)<<16 | (k[31] & 0xff)<<24,\n j15 = c[12] & 0xff | (c[13] & 0xff)<<8 | (c[14] & 0xff)<<16 | (c[15] & 0xff)<<24;\n\n var x0 = j0, x1 = j1, x2 = j2, x3 = j3, x4 = j4, x5 = j5, x6 = j6, x7 = j7,\n x8 = j8, x9 = j9, x10 = j10, x11 = j11, x12 = j12, x13 = j13, x14 = j14,\n x15 = j15, u;\n\n for (var i = 0; i < 20; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u<<7 | u>>>(32-7);\n u = x4 + x0 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x4 | 0;\n x12 ^= u<<13 | u>>>(32-13);\n u = x12 + x8 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x1 | 0;\n x9 ^= u<<7 | u>>>(32-7);\n u = x9 + x5 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x9 | 0;\n x1 ^= u<<13 | u>>>(32-13);\n u = x1 + x13 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x6 | 0;\n x14 ^= u<<7 | u>>>(32-7);\n u = x14 + x10 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x14 | 0;\n x6 ^= u<<13 | u>>>(32-13);\n u = x6 + x2 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x11 | 0;\n x3 ^= u<<7 | u>>>(32-7);\n u = x3 + x15 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x3 | 0;\n x11 ^= u<<13 | u>>>(32-13);\n u = x11 + x7 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n\n u = x0 + x3 | 0;\n x1 ^= u<<7 | u>>>(32-7);\n u = x1 + x0 | 0;\n x2 ^= u<<9 | u>>>(32-9);\n u = x2 + x1 | 0;\n x3 ^= u<<13 | u>>>(32-13);\n u = x3 + x2 | 0;\n x0 ^= u<<18 | u>>>(32-18);\n\n u = x5 + x4 | 0;\n x6 ^= u<<7 | u>>>(32-7);\n u = x6 + x5 | 0;\n x7 ^= u<<9 | u>>>(32-9);\n u = x7 + x6 | 0;\n x4 ^= u<<13 | u>>>(32-13);\n u = x4 + x7 | 0;\n x5 ^= u<<18 | u>>>(32-18);\n\n u = x10 + x9 | 0;\n x11 ^= u<<7 | u>>>(32-7);\n u = x11 + x10 | 0;\n x8 ^= u<<9 | u>>>(32-9);\n u = x8 + x11 | 0;\n x9 ^= u<<13 | u>>>(32-13);\n u = x9 + x8 | 0;\n x10 ^= u<<18 | u>>>(32-18);\n\n u = x15 + x14 | 0;\n x12 ^= u<<7 | u>>>(32-7);\n u = x12 + x15 | 0;\n x13 ^= u<<9 | u>>>(32-9);\n u = x13 + x12 | 0;\n x14 ^= u<<13 | u>>>(32-13);\n u = x14 + x13 | 0;\n x15 ^= u<<18 | u>>>(32-18);\n }\n\n o[ 0] = x0 >>> 0 & 0xff;\n o[ 1] = x0 >>> 8 & 0xff;\n o[ 2] = x0 >>> 16 & 0xff;\n o[ 3] = x0 >>> 24 & 0xff;\n\n o[ 4] = x5 >>> 0 & 0xff;\n o[ 5] = x5 >>> 8 & 0xff;\n o[ 6] = x5 >>> 16 & 0xff;\n o[ 7] = x5 >>> 24 & 0xff;\n\n o[ 8] = x10 >>> 0 & 0xff;\n o[ 9] = x10 >>> 8 & 0xff;\n o[10] = x10 >>> 16 & 0xff;\n o[11] = x10 >>> 24 & 0xff;\n\n o[12] = x15 >>> 0 & 0xff;\n o[13] = x15 >>> 8 & 0xff;\n o[14] = x15 >>> 16 & 0xff;\n o[15] = x15 >>> 24 & 0xff;\n\n o[16] = x6 >>> 0 & 0xff;\n o[17] = x6 >>> 8 & 0xff;\n o[18] = x6 >>> 16 & 0xff;\n o[19] = x6 >>> 24 & 0xff;\n\n o[20] = x7 >>> 0 & 0xff;\n o[21] = x7 >>> 8 & 0xff;\n o[22] = x7 >>> 16 & 0xff;\n o[23] = x7 >>> 24 & 0xff;\n\n o[24] = x8 >>> 0 & 0xff;\n o[25] = x8 >>> 8 & 0xff;\n o[26] = x8 >>> 16 & 0xff;\n o[27] = x8 >>> 24 & 0xff;\n\n o[28] = x9 >>> 0 & 0xff;\n o[29] = x9 >>> 8 & 0xff;\n o[30] = x9 >>> 16 & 0xff;\n o[31] = x9 >>> 24 & 0xff;\n}\n\nfunction crypto_core_salsa20(out,inp,k,c) {\n core_salsa20(out,inp,k,c);\n}\n\nfunction crypto_core_hsalsa20(out,inp,k,c) {\n core_hsalsa20(out,inp,k,c);\n}\n\nvar sigma = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);\n // \"expand 32-byte k\"\n\nfunction crypto_stream_salsa20_xor(c,cpos,m,mpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n mpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = m[mpos+i] ^ x[i];\n }\n return 0;\n}\n\nfunction crypto_stream_salsa20(c,cpos,b,n,k) {\n var z = new Uint8Array(16), x = new Uint8Array(64);\n var u, i;\n for (i = 0; i < 16; i++) z[i] = 0;\n for (i = 0; i < 8; i++) z[i] = n[i];\n while (b >= 64) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < 64; i++) c[cpos+i] = x[i];\n u = 1;\n for (i = 8; i < 16; i++) {\n u = u + (z[i] & 0xff) | 0;\n z[i] = u & 0xff;\n u >>>= 8;\n }\n b -= 64;\n cpos += 64;\n }\n if (b > 0) {\n crypto_core_salsa20(x,z,k,sigma);\n for (i = 0; i < b; i++) c[cpos+i] = x[i];\n }\n return 0;\n}\n\nfunction crypto_stream(c,cpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20(c,cpos,d,sn,s);\n}\n\nfunction crypto_stream_xor(c,cpos,m,mpos,d,n,k) {\n var s = new Uint8Array(32);\n crypto_core_hsalsa20(s,n,k,sigma);\n var sn = new Uint8Array(8);\n for (var i = 0; i < 8; i++) sn[i] = n[i+16];\n return crypto_stream_salsa20_xor(c,cpos,m,mpos,d,sn,s);\n}\n\n/*\n* Port of Andrew Moon's Poly1305-donna-16. Public domain.\n* https://github.com/floodyberry/poly1305-donna\n*/\n\nvar poly1305 = function(key) {\n this.buffer = new Uint8Array(16);\n this.r = new Uint16Array(10);\n this.h = new Uint16Array(10);\n this.pad = new Uint16Array(8);\n this.leftover = 0;\n this.fin = 0;\n\n var t0, t1, t2, t3, t4, t5, t6, t7;\n\n t0 = key[ 0] & 0xff | (key[ 1] & 0xff) << 8; this.r[0] = ( t0 ) & 0x1fff;\n t1 = key[ 2] & 0xff | (key[ 3] & 0xff) << 8; this.r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = key[ 4] & 0xff | (key[ 5] & 0xff) << 8; this.r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n t3 = key[ 6] & 0xff | (key[ 7] & 0xff) << 8; this.r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = key[ 8] & 0xff | (key[ 9] & 0xff) << 8; this.r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this.r[5] = ((t4 >>> 1)) & 0x1ffe;\n t5 = key[10] & 0xff | (key[11] & 0xff) << 8; this.r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = key[12] & 0xff | (key[13] & 0xff) << 8; this.r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n t7 = key[14] & 0xff | (key[15] & 0xff) << 8; this.r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this.r[9] = ((t7 >>> 5)) & 0x007f;\n\n this.pad[0] = key[16] & 0xff | (key[17] & 0xff) << 8;\n this.pad[1] = key[18] & 0xff | (key[19] & 0xff) << 8;\n this.pad[2] = key[20] & 0xff | (key[21] & 0xff) << 8;\n this.pad[3] = key[22] & 0xff | (key[23] & 0xff) << 8;\n this.pad[4] = key[24] & 0xff | (key[25] & 0xff) << 8;\n this.pad[5] = key[26] & 0xff | (key[27] & 0xff) << 8;\n this.pad[6] = key[28] & 0xff | (key[29] & 0xff) << 8;\n this.pad[7] = key[30] & 0xff | (key[31] & 0xff) << 8;\n};\n\npoly1305.prototype.blocks = function(m, mpos, bytes) {\n var hibit = this.fin ? 0 : (1 << 11);\n var t0, t1, t2, t3, t4, t5, t6, t7, c;\n var d0, d1, d2, d3, d4, d5, d6, d7, d8, d9;\n\n var h0 = this.h[0],\n h1 = this.h[1],\n h2 = this.h[2],\n h3 = this.h[3],\n h4 = this.h[4],\n h5 = this.h[5],\n h6 = this.h[6],\n h7 = this.h[7],\n h8 = this.h[8],\n h9 = this.h[9];\n\n var r0 = this.r[0],\n r1 = this.r[1],\n r2 = this.r[2],\n r3 = this.r[3],\n r4 = this.r[4],\n r5 = this.r[5],\n r6 = this.r[6],\n r7 = this.r[7],\n r8 = this.r[8],\n r9 = this.r[9];\n\n while (bytes >= 16) {\n t0 = m[mpos+ 0] & 0xff | (m[mpos+ 1] & 0xff) << 8; h0 += ( t0 ) & 0x1fff;\n t1 = m[mpos+ 2] & 0xff | (m[mpos+ 3] & 0xff) << 8; h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n t2 = m[mpos+ 4] & 0xff | (m[mpos+ 5] & 0xff) << 8; h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n t3 = m[mpos+ 6] & 0xff | (m[mpos+ 7] & 0xff) << 8; h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n t4 = m[mpos+ 8] & 0xff | (m[mpos+ 9] & 0xff) << 8; h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n t5 = m[mpos+10] & 0xff | (m[mpos+11] & 0xff) << 8; h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n t6 = m[mpos+12] & 0xff | (m[mpos+13] & 0xff) << 8; h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n t7 = m[mpos+14] & 0xff | (m[mpos+15] & 0xff) << 8; h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n\n c = 0;\n\n d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13); d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13); d0 &= 0x1fff;\n\n d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13); d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13); d1 &= 0x1fff;\n\n d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13); d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13); d2 &= 0x1fff;\n\n d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13); d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13); d3 &= 0x1fff;\n\n d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13); d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13); d4 &= 0x1fff;\n\n d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13); d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13); d5 &= 0x1fff;\n\n d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13); d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13); d6 &= 0x1fff;\n\n d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13); d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13); d7 &= 0x1fff;\n\n d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13); d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13); d8 &= 0x1fff;\n\n d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13); d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13); d9 &= 0x1fff;\n\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n\n mpos += 16;\n bytes -= 16;\n }\n this.h[0] = h0;\n this.h[1] = h1;\n this.h[2] = h2;\n this.h[3] = h3;\n this.h[4] = h4;\n this.h[5] = h5;\n this.h[6] = h6;\n this.h[7] = h7;\n this.h[8] = h8;\n this.h[9] = h9;\n};\n\npoly1305.prototype.finish = function(mac, macpos) {\n var g = new Uint16Array(10);\n var c, mask, f, i;\n\n if (this.leftover) {\n i = this.leftover;\n this.buffer[i++] = 1;\n for (; i < 16; i++) this.buffer[i] = 0;\n this.fin = 1;\n this.blocks(this.buffer, 0, 16);\n }\n\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this.h[i] += c;\n c = this.h[i] >>> 13;\n this.h[i] &= 0x1fff;\n }\n this.h[0] += (c * 5);\n c = this.h[0] >>> 13;\n this.h[0] &= 0x1fff;\n this.h[1] += c;\n c = this.h[1] >>> 13;\n this.h[1] &= 0x1fff;\n this.h[2] += c;\n\n g[0] = this.h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this.h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) g[i] &= mask;\n mask = ~mask;\n for (i = 0; i < 10; i++) this.h[i] = (this.h[i] & mask) | g[i];\n\n this.h[0] = ((this.h[0] ) | (this.h[1] << 13) ) & 0xffff;\n this.h[1] = ((this.h[1] >>> 3) | (this.h[2] << 10) ) & 0xffff;\n this.h[2] = ((this.h[2] >>> 6) | (this.h[3] << 7) ) & 0xffff;\n this.h[3] = ((this.h[3] >>> 9) | (this.h[4] << 4) ) & 0xffff;\n this.h[4] = ((this.h[4] >>> 12) | (this.h[5] << 1) | (this.h[6] << 14)) & 0xffff;\n this.h[5] = ((this.h[6] >>> 2) | (this.h[7] << 11) ) & 0xffff;\n this.h[6] = ((this.h[7] >>> 5) | (this.h[8] << 8) ) & 0xffff;\n this.h[7] = ((this.h[8] >>> 8) | (this.h[9] << 5) ) & 0xffff;\n\n f = this.h[0] + this.pad[0];\n this.h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this.h[i] + this.pad[i]) | 0) + (f >>> 16)) | 0;\n this.h[i] = f & 0xffff;\n }\n\n mac[macpos+ 0] = (this.h[0] >>> 0) & 0xff;\n mac[macpos+ 1] = (this.h[0] >>> 8) & 0xff;\n mac[macpos+ 2] = (this.h[1] >>> 0) & 0xff;\n mac[macpos+ 3] = (this.h[1] >>> 8) & 0xff;\n mac[macpos+ 4] = (this.h[2] >>> 0) & 0xff;\n mac[macpos+ 5] = (this.h[2] >>> 8) & 0xff;\n mac[macpos+ 6] = (this.h[3] >>> 0) & 0xff;\n mac[macpos+ 7] = (this.h[3] >>> 8) & 0xff;\n mac[macpos+ 8] = (this.h[4] >>> 0) & 0xff;\n mac[macpos+ 9] = (this.h[4] >>> 8) & 0xff;\n mac[macpos+10] = (this.h[5] >>> 0) & 0xff;\n mac[macpos+11] = (this.h[5] >>> 8) & 0xff;\n mac[macpos+12] = (this.h[6] >>> 0) & 0xff;\n mac[macpos+13] = (this.h[6] >>> 8) & 0xff;\n mac[macpos+14] = (this.h[7] >>> 0) & 0xff;\n mac[macpos+15] = (this.h[7] >>> 8) & 0xff;\n};\n\npoly1305.prototype.update = function(m, mpos, bytes) {\n var i, want;\n\n if (this.leftover) {\n want = (16 - this.leftover);\n if (want > bytes)\n want = bytes;\n for (i = 0; i < want; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n bytes -= want;\n mpos += want;\n this.leftover += want;\n if (this.leftover < 16)\n return;\n this.blocks(this.buffer, 0, 16);\n this.leftover = 0;\n }\n\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this.blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n\n if (bytes) {\n for (i = 0; i < bytes; i++)\n this.buffer[this.leftover + i] = m[mpos+i];\n this.leftover += bytes;\n }\n};\n\nfunction crypto_onetimeauth(out, outpos, m, mpos, n, k) {\n var s = new poly1305(k);\n s.update(m, mpos, n);\n s.finish(out, outpos);\n return 0;\n}\n\nfunction crypto_onetimeauth_verify(h, hpos, m, mpos, n, k) {\n var x = new Uint8Array(16);\n crypto_onetimeauth(x,0,m,mpos,n,k);\n return crypto_verify_16(h,hpos,x,0);\n}\n\nfunction crypto_secretbox(c,m,d,n,k) {\n var i;\n if (d < 32) return -1;\n crypto_stream_xor(c,0,m,0,d,n,k);\n crypto_onetimeauth(c, 16, c, 32, d - 32, c);\n for (i = 0; i < 16; i++) c[i] = 0;\n return 0;\n}\n\nfunction crypto_secretbox_open(m,c,d,n,k) {\n var i;\n var x = new Uint8Array(32);\n if (d < 32) return -1;\n crypto_stream(x,0,32,n,k);\n if (crypto_onetimeauth_verify(c, 16,c, 32,d - 32,x) !== 0) return -1;\n crypto_stream_xor(m,0,c,0,d,n,k);\n for (i = 0; i < 32; i++) m[i] = 0;\n return 0;\n}\n\nfunction set25519(r, a) {\n var i;\n for (i = 0; i < 16; i++) r[i] = a[i]|0;\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for (i = 0; i < 16; i++) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c-1 + 37 * (c-1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b-1);\n for (var i = 0; i < 16; i++) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for (i = 0; i < 16; i++) t[i] = n[i];\n car25519(t);\n car25519(t);\n car25519(t);\n for (j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i-1]>>16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14]>>16) & 1);\n b = (m[15]>>16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1-b);\n }\n for (i = 0; i < 16; i++) {\n o[2*i] = t[i] & 0xff;\n o[2*i+1] = t[i]>>8;\n }\n}\n\nfunction neq25519(a, b) {\n var c = new Uint8Array(32), d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction par25519(a) {\n var d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for (i = 0; i < 16; i++) o[i] = n[2*i] + (n[2*i+1] << 8);\n o[15] &= 0x7fff;\n}\n\nfunction A(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] + b[i];\n}\n\nfunction Z(o, a, b) {\n for (var i = 0; i < 16; i++) o[i] = a[i] - b[i];\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 253; a >= 0; a--) {\n S(c, c);\n if(a !== 2 && a !== 4) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for (a = 0; a < 16; a++) c[a] = i[a];\n for (a = 250; a >= 0; a--) {\n S(c, c);\n if(a !== 1) M(c, c, i);\n }\n for (a = 0; a < 16; a++) o[a] = c[a];\n}\n\nfunction crypto_scalarmult(q, n, p) {\n var z = new Uint8Array(32);\n var x = new Float64Array(80), r, i;\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf();\n for (i = 0; i < 31; i++) z[i] = n[i];\n z[31]=(n[31]&127)|64;\n z[0]&=248;\n unpack25519(x,p);\n for (i = 0; i < 16; i++) {\n b[i]=x[i];\n d[i]=a[i]=c[i]=0;\n }\n a[0]=d[0]=1;\n for (i=254; i>=0; --i) {\n r=(z[i>>>3]>>>(i&7))&1;\n sel25519(a,b,r);\n sel25519(c,d,r);\n A(e,a,c);\n Z(a,a,c);\n A(c,b,d);\n Z(b,b,d);\n S(d,e);\n S(f,a);\n M(a,c,a);\n M(c,b,e);\n A(e,a,c);\n Z(a,a,c);\n S(b,a);\n Z(c,d,f);\n M(a,c,_121665);\n A(a,a,d);\n M(c,c,a);\n M(a,d,f);\n M(d,b,x);\n S(b,e);\n sel25519(a,b,r);\n sel25519(c,d,r);\n }\n for (i = 0; i < 16; i++) {\n x[i+16]=a[i];\n x[i+32]=c[i];\n x[i+48]=b[i];\n x[i+64]=d[i];\n }\n var x32 = x.subarray(32);\n var x16 = x.subarray(16);\n inv25519(x32,x32);\n M(x16,x16,x32);\n pack25519(q,x16);\n return 0;\n}\n\nfunction crypto_scalarmult_base(q, n) {\n return crypto_scalarmult(q, n, _9);\n}\n\nfunction crypto_box_keypair(y, x) {\n randombytes(x, 32);\n return crypto_scalarmult_base(y, x);\n}\n\nfunction crypto_box_beforenm(k, y, x) {\n var s = new Uint8Array(32);\n crypto_scalarmult(s, x, y);\n return crypto_core_hsalsa20(k, _0, s, sigma);\n}\n\nvar crypto_box_afternm = crypto_secretbox;\nvar crypto_box_open_afternm = crypto_secretbox_open;\n\nfunction crypto_box(c, m, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_afternm(c, m, d, n, k);\n}\n\nfunction crypto_box_open(m, c, d, n, y, x) {\n var k = new Uint8Array(32);\n crypto_box_beforenm(k, y, x);\n return crypto_box_open_afternm(m, c, d, n, k);\n}\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction crypto_hashblocks_hl(hh, hl, m, n) {\n var wh = new Int32Array(16), wl = new Int32Array(16),\n bh0, bh1, bh2, bh3, bh4, bh5, bh6, bh7,\n bl0, bl1, bl2, bl3, bl4, bl5, bl6, bl7,\n th, tl, i, j, h, l, a, b, c, d;\n\n var ah0 = hh[0],\n ah1 = hh[1],\n ah2 = hh[2],\n ah3 = hh[3],\n ah4 = hh[4],\n ah5 = hh[5],\n ah6 = hh[6],\n ah7 = hh[7],\n\n al0 = hl[0],\n al1 = hl[1],\n al2 = hl[2],\n al3 = hl[3],\n al4 = hl[4],\n al5 = hl[5],\n al6 = hl[6],\n al7 = hl[7];\n\n var pos = 0;\n while (n >= 128) {\n for (i = 0; i < 16; i++) {\n j = 8 * i + pos;\n wh[i] = (m[j+0] << 24) | (m[j+1] << 16) | (m[j+2] << 8) | m[j+3];\n wl[i] = (m[j+4] << 24) | (m[j+5] << 16) | (m[j+6] << 8) | m[j+7];\n }\n for (i = 0; i < 80; i++) {\n bh0 = ah0;\n bh1 = ah1;\n bh2 = ah2;\n bh3 = ah3;\n bh4 = ah4;\n bh5 = ah5;\n bh6 = ah6;\n bh7 = ah7;\n\n bl0 = al0;\n bl1 = al1;\n bl2 = al2;\n bl3 = al3;\n bl4 = al4;\n bl5 = al5;\n bl6 = al6;\n bl7 = al7;\n\n // add\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32-14))) ^ ((ah4 >>> 18) | (al4 << (32-18))) ^ ((al4 >>> (41-32)) | (ah4 << (32-(41-32))));\n l = ((al4 >>> 14) | (ah4 << (32-14))) ^ ((al4 >>> 18) | (ah4 << (32-18))) ^ ((ah4 >>> (41-32)) | (al4 << (32-(41-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // K\n h = K[i*2];\n l = K[i*2+1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // w\n h = wh[i%16];\n l = wl[i%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n\n // add\n h = th;\n l = tl;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32-28))) ^ ((al0 >>> (34-32)) | (ah0 << (32-(34-32)))) ^ ((al0 >>> (39-32)) | (ah0 << (32-(39-32))));\n l = ((al0 >>> 28) | (ah0 << (32-28))) ^ ((ah0 >>> (34-32)) | (al0 << (32-(34-32)))) ^ ((ah0 >>> (39-32)) | (al0 << (32-(39-32))));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n\n // add\n h = bh3;\n l = bl3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = th;\n l = tl;\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n\n if (i%16 === 15) {\n for (j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = wh[(j+9)%16];\n l = wl[(j+9)%16];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma0\n th = wh[(j+1)%16];\n tl = wl[(j+1)%16];\n h = ((th >>> 1) | (tl << (32-1))) ^ ((th >>> 8) | (tl << (32-8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32-1))) ^ ((tl >>> 8) | (th << (32-8))) ^ ((tl >>> 7) | (th << (32-7)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n // sigma1\n th = wh[(j+14)%16];\n tl = wl[(j+14)%16];\n h = ((th >>> 19) | (tl << (32-19))) ^ ((tl >>> (61-32)) | (th << (32-(61-32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32-19))) ^ ((th >>> (61-32)) | (tl << (32-(61-32)))) ^ ((tl >>> 6) | (th << (32-6)));\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n\n // add\n h = ah0;\n l = al0;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[0];\n l = hl[0];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n\n h = ah1;\n l = al1;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[1];\n l = hl[1];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n\n h = ah2;\n l = al2;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[2];\n l = hl[2];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n\n h = ah3;\n l = al3;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[3];\n l = hl[3];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n\n h = ah4;\n l = al4;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[4];\n l = hl[4];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n\n h = ah5;\n l = al5;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[5];\n l = hl[5];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n\n h = ah6;\n l = al6;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[6];\n l = hl[6];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n\n h = ah7;\n l = al7;\n\n a = l & 0xffff; b = l >>> 16;\n c = h & 0xffff; d = h >>> 16;\n\n h = hh[7];\n l = hl[7];\n\n a += l & 0xffff; b += l >>> 16;\n c += h & 0xffff; d += h >>> 16;\n\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n\n pos += 128;\n n -= 128;\n }\n\n return n;\n}\n\nfunction crypto_hash(out, m, n) {\n var hh = new Int32Array(8),\n hl = new Int32Array(8),\n x = new Uint8Array(256),\n i, b = n;\n\n hh[0] = 0x6a09e667;\n hh[1] = 0xbb67ae85;\n hh[2] = 0x3c6ef372;\n hh[3] = 0xa54ff53a;\n hh[4] = 0x510e527f;\n hh[5] = 0x9b05688c;\n hh[6] = 0x1f83d9ab;\n hh[7] = 0x5be0cd19;\n\n hl[0] = 0xf3bcc908;\n hl[1] = 0x84caa73b;\n hl[2] = 0xfe94f82b;\n hl[3] = 0x5f1d36f1;\n hl[4] = 0xade682d1;\n hl[5] = 0x2b3e6c1f;\n hl[6] = 0xfb41bd6b;\n hl[7] = 0x137e2179;\n\n crypto_hashblocks_hl(hh, hl, m, n);\n n %= 128;\n\n for (i = 0; i < n; i++) x[i] = m[b-n+i];\n x[n] = 128;\n\n n = 256-128*(n<112?1:0);\n x[n-9] = 0;\n ts64(x, n-8, (b / 0x20000000) | 0, b << 3);\n crypto_hashblocks_hl(hh, hl, x, n);\n\n for (i = 0; i < 8; i++) ts64(out, 8*i, hh[i], hl[i]);\n\n return 0;\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n var i;\n for (i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (i = 255; i >= 0; --i) {\n b = (s[(i/8)|0] >> (i&7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction crypto_sign_keypair(pk, sk, seeded) {\n var d = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n if (!seeded) randombytes(sk, 32);\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for (i = 0; i < 32; i++) sk[i+32] = pk[i];\n return 0;\n}\n\nvar L = new Float64Array([0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) x[j] -= carry * L[j];\n for (i = 0; i < 32; i++) {\n x[i+1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64), i;\n for (i = 0; i < 64; i++) x[i] = r[i];\n for (i = 0; i < 64; i++) r[i] = 0;\n modL(r, x);\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var d = new Uint8Array(64), h = new Uint8Array(64), r = new Uint8Array(64);\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n crypto_hash(d, sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for (i = 0; i < n; i++) sm[64 + i] = m[i];\n for (i = 0; i < 32; i++) sm[32 + i] = d[32 + i];\n\n crypto_hash(r, sm.subarray(32), n+32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for (i = 32; i < 64; i++) sm[i] = sk[i];\n crypto_hash(h, sm, n + 64);\n reduce(h);\n\n for (i = 0; i < 64; i++) x[i] = 0;\n for (i = 0; i < 32; i++) x[i] = r[i];\n for (i = 0; i < 32; i++) {\n for (j = 0; j < 32; j++) {\n x[i+j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) M(r[0], r[0], I);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if (neq25519(chk, num)) return -1;\n\n if (par25519(r[0]) === (p[31]>>7)) Z(r[0], gf0, r[0]);\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i;\n var t = new Uint8Array(32), h = new Uint8Array(64);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n if (n < 64) return -1;\n\n if (unpackneg(q, pk)) return -1;\n\n for (i = 0; i < n; i++) m[i] = sm[i];\n for (i = 0; i < 32; i++) m[i+32] = pk[i];\n crypto_hash(h, m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if (crypto_verify_32(sm, 0, t, 0)) {\n for (i = 0; i < n; i++) m[i] = 0;\n return -1;\n }\n\n for (i = 0; i < n; i++) m[i] = sm[i + 64];\n return n;\n}\n\nvar crypto_secretbox_KEYBYTES = 32,\n crypto_secretbox_NONCEBYTES = 24,\n crypto_secretbox_ZEROBYTES = 32,\n crypto_secretbox_BOXZEROBYTES = 16,\n crypto_scalarmult_BYTES = 32,\n crypto_scalarmult_SCALARBYTES = 32,\n crypto_box_PUBLICKEYBYTES = 32,\n crypto_box_SECRETKEYBYTES = 32,\n crypto_box_BEFORENMBYTES = 32,\n crypto_box_NONCEBYTES = crypto_secretbox_NONCEBYTES,\n crypto_box_ZEROBYTES = crypto_secretbox_ZEROBYTES,\n crypto_box_BOXZEROBYTES = crypto_secretbox_BOXZEROBYTES,\n crypto_sign_BYTES = 64,\n crypto_sign_PUBLICKEYBYTES = 32,\n crypto_sign_SECRETKEYBYTES = 64,\n crypto_sign_SEEDBYTES = 32,\n crypto_hash_BYTES = 64;\n\nnacl.lowlevel = {\n crypto_core_hsalsa20: crypto_core_hsalsa20,\n crypto_stream_xor: crypto_stream_xor,\n crypto_stream: crypto_stream,\n crypto_stream_salsa20_xor: crypto_stream_salsa20_xor,\n crypto_stream_salsa20: crypto_stream_salsa20,\n crypto_onetimeauth: crypto_onetimeauth,\n crypto_onetimeauth_verify: crypto_onetimeauth_verify,\n crypto_verify_16: crypto_verify_16,\n crypto_verify_32: crypto_verify_32,\n crypto_secretbox: crypto_secretbox,\n crypto_secretbox_open: crypto_secretbox_open,\n crypto_scalarmult: crypto_scalarmult,\n crypto_scalarmult_base: crypto_scalarmult_base,\n crypto_box_beforenm: crypto_box_beforenm,\n crypto_box_afternm: crypto_box_afternm,\n crypto_box: crypto_box,\n crypto_box_open: crypto_box_open,\n crypto_box_keypair: crypto_box_keypair,\n crypto_hash: crypto_hash,\n crypto_sign: crypto_sign,\n crypto_sign_keypair: crypto_sign_keypair,\n crypto_sign_open: crypto_sign_open,\n\n crypto_secretbox_KEYBYTES: crypto_secretbox_KEYBYTES,\n crypto_secretbox_NONCEBYTES: crypto_secretbox_NONCEBYTES,\n crypto_secretbox_ZEROBYTES: crypto_secretbox_ZEROBYTES,\n crypto_secretbox_BOXZEROBYTES: crypto_secretbox_BOXZEROBYTES,\n crypto_scalarmult_BYTES: crypto_scalarmult_BYTES,\n crypto_scalarmult_SCALARBYTES: crypto_scalarmult_SCALARBYTES,\n crypto_box_PUBLICKEYBYTES: crypto_box_PUBLICKEYBYTES,\n crypto_box_SECRETKEYBYTES: crypto_box_SECRETKEYBYTES,\n crypto_box_BEFORENMBYTES: crypto_box_BEFORENMBYTES,\n crypto_box_NONCEBYTES: crypto_box_NONCEBYTES,\n crypto_box_ZEROBYTES: crypto_box_ZEROBYTES,\n crypto_box_BOXZEROBYTES: crypto_box_BOXZEROBYTES,\n crypto_sign_BYTES: crypto_sign_BYTES,\n crypto_sign_PUBLICKEYBYTES: crypto_sign_PUBLICKEYBYTES,\n crypto_sign_SECRETKEYBYTES: crypto_sign_SECRETKEYBYTES,\n crypto_sign_SEEDBYTES: crypto_sign_SEEDBYTES,\n crypto_hash_BYTES: crypto_hash_BYTES,\n\n gf: gf,\n D: D,\n L: L,\n pack25519: pack25519,\n unpack25519: unpack25519,\n M: M,\n A: A,\n S: S,\n Z: Z,\n pow2523: pow2523,\n add: add,\n set25519: set25519,\n modL: modL,\n scalarmult: scalarmult,\n scalarbase: scalarbase,\n};\n\n/* High-level API */\n\nfunction checkLengths(k, n) {\n if (k.length !== crypto_secretbox_KEYBYTES) throw new Error('bad key size');\n if (n.length !== crypto_secretbox_NONCEBYTES) throw new Error('bad nonce size');\n}\n\nfunction checkBoxLengths(pk, sk) {\n if (pk.length !== crypto_box_PUBLICKEYBYTES) throw new Error('bad public key size');\n if (sk.length !== crypto_box_SECRETKEYBYTES) throw new Error('bad secret key size');\n}\n\nfunction checkArrayTypes() {\n for (var i = 0; i < arguments.length; i++) {\n if (!(arguments[i] instanceof Uint8Array))\n throw new TypeError('unexpected type, use Uint8Array');\n }\n}\n\nfunction cleanup(arr) {\n for (var i = 0; i < arr.length; i++) arr[i] = 0;\n}\n\nnacl.randomBytes = function(n) {\n var b = new Uint8Array(n);\n randombytes(b, n);\n return b;\n};\n\nnacl.secretbox = function(msg, nonce, key) {\n checkArrayTypes(msg, nonce, key);\n checkLengths(key, nonce);\n var m = new Uint8Array(crypto_secretbox_ZEROBYTES + msg.length);\n var c = new Uint8Array(m.length);\n for (var i = 0; i < msg.length; i++) m[i+crypto_secretbox_ZEROBYTES] = msg[i];\n crypto_secretbox(c, m, m.length, nonce, key);\n return c.subarray(crypto_secretbox_BOXZEROBYTES);\n};\n\nnacl.secretbox.open = function(box, nonce, key) {\n checkArrayTypes(box, nonce, key);\n checkLengths(key, nonce);\n var c = new Uint8Array(crypto_secretbox_BOXZEROBYTES + box.length);\n var m = new Uint8Array(c.length);\n for (var i = 0; i < box.length; i++) c[i+crypto_secretbox_BOXZEROBYTES] = box[i];\n if (c.length < 32) return null;\n if (crypto_secretbox_open(m, c, c.length, nonce, key) !== 0) return null;\n return m.subarray(crypto_secretbox_ZEROBYTES);\n};\n\nnacl.secretbox.keyLength = crypto_secretbox_KEYBYTES;\nnacl.secretbox.nonceLength = crypto_secretbox_NONCEBYTES;\nnacl.secretbox.overheadLength = crypto_secretbox_BOXZEROBYTES;\n\nnacl.scalarMult = function(n, p) {\n checkArrayTypes(n, p);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n if (p.length !== crypto_scalarmult_BYTES) throw new Error('bad p size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult(q, n, p);\n return q;\n};\n\nnacl.scalarMult.base = function(n) {\n checkArrayTypes(n);\n if (n.length !== crypto_scalarmult_SCALARBYTES) throw new Error('bad n size');\n var q = new Uint8Array(crypto_scalarmult_BYTES);\n crypto_scalarmult_base(q, n);\n return q;\n};\n\nnacl.scalarMult.scalarLength = crypto_scalarmult_SCALARBYTES;\nnacl.scalarMult.groupElementLength = crypto_scalarmult_BYTES;\n\nnacl.box = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox(msg, nonce, k);\n};\n\nnacl.box.before = function(publicKey, secretKey) {\n checkArrayTypes(publicKey, secretKey);\n checkBoxLengths(publicKey, secretKey);\n var k = new Uint8Array(crypto_box_BEFORENMBYTES);\n crypto_box_beforenm(k, publicKey, secretKey);\n return k;\n};\n\nnacl.box.after = nacl.secretbox;\n\nnacl.box.open = function(msg, nonce, publicKey, secretKey) {\n var k = nacl.box.before(publicKey, secretKey);\n return nacl.secretbox.open(msg, nonce, k);\n};\n\nnacl.box.open.after = nacl.secretbox.open;\n\nnacl.box.keyPair = function() {\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_box_SECRETKEYBYTES);\n crypto_box_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.box.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_box_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_box_PUBLICKEYBYTES);\n crypto_scalarmult_base(pk, secretKey);\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.box.publicKeyLength = crypto_box_PUBLICKEYBYTES;\nnacl.box.secretKeyLength = crypto_box_SECRETKEYBYTES;\nnacl.box.sharedKeyLength = crypto_box_BEFORENMBYTES;\nnacl.box.nonceLength = crypto_box_NONCEBYTES;\nnacl.box.overheadLength = nacl.secretbox.overheadLength;\n\nnacl.sign = function(msg, secretKey) {\n checkArrayTypes(msg, secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var signedMsg = new Uint8Array(crypto_sign_BYTES+msg.length);\n crypto_sign(signedMsg, msg, msg.length, secretKey);\n return signedMsg;\n};\n\nnacl.sign.open = function(signedMsg, publicKey) {\n checkArrayTypes(signedMsg, publicKey);\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var tmp = new Uint8Array(signedMsg.length);\n var mlen = crypto_sign_open(tmp, signedMsg, signedMsg.length, publicKey);\n if (mlen < 0) return null;\n var m = new Uint8Array(mlen);\n for (var i = 0; i < m.length; i++) m[i] = tmp[i];\n return m;\n};\n\nnacl.sign.detached = function(msg, secretKey) {\n var signedMsg = nacl.sign(msg, secretKey);\n var sig = new Uint8Array(crypto_sign_BYTES);\n for (var i = 0; i < sig.length; i++) sig[i] = signedMsg[i];\n return sig;\n};\n\nnacl.sign.detached.verify = function(msg, sig, publicKey) {\n checkArrayTypes(msg, sig, publicKey);\n if (sig.length !== crypto_sign_BYTES)\n throw new Error('bad signature size');\n if (publicKey.length !== crypto_sign_PUBLICKEYBYTES)\n throw new Error('bad public key size');\n var sm = new Uint8Array(crypto_sign_BYTES + msg.length);\n var m = new Uint8Array(crypto_sign_BYTES + msg.length);\n var i;\n for (i = 0; i < crypto_sign_BYTES; i++) sm[i] = sig[i];\n for (i = 0; i < msg.length; i++) sm[i+crypto_sign_BYTES] = msg[i];\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nnacl.sign.keyPair = function() {\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.keyPair.fromSecretKey = function(secretKey) {\n checkArrayTypes(secretKey);\n if (secretKey.length !== crypto_sign_SECRETKEYBYTES)\n throw new Error('bad secret key size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n for (var i = 0; i < pk.length; i++) pk[i] = secretKey[32+i];\n return {publicKey: pk, secretKey: new Uint8Array(secretKey)};\n};\n\nnacl.sign.keyPair.fromSeed = function(seed) {\n checkArrayTypes(seed);\n if (seed.length !== crypto_sign_SEEDBYTES)\n throw new Error('bad seed size');\n var pk = new Uint8Array(crypto_sign_PUBLICKEYBYTES);\n var sk = new Uint8Array(crypto_sign_SECRETKEYBYTES);\n for (var i = 0; i < 32; i++) sk[i] = seed[i];\n crypto_sign_keypair(pk, sk, true);\n return {publicKey: pk, secretKey: sk};\n};\n\nnacl.sign.publicKeyLength = crypto_sign_PUBLICKEYBYTES;\nnacl.sign.secretKeyLength = crypto_sign_SECRETKEYBYTES;\nnacl.sign.seedLength = crypto_sign_SEEDBYTES;\nnacl.sign.signatureLength = crypto_sign_BYTES;\n\nnacl.hash = function(msg) {\n checkArrayTypes(msg);\n var h = new Uint8Array(crypto_hash_BYTES);\n crypto_hash(h, msg, msg.length);\n return h;\n};\n\nnacl.hash.hashLength = crypto_hash_BYTES;\n\nnacl.verify = function(x, y) {\n checkArrayTypes(x, y);\n // Zero length arguments are considered not equal.\n if (x.length === 0 || y.length === 0) return false;\n if (x.length !== y.length) return false;\n return (vn(x, 0, y, 0, x.length) === 0) ? true : false;\n};\n\nnacl.setPRNG = function(fn) {\n randombytes = fn;\n};\n\n(function() {\n // Initialize PRNG if environment provides CSPRNG.\n // If not, methods calling randombytes will throw.\n var crypto = typeof self !== 'undefined' ? (self.crypto || self.msCrypto) : null;\n if (crypto && crypto.getRandomValues) {\n // Browsers.\n var QUOTA = 65536;\n nacl.setPRNG(function(x, n) {\n var i, v = new Uint8Array(n);\n for (i = 0; i < n; i += QUOTA) {\n crypto.getRandomValues(v.subarray(i, i + Math.min(n - i, QUOTA)));\n }\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n } else if (typeof require !== 'undefined') {\n // Node.js.\n crypto = require('crypto');\n if (crypto && crypto.randomBytes) {\n nacl.setPRNG(function(x, n) {\n var i, v = crypto.randomBytes(n);\n for (i = 0; i < n; i++) x[i] = v[i];\n cleanup(v);\n });\n }\n }\n})();\n\n})(typeof module !== 'undefined' && module.exports ? module.exports : (self.nacl = self.nacl || {}));\n", "'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n", "", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n", "/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n", "'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n", "var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n", "'use strict';\n\n// This is free and unencumbered software released into the public domain.\n// See LICENSE.md for more information.\n\n//\n// Utilities\n//\n\n/**\n * @param {number} a The number to test.\n * @param {number} min The minimum value in the range, inclusive.\n * @param {number} max The maximum value in the range, inclusive.\n * @return {boolean} True if a >= min and a <= max.\n */\nfunction inRange(a, min, max) {\n return min <= a && a <= max;\n}\n\n/**\n * @param {*} o\n * @return {Object}\n */\nfunction ToDictionary(o) {\n if (o === undefined) return {};\n if (o === Object(o)) return o;\n throw TypeError('Could not convert argument to dictionary');\n}\n\n/**\n * @param {string} string Input string of UTF-16 code units.\n * @return {!Array.} Code points.\n */\nfunction stringToCodePoints(string) {\n // https://heycam.github.io/webidl/#dfn-obtain-unicode\n\n // 1. Let S be the DOMString value.\n var s = String(string);\n\n // 2. Let n be the length of S.\n var n = s.length;\n\n // 3. Initialize i to 0.\n var i = 0;\n\n // 4. Initialize U to be an empty sequence of Unicode characters.\n var u = [];\n\n // 5. While i < n:\n while (i < n) {\n\n // 1. Let c be the code unit in S at index i.\n var c = s.charCodeAt(i);\n\n // 2. Depending on the value of c:\n\n // c < 0xD800 or c > 0xDFFF\n if (c < 0xD800 || c > 0xDFFF) {\n // Append to U the Unicode character with code point c.\n u.push(c);\n }\n\n // 0xDC00 \u2264 c \u2264 0xDFFF\n else if (0xDC00 <= c && c <= 0xDFFF) {\n // Append to U a U+FFFD REPLACEMENT CHARACTER.\n u.push(0xFFFD);\n }\n\n // 0xD800 \u2264 c \u2264 0xDBFF\n else if (0xD800 <= c && c <= 0xDBFF) {\n // 1. If i = n\u22121, then append to U a U+FFFD REPLACEMENT\n // CHARACTER.\n if (i === n - 1) {\n u.push(0xFFFD);\n }\n // 2. Otherwise, i < n\u22121:\n else {\n // 1. Let d be the code unit in S at index i+1.\n var d = string.charCodeAt(i + 1);\n\n // 2. If 0xDC00 \u2264 d \u2264 0xDFFF, then:\n if (0xDC00 <= d && d <= 0xDFFF) {\n // 1. Let a be c & 0x3FF.\n var a = c & 0x3FF;\n\n // 2. Let b be d & 0x3FF.\n var b = d & 0x3FF;\n\n // 3. Append to U the Unicode character with code point\n // 2^16+2^10*a+b.\n u.push(0x10000 + (a << 10) + b);\n\n // 4. Set i to i+1.\n i += 1;\n }\n\n // 3. Otherwise, d < 0xDC00 or d > 0xDFFF. Append to U a\n // U+FFFD REPLACEMENT CHARACTER.\n else {\n u.push(0xFFFD);\n }\n }\n }\n\n // 3. Set i to i+1.\n i += 1;\n }\n\n // 6. Return U.\n return u;\n}\n\n/**\n * @param {!Array.} code_points Array of code points.\n * @return {string} string String of UTF-16 code units.\n */\nfunction codePointsToString(code_points) {\n var s = '';\n for (var i = 0; i < code_points.length; ++i) {\n var cp = code_points[i];\n if (cp <= 0xFFFF) {\n s += String.fromCharCode(cp);\n } else {\n cp -= 0x10000;\n s += String.fromCharCode((cp >> 10) + 0xD800,\n (cp & 0x3FF) + 0xDC00);\n }\n }\n return s;\n}\n\n\n//\n// Implementation of Encoding specification\n// https://encoding.spec.whatwg.org/\n//\n\n//\n// 3. Terminology\n//\n\n/**\n * End-of-stream is a special token that signifies no more tokens\n * are in the stream.\n * @const\n */ var end_of_stream = -1;\n\n/**\n * A stream represents an ordered sequence of tokens.\n *\n * @constructor\n * @param {!(Array.|Uint8Array)} tokens Array of tokens that provide the\n * stream.\n */\nfunction Stream(tokens) {\n /** @type {!Array.} */\n this.tokens = [].slice.call(tokens);\n}\n\nStream.prototype = {\n /**\n * @return {boolean} True if end-of-stream has been hit.\n */\n endOfStream: function() {\n return !this.tokens.length;\n },\n\n /**\n * When a token is read from a stream, the first token in the\n * stream must be returned and subsequently removed, and\n * end-of-stream must be returned otherwise.\n *\n * @return {number} Get the next token from the stream, or\n * end_of_stream.\n */\n read: function() {\n if (!this.tokens.length)\n return end_of_stream;\n return this.tokens.shift();\n },\n\n /**\n * When one or more tokens are prepended to a stream, those tokens\n * must be inserted, in given order, before the first token in the\n * stream.\n *\n * @param {(number|!Array.)} token The token(s) to prepend to the stream.\n */\n prepend: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.unshift(tokens.pop());\n } else {\n this.tokens.unshift(token);\n }\n },\n\n /**\n * When one or more tokens are pushed to a stream, those tokens\n * must be inserted, in given order, after the last token in the\n * stream.\n *\n * @param {(number|!Array.)} token The tokens(s) to prepend to the stream.\n */\n push: function(token) {\n if (Array.isArray(token)) {\n var tokens = /**@type {!Array.}*/(token);\n while (tokens.length)\n this.tokens.push(tokens.shift());\n } else {\n this.tokens.push(token);\n }\n }\n};\n\n//\n// 4. Encodings\n//\n\n// 4.1 Encoders and decoders\n\n/** @const */\nvar finished = -1;\n\n/**\n * @param {boolean} fatal If true, decoding errors raise an exception.\n * @param {number=} opt_code_point Override the standard fallback code point.\n * @return {number} The code point to insert on a decoding error.\n */\nfunction decoderError(fatal, opt_code_point) {\n if (fatal)\n throw TypeError('Decoder error');\n return opt_code_point || 0xFFFD;\n}\n\n//\n// 7. API\n//\n\n/** @const */ var DEFAULT_ENCODING = 'utf-8';\n\n// 7.1 Interface TextDecoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextDecoder(encoding, options) {\n if (!(this instanceof TextDecoder)) {\n return new TextDecoder(encoding, options);\n }\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {boolean} */\n this._BOMseen = false;\n /** @private @type {?Decoder} */\n this._decoder = null;\n /** @private @type {boolean} */\n this._fatal = Boolean(options['fatal']);\n /** @private @type {boolean} */\n this._ignoreBOM = Boolean(options['ignoreBOM']);\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n Object.defineProperty(this, 'fatal', {value: this._fatal});\n Object.defineProperty(this, 'ignoreBOM', {value: this._ignoreBOM});\n}\n\nTextDecoder.prototype = {\n /**\n * @param {ArrayBufferView=} input The buffer of bytes to decode.\n * @param {Object=} options\n * @return {string} The decoded string.\n */\n decode: function decode(input, options) {\n var bytes;\n if (typeof input === 'object' && input instanceof ArrayBuffer) {\n bytes = new Uint8Array(input);\n } else if (typeof input === 'object' && 'buffer' in input &&\n input.buffer instanceof ArrayBuffer) {\n bytes = new Uint8Array(input.buffer,\n input.byteOffset,\n input.byteLength);\n } else {\n bytes = new Uint8Array(0);\n }\n\n options = ToDictionary(options);\n\n if (!this._streaming) {\n this._decoder = new UTF8Decoder({fatal: this._fatal});\n this._BOMseen = false;\n }\n this._streaming = Boolean(options['stream']);\n\n var input_stream = new Stream(bytes);\n\n var code_points = [];\n\n /** @type {?(number|!Array.)} */\n var result;\n\n while (!input_stream.endOfStream()) {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n }\n if (!this._streaming) {\n do {\n result = this._decoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (result === null)\n continue;\n if (Array.isArray(result))\n code_points.push.apply(code_points, /**@type {!Array.}*/(result));\n else\n code_points.push(result);\n } while (!input_stream.endOfStream());\n this._decoder = null;\n }\n\n if (code_points.length) {\n // If encoding is one of utf-8, utf-16be, and utf-16le, and\n // ignore BOM flag and BOM seen flag are unset, run these\n // subsubsteps:\n if (['utf-8'].indexOf(this.encoding) !== -1 &&\n !this._ignoreBOM && !this._BOMseen) {\n // If token is U+FEFF, set BOM seen flag.\n if (code_points[0] === 0xFEFF) {\n this._BOMseen = true;\n code_points.shift();\n } else {\n // Otherwise, if token is not end-of-stream, set BOM seen\n // flag and append token to output.\n this._BOMseen = true;\n }\n }\n }\n\n return codePointsToString(code_points);\n }\n};\n\n// 7.2 Interface TextEncoder\n\n/**\n * @constructor\n * @param {string=} encoding The label of the encoding;\n * defaults to 'utf-8'.\n * @param {Object=} options\n */\nfunction TextEncoder(encoding, options) {\n if (!(this instanceof TextEncoder))\n return new TextEncoder(encoding, options);\n encoding = encoding !== undefined ? String(encoding).toLowerCase() : DEFAULT_ENCODING;\n if (encoding !== DEFAULT_ENCODING) {\n throw new Error('Encoding not supported. Only utf-8 is supported');\n }\n options = ToDictionary(options);\n\n /** @private @type {boolean} */\n this._streaming = false;\n /** @private @type {?Encoder} */\n this._encoder = null;\n /** @private @type {{fatal: boolean}} */\n this._options = {fatal: Boolean(options['fatal'])};\n\n Object.defineProperty(this, 'encoding', {value: 'utf-8'});\n}\n\nTextEncoder.prototype = {\n /**\n * @param {string=} opt_string The string to encode.\n * @param {Object=} options\n * @return {Uint8Array} Encoded bytes, as a Uint8Array.\n */\n encode: function encode(opt_string, options) {\n opt_string = opt_string ? String(opt_string) : '';\n options = ToDictionary(options);\n\n // NOTE: This option is nonstandard. None of the encodings\n // permitted for encoding (i.e. UTF-8, UTF-16) are stateful,\n // so streaming is not necessary.\n if (!this._streaming)\n this._encoder = new UTF8Encoder(this._options);\n this._streaming = Boolean(options['stream']);\n\n var bytes = [];\n var input_stream = new Stream(stringToCodePoints(opt_string));\n /** @type {?(number|!Array.)} */\n var result;\n while (!input_stream.endOfStream()) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n if (!this._streaming) {\n while (true) {\n result = this._encoder.handler(input_stream, input_stream.read());\n if (result === finished)\n break;\n if (Array.isArray(result))\n bytes.push.apply(bytes, /**@type {!Array.}*/(result));\n else\n bytes.push(result);\n }\n this._encoder = null;\n }\n return new Uint8Array(bytes);\n }\n};\n\n//\n// 8. The encoding\n//\n\n// 8.1 utf-8\n\n/**\n * @constructor\n * @implements {Decoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Decoder(options) {\n var fatal = options.fatal;\n\n // utf-8's decoder's has an associated utf-8 code point, utf-8\n // bytes seen, and utf-8 bytes needed (all initially 0), a utf-8\n // lower boundary (initially 0x80), and a utf-8 upper boundary\n // (initially 0xBF).\n var /** @type {number} */ utf8_code_point = 0,\n /** @type {number} */ utf8_bytes_seen = 0,\n /** @type {number} */ utf8_bytes_needed = 0,\n /** @type {number} */ utf8_lower_boundary = 0x80,\n /** @type {number} */ utf8_upper_boundary = 0xBF;\n\n /**\n * @param {Stream} stream The stream of bytes being decoded.\n * @param {number} bite The next byte read from the stream.\n * @return {?(number|!Array.)} The next code point(s)\n * decoded, or null if not enough data exists in the input\n * stream to decode a complete code point.\n */\n this.handler = function(stream, bite) {\n // 1. If byte is end-of-stream and utf-8 bytes needed is not 0,\n // set utf-8 bytes needed to 0 and return error.\n if (bite === end_of_stream && utf8_bytes_needed !== 0) {\n utf8_bytes_needed = 0;\n return decoderError(fatal);\n }\n\n // 2. If byte is end-of-stream, return finished.\n if (bite === end_of_stream)\n return finished;\n\n // 3. If utf-8 bytes needed is 0, based on byte:\n if (utf8_bytes_needed === 0) {\n\n // 0x00 to 0x7F\n if (inRange(bite, 0x00, 0x7F)) {\n // Return a code point whose value is byte.\n return bite;\n }\n\n // 0xC2 to 0xDF\n if (inRange(bite, 0xC2, 0xDF)) {\n // Set utf-8 bytes needed to 1 and utf-8 code point to byte\n // \u2212 0xC0.\n utf8_bytes_needed = 1;\n utf8_code_point = bite - 0xC0;\n }\n\n // 0xE0 to 0xEF\n else if (inRange(bite, 0xE0, 0xEF)) {\n // 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.\n if (bite === 0xE0)\n utf8_lower_boundary = 0xA0;\n // 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.\n if (bite === 0xED)\n utf8_upper_boundary = 0x9F;\n // 3. Set utf-8 bytes needed to 2 and utf-8 code point to\n // byte \u2212 0xE0.\n utf8_bytes_needed = 2;\n utf8_code_point = bite - 0xE0;\n }\n\n // 0xF0 to 0xF4\n else if (inRange(bite, 0xF0, 0xF4)) {\n // 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.\n if (bite === 0xF0)\n utf8_lower_boundary = 0x90;\n // 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.\n if (bite === 0xF4)\n utf8_upper_boundary = 0x8F;\n // 3. Set utf-8 bytes needed to 3 and utf-8 code point to\n // byte \u2212 0xF0.\n utf8_bytes_needed = 3;\n utf8_code_point = bite - 0xF0;\n }\n\n // Otherwise\n else {\n // Return error.\n return decoderError(fatal);\n }\n\n // Then (byte is in the range 0xC2 to 0xF4) set utf-8 code\n // point to utf-8 code point << (6 \u00D7 utf-8 bytes needed) and\n // return continue.\n utf8_code_point = utf8_code_point << (6 * utf8_bytes_needed);\n return null;\n }\n\n // 4. If byte is not in the range utf-8 lower boundary to utf-8\n // upper boundary, run these substeps:\n if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {\n\n // 1. Set utf-8 code point, utf-8 bytes needed, and utf-8\n // bytes seen to 0, set utf-8 lower boundary to 0x80, and set\n // utf-8 upper boundary to 0xBF.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 2. Prepend byte to stream.\n stream.prepend(bite);\n\n // 3. Return error.\n return decoderError(fatal);\n }\n\n // 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary\n // to 0xBF.\n utf8_lower_boundary = 0x80;\n utf8_upper_boundary = 0xBF;\n\n // 6. Increase utf-8 bytes seen by one and set utf-8 code point\n // to utf-8 code point + (byte \u2212 0x80) << (6 \u00D7 (utf-8 bytes\n // needed \u2212 utf-8 bytes seen)).\n utf8_bytes_seen += 1;\n utf8_code_point += (bite - 0x80) << (6 * (utf8_bytes_needed - utf8_bytes_seen));\n\n // 7. If utf-8 bytes seen is not equal to utf-8 bytes needed,\n // continue.\n if (utf8_bytes_seen !== utf8_bytes_needed)\n return null;\n\n // 8. Let code point be utf-8 code point.\n var code_point = utf8_code_point;\n\n // 9. Set utf-8 code point, utf-8 bytes needed, and utf-8 bytes\n // seen to 0.\n utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;\n\n // 10. Return a code point whose value is code point.\n return code_point;\n };\n}\n\n/**\n * @constructor\n * @implements {Encoder}\n * @param {{fatal: boolean}} options\n */\nfunction UTF8Encoder(options) {\n var fatal = options.fatal;\n /**\n * @param {Stream} stream Input stream.\n * @param {number} code_point Next code point read from the stream.\n * @return {(number|!Array.)} Byte(s) to emit.\n */\n this.handler = function(stream, code_point) {\n // 1. If code point is end-of-stream, return finished.\n if (code_point === end_of_stream)\n return finished;\n\n // 2. If code point is in the range U+0000 to U+007F, return a\n // byte whose value is code point.\n if (inRange(code_point, 0x0000, 0x007f))\n return code_point;\n\n // 3. Set count and offset based on the range code point is in:\n var count, offset;\n // U+0080 to U+07FF: 1 and 0xC0\n if (inRange(code_point, 0x0080, 0x07FF)) {\n count = 1;\n offset = 0xC0;\n }\n // U+0800 to U+FFFF: 2 and 0xE0\n else if (inRange(code_point, 0x0800, 0xFFFF)) {\n count = 2;\n offset = 0xE0;\n }\n // U+10000 to U+10FFFF: 3 and 0xF0\n else if (inRange(code_point, 0x10000, 0x10FFFF)) {\n count = 3;\n offset = 0xF0;\n }\n\n // 4.Let bytes be a byte sequence whose first byte is (code\n // point >> (6 \u00D7 count)) + offset.\n var bytes = [(code_point >> (6 * count)) + offset];\n\n // 5. Run these substeps while count is greater than 0:\n while (count > 0) {\n\n // 1. Set temp to code point >> (6 \u00D7 (count \u2212 1)).\n var temp = code_point >> (6 * (count - 1));\n\n // 2. Append to bytes 0x80 | (temp & 0x3F).\n bytes.push(0x80 | (temp & 0x3F));\n\n // 3. Decrease count by one.\n count -= 1;\n }\n\n // 6. Return bytes bytes, in order.\n return bytes;\n };\n}\n\nexports.TextEncoder = TextEncoder;\nexports.TextDecoder = TextDecoder;", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializeUnchecked = exports.deserialize = exports.serialize = exports.BinaryReader = exports.BinaryWriter = exports.BorshError = exports.baseDecode = exports.baseEncode = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bs58_1 = __importDefault(require(\"bs58\"));\n// TODO: Make sure this polyfill not included when not required\nconst encoding = __importStar(require(\"text-encoding-utf-8\"));\nconst ResolvedTextDecoder = typeof TextDecoder !== \"function\" ? encoding.TextDecoder : TextDecoder;\nconst textDecoder = new ResolvedTextDecoder(\"utf-8\", { fatal: true });\nfunction baseEncode(value) {\n if (typeof value === \"string\") {\n value = Buffer.from(value, \"utf8\");\n }\n return bs58_1.default.encode(Buffer.from(value));\n}\nexports.baseEncode = baseEncode;\nfunction baseDecode(value) {\n return Buffer.from(bs58_1.default.decode(value));\n}\nexports.baseDecode = baseDecode;\nconst INITIAL_LENGTH = 1024;\nclass BorshError extends Error {\n constructor(message) {\n super(message);\n this.fieldPath = [];\n this.originalMessage = message;\n }\n addToFieldPath(fieldName) {\n this.fieldPath.splice(0, 0, fieldName);\n // NOTE: Modifying message directly as jest doesn't use .toString()\n this.message = this.originalMessage + \": \" + this.fieldPath.join(\".\");\n }\n}\nexports.BorshError = BorshError;\n/// Binary encoder.\nclass BinaryWriter {\n constructor() {\n this.buf = Buffer.alloc(INITIAL_LENGTH);\n this.length = 0;\n }\n maybeResize() {\n if (this.buf.length < 16 + this.length) {\n this.buf = Buffer.concat([this.buf, Buffer.alloc(INITIAL_LENGTH)]);\n }\n }\n writeU8(value) {\n this.maybeResize();\n this.buf.writeUInt8(value, this.length);\n this.length += 1;\n }\n writeU16(value) {\n this.maybeResize();\n this.buf.writeUInt16LE(value, this.length);\n this.length += 2;\n }\n writeU32(value) {\n this.maybeResize();\n this.buf.writeUInt32LE(value, this.length);\n this.length += 4;\n }\n writeU64(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 8)));\n }\n writeU128(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 16)));\n }\n writeU256(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 32)));\n }\n writeU512(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 64)));\n }\n writeBuffer(buffer) {\n // Buffer.from is needed as this.buf.subarray can return plain Uint8Array in browser\n this.buf = Buffer.concat([\n Buffer.from(this.buf.subarray(0, this.length)),\n buffer,\n Buffer.alloc(INITIAL_LENGTH),\n ]);\n this.length += buffer.length;\n }\n writeString(str) {\n this.maybeResize();\n const b = Buffer.from(str, \"utf8\");\n this.writeU32(b.length);\n this.writeBuffer(b);\n }\n writeFixedArray(array) {\n this.writeBuffer(Buffer.from(array));\n }\n writeArray(array, fn) {\n this.maybeResize();\n this.writeU32(array.length);\n for (const elem of array) {\n this.maybeResize();\n fn(elem);\n }\n }\n toArray() {\n return this.buf.subarray(0, this.length);\n }\n}\nexports.BinaryWriter = BinaryWriter;\nfunction handlingRangeError(target, propertyKey, propertyDescriptor) {\n const originalMethod = propertyDescriptor.value;\n propertyDescriptor.value = function (...args) {\n try {\n return originalMethod.apply(this, args);\n }\n catch (e) {\n if (e instanceof RangeError) {\n const code = e.code;\n if ([\"ERR_BUFFER_OUT_OF_BOUNDS\", \"ERR_OUT_OF_RANGE\"].indexOf(code) >= 0) {\n throw new BorshError(\"Reached the end of buffer when deserializing\");\n }\n }\n throw e;\n }\n };\n}\nclass BinaryReader {\n constructor(buf) {\n this.buf = buf;\n this.offset = 0;\n }\n readU8() {\n const value = this.buf.readUInt8(this.offset);\n this.offset += 1;\n return value;\n }\n readU16() {\n const value = this.buf.readUInt16LE(this.offset);\n this.offset += 2;\n return value;\n }\n readU32() {\n const value = this.buf.readUInt32LE(this.offset);\n this.offset += 4;\n return value;\n }\n readU64() {\n const buf = this.readBuffer(8);\n return new bn_js_1.default(buf, \"le\");\n }\n readU128() {\n const buf = this.readBuffer(16);\n return new bn_js_1.default(buf, \"le\");\n }\n readU256() {\n const buf = this.readBuffer(32);\n return new bn_js_1.default(buf, \"le\");\n }\n readU512() {\n const buf = this.readBuffer(64);\n return new bn_js_1.default(buf, \"le\");\n }\n readBuffer(len) {\n if (this.offset + len > this.buf.length) {\n throw new BorshError(`Expected buffer length ${len} isn't within bounds`);\n }\n const result = this.buf.slice(this.offset, this.offset + len);\n this.offset += len;\n return result;\n }\n readString() {\n const len = this.readU32();\n const buf = this.readBuffer(len);\n try {\n // NOTE: Using TextDecoder to fail on invalid UTF-8\n return textDecoder.decode(buf);\n }\n catch (e) {\n throw new BorshError(`Error decoding UTF-8 string: ${e}`);\n }\n }\n readFixedArray(len) {\n return new Uint8Array(this.readBuffer(len));\n }\n readArray(fn) {\n const len = this.readU32();\n const result = Array();\n for (let i = 0; i < len; ++i) {\n result.push(fn());\n }\n return result;\n }\n}\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU8\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU16\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU32\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU64\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU128\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU256\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU512\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readString\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readFixedArray\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readArray\", null);\nexports.BinaryReader = BinaryReader;\nfunction capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nfunction serializeField(schema, fieldName, value, fieldType, writer) {\n try {\n // TODO: Handle missing values properly (make sure they never result in just skipped write)\n if (typeof fieldType === \"string\") {\n writer[`write${capitalizeFirstLetter(fieldType)}`](value);\n }\n else if (fieldType instanceof Array) {\n if (typeof fieldType[0] === \"number\") {\n if (value.length !== fieldType[0]) {\n throw new BorshError(`Expecting byte array of length ${fieldType[0]}, but got ${value.length} bytes`);\n }\n writer.writeFixedArray(value);\n }\n else if (fieldType.length === 2 && typeof fieldType[1] === \"number\") {\n if (value.length !== fieldType[1]) {\n throw new BorshError(`Expecting byte array of length ${fieldType[1]}, but got ${value.length} bytes`);\n }\n for (let i = 0; i < fieldType[1]; i++) {\n serializeField(schema, null, value[i], fieldType[0], writer);\n }\n }\n else {\n writer.writeArray(value, (item) => {\n serializeField(schema, fieldName, item, fieldType[0], writer);\n });\n }\n }\n else if (fieldType.kind !== undefined) {\n switch (fieldType.kind) {\n case \"option\": {\n if (value === null || value === undefined) {\n writer.writeU8(0);\n }\n else {\n writer.writeU8(1);\n serializeField(schema, fieldName, value, fieldType.type, writer);\n }\n break;\n }\n case \"map\": {\n writer.writeU32(value.size);\n value.forEach((val, key) => {\n serializeField(schema, fieldName, key, fieldType.key, writer);\n serializeField(schema, fieldName, val, fieldType.value, writer);\n });\n break;\n }\n default:\n throw new BorshError(`FieldType ${fieldType} unrecognized`);\n }\n }\n else {\n serializeStruct(schema, value, writer);\n }\n }\n catch (error) {\n if (error instanceof BorshError) {\n error.addToFieldPath(fieldName);\n }\n throw error;\n }\n}\nfunction serializeStruct(schema, obj, writer) {\n if (typeof obj.borshSerialize === \"function\") {\n obj.borshSerialize(writer);\n return;\n }\n const structSchema = schema.get(obj.constructor);\n if (!structSchema) {\n throw new BorshError(`Class ${obj.constructor.name} is missing in schema`);\n }\n if (structSchema.kind === \"struct\") {\n structSchema.fields.map(([fieldName, fieldType]) => {\n serializeField(schema, fieldName, obj[fieldName], fieldType, writer);\n });\n }\n else if (structSchema.kind === \"enum\") {\n const name = obj[structSchema.field];\n for (let idx = 0; idx < structSchema.values.length; ++idx) {\n const [fieldName, fieldType] = structSchema.values[idx];\n if (fieldName === name) {\n writer.writeU8(idx);\n serializeField(schema, fieldName, obj[fieldName], fieldType, writer);\n break;\n }\n }\n }\n else {\n throw new BorshError(`Unexpected schema kind: ${structSchema.kind} for ${obj.constructor.name}`);\n }\n}\n/// Serialize given object using schema of the form:\n/// { class_name -> [ [field_name, field_type], .. ], .. }\nfunction serialize(schema, obj, Writer = BinaryWriter) {\n const writer = new Writer();\n serializeStruct(schema, obj, writer);\n return writer.toArray();\n}\nexports.serialize = serialize;\nfunction deserializeField(schema, fieldName, fieldType, reader) {\n try {\n if (typeof fieldType === \"string\") {\n return reader[`read${capitalizeFirstLetter(fieldType)}`]();\n }\n if (fieldType instanceof Array) {\n if (typeof fieldType[0] === \"number\") {\n return reader.readFixedArray(fieldType[0]);\n }\n else if (typeof fieldType[1] === \"number\") {\n const arr = [];\n for (let i = 0; i < fieldType[1]; i++) {\n arr.push(deserializeField(schema, null, fieldType[0], reader));\n }\n return arr;\n }\n else {\n return reader.readArray(() => deserializeField(schema, fieldName, fieldType[0], reader));\n }\n }\n if (fieldType.kind === \"option\") {\n const option = reader.readU8();\n if (option) {\n return deserializeField(schema, fieldName, fieldType.type, reader);\n }\n return undefined;\n }\n if (fieldType.kind === \"map\") {\n let map = new Map();\n const length = reader.readU32();\n for (let i = 0; i < length; i++) {\n const key = deserializeField(schema, fieldName, fieldType.key, reader);\n const val = deserializeField(schema, fieldName, fieldType.value, reader);\n map.set(key, val);\n }\n return map;\n }\n return deserializeStruct(schema, fieldType, reader);\n }\n catch (error) {\n if (error instanceof BorshError) {\n error.addToFieldPath(fieldName);\n }\n throw error;\n }\n}\nfunction deserializeStruct(schema, classType, reader) {\n if (typeof classType.borshDeserialize === \"function\") {\n return classType.borshDeserialize(reader);\n }\n const structSchema = schema.get(classType);\n if (!structSchema) {\n throw new BorshError(`Class ${classType.name} is missing in schema`);\n }\n if (structSchema.kind === \"struct\") {\n const result = {};\n for (const [fieldName, fieldType] of schema.get(classType).fields) {\n result[fieldName] = deserializeField(schema, fieldName, fieldType, reader);\n }\n return new classType(result);\n }\n if (structSchema.kind === \"enum\") {\n const idx = reader.readU8();\n if (idx >= structSchema.values.length) {\n throw new BorshError(`Enum index: ${idx} is out of range`);\n }\n const [fieldName, fieldType] = structSchema.values[idx];\n const fieldValue = deserializeField(schema, fieldName, fieldType, reader);\n return new classType({ [fieldName]: fieldValue });\n }\n throw new BorshError(`Unexpected schema kind: ${structSchema.kind} for ${classType.constructor.name}`);\n}\n/// Deserializes object from bytes using schema.\nfunction deserialize(schema, classType, buffer, Reader = BinaryReader) {\n const reader = new Reader(buffer);\n const result = deserializeStruct(schema, classType, reader);\n if (reader.offset < buffer.length) {\n throw new BorshError(`Unexpected ${buffer.length - reader.offset} bytes after deserialized data`);\n }\n return result;\n}\nexports.deserialize = deserialize;\n/// Deserializes object from bytes using schema, without checking the length read\nfunction deserializeUnchecked(schema, classType, buffer, Reader = BinaryReader) {\n const reader = new Reader(buffer);\n return deserializeStruct(schema, classType, reader);\n}\nexports.deserializeUnchecked = deserializeUnchecked;\n", null, "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet converter;\n/**\n * Convert a little-endian buffer into a BigInt.\n * @param buf The little-endian buffer to convert\n * @returns A BigInt with the little-endian representation of buf.\n */\nfunction toBigIntLE(buf) {\n {\n const reversed = Buffer.from(buf);\n reversed.reverse();\n const hex = reversed.toString('hex');\n if (hex.length === 0) {\n return BigInt(0);\n }\n return BigInt(`0x${hex}`);\n }\n return converter.toBigInt(buf, false);\n}\nexports.toBigIntLE = toBigIntLE;\n/**\n * Convert a big-endian buffer into a BigInt\n * @param buf The big-endian buffer to convert.\n * @returns A BigInt with the big-endian representation of buf.\n */\nfunction toBigIntBE(buf) {\n {\n const hex = buf.toString('hex');\n if (hex.length === 0) {\n return BigInt(0);\n }\n return BigInt(`0x${hex}`);\n }\n return converter.toBigInt(buf, true);\n}\nexports.toBigIntBE = toBigIntBE;\n/**\n * Convert a BigInt to a little-endian buffer.\n * @param num The BigInt to convert.\n * @param width The number of bytes that the resulting buffer should be.\n * @returns A little-endian buffer representation of num.\n */\nfunction toBufferLE(num, width) {\n {\n const hex = num.toString(16);\n const buffer = Buffer.from(hex.padStart(width * 2, '0').slice(0, width * 2), 'hex');\n buffer.reverse();\n return buffer;\n }\n // Allocation is done here, since it is slower using napi in C\n return converter.fromBigInt(num, Buffer.allocUnsafe(width), false);\n}\nexports.toBufferLE = toBufferLE;\n/**\n * Convert a BigInt to a big-endian buffer.\n * @param num The BigInt to convert.\n * @param width The number of bytes that the resulting buffer should be.\n * @returns A big-endian buffer representation of num.\n */\nfunction toBufferBE(num, width) {\n {\n const hex = num.toString(16);\n return Buffer.from(hex.padStart(width * 2, '0').slice(0, width * 2), 'hex');\n }\n return converter.fromBigInt(num, Buffer.allocUnsafe(width), true);\n}\nexports.toBufferBE = toBufferBE;\n", "function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n", "/**\n * WebSocket implements a browser-side WebSocket specification.\n * @module Client\n */\n\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = _default;\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _eventemitter = require(\"eventemitter3\");\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar WebSocketBrowserImpl = /*#__PURE__*/function (_EventEmitter) {\n (0, _inherits2[\"default\"])(WebSocketBrowserImpl, _EventEmitter);\n\n var _super = _createSuper(WebSocketBrowserImpl);\n\n /** Instantiate a WebSocket class\n * @constructor\n * @param {String} address - url to a websocket server\n * @param {(Object)} options - websocket options\n * @param {(String|Array)} protocols - a list of protocols\n * @return {WebSocketBrowserImpl} - returns a WebSocket instance\n */\n function WebSocketBrowserImpl(address, options, protocols) {\n var _this;\n\n (0, _classCallCheck2[\"default\"])(this, WebSocketBrowserImpl);\n _this = _super.call(this);\n _this.socket = new window.WebSocket(address, protocols);\n\n _this.socket.onopen = function () {\n return _this.emit(\"open\");\n };\n\n _this.socket.onmessage = function (event) {\n return _this.emit(\"message\", event.data);\n };\n\n _this.socket.onerror = function (error) {\n return _this.emit(\"error\", error);\n };\n\n _this.socket.onclose = function (event) {\n _this.emit(\"close\", event.code, event.reason);\n };\n\n return _this;\n }\n /**\n * Sends data through a websocket connection\n * @method\n * @param {(String|Object)} data - data to be sent via websocket\n * @param {Object} optionsOrCallback - ws options\n * @param {Function} callback - a callback called once the data is sent\n * @return {Undefined}\n */\n\n\n (0, _createClass2[\"default\"])(WebSocketBrowserImpl, [{\n key: \"send\",\n value: function send(data, optionsOrCallback, callback) {\n var cb = callback || optionsOrCallback;\n\n try {\n this.socket.send(data);\n cb();\n } catch (error) {\n cb(error);\n }\n }\n /**\n * Closes an underlying socket\n * @method\n * @param {Number} code - status code explaining why the connection is being closed\n * @param {String} reason - a description why the connection is closing\n * @return {Undefined}\n * @throws {Error}\n */\n\n }, {\n key: \"close\",\n value: function close(code, reason) {\n this.socket.close(code, reason);\n }\n }, {\n key: \"addEventListener\",\n value: function addEventListener(type, listener, options) {\n this.socket.addEventListener(type, listener, options);\n }\n }]);\n return WebSocketBrowserImpl;\n}(_eventemitter.EventEmitter);\n/**\n * factory method for common WebSocket instance\n * @method\n * @param {String} address - url to a websocket server\n * @param {(Object)} options - websocket options\n * @return {Undefined}\n */\n\n\nfunction _default(address, options) {\n return new WebSocketBrowserImpl(address, options);\n}", "var _typeof = require(\"./typeof.js\")[\"default\"];\n\nfunction _regeneratorRuntime() {\n \"use strict\";\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return generator._invoke = function (innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }(innerFn, self, context), generator;\n }\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n exports.wrap = wrap;\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n\n reject(record.arg);\n }\n\n var previousPromise;\n\n this._invoke = function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n\n return next.value = undefined, next.done = !0, next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\n\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n", "function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "/**\n * \"Client\" wraps \"ws\" or a browser-implemented \"WebSocket\" library\n * according to the environment providing JSON RPC 2.0 support on top.\n * @module Client\n */\n\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _eventemitter = require(\"eventemitter3\");\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar __rest = void 0 && (void 0).__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}; // @ts-ignore\n\n\nvar CommonClient = /*#__PURE__*/function (_EventEmitter) {\n (0, _inherits2[\"default\"])(CommonClient, _EventEmitter);\n\n var _super = _createSuper(CommonClient);\n\n /**\n * Instantiate a Client class.\n * @constructor\n * @param {webSocketFactory} webSocketFactory - factory method for WebSocket\n * @param {String} address - url to a websocket server\n * @param {Object} options - ws options object with reconnect parameters\n * @param {Function} generate_request_id - custom generation request Id\n * @return {CommonClient}\n */\n function CommonClient(webSocketFactory) {\n var _this;\n\n var address = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"ws://localhost:8080\";\n\n var _a = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var generate_request_id = arguments.length > 3 ? arguments[3] : undefined;\n (0, _classCallCheck2[\"default\"])(this, CommonClient);\n\n var _a$autoconnect = _a.autoconnect,\n autoconnect = _a$autoconnect === void 0 ? true : _a$autoconnect,\n _a$reconnect = _a.reconnect,\n reconnect = _a$reconnect === void 0 ? true : _a$reconnect,\n _a$reconnect_interval = _a.reconnect_interval,\n reconnect_interval = _a$reconnect_interval === void 0 ? 1000 : _a$reconnect_interval,\n _a$max_reconnects = _a.max_reconnects,\n max_reconnects = _a$max_reconnects === void 0 ? 5 : _a$max_reconnects,\n rest_options = __rest(_a, [\"autoconnect\", \"reconnect\", \"reconnect_interval\", \"max_reconnects\"]);\n\n _this = _super.call(this);\n _this.webSocketFactory = webSocketFactory;\n _this.queue = {};\n _this.rpc_id = 0;\n _this.address = address;\n _this.autoconnect = autoconnect;\n _this.ready = false;\n _this.reconnect = reconnect;\n _this.reconnect_interval = reconnect_interval;\n _this.max_reconnects = max_reconnects;\n _this.rest_options = rest_options;\n _this.current_reconnects = 0;\n\n _this.generate_request_id = generate_request_id || function () {\n return ++_this.rpc_id;\n };\n\n if (_this.autoconnect) _this._connect(_this.address, Object.assign({\n autoconnect: _this.autoconnect,\n reconnect: _this.reconnect,\n reconnect_interval: _this.reconnect_interval,\n max_reconnects: _this.max_reconnects\n }, _this.rest_options));\n return _this;\n }\n /**\n * Connects to a defined server if not connected already.\n * @method\n * @return {Undefined}\n */\n\n\n (0, _createClass2[\"default\"])(CommonClient, [{\n key: \"connect\",\n value: function connect() {\n if (this.socket) return;\n\n this._connect(this.address, Object.assign({\n autoconnect: this.autoconnect,\n reconnect: this.reconnect,\n reconnect_interval: this.reconnect_interval,\n max_reconnects: this.max_reconnects\n }, this.rest_options));\n }\n /**\n * Calls a registered RPC method on server.\n * @method\n * @param {String} method - RPC method name\n * @param {Object|Array} params - optional method parameters\n * @param {Number} timeout - RPC reply timeout value\n * @param {Object} ws_opts - options passed to ws\n * @return {Promise}\n */\n\n }, {\n key: \"call\",\n value: function call(method, params, timeout, ws_opts) {\n var _this2 = this;\n\n if (!ws_opts && \"object\" === (0, _typeof2[\"default\"])(timeout)) {\n ws_opts = timeout;\n timeout = null;\n }\n\n return new Promise(function (resolve, reject) {\n if (!_this2.ready) return reject(new Error(\"socket not ready\"));\n\n var rpc_id = _this2.generate_request_id(method, params);\n\n var message = {\n jsonrpc: \"2.0\",\n method: method,\n params: params || null,\n id: rpc_id\n };\n\n _this2.socket.send(JSON.stringify(message), ws_opts, function (error) {\n if (error) return reject(error);\n _this2.queue[rpc_id] = {\n promise: [resolve, reject]\n };\n\n if (timeout) {\n _this2.queue[rpc_id].timeout = setTimeout(function () {\n delete _this2.queue[rpc_id];\n reject(new Error(\"reply timeout\"));\n }, timeout);\n }\n });\n });\n }\n /**\n * Logins with the other side of the connection.\n * @method\n * @param {Object} params - Login credentials object\n * @return {Promise}\n */\n\n }, {\n key: \"login\",\n value: function () {\n var _login = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee(params) {\n var resp;\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.call(\"rpc.login\", params);\n\n case 2:\n resp = _context.sent;\n\n if (resp) {\n _context.next = 5;\n break;\n }\n\n throw new Error(\"authentication failed\");\n\n case 5:\n return _context.abrupt(\"return\", resp);\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function login(_x) {\n return _login.apply(this, arguments);\n }\n\n return login;\n }()\n /**\n * Fetches a list of client's methods registered on server.\n * @method\n * @return {Array}\n */\n\n }, {\n key: \"listMethods\",\n value: function () {\n var _listMethods = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee2() {\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.call(\"__listMethods\");\n\n case 2:\n return _context2.abrupt(\"return\", _context2.sent);\n\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function listMethods() {\n return _listMethods.apply(this, arguments);\n }\n\n return listMethods;\n }()\n /**\n * Sends a JSON-RPC 2.0 notification to server.\n * @method\n * @param {String} method - RPC method name\n * @param {Object} params - optional method parameters\n * @return {Promise}\n */\n\n }, {\n key: \"notify\",\n value: function notify(method, params) {\n var _this3 = this;\n\n return new Promise(function (resolve, reject) {\n if (!_this3.ready) return reject(new Error(\"socket not ready\"));\n var message = {\n jsonrpc: \"2.0\",\n method: method,\n params: params || null\n };\n\n _this3.socket.send(JSON.stringify(message), function (error) {\n if (error) return reject(error);\n resolve();\n });\n });\n }\n /**\n * Subscribes for a defined event.\n * @method\n * @param {String|Array} event - event name\n * @return {Undefined}\n * @throws {Error}\n */\n\n }, {\n key: \"subscribe\",\n value: function () {\n var _subscribe = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee3(event) {\n var result;\n return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (typeof event === \"string\") event = [event];\n _context3.next = 3;\n return this.call(\"rpc.on\", event);\n\n case 3:\n result = _context3.sent;\n\n if (!(typeof event === \"string\" && result[event] !== \"ok\")) {\n _context3.next = 6;\n break;\n }\n\n throw new Error(\"Failed subscribing to an event '\" + event + \"' with: \" + result[event]);\n\n case 6:\n return _context3.abrupt(\"return\", result);\n\n case 7:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function subscribe(_x2) {\n return _subscribe.apply(this, arguments);\n }\n\n return subscribe;\n }()\n /**\n * Unsubscribes from a defined event.\n * @method\n * @param {String|Array} event - event name\n * @return {Undefined}\n * @throws {Error}\n */\n\n }, {\n key: \"unsubscribe\",\n value: function () {\n var _unsubscribe = (0, _asyncToGenerator2[\"default\"])( /*#__PURE__*/_regenerator[\"default\"].mark(function _callee4(event) {\n var result;\n return _regenerator[\"default\"].wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (typeof event === \"string\") event = [event];\n _context4.next = 3;\n return this.call(\"rpc.off\", event);\n\n case 3:\n result = _context4.sent;\n\n if (!(typeof event === \"string\" && result[event] !== \"ok\")) {\n _context4.next = 6;\n break;\n }\n\n throw new Error(\"Failed unsubscribing from an event with: \" + result);\n\n case 6:\n return _context4.abrupt(\"return\", result);\n\n case 7:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function unsubscribe(_x3) {\n return _unsubscribe.apply(this, arguments);\n }\n\n return unsubscribe;\n }()\n /**\n * Closes a WebSocket connection gracefully.\n * @method\n * @param {Number} code - socket close code\n * @param {String} data - optional data to be sent before closing\n * @return {Undefined}\n */\n\n }, {\n key: \"close\",\n value: function close(code, data) {\n this.socket.close(code || 1000, data);\n }\n /**\n * Connection/Message handler.\n * @method\n * @private\n * @param {String} address - WebSocket API address\n * @param {Object} options - ws options object\n * @return {Undefined}\n */\n\n }, {\n key: \"_connect\",\n value: function _connect(address, options) {\n var _this4 = this;\n\n this.socket = this.webSocketFactory(address, options);\n this.socket.addEventListener(\"open\", function () {\n _this4.ready = true;\n\n _this4.emit(\"open\");\n\n _this4.current_reconnects = 0;\n });\n this.socket.addEventListener(\"message\", function (_ref) {\n var message = _ref.data;\n if (message instanceof ArrayBuffer) message = Buffer.from(message).toString();\n\n try {\n message = JSON.parse(message);\n } catch (error) {\n return;\n } // check if any listeners are attached and forward event\n\n\n if (message.notification && _this4.listeners(message.notification).length) {\n if (!Object.keys(message.params).length) return _this4.emit(message.notification);\n var args = [message.notification];\n if (message.params.constructor === Object) args.push(message.params);else // using for-loop instead of unshift/spread because performance is better\n for (var i = 0; i < message.params.length; i++) {\n args.push(message.params[i]);\n } // run as microtask so that pending queue messages are resolved first\n // eslint-disable-next-line prefer-spread\n\n return Promise.resolve().then(function () {\n _this4.emit.apply(_this4, args);\n });\n }\n\n if (!_this4.queue[message.id]) {\n // general JSON RPC 2.0 events\n if (message.method && message.params) {\n // run as microtask so that pending queue messages are resolved first\n return Promise.resolve().then(function () {\n _this4.emit(message.method, message.params);\n });\n }\n\n return;\n } // reject early since server's response is invalid\n\n\n if (\"error\" in message === \"result\" in message) _this4.queue[message.id].promise[1](new Error(\"Server response malformed. Response must include either \\\"result\\\"\" + \" or \\\"error\\\", but not both.\"));\n if (_this4.queue[message.id].timeout) clearTimeout(_this4.queue[message.id].timeout);\n if (message.error) _this4.queue[message.id].promise[1](message.error);else _this4.queue[message.id].promise[0](message.result);\n delete _this4.queue[message.id];\n });\n this.socket.addEventListener(\"error\", function (error) {\n return _this4.emit(\"error\", error);\n });\n this.socket.addEventListener(\"close\", function (_ref2) {\n var code = _ref2.code,\n reason = _ref2.reason;\n if (_this4.ready) // Delay close event until internal state is updated\n setTimeout(function () {\n return _this4.emit(\"close\", code, reason);\n }, 0);\n _this4.ready = false;\n _this4.socket = undefined;\n if (code === 1000) return;\n _this4.current_reconnects++;\n if (_this4.reconnect && (_this4.max_reconnects > _this4.current_reconnects || _this4.max_reconnects === 0)) setTimeout(function () {\n return _this4._connect(address, options);\n }, _this4.reconnect_interval);\n });\n }\n }]);\n return CommonClient;\n}(_eventemitter.EventEmitter);\n\nexports[\"default\"] = CommonClient;", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Client = void 0;\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _websocket = _interopRequireDefault(require(\"./lib/client/websocket.browser\"));\n\nvar _client = _interopRequireDefault(require(\"./lib/client\"));\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2[\"default\"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2[\"default\"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2[\"default\"])(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nvar Client = /*#__PURE__*/function (_CommonClient) {\n (0, _inherits2[\"default\"])(Client, _CommonClient);\n\n var _super = _createSuper(Client);\n\n function Client() {\n var address = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"ws://localhost:8080\";\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$autoconnect = _ref.autoconnect,\n autoconnect = _ref$autoconnect === void 0 ? true : _ref$autoconnect,\n _ref$reconnect = _ref.reconnect,\n reconnect = _ref$reconnect === void 0 ? true : _ref$reconnect,\n _ref$reconnect_interv = _ref.reconnect_interval,\n reconnect_interval = _ref$reconnect_interv === void 0 ? 1000 : _ref$reconnect_interv,\n _ref$max_reconnects = _ref.max_reconnects,\n max_reconnects = _ref$max_reconnects === void 0 ? 5 : _ref$max_reconnects;\n\n var generate_request_id = arguments.length > 2 ? arguments[2] : undefined;\n (0, _classCallCheck2[\"default\"])(this, Client);\n return _super.call(this, _websocket[\"default\"], address, {\n autoconnect: autoconnect,\n reconnect: reconnect,\n reconnect_interval: reconnect_interval,\n max_reconnects: max_reconnects\n }, generate_request_id);\n }\n\n return (0, _createClass2[\"default\"])(Client);\n}(_client[\"default\"]);\n\nexports.Client = Client;", "// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}", "export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;", "import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;", "import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;", "import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;", "import validate from './validate.js';\n\nfunction parse(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n var v;\n var arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nexport default parse;", "import stringify from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = [];\n\n for (var i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = parse(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n var bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return stringify(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}", "/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (var i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n\n for (var i = 0; i < length32; i += 8) {\n var x = input[i >> 5] >>> i % 32 & 0xff;\n var hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (var i = 0; i < x.length; i += 16) {\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n var length8 = input.length * 8;\n var output = new Uint32Array(getOutputLength(length8));\n\n for (var i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;", "import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;", "import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;", "// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (var i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var _i = 0; _i < N; ++_i) {\n var arr = new Uint32Array(16);\n\n for (var j = 0; j < 16; ++j) {\n arr[j] = bytes[_i * 64 + j * 4] << 24 | bytes[_i * 64 + j * 4 + 1] << 16 | bytes[_i * 64 + j * 4 + 2] << 8 | bytes[_i * 64 + j * 4 + 3];\n }\n\n M[_i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var _i2 = 0; _i2 < N; ++_i2) {\n var W = new Uint32Array(80);\n\n for (var t = 0; t < 16; ++t) {\n W[t] = M[_i2][t];\n }\n\n for (var _t = 16; _t < 80; ++_t) {\n W[_t] = ROTL(W[_t - 3] ^ W[_t - 8] ^ W[_t - 14] ^ W[_t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var _t2 = 0; _t2 < 80; ++_t2) {\n var s = Math.floor(_t2 / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[_t2] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;", "import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;", "export default '00000000-0000-0000-0000-000000000000';", "import validate from './validate.js';\n\nfunction version(uuid) {\n if (!validate(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nexport default version;", "export { default as v1 } from './v1.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as NIL } from './nil.js';\nexport { default as version } from './version.js';\nexport { default as validate } from './validate.js';\nexport { default as stringify } from './stringify.js';\nexport { default as parse } from './parse.js';", "'use strict';\n\nconst uuid = require('uuid').v4;\n\n/**\n * Generates a JSON-RPC 1.0 or 2.0 request\n * @param {String} method Name of method to call\n * @param {Array|Object} params Array of parameters passed to the method as specified, or an object of parameter names and corresponding value\n * @param {String|Number|null} [id] Request ID can be a string, number, null for explicit notification or left out for automatic generation\n * @param {Object} [options]\n * @param {Number} [options.version=2] JSON-RPC version to use (1 or 2)\n * @param {Boolean} [options.notificationIdNull=false] When true, version 2 requests will set id to null instead of omitting it\n * @param {Function} [options.generator] Passed the request, and the options object and is expected to return a request ID\n * @throws {TypeError} If any of the parameters are invalid\n * @return {Object} A JSON-RPC 1.0 or 2.0 request\n * @memberOf Utils\n */\nconst generateRequest = function(method, params, id, options) {\n if(typeof method !== 'string') {\n throw new TypeError(method + ' must be a string');\n }\n\n options = options || {};\n\n // check valid version provided\n const version = typeof options.version === 'number' ? options.version : 2;\n if (version !== 1 && version !== 2) {\n throw new TypeError(version + ' must be 1 or 2');\n }\n\n const request = {\n method: method\n };\n\n if(version === 2) {\n request.jsonrpc = '2.0';\n }\n\n if(params) {\n // params given, but invalid?\n if(typeof params !== 'object' && !Array.isArray(params)) {\n throw new TypeError(params + ' must be an object, array or omitted');\n }\n request.params = params;\n }\n\n // if id was left out, generate one (null means explicit notification)\n if(typeof(id) === 'undefined') {\n const generator = typeof options.generator === 'function' ? options.generator : function() { return uuid(); };\n request.id = generator(request, options);\n } else if (version === 2 && id === null) {\n // we have a version 2 notification\n if (options.notificationIdNull) {\n request.id = null; // id will not be set at all unless option provided\n }\n } else {\n request.id = id;\n }\n\n return request;\n};\n\nmodule.exports = generateRequest;\n", "'use strict';\n\nconst uuid = require('uuid').v4;\nconst generateRequest = require('../../generateRequest');\n\n/**\n * Constructor for a Jayson Browser Client that does not depend any node.js core libraries\n * @class ClientBrowser\n * @param {Function} callServer Method that calls the server, receives the stringified request and a regular node-style callback\n * @param {Object} [options]\n * @param {Function} [options.reviver] Reviver function for JSON\n * @param {Function} [options.replacer] Replacer function for JSON\n * @param {Number} [options.version=2] JSON-RPC version to use (1|2)\n * @param {Function} [options.generator] Function to use for generating request IDs\n * @param {Boolean} [options.notificationIdNull=false] When true, version 2 requests will set id to null instead of omitting it\n * @return {ClientBrowser}\n */\nconst ClientBrowser = function(callServer, options) {\n if(!(this instanceof ClientBrowser)) {\n return new ClientBrowser(callServer, options);\n }\n\n if (!options) {\n options = {};\n }\n\n this.options = {\n reviver: typeof options.reviver !== 'undefined' ? options.reviver : null,\n replacer: typeof options.replacer !== 'undefined' ? options.replacer : null,\n generator: typeof options.generator !== 'undefined' ? options.generator : function() { return uuid(); },\n version: typeof options.version !== 'undefined' ? options.version : 2,\n notificationIdNull: typeof options.notificationIdNull === 'boolean' ? options.notificationIdNull : false,\n };\n\n this.callServer = callServer;\n};\n\nmodule.exports = ClientBrowser;\n\n/**\n * Creates a request and dispatches it if given a callback.\n * @param {String|Array} method A batch request if passed an Array, or a method name if passed a String\n * @param {Array|Object} [params] Parameters for the method\n * @param {String|Number} [id] Optional id. If undefined an id will be generated. If null it creates a notification request\n * @param {Function} [callback] Request callback. If specified, executes the request rather than only returning it.\n * @throws {TypeError} Invalid parameters\n * @return {Object} JSON-RPC 1.0 or 2.0 compatible request\n */\nClientBrowser.prototype.request = function(method, params, id, callback) {\n const self = this;\n let request = null;\n\n // is this a batch request?\n const isBatch = Array.isArray(method) && typeof params === 'function';\n\n if (this.options.version === 1 && isBatch) {\n throw new TypeError('JSON-RPC 1.0 does not support batching');\n }\n\n // is this a raw request?\n const isRaw = !isBatch && method && typeof method === 'object' && typeof params === 'function';\n\n if(isBatch || isRaw) {\n callback = params;\n request = method;\n } else {\n if(typeof id === 'function') {\n callback = id;\n // specifically undefined because \"null\" is a notification request\n id = undefined;\n }\n\n const hasCallback = typeof callback === 'function';\n\n try {\n request = generateRequest(method, params, id, {\n generator: this.options.generator,\n version: this.options.version,\n notificationIdNull: this.options.notificationIdNull,\n });\n } catch(err) {\n if(hasCallback) {\n return callback(err);\n }\n throw err;\n }\n\n // no callback means we should just return a raw request\n if(!hasCallback) {\n return request;\n }\n\n }\n\n let message;\n try {\n message = JSON.stringify(request, this.options.replacer);\n } catch(err) {\n return callback(err);\n }\n\n this.callServer(message, function(err, response) {\n self._parseResponse(err, response, callback);\n });\n\n // always return the raw request\n return request;\n};\n\n/**\n * Parses a response from a server\n * @param {Object} err Error to pass on that is unrelated to the actual response\n * @param {String} responseText JSON-RPC 1.0 or 2.0 response\n * @param {Function} callback Callback that will receive different arguments depending on the amount of parameters\n * @private\n */\nClientBrowser.prototype._parseResponse = function(err, responseText, callback) {\n if(err) {\n callback(err);\n return;\n }\n\n if(!responseText) {\n // empty response text, assume that is correct because it could be a\n // notification which jayson does not give any body for\n return callback();\n }\n\n let response;\n try {\n response = JSON.parse(responseText, this.options.reviver);\n } catch(err) {\n return callback(err);\n }\n\n if(callback.length === 3) {\n // if callback length is 3, we split callback arguments on error and response\n\n // is batch response?\n if(Array.isArray(response)) {\n\n // neccesary to split strictly on validity according to spec here\n const isError = function(res) {\n return typeof res.error !== 'undefined';\n };\n\n const isNotError = function (res) {\n return !isError(res);\n };\n\n return callback(null, response.filter(isError), response.filter(isNotError));\n \n } else {\n\n // split regardless of validity\n return callback(null, response.error, response.result);\n \n }\n \n }\n\n callback(null, response);\n};\n", "const errors = {\n IMPOSSIBLE_CASE: 'Impossible case. Please create issue.',\n TWEAK_ADD:\n 'The tweak was out of range or the resulted private key is invalid',\n TWEAK_MUL: 'The tweak was out of range or equal to zero',\n CONTEXT_RANDOMIZE_UNKNOW: 'Unknow error on context randomization',\n SECKEY_INVALID: 'Private Key is invalid',\n PUBKEY_PARSE: 'Public Key could not be parsed',\n PUBKEY_SERIALIZE: 'Public Key serialization error',\n PUBKEY_COMBINE: 'The sum of the public keys is not valid',\n SIG_PARSE: 'Signature could not be parsed',\n SIGN: 'The nonce generation function failed, or the private key was invalid',\n RECOVER: 'Public key could not be recover',\n ECDH: 'Scalar was invalid (zero or overflow)'\n}\n\nfunction assert (cond, msg) {\n if (!cond) throw new Error(msg)\n}\n\nfunction isUint8Array (name, value, length) {\n assert(value instanceof Uint8Array, `Expected ${name} to be an Uint8Array`)\n\n if (length !== undefined) {\n if (Array.isArray(length)) {\n const numbers = length.join(', ')\n const msg = `Expected ${name} to be an Uint8Array with length [${numbers}]`\n assert(length.includes(value.length), msg)\n } else {\n const msg = `Expected ${name} to be an Uint8Array with length ${length}`\n assert(value.length === length, msg)\n }\n }\n}\n\nfunction isCompressed (value) {\n assert(toTypeString(value) === 'Boolean', 'Expected compressed to be a Boolean')\n}\n\nfunction getAssertedOutput (output = (len) => new Uint8Array(len), length) {\n if (typeof output === 'function') output = output(length)\n isUint8Array('output', output, length)\n return output\n}\n\nfunction toTypeString (value) {\n return Object.prototype.toString.call(value).slice(8, -1)\n}\n\nmodule.exports = (secp256k1) => {\n return {\n contextRandomize (seed) {\n assert(\n seed === null || seed instanceof Uint8Array,\n 'Expected seed to be an Uint8Array or null'\n )\n if (seed !== null) isUint8Array('seed', seed, 32)\n\n switch (secp256k1.contextRandomize(seed)) {\n case 1:\n throw new Error(errors.CONTEXT_RANDOMIZE_UNKNOW)\n }\n },\n\n privateKeyVerify (seckey) {\n isUint8Array('private key', seckey, 32)\n\n return secp256k1.privateKeyVerify(seckey) === 0\n },\n\n privateKeyNegate (seckey) {\n isUint8Array('private key', seckey, 32)\n\n switch (secp256k1.privateKeyNegate(seckey)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakAdd(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n privateKeyTweakMul (seckey, tweak) {\n isUint8Array('private key', seckey, 32)\n isUint8Array('tweak', tweak, 32)\n\n switch (secp256k1.privateKeyTweakMul(seckey, tweak)) {\n case 0:\n return seckey\n case 1:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n publicKeyVerify (pubkey) {\n isUint8Array('public key', pubkey, [33, 65])\n\n return secp256k1.publicKeyVerify(pubkey) === 0\n },\n\n publicKeyCreate (seckey, compressed = true, output) {\n isUint8Array('private key', seckey, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCreate(output, seckey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SECKEY_INVALID)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyConvert (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyConvert(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyNegate (pubkey, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyNegate(output, pubkey)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyCombine (pubkeys, compressed = true, output) {\n assert(Array.isArray(pubkeys), 'Expected public keys to be an Array')\n assert(pubkeys.length > 0, 'Expected public keys array will have more than zero items')\n for (const pubkey of pubkeys) {\n isUint8Array('public key', pubkey, [33, 65])\n }\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyCombine(output, pubkeys)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_COMBINE)\n case 3:\n throw new Error(errors.PUBKEY_SERIALIZE)\n }\n },\n\n publicKeyTweakAdd (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakAdd(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_ADD)\n }\n },\n\n publicKeyTweakMul (pubkey, tweak, compressed = true, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('tweak', tweak, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.publicKeyTweakMul(output, pubkey, tweak)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.TWEAK_MUL)\n }\n },\n\n signatureNormalize (sig) {\n isUint8Array('signature', sig, 64)\n\n switch (secp256k1.signatureNormalize(sig)) {\n case 0:\n return sig\n case 1:\n throw new Error(errors.SIG_PARSE)\n }\n },\n\n signatureExport (sig, output) {\n isUint8Array('signature', sig, 64)\n output = getAssertedOutput(output, 72)\n\n const obj = { output, outputlen: 72 }\n switch (secp256k1.signatureExport(obj, sig)) {\n case 0:\n return output.slice(0, obj.outputlen)\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n signatureImport (sig, output) {\n isUint8Array('signature', sig)\n output = getAssertedOutput(output, 64)\n\n switch (secp256k1.signatureImport(output, sig)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaSign (msg32, seckey, options = {}, output) {\n isUint8Array('message', msg32, 32)\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.noncefn !== undefined) assert(toTypeString(options.noncefn) === 'Function', 'Expected options.noncefn to be a Function')\n output = getAssertedOutput(output, 64)\n\n const obj = { signature: output, recid: null }\n switch (secp256k1.ecdsaSign(obj, msg32, seckey, options.data, options.noncefn)) {\n case 0:\n return obj\n case 1:\n throw new Error(errors.SIGN)\n case 2:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n isUint8Array('signature', sig, 64)\n isUint8Array('message', msg32, 32)\n isUint8Array('public key', pubkey, [33, 65])\n\n switch (secp256k1.ecdsaVerify(sig, msg32, pubkey)) {\n case 0:\n return true\n case 3:\n return false\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.PUBKEY_PARSE)\n }\n },\n\n ecdsaRecover (sig, recid, msg32, compressed = true, output) {\n isUint8Array('signature', sig, 64)\n assert(\n toTypeString(recid) === 'Number' &&\n recid >= 0 &&\n recid <= 3,\n 'Expected recovery id to be a Number within interval [0, 3]'\n )\n isUint8Array('message', msg32, 32)\n isCompressed(compressed)\n output = getAssertedOutput(output, compressed ? 33 : 65)\n\n switch (secp256k1.ecdsaRecover(output, sig, recid, msg32)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.SIG_PARSE)\n case 2:\n throw new Error(errors.RECOVER)\n case 3:\n throw new Error(errors.IMPOSSIBLE_CASE)\n }\n },\n\n ecdh (pubkey, seckey, options = {}, output) {\n isUint8Array('public key', pubkey, [33, 65])\n isUint8Array('private key', seckey, 32)\n assert(toTypeString(options) === 'Object', 'Expected options to be an Object')\n if (options.data !== undefined) isUint8Array('options.data', options.data)\n if (options.hashfn !== undefined) {\n assert(toTypeString(options.hashfn) === 'Function', 'Expected options.hashfn to be a Function')\n if (options.xbuf !== undefined) isUint8Array('options.xbuf', options.xbuf, 32)\n if (options.ybuf !== undefined) isUint8Array('options.ybuf', options.ybuf, 32)\n isUint8Array('output', output)\n } else {\n output = getAssertedOutput(output, 32)\n }\n\n switch (secp256k1.ecdh(output, pubkey, seckey, options.data, options.hashfn, options.xbuf, options.ybuf)) {\n case 0:\n return output\n case 1:\n throw new Error(errors.PUBKEY_PARSE)\n case 2:\n throw new Error(errors.ECDH)\n }\n }\n }\n}\n", "(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n", "'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n", "var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n", "'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n", "'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n", "'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n", "'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n", "'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n", "'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n", "'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n", "'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n", "const EC = require('elliptic').ec\n\nconst ec = new EC('secp256k1')\nconst ecparams = ec.curve\n\n// Hack, we can not use bn.js@5, while elliptic uses bn.js@4\n// See https://github.com/indutny/elliptic/issues/191#issuecomment-569888758\nconst BN = ecparams.n.constructor\n\nfunction loadCompressedPublicKey (first, xbuf) {\n let x = new BN(xbuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0) return null\n x = x.toRed(ecparams.red)\n\n // compute corresponding Y\n let y = x.redSqr().redIMul(x).redIAdd(ecparams.b).redSqrt()\n if ((first === 0x03) !== y.isOdd()) y = y.redNeg()\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadUncompressedPublicKey (first, xbuf, ybuf) {\n let x = new BN(xbuf)\n let y = new BN(ybuf)\n\n // overflow\n if (x.cmp(ecparams.p) >= 0 || y.cmp(ecparams.p) >= 0) return null\n\n x = x.toRed(ecparams.red)\n y = y.toRed(ecparams.red)\n\n // is odd flag\n if ((first === 0x06 || first === 0x07) && y.isOdd() !== (first === 0x07)) return null\n\n // x*x*x + b = y*y\n const x3 = x.redSqr().redIMul(x)\n if (!y.redSqr().redISub(x3.redIAdd(ecparams.b)).isZero()) return null\n\n return ec.keyPair({ pub: { x: x, y: y } })\n}\n\nfunction loadPublicKey (pubkey) {\n // length should be validated in interface\n const first = pubkey[0]\n switch (first) {\n case 0x02:\n case 0x03:\n if (pubkey.length !== 33) return null\n return loadCompressedPublicKey(first, pubkey.subarray(1, 33))\n case 0x04:\n case 0x06:\n case 0x07:\n if (pubkey.length !== 65) return null\n return loadUncompressedPublicKey(first, pubkey.subarray(1, 33), pubkey.subarray(33, 65))\n default:\n return null\n }\n}\n\nfunction savePublicKey (output, point) {\n const pubkey = point.encode(null, output.length === 33)\n // Loop should be faster because we do not need create extra Uint8Array\n // output.set(new Uint8Array(pubkey))\n for (let i = 0; i < output.length; ++i) output[i] = pubkey[i]\n}\n\nmodule.exports = {\n contextRandomize () {\n return 0\n },\n\n privateKeyVerify (seckey) {\n const bn = new BN(seckey)\n return bn.cmp(ecparams.n) < 0 && !bn.isZero() ? 0 : 1\n },\n\n privateKeyNegate (seckey) {\n const bn = new BN(seckey)\n const negate = ecparams.n.sub(bn).umod(ecparams.n).toArrayLike(Uint8Array, 'be', 32)\n seckey.set(negate)\n return 0\n },\n\n privateKeyTweakAdd (seckey, tweak) {\n const bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0) return 1\n\n bn.iadd(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn.isub(ecparams.n)\n if (bn.isZero()) return 1\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n privateKeyTweakMul (seckey, tweak) {\n let bn = new BN(tweak)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n bn.imul(new BN(seckey))\n if (bn.cmp(ecparams.n) >= 0) bn = bn.umod(ecparams.n)\n\n const tweaked = bn.toArrayLike(Uint8Array, 'be', 32)\n seckey.set(tweaked)\n\n return 0\n },\n\n publicKeyVerify (pubkey) {\n const pair = loadPublicKey(pubkey)\n return pair === null ? 1 : 0\n },\n\n publicKeyCreate (output, seckey) {\n const bn = new BN(seckey)\n if (bn.cmp(ecparams.n) >= 0 || bn.isZero()) return 1\n\n const point = ec.keyFromPrivate(seckey).getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyConvert (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyNegate (output, pubkey) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const point = pair.getPublic()\n point.y = point.y.redNeg()\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyCombine (output, pubkeys) {\n const pairs = new Array(pubkeys.length)\n for (let i = 0; i < pubkeys.length; ++i) {\n pairs[i] = loadPublicKey(pubkeys[i])\n if (pairs[i] === null) return 1\n }\n\n let point = pairs[0].getPublic()\n for (let i = 1; i < pairs.length; ++i) point = point.add(pairs[i].pub)\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakAdd (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0) return 2\n\n const point = pair.getPublic().add(ecparams.g.mul(tweak))\n if (point.isInfinity()) return 2\n\n savePublicKey(output, point)\n\n return 0\n },\n\n publicKeyTweakMul (output, pubkey, tweak) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n tweak = new BN(tweak)\n if (tweak.cmp(ecparams.n) >= 0 || tweak.isZero()) return 2\n\n const point = pair.getPublic().mul(tweak)\n savePublicKey(output, point)\n\n return 0\n },\n\n signatureNormalize (sig) {\n const r = new BN(sig.subarray(0, 32))\n const s = new BN(sig.subarray(32, 64))\n if (r.cmp(ecparams.n) >= 0 || s.cmp(ecparams.n) >= 0) return 1\n\n if (s.cmp(ec.nh) === 1) {\n sig.set(ecparams.n.sub(s).toArrayLike(Uint8Array, 'be', 32), 32)\n }\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureExport (obj, sig) {\n const sigR = sig.subarray(0, 32)\n const sigS = sig.subarray(32, 64)\n if (new BN(sigR).cmp(ecparams.n) >= 0) return 1\n if (new BN(sigS).cmp(ecparams.n) >= 0) return 1\n\n const { output } = obj\n\n // Prepare R\n let r = output.subarray(4, 4 + 33)\n r[0] = 0x00\n r.set(sigR, 1)\n\n let lenR = 33\n let posR = 0\n for (; lenR > 1 && r[posR] === 0x00 && !(r[posR + 1] & 0x80); --lenR, ++posR);\n\n r = r.subarray(posR)\n if (r[0] & 0x80) return 1\n if (lenR > 1 && (r[0] === 0x00) && !(r[1] & 0x80)) return 1\n\n // Prepare S\n let s = output.subarray(6 + 33, 6 + 33 + 33)\n s[0] = 0x00\n s.set(sigS, 1)\n\n let lenS = 33\n let posS = 0\n for (; lenS > 1 && s[posS] === 0x00 && !(s[posS + 1] & 0x80); --lenS, ++posS);\n\n s = s.subarray(posS)\n if (s[0] & 0x80) return 1\n if (lenS > 1 && (s[0] === 0x00) && !(s[1] & 0x80)) return 1\n\n // Set output length for return\n obj.outputlen = 6 + lenR + lenS\n\n // Output in specified format\n // 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S]\n output[0] = 0x30\n output[1] = obj.outputlen - 2\n output[2] = 0x02\n output[3] = r.length\n output.set(r, 4)\n output[4 + lenR] = 0x02\n output[5 + lenR] = s.length\n output.set(s, 6 + lenR)\n\n return 0\n },\n\n // Copied 1-to-1 from https://github.com/bitcoinjs/bip66/blob/master/index.js\n // Adapted for Uint8Array instead Buffer\n signatureImport (output, sig) {\n if (sig.length < 8) return 1\n if (sig.length > 72) return 1\n if (sig[0] !== 0x30) return 1\n if (sig[1] !== sig.length - 2) return 1\n if (sig[2] !== 0x02) return 1\n\n const lenR = sig[3]\n if (lenR === 0) return 1\n if (5 + lenR >= sig.length) return 1\n if (sig[4 + lenR] !== 0x02) return 1\n\n const lenS = sig[5 + lenR]\n if (lenS === 0) return 1\n if ((6 + lenR + lenS) !== sig.length) return 1\n\n if (sig[4] & 0x80) return 1\n if (lenR > 1 && (sig[4] === 0x00) && !(sig[5] & 0x80)) return 1\n\n if (sig[lenR + 6] & 0x80) return 1\n if (lenS > 1 && (sig[lenR + 6] === 0x00) && !(sig[lenR + 7] & 0x80)) return 1\n\n let sigR = sig.subarray(4, 4 + lenR)\n if (sigR.length === 33 && sigR[0] === 0x00) sigR = sigR.subarray(1)\n if (sigR.length > 32) return 1\n\n let sigS = sig.subarray(6 + lenR)\n if (sigS.length === 33 && sigS[0] === 0x00) sigS = sigS.slice(1)\n if (sigS.length > 32) throw new Error('S length is too long')\n\n let r = new BN(sigR)\n if (r.cmp(ecparams.n) >= 0) r = new BN(0)\n\n let s = new BN(sig.subarray(6 + lenR))\n if (s.cmp(ecparams.n) >= 0) s = new BN(0)\n\n output.set(r.toArrayLike(Uint8Array, 'be', 32), 0)\n output.set(s.toArrayLike(Uint8Array, 'be', 32), 32)\n\n return 0\n },\n\n ecdsaSign (obj, message, seckey, data, noncefn) {\n if (noncefn) {\n const _noncefn = noncefn\n noncefn = (counter) => {\n const nonce = _noncefn(message, seckey, null, data, counter)\n\n const isValid = nonce instanceof Uint8Array && nonce.length === 32\n if (!isValid) throw new Error('This is the way')\n\n return new BN(nonce)\n }\n }\n\n const d = new BN(seckey)\n if (d.cmp(ecparams.n) >= 0 || d.isZero()) return 1\n\n let sig\n try {\n sig = ec.sign(message, seckey, { canonical: true, k: noncefn, pers: data })\n } catch (err) {\n return 1\n }\n\n obj.signature.set(sig.r.toArrayLike(Uint8Array, 'be', 32), 0)\n obj.signature.set(sig.s.toArrayLike(Uint8Array, 'be', 32), 32)\n obj.recid = sig.recoveryParam\n\n return 0\n },\n\n ecdsaVerify (sig, msg32, pubkey) {\n const sigObj = { r: sig.subarray(0, 32), s: sig.subarray(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n if (sigs.cmp(ec.nh) === 1 || sigr.isZero() || sigs.isZero()) return 3\n\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 2\n\n const point = pair.getPublic()\n const isValid = ec.verify(msg32, sigObj, point)\n return isValid ? 0 : 3\n },\n\n ecdsaRecover (output, sig, recid, msg32) {\n const sigObj = { r: sig.slice(0, 32), s: sig.slice(32, 64) }\n\n const sigr = new BN(sigObj.r)\n const sigs = new BN(sigObj.s)\n if (sigr.cmp(ecparams.n) >= 0 || sigs.cmp(ecparams.n) >= 0) return 1\n\n if (sigr.isZero() || sigs.isZero()) return 2\n\n // Can throw `throw new Error('Unable to find sencond key candinate');`\n let point\n try {\n point = ec.recoverPubKey(msg32, sigObj, recid)\n } catch (err) {\n return 2\n }\n\n savePublicKey(output, point)\n\n return 0\n },\n\n ecdh (output, pubkey, seckey, data, hashfn, xbuf, ybuf) {\n const pair = loadPublicKey(pubkey)\n if (pair === null) return 1\n\n const scalar = new BN(seckey)\n if (scalar.cmp(ecparams.n) >= 0 || scalar.isZero()) return 2\n\n const point = pair.getPublic().mul(scalar)\n\n if (hashfn === undefined) {\n const data = point.encode(null, true)\n const sha256 = ec.hash().update(data).digest()\n for (let i = 0; i < 32; ++i) output[i] = sha256[i]\n } else {\n if (!xbuf) xbuf = new Uint8Array(32)\n const x = point.getX().toArray('be', 32)\n for (let i = 0; i < 32; ++i) xbuf[i] = x[i]\n\n if (!ybuf) ybuf = new Uint8Array(32)\n const y = point.getY().toArray('be', 32)\n for (let i = 0; i < 32; ++i) ybuf[i] = y[i]\n\n const hash = hashfn(xbuf, ybuf, data)\n\n const isValid = hash instanceof Uint8Array && hash.length === output.length\n if (!isValid) return 2\n\n output.set(hash)\n }\n\n return 0\n }\n}\n", "module.exports = require('./lib')(require('./lib/elliptic'))\n", "/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n", "export * from './actions/index.js';\nexport * from './constants.js';\nexport * from './errors.js';\nexport * from './extensions/index.js';\nexport * from './instructions/index.js';\nexport * from './state/index.js';\n", "/**\n * A `StructFailure` represents a single specific failure in validation.\n */\n\nexport type Failure = {\n value: any\n key: any\n type: string\n refinement: string | undefined\n message: string\n branch: Array\n path: Array\n}\n\n/**\n * `StructError` objects are thrown (or returned) when validation fails.\n *\n * Validation logic is design to exit early for maximum performance. The error\n * represents the first error encountered during validation. For more detail,\n * the `error.failures` property is a generator function that can be run to\n * continue validation and receive all the failures in the data.\n */\n\nexport class StructError extends TypeError {\n value: any\n key!: any\n type!: string\n refinement!: string | undefined\n path!: Array\n branch!: Array\n failures: () => Array;\n [x: string]: any\n\n constructor(failure: Failure, failures: () => Generator) {\n let cached: Array | undefined\n const { message, ...rest } = failure\n const { path } = failure\n const msg =\n path.length === 0 ? message : `At path: ${path.join('.')} -- ${message}`\n super(msg)\n Object.assign(this, rest)\n this.name = this.constructor.name\n this.failures = () => {\n return (cached ??= [failure, ...failures()])\n }\n }\n}\n", "import { Struct, Infer, Result, Context, Describe } from './struct'\nimport { Failure } from './error'\n\n/**\n * Check if a value is an iterator.\n */\n\nfunction isIterable(x: unknown): x is Iterable {\n return isObject(x) && typeof x[Symbol.iterator] === 'function'\n}\n\n/**\n * Check if a value is a plain object.\n */\n\nexport function isObject(x: unknown): x is object {\n return typeof x === 'object' && x != null\n}\n\n/**\n * Check if a value is a plain object.\n */\n\nexport function isPlainObject(x: unknown): x is { [key: string]: any } {\n if (Object.prototype.toString.call(x) !== '[object Object]') {\n return false\n }\n\n const prototype = Object.getPrototypeOf(x)\n return prototype === null || prototype === Object.prototype\n}\n\n/**\n * Return a value as a printable string.\n */\n\nexport function print(value: any): string {\n return typeof value === 'string' ? JSON.stringify(value) : `${value}`\n}\n\n/**\n * Shifts (removes and returns) the first value from the `input` iterator.\n * Like `Array.prototype.shift()` but for an `Iterator`.\n */\n\nexport function shiftIterator(input: Iterator): T | undefined {\n const { done, value } = input.next()\n return done ? undefined : value\n}\n\n/**\n * Convert a single validation result to a failure.\n */\n\nexport function toFailure(\n result: string | boolean | Partial,\n context: Context,\n struct: Struct,\n value: any\n): Failure | undefined {\n if (result === true) {\n return\n } else if (result === false) {\n result = {}\n } else if (typeof result === 'string') {\n result = { message: result }\n }\n\n const { path, branch } = context\n const { type } = struct\n const {\n refinement,\n message = `Expected a value of type \\`${type}\\`${\n refinement ? ` with refinement \\`${refinement}\\`` : ''\n }, but received: \\`${print(value)}\\``,\n } = result\n\n return {\n value,\n type,\n refinement,\n key: path[path.length - 1],\n path,\n branch,\n ...result,\n message,\n }\n}\n\n/**\n * Convert a validation result to an iterable of failures.\n */\n\nexport function* toFailures(\n result: Result,\n context: Context,\n struct: Struct,\n value: any\n): IterableIterator {\n if (!isIterable(result)) {\n result = [result]\n }\n\n for (const r of result) {\n const failure = toFailure(r, context, struct, value)\n\n if (failure) {\n yield failure\n }\n }\n}\n\n/**\n * Check a value against a struct, traversing deeply into nested values, and\n * returning an iterator of failures or success.\n */\n\nexport function* run(\n value: unknown,\n struct: Struct,\n options: {\n path?: any[]\n branch?: any[]\n coerce?: boolean\n mask?: boolean\n } = {}\n): IterableIterator<[Failure, undefined] | [undefined, T]> {\n const { path = [], branch = [value], coerce = false, mask = false } = options\n const ctx: Context = { path, branch }\n\n if (coerce) {\n value = struct.coercer(value, ctx)\n\n if (\n mask &&\n struct.type !== 'type' &&\n isObject(struct.schema) &&\n isObject(value) &&\n !Array.isArray(value)\n ) {\n for (const key in value) {\n if (struct.schema[key] === undefined) {\n delete value[key]\n }\n }\n }\n }\n\n let valid = true\n\n for (const failure of struct.validator(value, ctx)) {\n valid = false\n yield [failure, undefined]\n }\n\n for (let [k, v, s] of struct.entries(value, ctx)) {\n const ts = run(v, s as Struct, {\n path: k === undefined ? path : [...path, k],\n branch: k === undefined ? branch : [...branch, v],\n coerce,\n mask,\n })\n\n for (const t of ts) {\n if (t[0]) {\n valid = false\n yield [t[0], undefined]\n } else if (coerce) {\n v = t[1]\n\n if (k === undefined) {\n value = v\n } else if (value instanceof Map) {\n value.set(k, v)\n } else if (value instanceof Set) {\n value.add(v)\n } else if (isObject(value)) {\n value[k] = v\n }\n }\n }\n }\n\n if (valid) {\n for (const failure of struct.refiner(value as T, ctx)) {\n valid = false\n yield [failure, undefined]\n }\n }\n\n if (valid) {\n yield [undefined, value as T]\n }\n}\n\n/**\n * Assign properties from one type to another, overwriting existing.\n */\n\nexport type Assign = Simplify>\n\n/**\n * A schema for enum structs.\n */\n\nexport type EnumSchema = { [K in T]: K }\n\n/**\n * Check if a type is an exact match.\n */\n\nexport type IsMatch = T extends G ? (G extends T ? T : never) : never\n\n/**\n * Check if a type is a record type.\n */\n\nexport type IsRecord = T extends object\n ? string extends keyof T\n ? T\n : never\n : never\n/**\n * Check if a type is a tuple.\n */\n\nexport type IsTuple = T extends [any]\n ? T\n : T extends [any, any]\n ? T\n : T extends [any, any, any]\n ? T\n : T extends [any, any, any, any]\n ? T\n : T extends [any, any, any, any, any]\n ? T\n : never\n\n/**\n * Check if a type is a union.\n */\n\nexport type IsUnion = (\n T extends any ? (U extends T ? false : true) : false\n) extends false\n ? never\n : T\n\n/**\n * A schema for object structs.\n */\n\nexport type ObjectSchema = Record>\n\n/**\n * Infer a type from an object struct schema.\n */\n\nexport type ObjectType = Simplify<\n Optionalize<{ [K in keyof S]: Infer }>\n>\n\n/**\n * Omit properties from a type that extend from a specific type.\n */\n\nexport type OmitBy = Omit<\n T,\n { [K in keyof T]: V extends Extract ? K : never }[keyof T]\n>\n\n/**\n * Normalize properties of a type that allow `undefined` to make them optional.\n */\n\nexport type Optionalize = OmitBy &\n Partial>\n\n/**\n * Transform an object schema type to represent a partial.\n */\n\nexport type PartialObjectSchema = {\n [K in keyof S]: Struct | undefined>\n}\n\n/**\n * Pick properties from a type that extend from a specific type.\n */\n\nexport type PickBy = Pick<\n T,\n { [K in keyof T]: V extends Extract ? K : never }[keyof T]\n>\n\n/**\n * Simplifies a type definition to its most basic representation.\n */\n\nexport type Simplify = T extends any[] | Date\n ? T\n : { [K in keyof T]: T[K] } & {}\n\nexport type If = B extends true ? Then : Else\n\n/**\n * A schema for any type of struct.\n */\n\nexport type StructSchema = [T] extends [string]\n ? [T] extends [IsMatch]\n ? null\n : [T] extends [IsUnion]\n ? EnumSchema\n : T\n : [T] extends [number]\n ? [T] extends [IsMatch]\n ? null\n : [T] extends [IsUnion]\n ? EnumSchema\n : T\n : [T] extends [boolean]\n ? [T] extends [IsMatch]\n ? null\n : T\n : T extends\n | bigint\n | symbol\n | undefined\n | null\n | Function\n | Date\n | Error\n | RegExp\n | Map\n | WeakMap\n | Set\n | WeakSet\n | Promise\n ? null\n : T extends Array\n ? T extends IsTuple\n ? null\n : Struct\n : T extends object\n ? T extends IsRecord\n ? null\n : { [K in keyof T]: Describe }\n : null\n\n/**\n * A schema for tuple structs.\n */\n\nexport type TupleSchema = { [K in keyof T]: Struct }\n", "import { toFailures, shiftIterator, StructSchema, run } from './utils'\nimport { StructError, Failure } from './error'\n\n/**\n * `Struct` objects encapsulate the validation logic for a specific type of\n * values. Once constructed, you use the `assert`, `is` or `validate` helpers to\n * validate unknown input data against the struct.\n */\n\nexport class Struct {\n readonly TYPE!: T\n type: string\n schema: S\n coercer: (value: unknown, context: Context) => unknown\n validator: (value: unknown, context: Context) => Iterable\n refiner: (value: T, context: Context) => Iterable\n entries: (\n value: unknown,\n context: Context\n ) => Iterable<[string | number, unknown, Struct | Struct]>\n\n constructor(props: {\n type: string\n schema: S\n coercer?: Coercer\n validator?: Validator\n refiner?: Refiner\n entries?: Struct['entries']\n }) {\n const {\n type,\n schema,\n validator,\n refiner,\n coercer = (value: unknown) => value,\n entries = function* () {},\n } = props\n\n this.type = type\n this.schema = schema\n this.entries = entries\n this.coercer = coercer\n\n if (validator) {\n this.validator = (value, context) => {\n const result = validator(value, context)\n return toFailures(result, context, this, value)\n }\n } else {\n this.validator = () => []\n }\n\n if (refiner) {\n this.refiner = (value, context) => {\n const result = refiner(value, context)\n return toFailures(result, context, this, value)\n }\n } else {\n this.refiner = () => []\n }\n }\n\n /**\n * Assert that a value passes the struct's validation, throwing if it doesn't.\n */\n\n assert(value: unknown): asserts value is T {\n return assert(value, this)\n }\n\n /**\n * Create a value with the struct's coercion logic, then validate it.\n */\n\n create(value: unknown): T {\n return create(value, this)\n }\n\n /**\n * Check if a value passes the struct's validation.\n */\n\n is(value: unknown): value is T {\n return is(value, this)\n }\n\n /**\n * Mask a value, coercing and validating it, but returning only the subset of\n * properties defined by the struct's schema.\n */\n\n mask(value: unknown): T {\n return mask(value, this)\n }\n\n /**\n * Validate a value with the struct's validation logic, returning a tuple\n * representing the result.\n *\n * You may optionally pass `true` for the `withCoercion` argument to coerce\n * the value before attempting to validate it. If you do, the result will\n * contain the coerced result when successful.\n */\n\n validate(\n value: unknown,\n options: {\n coerce?: boolean\n } = {}\n ): [StructError, undefined] | [undefined, T] {\n return validate(value, this, options)\n }\n}\n\n/**\n * Assert that a value passes a struct, throwing if it doesn't.\n */\n\nexport function assert(\n value: unknown,\n struct: Struct\n): asserts value is T {\n const result = validate(value, struct)\n\n if (result[0]) {\n throw result[0]\n }\n}\n\n/**\n * Create a value with the coercion logic of struct and validate it.\n */\n\nexport function create(value: unknown, struct: Struct): T {\n const result = validate(value, struct, { coerce: true })\n\n if (result[0]) {\n throw result[0]\n } else {\n return result[1]\n }\n}\n\n/**\n * Mask a value, returning only the subset of properties defined by a struct.\n */\n\nexport function mask(value: unknown, struct: Struct): T {\n const result = validate(value, struct, { coerce: true, mask: true })\n\n if (result[0]) {\n throw result[0]\n } else {\n return result[1]\n }\n}\n\n/**\n * Check if a value passes a struct.\n */\n\nexport function is(value: unknown, struct: Struct): value is T {\n const result = validate(value, struct)\n return !result[0]\n}\n\n/**\n * Validate a value against a struct, returning an error if invalid, or the\n * value (with potential coercion) if valid.\n */\n\nexport function validate(\n value: unknown,\n struct: Struct,\n options: {\n coerce?: boolean\n mask?: boolean\n } = {}\n): [StructError, undefined] | [undefined, T] {\n const tuples = run(value, struct, options)\n const tuple = shiftIterator(tuples)!\n\n if (tuple[0]) {\n const error = new StructError(tuple[0], function* () {\n for (const t of tuples) {\n if (t[0]) {\n yield t[0]\n }\n }\n })\n\n return [error, undefined]\n } else {\n const v = tuple[1]\n return [undefined, v]\n }\n}\n\n/**\n * A `Context` contains information about the current location of the\n * validation inside the initial input value.\n */\n\nexport type Context = {\n branch: Array\n path: Array\n}\n\n/**\n * A type utility to extract the type from a `Struct` class.\n */\n\nexport type Infer> = T['TYPE']\n\n/**\n * A type utility to describe that a struct represents a TypeScript type.\n */\n\nexport type Describe = Struct>\n\n/**\n * A `Result` is returned from validation functions.\n */\n\nexport type Result =\n | boolean\n | string\n | Partial\n | Iterable>\n\n/**\n * A `Coercer` takes an unknown value and optionally coerces it.\n */\n\nexport type Coercer = (value: T, context: Context) => unknown\n\n/**\n * A `Validator` takes an unknown value and validates it.\n */\n\nexport type Validator = (value: unknown, context: Context) => Result\n\n/**\n * A `Refiner` takes a value of a known type and validates it against a further\n * constraint.\n */\n\nexport type Refiner = (value: T, context: Context) => Result\n", "import { Struct, Context, Validator } from '../struct'\nimport { object, optional } from './types'\nimport { ObjectSchema, Assign, ObjectType, PartialObjectSchema } from '../utils'\n\n/**\n * Create a new struct that combines the properties properties from multiple\n * object structs.\n *\n * Like JavaScript's `Object.assign` utility.\n */\n\nexport function assign(\n A: Struct, A>,\n B: Struct, B>\n): Struct>, Assign>\nexport function assign<\n A extends ObjectSchema,\n B extends ObjectSchema,\n C extends ObjectSchema\n>(\n A: Struct, A>,\n B: Struct, B>,\n C: Struct, C>\n): Struct, C>>, Assign, C>>\nexport function assign<\n A extends ObjectSchema,\n B extends ObjectSchema,\n C extends ObjectSchema,\n D extends ObjectSchema\n>(\n A: Struct, A>,\n B: Struct, B>,\n C: Struct, C>,\n D: Struct, D>\n): Struct<\n ObjectType, C>, D>>,\n Assign, C>, D>\n>\nexport function assign<\n A extends ObjectSchema,\n B extends ObjectSchema,\n C extends ObjectSchema,\n D extends ObjectSchema,\n E extends ObjectSchema\n>(\n A: Struct, A>,\n B: Struct, B>,\n C: Struct, C>,\n D: Struct, D>,\n E: Struct, E>\n): Struct<\n ObjectType, C>, D>, E>>,\n Assign, C>, D>, E>\n>\nexport function assign(...Structs: Struct[]): any {\n const schemas = Structs.map((s) => s.schema)\n const schema = Object.assign({}, ...schemas)\n return object(schema)\n}\n\n/**\n * Define a new struct type with a custom validation function.\n */\n\nexport function define(name: string, validator: Validator): Struct {\n return new Struct({ type: name, schema: null, validator })\n}\n\n/**\n * Create a new struct based on an existing struct, but the value is allowed to\n * be `undefined`. `log` will be called if the value is not `undefined`.\n */\n\nexport function deprecated(\n struct: Struct,\n log: (value: unknown, ctx: Context) => void\n): Struct {\n return new Struct({\n ...struct,\n refiner: (value, ctx) => value === undefined || struct.refiner(value, ctx),\n validator(value, ctx) {\n if (value === undefined) {\n return true\n } else {\n log(value, ctx)\n return struct.validator(value, ctx)\n }\n },\n })\n}\n\n/**\n * Create a struct with dynamic validation logic.\n *\n * The callback will receive the value currently being validated, and must\n * return a struct object to validate it with. This can be useful to model\n * validation logic that changes based on its input.\n */\n\nexport function dynamic(\n fn: (value: unknown, ctx: Context) => Struct\n): Struct {\n return new Struct({\n type: 'dynamic',\n schema: null,\n *entries(value, ctx) {\n const struct = fn(value, ctx)\n yield* struct.entries(value, ctx)\n },\n validator(value, ctx) {\n const struct = fn(value, ctx)\n return struct.validator(value, ctx)\n },\n coercer(value, ctx) {\n const struct = fn(value, ctx)\n return struct.coercer(value, ctx)\n },\n })\n}\n\n/**\n * Create a struct with lazily evaluated validation logic.\n *\n * The first time validation is run with the struct, the callback will be called\n * and must return a struct object to use. This is useful for cases where you\n * want to have self-referential structs for nested data structures to avoid a\n * circular definition problem.\n */\n\nexport function lazy(fn: () => Struct): Struct {\n let struct: Struct | undefined\n return new Struct({\n type: 'lazy',\n schema: null,\n *entries(value, ctx) {\n struct ??= fn()\n yield* struct.entries(value, ctx)\n },\n validator(value, ctx) {\n struct ??= fn()\n return struct.validator(value, ctx)\n },\n coercer(value, ctx) {\n struct ??= fn()\n return struct.coercer(value, ctx)\n },\n })\n}\n\n/**\n * Create a new struct based on an existing object struct, but excluding\n * specific properties.\n *\n * Like TypeScript's `Omit` utility.\n */\n\nexport function omit(\n struct: Struct, S>,\n keys: K[]\n): Struct>, Omit> {\n const { schema } = struct\n const subschema: any = { ...schema }\n\n for (const key of keys) {\n delete subschema[key]\n }\n\n return object(subschema as Omit)\n}\n\n/**\n * Create a new struct based on an existing object struct, but with all of its\n * properties allowed to be `undefined`.\n *\n * Like TypeScript's `Partial` utility.\n */\n\nexport function partial(\n struct: Struct, S> | S\n): Struct>, PartialObjectSchema> {\n const schema: any =\n struct instanceof Struct ? { ...struct.schema } : { ...struct }\n\n for (const key in schema) {\n schema[key] = optional(schema[key])\n }\n\n return object(schema) as any\n}\n\n/**\n * Create a new struct based on an existing object struct, but only including\n * specific properties.\n *\n * Like TypeScript's `Pick` utility.\n */\n\nexport function pick(\n struct: Struct, S>,\n keys: K[]\n): Struct>, Pick> {\n const { schema } = struct\n const subschema: any = {}\n\n for (const key of keys) {\n subschema[key] = schema[key]\n }\n\n return object(subschema as Pick)\n}\n\n/**\n * Define a new struct type with a custom validation function.\n *\n * @deprecated This function has been renamed to `define`.\n */\n\nexport function struct(name: string, validator: Validator): Struct {\n console.warn(\n 'superstruct@0.11 - The `struct` helper has been renamed to `define`.'\n )\n\n return define(name, validator)\n}\n", "import { Infer, Struct } from '../struct'\nimport { define } from './utilities'\nimport {\n TupleSchema,\n ObjectSchema,\n ObjectType,\n print,\n run,\n isObject,\n} from '../utils'\n\n/**\n * Ensure that any value passes validation.\n */\n\nexport function any(): Struct {\n return define('any', () => true)\n}\n\n/**\n * Ensure that a value is an array and that its elements are of a specific type.\n *\n * Note: If you omit the element struct, the arrays elements will not be\n * iterated at all. This can be helpful for cases where performance is critical,\n * and it is preferred to using `array(any())`.\n */\n\nexport function array>(Element: T): Struct[], T>\nexport function array(): Struct\nexport function array>(Element?: T): any {\n return new Struct({\n type: 'array',\n schema: Element,\n *entries(value) {\n if (Element && Array.isArray(value)) {\n for (const [i, v] of value.entries()) {\n yield [i, v, Element]\n }\n }\n },\n coercer(value) {\n return Array.isArray(value) ? value.slice() : value\n },\n validator(value) {\n return (\n Array.isArray(value) ||\n `Expected an array value, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that a value is a boolean.\n */\n\nexport function boolean(): Struct {\n return define('boolean', (value) => {\n return typeof value === 'boolean'\n })\n}\n\n/**\n * Ensure that a value is a valid `Date`.\n *\n * Note: this also ensures that the value is *not* an invalid `Date` object,\n * which can occur when parsing a date fails but still returns a `Date`.\n */\n\nexport function date(): Struct {\n return define('date', (value) => {\n return (\n (value instanceof Date && !isNaN(value.getTime())) ||\n `Expected a valid \\`Date\\` object, but received: ${print(value)}`\n )\n })\n}\n\n/**\n * Ensure that a value is one of a set of potential values.\n *\n * Note: after creating the struct, you can access the definition of the\n * potential values as `struct.schema`.\n */\n\nexport function enums(\n values: readonly T[]\n): Struct\nexport function enums(\n values: readonly T[]\n): Struct\nexport function enums(values: readonly T[]): any {\n const schema: any = {}\n const description = values.map((v) => print(v)).join()\n\n for (const key of values) {\n schema[key] = key\n }\n\n return new Struct({\n type: 'enums',\n schema,\n validator(value) {\n return (\n values.includes(value as any) ||\n `Expected one of \\`${description}\\`, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that a value is a function.\n */\n\nexport function func(): Struct {\n return define('func', (value) => {\n return (\n typeof value === 'function' ||\n `Expected a function, but received: ${print(value)}`\n )\n })\n}\n\n/**\n * Ensure that a value is an instance of a specific class.\n */\n\nexport function instance(\n Class: T\n): Struct, null> {\n return define('instance', (value) => {\n return (\n value instanceof Class ||\n `Expected a \\`${Class.name}\\` instance, but received: ${print(value)}`\n )\n })\n}\n\n/**\n * Ensure that a value is an integer.\n */\n\nexport function integer(): Struct {\n return define('integer', (value) => {\n return (\n (typeof value === 'number' && !isNaN(value) && Number.isInteger(value)) ||\n `Expected an integer, but received: ${print(value)}`\n )\n })\n}\n\n/**\n * Ensure that a value matches all of a set of types.\n */\n\nexport function intersection(Structs: TupleSchema<[A]>): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P]>\n): Struct\nexport function intersection(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q]>\n): Struct<\n A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q,\n null\n>\nexport function intersection(Structs: Array>): any {\n return new Struct({\n type: 'intersection',\n schema: null,\n *entries(value, ctx) {\n for (const S of Structs) {\n yield* S.entries(value, ctx)\n }\n },\n *validator(value, ctx) {\n for (const S of Structs) {\n yield* S.validator(value, ctx)\n }\n },\n *refiner(value, ctx) {\n for (const S of Structs) {\n yield* S.refiner(value, ctx)\n }\n },\n })\n}\n\n/**\n * Ensure that a value is an exact value, using `===` for comparison.\n */\n\nexport function literal(constant: T): Struct\nexport function literal(constant: T): Struct\nexport function literal(constant: T): Struct\nexport function literal(constant: T): Struct\nexport function literal(constant: T): any {\n const description = print(constant)\n const t = typeof constant\n return new Struct({\n type: 'literal',\n schema:\n t === 'string' || t === 'number' || t === 'boolean' ? constant : null,\n validator(value) {\n return (\n value === constant ||\n `Expected the literal \\`${description}\\`, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that a value is a `Map` object, and that its keys and values are of\n * specific types.\n */\n\nexport function map(): Struct, null>\nexport function map(\n Key: Struct,\n Value: Struct\n): Struct, null>\nexport function map(Key?: Struct, Value?: Struct): any {\n return new Struct({\n type: 'map',\n schema: null,\n *entries(value) {\n if (Key && Value && value instanceof Map) {\n for (const [k, v] of value.entries()) {\n yield [k as string, k, Key]\n yield [k as string, v, Value]\n }\n }\n },\n coercer(value) {\n return value instanceof Map ? new Map(value) : value\n },\n validator(value) {\n return (\n value instanceof Map ||\n `Expected a \\`Map\\` object, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that no value ever passes validation.\n */\n\nexport function never(): Struct {\n return define('never', () => false)\n}\n\n/**\n * Augment an existing struct to allow `null` values.\n */\n\nexport function nullable(struct: Struct): Struct {\n return new Struct({\n ...struct,\n validator: (value, ctx) => value === null || struct.validator(value, ctx),\n refiner: (value, ctx) => value === null || struct.refiner(value, ctx),\n })\n}\n\n/**\n * Ensure that a value is a number.\n */\n\nexport function number(): Struct {\n return define('number', (value) => {\n return (\n (typeof value === 'number' && !isNaN(value)) ||\n `Expected a number, but received: ${print(value)}`\n )\n })\n}\n\n/**\n * Ensure that a value is an object, that is has a known set of properties,\n * and that its properties are of specific types.\n *\n * Note: Unrecognized properties will fail validation.\n */\n\nexport function object(): Struct, null>\nexport function object(\n schema: S\n): Struct, S>\nexport function object(schema?: S): any {\n const knowns = schema ? Object.keys(schema) : []\n const Never = never()\n return new Struct({\n type: 'object',\n schema: schema ? schema : null,\n *entries(value) {\n if (schema && isObject(value)) {\n const unknowns = new Set(Object.keys(value))\n\n for (const key of knowns) {\n unknowns.delete(key)\n yield [key, value[key], schema[key]]\n }\n\n for (const key of unknowns) {\n yield [key, value[key], Never]\n }\n }\n },\n validator(value) {\n return (\n isObject(value) || `Expected an object, but received: ${print(value)}`\n )\n },\n coercer(value) {\n return isObject(value) ? { ...value } : value\n },\n })\n}\n\n/**\n * Augment a struct to allow `undefined` values.\n */\n\nexport function optional(struct: Struct): Struct {\n return new Struct({\n ...struct,\n validator: (value, ctx) =>\n value === undefined || struct.validator(value, ctx),\n refiner: (value, ctx) => value === undefined || struct.refiner(value, ctx),\n })\n}\n\n/**\n * Ensure that a value is an object with keys and values of specific types, but\n * without ensuring any specific shape of properties.\n *\n * Like TypeScript's `Record` utility.\n */\n\nexport function record(\n Key: Struct,\n Value: Struct\n): Struct, null> {\n return new Struct({\n type: 'record',\n schema: null,\n *entries(value) {\n if (isObject(value)) {\n for (const k in value) {\n const v = value[k]\n yield [k, k, Key]\n yield [k, v, Value]\n }\n }\n },\n validator(value) {\n return (\n isObject(value) || `Expected an object, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that a value is a `RegExp`.\n *\n * Note: this does not test the value against the regular expression! For that\n * you need to use the `pattern()` refinement.\n */\n\nexport function regexp(): Struct {\n return define('regexp', (value) => {\n return value instanceof RegExp\n })\n}\n\n/**\n * Ensure that a value is a `Set` object, and that its elements are of a\n * specific type.\n */\n\nexport function set(): Struct, null>\nexport function set(Element: Struct): Struct, null>\nexport function set(Element?: Struct): any {\n return new Struct({\n type: 'set',\n schema: null,\n *entries(value) {\n if (Element && value instanceof Set) {\n for (const v of value) {\n yield [v as string, v, Element]\n }\n }\n },\n coercer(value) {\n return value instanceof Set ? new Set(value) : value\n },\n validator(value) {\n return (\n value instanceof Set ||\n `Expected a \\`Set\\` object, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that a value is a string.\n */\n\nexport function string(): Struct {\n return define('string', (value) => {\n return (\n typeof value === 'string' ||\n `Expected a string, but received: ${print(value)}`\n )\n })\n}\n\n/**\n * Ensure that a value is a tuple of a specific length, and that each of its\n * elements is of a specific type.\n */\n\nexport function tuple(Structs: TupleSchema<[A]>): Struct<[A], null>\nexport function tuple(Structs: TupleSchema<[A, B]>): Struct<[A, B], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C]>\n): Struct<[A, B, C], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D]>\n): Struct<[A, B, C, D], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E]>\n): Struct<[A, B, C, D, E], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F]>\n): Struct<[A, B, C, D, E, F], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G]>\n): Struct<[A, B, C, D, E, F, G], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H]>\n): Struct<[A, B, C, D, E, F, G, H], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I]>\n): Struct<[A, B, C, D, E, F, G, H, I], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J]>\n): Struct<[A, B, C, D, E, F, G, H, I, J], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K]>\n): Struct<[A, B, C, D, E, F, G, H, I, J, K], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L]>\n): Struct<[A, B, C, D, E, F, G, H, I, J, K, L], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M]>\n): Struct<[A, B, C, D, E, F, G, H, I, J, K, L, M], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N]>\n): Struct<[A, B, C, D, E, F, G, H, I, J, K, L, M, N], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O]>\n): Struct<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P]>\n): Struct<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P], null>\nexport function tuple(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q]>\n): Struct<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q], null>\nexport function tuple(Elements: Struct[]): any {\n const Never = never()\n\n return new Struct({\n type: 'tuple',\n schema: null,\n *entries(value) {\n if (Array.isArray(value)) {\n const length = Math.max(Elements.length, value.length)\n\n for (let i = 0; i < length; i++) {\n yield [i, value[i], Elements[i] || Never]\n }\n }\n },\n validator(value) {\n return (\n Array.isArray(value) ||\n `Expected an array, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that a value has a set of known properties of specific types.\n *\n * Note: Unrecognized properties are allowed and untouched. This is similar to\n * how TypeScript's structural typing works.\n */\n\nexport function type(\n schema: S\n): Struct, S> {\n const keys = Object.keys(schema)\n return new Struct({\n type: 'type',\n schema,\n *entries(value) {\n if (isObject(value)) {\n for (const k of keys) {\n yield [k, value[k], schema[k]]\n }\n }\n },\n validator(value) {\n return (\n isObject(value) || `Expected an object, but received: ${print(value)}`\n )\n },\n })\n}\n\n/**\n * Ensure that a value matches one of a set of types.\n */\n\nexport function union(Structs: TupleSchema<[A]>): Struct\nexport function union(Structs: TupleSchema<[A, B]>): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P]>\n): Struct\nexport function union(\n Structs: TupleSchema<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q]>\n): Struct<\n A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q,\n null\n>\nexport function union(Structs: Struct[]): any {\n const description = Structs.map((s) => s.type).join(' | ')\n return new Struct({\n type: 'union',\n schema: null,\n validator(value, ctx) {\n const failures = []\n\n for (const S of Structs) {\n const [...tuples] = run(value, S, ctx)\n const [first] = tuples\n\n if (!first[0]) {\n return []\n } else {\n for (const [failure] of tuples) {\n if (failure) {\n failures.push(failure)\n }\n }\n }\n }\n\n return [\n `Expected the value to satisfy a union of \\`${description}\\`, but received: ${print(\n value\n )}`,\n ...failures,\n ]\n },\n })\n}\n\n/**\n * Ensure that any value passes validation, without widening its type to `any`.\n */\n\nexport function unknown(): Struct {\n return define('unknown', () => true)\n}\n", "import { Struct, is, Coercer } from '../struct'\nimport { isPlainObject } from '../utils'\nimport { string, unknown } from './types'\n\n/**\n * Augment a `Struct` to add an additional coercion step to its input.\n *\n * This allows you to transform input data before validating it, to increase the\n * likelihood that it passes validation\u2014for example for default values, parsing\n * different formats, etc.\n *\n * Note: You must use `create(value, Struct)` on the value to have the coercion\n * take effect! Using simply `assert()` or `is()` will not use coercion.\n */\n\nexport function coerce(\n struct: Struct,\n condition: Struct,\n coercer: Coercer\n): Struct {\n return new Struct({\n ...struct,\n coercer: (value, ctx) => {\n return is(value, condition)\n ? struct.coercer(coercer(value, ctx), ctx)\n : struct.coercer(value, ctx)\n },\n })\n}\n\n/**\n * Augment a struct to replace `undefined` values with a default.\n *\n * Note: You must use `create(value, Struct)` on the value to have the coercion\n * take effect! Using simply `assert()` or `is()` will not use coercion.\n */\n\nexport function defaulted(\n struct: Struct,\n fallback: any,\n options: {\n strict?: boolean\n } = {}\n): Struct {\n return coerce(struct, unknown(), (x) => {\n const f = typeof fallback === 'function' ? fallback() : fallback\n\n if (x === undefined) {\n return f\n }\n\n if (!options.strict && isPlainObject(x) && isPlainObject(f)) {\n const ret = { ...x }\n let changed = false\n\n for (const key in f) {\n if (ret[key] === undefined) {\n ret[key] = f[key]\n changed = true\n }\n }\n\n if (changed) {\n return ret\n }\n }\n\n return x\n })\n}\n\n/**\n * Augment a struct to trim string inputs.\n *\n * Note: You must use `create(value, Struct)` on the value to have the coercion\n * take effect! Using simply `assert()` or `is()` will not use coercion.\n */\n\nexport function trimmed(struct: Struct): Struct {\n return coerce(struct, string(), (x) => x.trim())\n}\n", "import { Struct, Refiner } from '../struct'\nimport { toFailures } from '../utils'\n\n/**\n * Ensure that a string, array, map, or set is empty.\n */\n\nexport function empty<\n T extends string | any[] | Map | Set,\n S extends any\n>(struct: Struct): Struct {\n const expected = `Expected an empty ${struct.type}`\n\n return refine(struct, 'empty', (value) => {\n if (value instanceof Map || value instanceof Set) {\n const { size } = value\n return (\n size === 0 || `${expected} but received one with a size of \\`${size}\\``\n )\n } else {\n const { length } = value as string | any[]\n return (\n length === 0 ||\n `${expected} but received one with a length of \\`${length}\\``\n )\n }\n })\n}\n\n/**\n * Ensure that a number or date is below a threshold.\n */\n\nexport function max(\n struct: Struct,\n threshold: T,\n options: {\n exclusive?: boolean\n } = {}\n): Struct {\n const { exclusive } = options\n return refine(struct, 'max', (value) => {\n return exclusive\n ? value < threshold\n : value <= threshold ||\n `Expected a ${struct.type} greater than ${\n exclusive ? '' : 'or equal to '\n }${threshold} but received \\`${value}\\``\n })\n}\n\n/**\n * Ensure that a number or date is above a threshold.\n */\n\nexport function min(\n struct: Struct,\n threshold: T,\n options: {\n exclusive?: boolean\n } = {}\n): Struct {\n const { exclusive } = options\n return refine(struct, 'min', (value) => {\n return exclusive\n ? value > threshold\n : value >= threshold ||\n `Expected a ${struct.type} greater than ${\n exclusive ? '' : 'or equal to '\n }${threshold} but received \\`${value}\\``\n })\n}\n/**\n * Ensure that a string matches a regular expression.\n */\n\nexport function pattern(\n struct: Struct,\n regexp: RegExp\n): Struct {\n return refine(struct, 'pattern', (value) => {\n return (\n regexp.test(value) ||\n `Expected a ${struct.type} matching \\`/${regexp.source}/\\` but received \"${value}\"`\n )\n })\n}\n\n/**\n * Ensure that a string, array, number, date, map, or set has a size (or length, or time) between `min` and `max`.\n */\n\nexport function size<\n T extends string | number | Date | any[] | Map | Set,\n S extends any\n>(struct: Struct, min: number, max: number = min): Struct {\n const expected = `Expected a ${struct.type}`\n const of = min === max ? `of \\`${min}\\`` : `between \\`${min}\\` and \\`${max}\\``\n\n return refine(struct, 'size', (value) => {\n if (typeof value === 'number' || value instanceof Date) {\n return (\n (min <= value && value <= max) ||\n `${expected} ${of} but received \\`${value}\\``\n )\n } else if (value instanceof Map || value instanceof Set) {\n const { size } = value\n return (\n (min <= size && size <= max) ||\n `${expected} with a size ${of} but received one with a size of \\`${size}\\``\n )\n } else {\n const { length } = value as string | any[]\n return (\n (min <= length && length <= max) ||\n `${expected} with a length ${of} but received one with a length of \\`${length}\\``\n )\n }\n })\n}\n\n/**\n * Augment a `Struct` to add an additional refinement to the validation.\n *\n * The refiner function is guaranteed to receive a value of the struct's type,\n * because the struct's existing validation will already have passed. This\n * allows you to layer additional validation on top of existing structs.\n */\n\nexport function refine(\n struct: Struct,\n name: string,\n refiner: Refiner\n): Struct {\n return new Struct({\n ...struct,\n *refiner(value, ctx) {\n yield* struct.refiner(value, ctx)\n const result = refiner(value, ctx)\n const failures = toFailures(result, ctx, struct, value)\n\n for (const failure of failures) {\n yield { ...failure, refinement: name }\n }\n },\n })\n}\n", "import {Buffer} from 'buffer';\n\nexport const toBuffer = (arr: Buffer | Uint8Array | Array): Buffer => {\n if (Buffer.isBuffer(arr)) {\n return arr;\n } else if (arr instanceof Uint8Array) {\n return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength);\n } else {\n return Buffer.from(arr);\n }\n};\n", "module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n", "if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n", "'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n", "'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n", "'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n", "'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n", "'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n", "'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n", "'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n", "var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n", "export const version = \"logger/5.6.0\";\n//# sourceMappingURL=_version.js.map", "\"use strict\";\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\nconst LogLevels = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\nimport { version } from \"./_version\";\nlet _globalLogger = null;\nfunction _checkNormalize() {\n try {\n const missing = [];\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n }\n ;\n }\n catch (error) {\n missing.push(form);\n }\n });\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\");\n }\n }\n catch (error) {\n return error.message;\n }\n return null;\n}\nconst _normalizeError = _checkNormalize();\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[\"DEBUG\"] = \"DEBUG\";\n LogLevel[\"INFO\"] = \"INFO\";\n LogLevel[\"WARNING\"] = \"WARNING\";\n LogLevel[\"ERROR\"] = \"ERROR\";\n LogLevel[\"OFF\"] = \"OFF\";\n})(LogLevel || (LogLevel = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ///////////////////\n // Generic Errors\n // Unknown Error\n ErrorCode[\"UNKNOWN_ERROR\"] = \"UNKNOWN_ERROR\";\n // Not Implemented\n ErrorCode[\"NOT_IMPLEMENTED\"] = \"NOT_IMPLEMENTED\";\n // Unsupported Operation\n // - operation\n ErrorCode[\"UNSUPPORTED_OPERATION\"] = \"UNSUPPORTED_OPERATION\";\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n ErrorCode[\"NETWORK_ERROR\"] = \"NETWORK_ERROR\";\n // Some sort of bad response from the server\n ErrorCode[\"SERVER_ERROR\"] = \"SERVER_ERROR\";\n // Timeout\n ErrorCode[\"TIMEOUT\"] = \"TIMEOUT\";\n ///////////////////\n // Operational Errors\n // Buffer Overrun\n ErrorCode[\"BUFFER_OVERRUN\"] = \"BUFFER_OVERRUN\";\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n ErrorCode[\"NUMERIC_FAULT\"] = \"NUMERIC_FAULT\";\n ///////////////////\n // Argument Errors\n // Missing new operator to an object\n // - name: The name of the class\n ErrorCode[\"MISSING_NEW\"] = \"MISSING_NEW\";\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n ErrorCode[\"INVALID_ARGUMENT\"] = \"INVALID_ARGUMENT\";\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"MISSING_ARGUMENT\"] = \"MISSING_ARGUMENT\";\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n ErrorCode[\"UNEXPECTED_ARGUMENT\"] = \"UNEXPECTED_ARGUMENT\";\n ///////////////////\n // Blockchain Errors\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n ErrorCode[\"CALL_EXCEPTION\"] = \"CALL_EXCEPTION\";\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n ErrorCode[\"INSUFFICIENT_FUNDS\"] = \"INSUFFICIENT_FUNDS\";\n // Nonce has already been used\n // - transaction: the transaction attempted\n ErrorCode[\"NONCE_EXPIRED\"] = \"NONCE_EXPIRED\";\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n ErrorCode[\"REPLACEMENT_UNDERPRICED\"] = \"REPLACEMENT_UNDERPRICED\";\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n ErrorCode[\"UNPREDICTABLE_GAS_LIMIT\"] = \"UNPREDICTABLE_GAS_LIMIT\";\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n ErrorCode[\"TRANSACTION_REPLACED\"] = \"TRANSACTION_REPLACED\";\n})(ErrorCode || (ErrorCode = {}));\n;\nconst HEX = \"0123456789abcdef\";\nexport class Logger {\n constructor(version) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n _log(logLevel, args) {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) {\n return;\n }\n console.log.apply(console, args);\n }\n debug(...args) {\n this._log(Logger.levels.DEBUG, args);\n }\n info(...args) {\n this._log(Logger.levels.INFO, args);\n }\n warn(...args) {\n this._log(Logger.levels.WARNING, args);\n }\n makeError(message, code, params) {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, {});\n }\n if (!code) {\n code = Logger.errors.UNKNOWN_ERROR;\n }\n if (!params) {\n params = {};\n }\n const messageDetails = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n }\n else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n }\n catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${code}`);\n messageDetails.push(`version=${this.version}`);\n const reason = message;\n let url = \"\";\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n switch (fault) {\n case \"overflow\":\n case \"underflow\":\n case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\":\n case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n // @TODO: Any??\n const error = new Error(message);\n error.reason = reason;\n error.code = code;\n Object.keys(params).forEach(function (key) {\n error[key] = params[key];\n });\n return error;\n }\n throwError(message, code, params) {\n throw this.makeError(message, code, params);\n }\n throwArgumentError(message, name, value) {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n assert(condition, message, code, params) {\n if (!!condition) {\n return;\n }\n this.throwError(message, code, params);\n }\n assertArgument(condition, message, name, value) {\n if (!!condition) {\n return;\n }\n this.throwArgumentError(message, name, value);\n }\n checkNormalize(message) {\n if (message == null) {\n message = \"platform missing String.prototype.normalize\";\n }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n checkSafeUint53(value, message) {\n if (typeof (value) !== \"number\") {\n return;\n }\n if (message == null) {\n message = \"value not safe\";\n }\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n checkArgumentCount(count, expectedCount, message) {\n if (message) {\n message = \": \" + message;\n }\n else {\n message = \"\";\n }\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n checkNew(target, kind) {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n checkAbstract(target, kind) {\n if (target === kind) {\n this.throwError(\"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\", Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: \"new\" });\n }\n else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n static globalLogger() {\n if (!_globalLogger) {\n _globalLogger = new Logger(version);\n }\n return _globalLogger;\n }\n static setCensorship(censorship, permanent) {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n if (_permanentCensorErrors) {\n if (!censorship) {\n return;\n }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n static setLogLevel(logLevel) {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n static from(version) {\n return new Logger(version);\n }\n}\nLogger.errors = ErrorCode;\nLogger.levels = LogLevel;\n//# sourceMappingURL=index.js.map", "export const version = \"bytes/5.6.0\";\n//# sourceMappingURL=_version.js.map", "\"use strict\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n///////////////////////////////\nfunction isHexable(value) {\n return !!(value.toHexString);\n}\nfunction addSlice(array) {\n if (array.slice) {\n return array;\n }\n array.slice = function () {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n };\n return array;\n}\nexport function isBytesLike(value) {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\nfunction isInteger(value) {\n return (typeof (value) === \"number\" && value == value && (value % 1) === 0);\n}\nexport function isBytes(value) {\n if (value == null) {\n return false;\n }\n if (value.constructor === Uint8Array) {\n return true;\n }\n if (typeof (value) === \"string\") {\n return false;\n }\n if (!isInteger(value.length) || value.length < 0) {\n return false;\n }\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) {\n return false;\n }\n }\n return true;\n}\nexport function arrayify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) {\n result.push(0);\n }\n return addSlice(new Uint8Array(result));\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n value = value.toHexString();\n }\n if (isHexString(value)) {\n let hex = value.substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0x0\" + hex.substring(2);\n }\n else if (options.hexPad === \"right\") {\n hex += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n return addSlice(new Uint8Array(result));\n }\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\nexport function concat(items) {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n const result = new Uint8Array(length);\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n return addSlice(result);\n}\nexport function stripZeros(value) {\n let result = arrayify(value);\n if (result.length === 0) {\n return result;\n }\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) {\n start++;\n }\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n return result;\n}\nexport function zeroPad(value, length) {\n value = arrayify(value);\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\nexport function isHexString(value, length) {\n if (typeof (value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n return true;\n}\nconst HexCharacters = \"0123456789abcdef\";\nexport function hexlify(value, options) {\n if (!options) {\n options = {};\n }\n if (typeof (value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n if (hex.length) {\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return \"0x\" + hex;\n }\n return \"0x00\";\n }\n if (typeof (value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) {\n return (\"0x0\" + value);\n }\n return \"0x\" + value;\n }\n if (options.allowMissingPrefix && typeof (value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n if (isHexable(value)) {\n return value.toHexString();\n }\n if (isHexString(value)) {\n if (value.length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + value.substring(2);\n }\n else if (options.hexPad === \"right\") {\n value += \"0\";\n }\n else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return value.toLowerCase();\n }\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n return (data.length - 2) / 2;\n}\nexport function hexDataSlice(data, offset, endOffset) {\n if (typeof (data) !== \"string\") {\n data = hexlify(data);\n }\n else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data);\n }\n offset = 2 + 2 * offset;\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n return \"0x\" + data.substring(offset);\n}\nexport function hexConcat(items) {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\nexport function hexValue(value) {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") {\n return \"0x0\";\n }\n return trimmed;\n}\nexport function hexStripZeros(value) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") {\n offset++;\n }\n return \"0x\" + value.substring(offset);\n}\nexport function hexZeroPad(value, length) {\n if (typeof (value) !== \"string\") {\n value = hexlify(value);\n }\n else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n return value;\n}\nexport function splitSignature(signature) {\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n if (isBytesLike(signature)) {\n let bytes = arrayify(signature);\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n }\n else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n }\n else {\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n }\n else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) {\n bytes[32] |= 0x80;\n }\n result._vs = hexlify(bytes.slice(32, 64));\n }\n else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1 : 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n }\n else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n }\n else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n }\n else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n }\n else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n }\n else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n }\n else {\n const recId = (result.v === 0 || result.v === 1) ? result.v : (1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n }\n else {\n result.r = hexZeroPad(result.r, 32);\n }\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n }\n else {\n result.s = hexZeroPad(result.s, 32);\n }\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) {\n vs[0] |= 0x80;\n }\n const _vs = hexlify(vs);\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n }\n else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n return result;\n}\nexport function joinSignature(signature) {\n signature = splitSignature(signature);\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\" : \"0x1b\")\n ]));\n}\n//# sourceMappingURL=index.js.map", "export const version = \"sha2/5.6.0\";\n//# sourceMappingURL=_version.js.map", "\"use strict\";\nimport hash from \"hash.js\";\n//const _ripemd160 = _hash.ripemd160;\nimport { arrayify } from \"@ethersproject/bytes\";\nimport { SupportedAlgorithm } from \"./types\";\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\nexport function ripemd160(data) {\n return \"0x\" + (hash.ripemd160().update(arrayify(data)).digest(\"hex\"));\n}\nexport function sha256(data) {\n return \"0x\" + (hash.sha256().update(arrayify(data)).digest(\"hex\"));\n}\nexport function sha512(data) {\n return \"0x\" + (hash.sha512().update(arrayify(data)).digest(\"hex\"));\n}\nexport function computeHmac(algorithm, key, data) {\n if (!SupportedAlgorithm[algorithm]) {\n logger.throwError(\"unsupported algorithm \" + algorithm, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"hmac\",\n algorithm: algorithm\n });\n }\n return \"0x\" + hash.hmac(hash[algorithm], arrayify(key)).update(arrayify(data)).digest(\"hex\");\n}\n//# sourceMappingURL=sha2.js.map", "import {Buffer} from 'buffer';\nimport {serialize, deserialize, deserializeUnchecked} from 'borsh';\n\n// Class wrapping a plain object\nexport class Struct {\n constructor(properties: any) {\n Object.assign(this, properties);\n }\n\n encode(): Buffer {\n return Buffer.from(serialize(SOLANA_SCHEMA, this));\n }\n\n static decode(data: Buffer): any {\n return deserialize(SOLANA_SCHEMA, this, data);\n }\n\n static decodeUnchecked(data: Buffer): any {\n return deserializeUnchecked(SOLANA_SCHEMA, this, data);\n }\n}\n\n// Class representing a Rust-compatible enum, since enums are only strings or\n// numbers in pure JS\nexport class Enum extends Struct {\n enum: string = '';\n constructor(properties: any) {\n super(properties);\n if (Object.keys(properties).length !== 1) {\n throw new Error('Enum can only take single value');\n }\n Object.keys(properties).map(key => {\n this.enum = key;\n });\n }\n}\n\nexport const SOLANA_SCHEMA: Map = new Map();\n", "import BN from 'bn.js';\nimport bs58 from 'bs58';\nimport {Buffer} from 'buffer';\nimport nacl from 'tweetnacl';\nimport {sha256} from '@ethersproject/sha2';\n\nimport {Struct, SOLANA_SCHEMA} from './utils/borsh-schema';\nimport {toBuffer} from './utils/to-buffer';\n\n/**\n * Maximum length of derived pubkey seed\n */\nexport const MAX_SEED_LENGTH = 32;\n\n/**\n * Value to be converted into public key\n */\nexport type PublicKeyInitData =\n | number\n | string\n | Buffer\n | Uint8Array\n | Array\n | PublicKeyData;\n\n/**\n * JSON object representation of PublicKey class\n */\nexport type PublicKeyData = {\n /** @internal */\n _bn: BN;\n};\n\nfunction isPublicKeyData(value: PublicKeyInitData): value is PublicKeyData {\n return (value as PublicKeyData)._bn !== undefined;\n}\n\n/**\n * A public key\n */\nexport class PublicKey extends Struct {\n /** @internal */\n _bn: BN;\n\n /**\n * Create a new PublicKey object\n * @param value ed25519 public key as buffer or base-58 encoded string\n */\n constructor(value: PublicKeyInitData) {\n super({});\n if (isPublicKeyData(value)) {\n this._bn = value._bn;\n } else {\n if (typeof value === 'string') {\n // assume base 58 encoding by default\n const decoded = bs58.decode(value);\n if (decoded.length != 32) {\n throw new Error(`Invalid public key input`);\n }\n this._bn = new BN(decoded);\n } else {\n this._bn = new BN(value);\n }\n\n if (this._bn.byteLength() > 32) {\n throw new Error(`Invalid public key input`);\n }\n }\n }\n\n /**\n * Default public key value. (All zeros)\n */\n static default: PublicKey = new PublicKey('11111111111111111111111111111111');\n\n /**\n * Checks if two publicKeys are equal\n */\n equals(publicKey: PublicKey): boolean {\n return this._bn.eq(publicKey._bn);\n }\n\n /**\n * Return the base-58 representation of the public key\n */\n toBase58(): string {\n return bs58.encode(this.toBytes());\n }\n\n toJSON(): string {\n return this.toBase58();\n }\n\n /**\n * Return the byte array representation of the public key\n */\n toBytes(): Uint8Array {\n return this.toBuffer();\n }\n\n /**\n * Return the Buffer representation of the public key\n */\n toBuffer(): Buffer {\n const b = this._bn.toArrayLike(Buffer);\n if (b.length === 32) {\n return b;\n }\n\n const zeroPad = Buffer.alloc(32);\n b.copy(zeroPad, 32 - b.length);\n return zeroPad;\n }\n\n /**\n * Return the base-58 representation of the public key\n */\n toString(): string {\n return this.toBase58();\n }\n\n /**\n * Derive a public key from another key, a seed, and a program ID.\n * The program ID will also serve as the owner of the public key, giving\n * it permission to write data to the account.\n */\n /* eslint-disable require-await */\n static async createWithSeed(\n fromPublicKey: PublicKey,\n seed: string,\n programId: PublicKey,\n ): Promise {\n const buffer = Buffer.concat([\n fromPublicKey.toBuffer(),\n Buffer.from(seed),\n programId.toBuffer(),\n ]);\n const hash = sha256(new Uint8Array(buffer)).slice(2);\n return new PublicKey(Buffer.from(hash, 'hex'));\n }\n\n /**\n * Derive a program address from seeds and a program ID.\n */\n /* eslint-disable require-await */\n static createProgramAddressSync(\n seeds: Array,\n programId: PublicKey,\n ): PublicKey {\n let buffer = Buffer.alloc(0);\n seeds.forEach(function (seed) {\n if (seed.length > MAX_SEED_LENGTH) {\n throw new TypeError(`Max seed length exceeded`);\n }\n buffer = Buffer.concat([buffer, toBuffer(seed)]);\n });\n buffer = Buffer.concat([\n buffer,\n programId.toBuffer(),\n Buffer.from('ProgramDerivedAddress'),\n ]);\n let hash = sha256(new Uint8Array(buffer)).slice(2);\n let publicKeyBytes = new BN(hash, 16).toArray(undefined, 32);\n if (is_on_curve(publicKeyBytes)) {\n throw new Error(`Invalid seeds, address must fall off the curve`);\n }\n return new PublicKey(publicKeyBytes);\n }\n\n /**\n * Async version of createProgramAddressSync\n * For backwards compatibility\n */\n /* eslint-disable require-await */\n static async createProgramAddress(\n seeds: Array,\n programId: PublicKey,\n ): Promise {\n return this.createProgramAddressSync(seeds, programId);\n }\n\n /**\n * Find a valid program address\n *\n * Valid program addresses must fall off the ed25519 curve. This function\n * iterates a nonce until it finds one that when combined with the seeds\n * results in a valid program address.\n */\n static findProgramAddressSync(\n seeds: Array,\n programId: PublicKey,\n ): [PublicKey, number] {\n let nonce = 255;\n let address;\n while (nonce != 0) {\n try {\n const seedsWithNonce = seeds.concat(Buffer.from([nonce]));\n address = this.createProgramAddressSync(seedsWithNonce, programId);\n } catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n nonce--;\n continue;\n }\n return [address, nonce];\n }\n throw new Error(`Unable to find a viable program address nonce`);\n }\n\n /**\n * Async version of findProgramAddressSync\n * For backwards compatibility\n */\n static async findProgramAddress(\n seeds: Array,\n programId: PublicKey,\n ): Promise<[PublicKey, number]> {\n return this.findProgramAddressSync(seeds, programId);\n }\n\n /**\n * Check that a pubkey is on the ed25519 curve.\n */\n static isOnCurve(pubkeyData: PublicKeyInitData): boolean {\n const pubkey = new PublicKey(pubkeyData);\n return is_on_curve(pubkey.toBytes()) == 1;\n }\n}\n\nSOLANA_SCHEMA.set(PublicKey, {\n kind: 'struct',\n fields: [['_bn', 'u256']],\n});\n\n// @ts-ignore\nlet naclLowLevel = nacl.lowlevel;\n\n// Check that a pubkey is on the curve.\n// This function and its dependents were sourced from:\n// https://github.com/dchest/tweetnacl-js/blob/f1ec050ceae0861f34280e62498b1d3ed9c350c6/nacl.js#L792\nfunction is_on_curve(p: any) {\n var r = [\n naclLowLevel.gf(),\n naclLowLevel.gf(),\n naclLowLevel.gf(),\n naclLowLevel.gf(),\n ];\n\n var t = naclLowLevel.gf(),\n chk = naclLowLevel.gf(),\n num = naclLowLevel.gf(),\n den = naclLowLevel.gf(),\n den2 = naclLowLevel.gf(),\n den4 = naclLowLevel.gf(),\n den6 = naclLowLevel.gf();\n\n naclLowLevel.set25519(r[2], gf1);\n naclLowLevel.unpack25519(r[1], p);\n naclLowLevel.S(num, r[1]);\n naclLowLevel.M(den, num, naclLowLevel.D);\n naclLowLevel.Z(num, num, r[2]);\n naclLowLevel.A(den, r[2], den);\n\n naclLowLevel.S(den2, den);\n naclLowLevel.S(den4, den2);\n naclLowLevel.M(den6, den4, den2);\n naclLowLevel.M(t, den6, num);\n naclLowLevel.M(t, t, den);\n\n naclLowLevel.pow2523(t, t);\n naclLowLevel.M(t, t, num);\n naclLowLevel.M(t, t, den);\n naclLowLevel.M(t, t, den);\n naclLowLevel.M(r[0], t, den);\n\n naclLowLevel.S(chk, r[0]);\n naclLowLevel.M(chk, chk, den);\n if (neq25519(chk, num)) naclLowLevel.M(r[0], r[0], I);\n\n naclLowLevel.S(chk, r[0]);\n naclLowLevel.M(chk, chk, den);\n if (neq25519(chk, num)) return 0;\n return 1;\n}\nlet gf1 = naclLowLevel.gf([1]);\nlet I = naclLowLevel.gf([\n 0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43, 0xd7a7,\n 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83,\n]);\nfunction neq25519(a: any, b: any) {\n var c = new Uint8Array(32),\n d = new Uint8Array(32);\n naclLowLevel.pack25519(c, a);\n naclLowLevel.pack25519(d, b);\n return naclLowLevel.crypto_verify_32(c, 0, d, 0);\n}\n", "import nacl from 'tweetnacl';\nimport type {SignKeyPair as KeyPair} from 'tweetnacl';\nimport type {Buffer} from 'buffer';\n\nimport {toBuffer} from './utils/to-buffer';\nimport {PublicKey} from './publickey';\n\n/**\n * An account key pair (public and secret keys).\n *\n * @deprecated since v1.10.0, please use {@link Keypair} instead.\n */\nexport class Account {\n /** @internal */\n _keypair: KeyPair;\n\n /**\n * Create a new Account object\n *\n * If the secretKey parameter is not provided a new key pair is randomly\n * created for the account\n *\n * @param secretKey Secret key for the account\n */\n constructor(secretKey?: Buffer | Uint8Array | Array) {\n if (secretKey) {\n this._keypair = nacl.sign.keyPair.fromSecretKey(toBuffer(secretKey));\n } else {\n this._keypair = nacl.sign.keyPair();\n }\n }\n\n /**\n * The public key for this account\n */\n get publicKey(): PublicKey {\n return new PublicKey(this._keypair.publicKey);\n }\n\n /**\n * The **unencrypted** secret key for this account\n */\n get secretKey(): Buffer {\n return toBuffer(this._keypair.secretKey);\n }\n}\n", "import {PublicKey} from './publickey';\n\nexport const BPF_LOADER_DEPRECATED_PROGRAM_ID = new PublicKey(\n 'BPFLoader1111111111111111111111111111111111',\n);\n", "/**\n * Maximum over-the-wire size of a Transaction\n *\n * 1280 is IPv6 minimum MTU\n * 40 bytes is the size of the IPv6 header\n * 8 bytes is the size of the fragment header\n */\nexport const PACKET_DATA_SIZE = 1280 - 40 - 8;\n\nexport const SIGNATURE_LENGTH_IN_BYTES = 64;\n", "export class TransactionExpiredBlockheightExceededError extends Error {\n signature: string;\n\n constructor(signature: string) {\n super(`Signature ${signature} has expired: block height exceeded.`);\n this.signature = signature;\n }\n}\n\nObject.defineProperty(\n TransactionExpiredBlockheightExceededError.prototype,\n 'name',\n {\n value: 'TransactionExpiredBlockheightExceededError',\n },\n);\n\nexport class TransactionExpiredTimeoutError extends Error {\n signature: string;\n\n constructor(signature: string, timeoutSeconds: number) {\n super(\n `Transaction was not confirmed in ${timeoutSeconds.toFixed(\n 2,\n )} seconds. It is ` +\n 'unknown if it succeeded or failed. Check signature ' +\n `${signature} using the Solana Explorer or CLI tools.`,\n );\n this.signature = signature;\n }\n}\n\nObject.defineProperty(TransactionExpiredTimeoutError.prototype, 'name', {\n value: 'TransactionExpiredTimeoutError',\n});\n", "import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\n/**\n * Layout for a public key\n */\nexport const publicKey = (property: string = 'publicKey') => {\n return BufferLayout.blob(32, property);\n};\n\n/**\n * Layout for a 64bit unsigned value\n */\nexport const uint64 = (property: string = 'uint64') => {\n return BufferLayout.blob(8, property);\n};\n\ninterface IRustStringShim\n extends Omit<\n BufferLayout.Structure<\n Readonly<{\n length: number;\n lengthPadding: number;\n chars: Uint8Array;\n }>\n >,\n 'decode' | 'encode' | 'replicate'\n > {\n alloc: (str: string) => number;\n decode: (b: Uint8Array, offset?: number) => string;\n encode: (str: string, b: Uint8Array, offset?: number) => number;\n replicate: (property: string) => this;\n}\n\n/**\n * Layout for a Rust String type\n */\nexport const rustString = (\n property: string = 'string',\n): BufferLayout.Layout => {\n const rsl = BufferLayout.struct<\n Readonly<{\n length?: number;\n lengthPadding?: number;\n chars: Uint8Array;\n }>\n >(\n [\n BufferLayout.u32('length'),\n BufferLayout.u32('lengthPadding'),\n BufferLayout.blob(BufferLayout.offset(BufferLayout.u32(), -8), 'chars'),\n ],\n property,\n );\n const _decode = rsl.decode.bind(rsl);\n const _encode = rsl.encode.bind(rsl);\n\n const rslShim = rsl as unknown as IRustStringShim;\n\n rslShim.decode = (b: Uint8Array, offset?: number) => {\n const data = _decode(b, offset);\n return data['chars'].toString();\n };\n\n rslShim.encode = (str: string, b: Uint8Array, offset?: number) => {\n const data = {\n chars: Buffer.from(str, 'utf8'),\n };\n return _encode(data, b, offset);\n };\n\n rslShim.alloc = (str: string) => {\n return (\n BufferLayout.u32().span +\n BufferLayout.u32().span +\n Buffer.from(str, 'utf8').length\n );\n };\n\n return rslShim;\n};\n\n/**\n * Layout for an Authorized object\n */\nexport const authorized = (property: string = 'authorized') => {\n return BufferLayout.struct<\n Readonly<{\n staker: Uint8Array;\n withdrawer: Uint8Array;\n }>\n >([publicKey('staker'), publicKey('withdrawer')], property);\n};\n\n/**\n * Layout for a Lockup object\n */\nexport const lockup = (property: string = 'lockup') => {\n return BufferLayout.struct<\n Readonly<{\n custodian: Uint8Array;\n epoch: number;\n unixTimestamp: number;\n }>\n >(\n [\n BufferLayout.ns64('unixTimestamp'),\n BufferLayout.ns64('epoch'),\n publicKey('custodian'),\n ],\n property,\n );\n};\n\n/**\n * Layout for a VoteInit object\n */\nexport const voteInit = (property: string = 'voteInit') => {\n return BufferLayout.struct<\n Readonly<{\n authorizedVoter: Uint8Array;\n authorizedWithdrawer: Uint8Array;\n commission: number;\n nodePubkey: Uint8Array;\n }>\n >(\n [\n publicKey('nodePubkey'),\n publicKey('authorizedVoter'),\n publicKey('authorizedWithdrawer'),\n BufferLayout.u8('commission'),\n ],\n property,\n );\n};\n\nexport function getAlloc(type: any, fields: any): number {\n const getItemAlloc = (item: any): number => {\n if (item.span >= 0) {\n return item.span;\n } else if (typeof item.alloc === 'function') {\n return item.alloc(fields[item.property]);\n } else if ('count' in item && 'elementLayout' in item) {\n const field = fields[item.property];\n if (Array.isArray(field)) {\n return field.length * getItemAlloc(item.elementLayout);\n }\n }\n // Couldn't determine allocated size of layout\n return 0;\n };\n\n let alloc = 0;\n type.layout.fields.forEach((item: any) => {\n alloc += getItemAlloc(item);\n });\n\n return alloc;\n}\n", "export function decodeLength(bytes: Array): number {\n let len = 0;\n let size = 0;\n for (;;) {\n let elem = bytes.shift() as number;\n len |= (elem & 0x7f) << (size * 7);\n size += 1;\n if ((elem & 0x80) === 0) {\n break;\n }\n }\n return len;\n}\n\nexport function encodeLength(bytes: Array, len: number) {\n let rem_len = len;\n for (;;) {\n let elem = rem_len & 0x7f;\n rem_len >>= 7;\n if (rem_len == 0) {\n bytes.push(elem);\n break;\n } else {\n elem |= 0x80;\n bytes.push(elem);\n }\n }\n}\n", "import bs58 from 'bs58';\nimport {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {PublicKey} from '../publickey';\nimport type {Blockhash} from '../blockhash';\nimport * as Layout from '../layout';\nimport {PACKET_DATA_SIZE} from '../transaction/constants';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport {toBuffer} from '../utils/to-buffer';\nimport {CompiledInstruction, MessageHeader} from './index';\n\n/**\n * Message constructor arguments\n */\nexport type MessageArgs = {\n /** The message header, identifying signed and read-only `accountKeys` */\n header: MessageHeader;\n /** All the account keys used by this transaction */\n accountKeys: string[];\n /** The hash of a recent ledger block */\n recentBlockhash: Blockhash;\n /** Instructions that will be executed in sequence and committed in one atomic transaction if all succeed. */\n instructions: CompiledInstruction[];\n};\n\nconst PUBKEY_LENGTH = 32;\n\n/**\n * List of instructions to be processed atomically\n */\nexport class Message {\n header: MessageHeader;\n accountKeys: PublicKey[];\n recentBlockhash: Blockhash;\n instructions: CompiledInstruction[];\n\n private indexToProgramIds: Map = new Map<\n number,\n PublicKey\n >();\n\n constructor(args: MessageArgs) {\n this.header = args.header;\n this.accountKeys = args.accountKeys.map(account => new PublicKey(account));\n this.recentBlockhash = args.recentBlockhash;\n this.instructions = args.instructions;\n this.instructions.forEach(ix =>\n this.indexToProgramIds.set(\n ix.programIdIndex,\n this.accountKeys[ix.programIdIndex],\n ),\n );\n }\n\n isAccountSigner(index: number): boolean {\n return index < this.header.numRequiredSignatures;\n }\n\n isAccountWritable(index: number): boolean {\n return (\n index <\n this.header.numRequiredSignatures -\n this.header.numReadonlySignedAccounts ||\n (index >= this.header.numRequiredSignatures &&\n index <\n this.accountKeys.length - this.header.numReadonlyUnsignedAccounts)\n );\n }\n\n isProgramId(index: number): boolean {\n return this.indexToProgramIds.has(index);\n }\n\n programIds(): PublicKey[] {\n return [...this.indexToProgramIds.values()];\n }\n\n nonProgramIds(): PublicKey[] {\n return this.accountKeys.filter((_, index) => !this.isProgramId(index));\n }\n\n serialize(): Buffer {\n const numKeys = this.accountKeys.length;\n\n let keyCount: number[] = [];\n shortvec.encodeLength(keyCount, numKeys);\n\n const instructions = this.instructions.map(instruction => {\n const {accounts, programIdIndex} = instruction;\n const data = Array.from(bs58.decode(instruction.data));\n\n let keyIndicesCount: number[] = [];\n shortvec.encodeLength(keyIndicesCount, accounts.length);\n\n let dataCount: number[] = [];\n shortvec.encodeLength(dataCount, data.length);\n\n return {\n programIdIndex,\n keyIndicesCount: Buffer.from(keyIndicesCount),\n keyIndices: accounts,\n dataLength: Buffer.from(dataCount),\n data,\n };\n });\n\n let instructionCount: number[] = [];\n shortvec.encodeLength(instructionCount, instructions.length);\n let instructionBuffer = Buffer.alloc(PACKET_DATA_SIZE);\n Buffer.from(instructionCount).copy(instructionBuffer);\n let instructionBufferLength = instructionCount.length;\n\n instructions.forEach(instruction => {\n const instructionLayout = BufferLayout.struct<\n Readonly<{\n data: number[];\n dataLength: Uint8Array;\n keyIndices: number[];\n keyIndicesCount: Uint8Array;\n programIdIndex: number;\n }>\n >([\n BufferLayout.u8('programIdIndex'),\n\n BufferLayout.blob(\n instruction.keyIndicesCount.length,\n 'keyIndicesCount',\n ),\n BufferLayout.seq(\n BufferLayout.u8('keyIndex'),\n instruction.keyIndices.length,\n 'keyIndices',\n ),\n BufferLayout.blob(instruction.dataLength.length, 'dataLength'),\n BufferLayout.seq(\n BufferLayout.u8('userdatum'),\n instruction.data.length,\n 'data',\n ),\n ]);\n const length = instructionLayout.encode(\n instruction,\n instructionBuffer,\n instructionBufferLength,\n );\n instructionBufferLength += length;\n });\n instructionBuffer = instructionBuffer.slice(0, instructionBufferLength);\n\n const signDataLayout = BufferLayout.struct<\n Readonly<{\n keyCount: Uint8Array;\n keys: Uint8Array[];\n numReadonlySignedAccounts: Uint8Array;\n numReadonlyUnsignedAccounts: Uint8Array;\n numRequiredSignatures: Uint8Array;\n recentBlockhash: Uint8Array;\n }>\n >([\n BufferLayout.blob(1, 'numRequiredSignatures'),\n BufferLayout.blob(1, 'numReadonlySignedAccounts'),\n BufferLayout.blob(1, 'numReadonlyUnsignedAccounts'),\n BufferLayout.blob(keyCount.length, 'keyCount'),\n BufferLayout.seq(Layout.publicKey('key'), numKeys, 'keys'),\n Layout.publicKey('recentBlockhash'),\n ]);\n\n const transaction = {\n numRequiredSignatures: Buffer.from([this.header.numRequiredSignatures]),\n numReadonlySignedAccounts: Buffer.from([\n this.header.numReadonlySignedAccounts,\n ]),\n numReadonlyUnsignedAccounts: Buffer.from([\n this.header.numReadonlyUnsignedAccounts,\n ]),\n keyCount: Buffer.from(keyCount),\n keys: this.accountKeys.map(key => toBuffer(key.toBytes())),\n recentBlockhash: bs58.decode(this.recentBlockhash),\n };\n\n let signData = Buffer.alloc(2048);\n const length = signDataLayout.encode(transaction, signData);\n instructionBuffer.copy(signData, length);\n return signData.slice(0, length + instructionBuffer.length);\n }\n\n /**\n * Decode a compiled message into a Message object.\n */\n static from(buffer: Buffer | Uint8Array | Array): Message {\n // Slice up wire data\n let byteArray = [...buffer];\n\n const numRequiredSignatures = byteArray.shift() as number;\n const numReadonlySignedAccounts = byteArray.shift() as number;\n const numReadonlyUnsignedAccounts = byteArray.shift() as number;\n\n const accountCount = shortvec.decodeLength(byteArray);\n let accountKeys = [];\n for (let i = 0; i < accountCount; i++) {\n const account = byteArray.slice(0, PUBKEY_LENGTH);\n byteArray = byteArray.slice(PUBKEY_LENGTH);\n accountKeys.push(bs58.encode(Buffer.from(account)));\n }\n\n const recentBlockhash = byteArray.slice(0, PUBKEY_LENGTH);\n byteArray = byteArray.slice(PUBKEY_LENGTH);\n\n const instructionCount = shortvec.decodeLength(byteArray);\n let instructions: CompiledInstruction[] = [];\n for (let i = 0; i < instructionCount; i++) {\n const programIdIndex = byteArray.shift() as number;\n const accountCount = shortvec.decodeLength(byteArray);\n const accounts = byteArray.slice(0, accountCount);\n byteArray = byteArray.slice(accountCount);\n const dataLength = shortvec.decodeLength(byteArray);\n const dataSlice = byteArray.slice(0, dataLength);\n const data = bs58.encode(Buffer.from(dataSlice));\n byteArray = byteArray.slice(dataLength);\n instructions.push({\n programIdIndex,\n accounts,\n data,\n });\n }\n\n const messageArgs = {\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n },\n recentBlockhash: bs58.encode(Buffer.from(recentBlockhash)),\n accountKeys,\n instructions,\n };\n\n return new Message(messageArgs);\n }\n}\n", "export default function (\n condition: unknown,\n message?: string,\n): asserts condition {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n", "import nacl from 'tweetnacl';\nimport bs58 from 'bs58';\nimport {Buffer} from 'buffer';\n\nimport {PACKET_DATA_SIZE, SIGNATURE_LENGTH_IN_BYTES} from './constants';\nimport {Connection} from '../connection';\nimport {Message} from '../message';\nimport {PublicKey} from '../publickey';\nimport * as shortvec from '../utils/shortvec-encoding';\nimport {toBuffer} from '../utils/to-buffer';\nimport invariant from '../utils/assert';\nimport type {Signer} from '../keypair';\nimport type {Blockhash} from '../blockhash';\nimport type {CompiledInstruction} from '../message';\n\n/**\n * Transaction signature as base-58 encoded string\n */\nexport type TransactionSignature = string;\n\nexport const enum TransactionStatus {\n BLOCKHEIGHT_EXCEEDED,\n PROCESSED,\n TIMED_OUT,\n}\n\n/**\n * Default (empty) signature\n */\nconst DEFAULT_SIGNATURE = Buffer.alloc(SIGNATURE_LENGTH_IN_BYTES).fill(0);\n\n/**\n * Account metadata used to define instructions\n */\nexport type AccountMeta = {\n /** An account's public key */\n pubkey: PublicKey;\n /** True if an instruction requires a transaction signature matching `pubkey` */\n isSigner: boolean;\n /** True if the `pubkey` can be loaded as a read-write account. */\n isWritable: boolean;\n};\n\n/**\n * List of TransactionInstruction object fields that may be initialized at construction\n */\nexport type TransactionInstructionCtorFields = {\n keys: Array;\n programId: PublicKey;\n data?: Buffer;\n};\n\n/**\n * Configuration object for Transaction.serialize()\n */\nexport type SerializeConfig = {\n /** Require all transaction signatures be present (default: true) */\n requireAllSignatures?: boolean;\n /** Verify provided signatures (default: true) */\n verifySignatures?: boolean;\n};\n\n/**\n * @internal\n */\nexport interface TransactionInstructionJSON {\n keys: {\n pubkey: string;\n isSigner: boolean;\n isWritable: boolean;\n }[];\n programId: string;\n data: number[];\n}\n\n/**\n * Transaction Instruction class\n */\nexport class TransactionInstruction {\n /**\n * Public keys to include in this transaction\n * Boolean represents whether this pubkey needs to sign the transaction\n */\n keys: Array;\n\n /**\n * Program Id to execute\n */\n programId: PublicKey;\n\n /**\n * Program input\n */\n data: Buffer = Buffer.alloc(0);\n\n constructor(opts: TransactionInstructionCtorFields) {\n this.programId = opts.programId;\n this.keys = opts.keys;\n if (opts.data) {\n this.data = opts.data;\n }\n }\n\n /**\n * @internal\n */\n toJSON(): TransactionInstructionJSON {\n return {\n keys: this.keys.map(({pubkey, isSigner, isWritable}) => ({\n pubkey: pubkey.toJSON(),\n isSigner,\n isWritable,\n })),\n programId: this.programId.toJSON(),\n data: [...this.data],\n };\n }\n}\n\n/**\n * Pair of signature and corresponding public key\n */\nexport type SignaturePubkeyPair = {\n signature: Buffer | null;\n publicKey: PublicKey;\n};\n\n/**\n * List of Transaction object fields that may be initialized at construction\n */\nexport type TransactionCtorFields_DEPRECATED = {\n /** Optional nonce information used for offline nonce'd transactions */\n nonceInfo?: NonceInformation | null;\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n /** One or more signatures */\n signatures?: Array;\n /** A recent blockhash */\n recentBlockhash?: Blockhash;\n};\n\n// For backward compatibility; an unfortunate consequence of being\n// forced to over-export types by the documentation generator.\n// See https://github.com/solana-labs/solana/pull/25820\nexport type TransactionCtorFields = TransactionCtorFields_DEPRECATED;\n\n/**\n * List of Transaction object fields that may be initialized at construction\n */\nexport type TransactionBlockhashCtor = {\n /** The transaction fee payer */\n feePayer?: PublicKey | null;\n /** One or more signatures */\n signatures?: Array;\n /** A recent blockhash */\n blockhash: Blockhash;\n /** the last block chain can advance to before tx is declared expired */\n lastValidBlockHeight: number;\n};\n\n/**\n * Nonce information to be used to build an offline Transaction.\n */\nexport type NonceInformation = {\n /** The current blockhash stored in the nonce */\n nonce: Blockhash;\n /** AdvanceNonceAccount Instruction */\n nonceInstruction: TransactionInstruction;\n};\n\n/**\n * @internal\n */\nexport interface TransactionJSON {\n recentBlockhash: string | null;\n feePayer: string | null;\n nonceInfo: {\n nonce: string;\n nonceInstruction: TransactionInstructionJSON;\n } | null;\n instructions: TransactionInstructionJSON[];\n signers: string[];\n}\n\n/**\n * Transaction class\n */\nexport class Transaction {\n /**\n * Signatures for the transaction. Typically created by invoking the\n * `sign()` method\n */\n signatures: Array = [];\n\n /**\n * The first (payer) Transaction signature\n */\n get signature(): Buffer | null {\n if (this.signatures.length > 0) {\n return this.signatures[0].signature;\n }\n return null;\n }\n\n /**\n * The transaction fee payer\n */\n feePayer?: PublicKey;\n\n /**\n * The instructions to atomically execute\n */\n instructions: Array = [];\n\n /**\n * A recent transaction id. Must be populated by the caller\n */\n recentBlockhash?: Blockhash;\n\n /**\n * the last block chain can advance to before tx is declared expired\n * */\n lastValidBlockHeight?: number;\n\n /**\n * Optional Nonce information. If populated, transaction will use a durable\n * Nonce hash instead of a recentBlockhash. Must be populated by the caller\n */\n nonceInfo?: NonceInformation;\n\n /**\n * @internal\n */\n _message?: Message;\n\n /**\n * @internal\n */\n _json?: TransactionJSON;\n\n // Construct a transaction with a blockhash and lastValidBlockHeight\n constructor(opts?: TransactionBlockhashCtor);\n\n /**\n * @deprecated `TransactionCtorFields` has been deprecated and will be removed in a future version.\n * Please supply a `TransactionBlockhashCtor` instead.\n */\n constructor(opts?: TransactionCtorFields_DEPRECATED);\n\n /**\n * Construct an empty Transaction\n */\n constructor(\n opts?: TransactionBlockhashCtor | TransactionCtorFields_DEPRECATED,\n ) {\n if (!opts) {\n return;\n }\n if (opts.feePayer) {\n this.feePayer = opts.feePayer;\n }\n if (opts.signatures) {\n this.signatures = opts.signatures;\n }\n if (Object.prototype.hasOwnProperty.call(opts, 'lastValidBlockHeight')) {\n const {blockhash, lastValidBlockHeight} =\n opts as TransactionBlockhashCtor;\n this.recentBlockhash = blockhash;\n this.lastValidBlockHeight = lastValidBlockHeight;\n } else {\n const {recentBlockhash, nonceInfo} =\n opts as TransactionCtorFields_DEPRECATED;\n if (nonceInfo) {\n this.nonceInfo = nonceInfo;\n }\n this.recentBlockhash = recentBlockhash;\n }\n }\n\n /**\n * @internal\n */\n toJSON(): TransactionJSON {\n return {\n recentBlockhash: this.recentBlockhash || null,\n feePayer: this.feePayer ? this.feePayer.toJSON() : null,\n nonceInfo: this.nonceInfo\n ? {\n nonce: this.nonceInfo.nonce,\n nonceInstruction: this.nonceInfo.nonceInstruction.toJSON(),\n }\n : null,\n instructions: this.instructions.map(instruction => instruction.toJSON()),\n signers: this.signatures.map(({publicKey}) => {\n return publicKey.toJSON();\n }),\n };\n }\n\n /**\n * Add one or more instructions to this Transaction\n */\n add(\n ...items: Array<\n Transaction | TransactionInstruction | TransactionInstructionCtorFields\n >\n ): Transaction {\n if (items.length === 0) {\n throw new Error('No instructions');\n }\n\n items.forEach((item: any) => {\n if ('instructions' in item) {\n this.instructions = this.instructions.concat(item.instructions);\n } else if ('data' in item && 'programId' in item && 'keys' in item) {\n this.instructions.push(item);\n } else {\n this.instructions.push(new TransactionInstruction(item));\n }\n });\n return this;\n }\n\n /**\n * Compile transaction data\n */\n compileMessage(): Message {\n if (\n this._message &&\n JSON.stringify(this.toJSON()) === JSON.stringify(this._json)\n ) {\n return this._message;\n }\n\n let recentBlockhash;\n let instructions: TransactionInstruction[];\n if (this.nonceInfo) {\n recentBlockhash = this.nonceInfo.nonce;\n if (this.instructions[0] != this.nonceInfo.nonceInstruction) {\n instructions = [this.nonceInfo.nonceInstruction, ...this.instructions];\n } else {\n instructions = this.instructions;\n }\n } else {\n recentBlockhash = this.recentBlockhash;\n instructions = this.instructions;\n }\n if (!recentBlockhash) {\n throw new Error('Transaction recentBlockhash required');\n }\n\n if (instructions.length < 1) {\n console.warn('No instructions provided');\n }\n\n let feePayer: PublicKey;\n if (this.feePayer) {\n feePayer = this.feePayer;\n } else if (this.signatures.length > 0 && this.signatures[0].publicKey) {\n // Use implicit fee payer\n feePayer = this.signatures[0].publicKey;\n } else {\n throw new Error('Transaction fee payer required');\n }\n\n for (let i = 0; i < instructions.length; i++) {\n if (instructions[i].programId === undefined) {\n throw new Error(\n `Transaction instruction index ${i} has undefined program id`,\n );\n }\n }\n\n const programIds: string[] = [];\n const accountMetas: AccountMeta[] = [];\n instructions.forEach(instruction => {\n instruction.keys.forEach(accountMeta => {\n accountMetas.push({...accountMeta});\n });\n\n const programId = instruction.programId.toString();\n if (!programIds.includes(programId)) {\n programIds.push(programId);\n }\n });\n\n // Append programID account metas\n programIds.forEach(programId => {\n accountMetas.push({\n pubkey: new PublicKey(programId),\n isSigner: false,\n isWritable: false,\n });\n });\n\n // Cull duplicate account metas\n const uniqueMetas: AccountMeta[] = [];\n accountMetas.forEach(accountMeta => {\n const pubkeyString = accountMeta.pubkey.toString();\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.toString() === pubkeyString;\n });\n if (uniqueIndex > -1) {\n uniqueMetas[uniqueIndex].isWritable =\n uniqueMetas[uniqueIndex].isWritable || accountMeta.isWritable;\n uniqueMetas[uniqueIndex].isSigner =\n uniqueMetas[uniqueIndex].isSigner || accountMeta.isSigner;\n } else {\n uniqueMetas.push(accountMeta);\n }\n });\n\n // Sort. Prioritizing first by signer, then by writable\n uniqueMetas.sort(function (x, y) {\n if (x.isSigner !== y.isSigner) {\n // Signers always come before non-signers\n return x.isSigner ? -1 : 1;\n }\n if (x.isWritable !== y.isWritable) {\n // Writable accounts always come before read-only accounts\n return x.isWritable ? -1 : 1;\n }\n // Otherwise, sort by pubkey, stringwise.\n return x.pubkey.toBase58().localeCompare(y.pubkey.toBase58());\n });\n\n // Move fee payer to the front\n const feePayerIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(feePayer);\n });\n if (feePayerIndex > -1) {\n const [payerMeta] = uniqueMetas.splice(feePayerIndex, 1);\n payerMeta.isSigner = true;\n payerMeta.isWritable = true;\n uniqueMetas.unshift(payerMeta);\n } else {\n uniqueMetas.unshift({\n pubkey: feePayer,\n isSigner: true,\n isWritable: true,\n });\n }\n\n // Disallow unknown signers\n for (const signature of this.signatures) {\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(signature.publicKey);\n });\n if (uniqueIndex > -1) {\n if (!uniqueMetas[uniqueIndex].isSigner) {\n uniqueMetas[uniqueIndex].isSigner = true;\n console.warn(\n 'Transaction references a signature that is unnecessary, ' +\n 'only the fee payer and instruction signer accounts should sign a transaction. ' +\n 'This behavior is deprecated and will throw an error in the next major version release.',\n );\n }\n } else {\n throw new Error(`unknown signer: ${signature.publicKey.toString()}`);\n }\n }\n\n let numRequiredSignatures = 0;\n let numReadonlySignedAccounts = 0;\n let numReadonlyUnsignedAccounts = 0;\n\n // Split out signing from non-signing keys and count header values\n const signedKeys: string[] = [];\n const unsignedKeys: string[] = [];\n uniqueMetas.forEach(({pubkey, isSigner, isWritable}) => {\n if (isSigner) {\n signedKeys.push(pubkey.toString());\n numRequiredSignatures += 1;\n if (!isWritable) {\n numReadonlySignedAccounts += 1;\n }\n } else {\n unsignedKeys.push(pubkey.toString());\n if (!isWritable) {\n numReadonlyUnsignedAccounts += 1;\n }\n }\n });\n\n const accountKeys = signedKeys.concat(unsignedKeys);\n const compiledInstructions: CompiledInstruction[] = instructions.map(\n instruction => {\n const {data, programId} = instruction;\n return {\n programIdIndex: accountKeys.indexOf(programId.toString()),\n accounts: instruction.keys.map(meta =>\n accountKeys.indexOf(meta.pubkey.toString()),\n ),\n data: bs58.encode(data),\n };\n },\n );\n\n compiledInstructions.forEach(instruction => {\n invariant(instruction.programIdIndex >= 0);\n instruction.accounts.forEach(keyIndex => invariant(keyIndex >= 0));\n });\n\n return new Message({\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts,\n },\n accountKeys,\n recentBlockhash,\n instructions: compiledInstructions,\n });\n }\n\n /**\n * @internal\n */\n _compile(): Message {\n const message = this.compileMessage();\n const signedKeys = message.accountKeys.slice(\n 0,\n message.header.numRequiredSignatures,\n );\n\n if (this.signatures.length === signedKeys.length) {\n const valid = this.signatures.every((pair, index) => {\n return signedKeys[index].equals(pair.publicKey);\n });\n\n if (valid) return message;\n }\n\n this.signatures = signedKeys.map(publicKey => ({\n signature: null,\n publicKey,\n }));\n\n return message;\n }\n\n /**\n * Get a buffer of the Transaction data that need to be covered by signatures\n */\n serializeMessage(): Buffer {\n return this._compile().serialize();\n }\n\n /**\n * Get the estimated fee associated with a transaction\n */\n async getEstimatedFee(connection: Connection): Promise {\n return (await connection.getFeeForMessage(this.compileMessage())).value;\n }\n\n /**\n * Specify the public keys which will be used to sign the Transaction.\n * The first signer will be used as the transaction fee payer account.\n *\n * Signatures can be added with either `partialSign` or `addSignature`\n *\n * @deprecated Deprecated since v0.84.0. Only the fee payer needs to be\n * specified and it can be set in the Transaction constructor or with the\n * `feePayer` property.\n */\n setSigners(...signers: Array) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n const seen = new Set();\n this.signatures = signers\n .filter(publicKey => {\n const key = publicKey.toString();\n if (seen.has(key)) {\n return false;\n } else {\n seen.add(key);\n return true;\n }\n })\n .map(publicKey => ({signature: null, publicKey}));\n }\n\n /**\n * Sign the Transaction with the specified signers. Multiple signatures may\n * be applied to a Transaction. The first signature is considered \"primary\"\n * and is used identify and confirm transactions.\n *\n * If the Transaction `feePayer` is not set, the first signer will be used\n * as the transaction fee payer account.\n *\n * Transaction fields should not be modified after the first call to `sign`,\n * as doing so may invalidate the signature and cause the Transaction to be\n * rejected.\n *\n * The Transaction must be assigned a valid `recentBlockhash` before invoking this method\n */\n sign(...signers: Array) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n // Dedupe signers\n const seen = new Set();\n const uniqueSigners = [];\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n this.signatures = uniqueSigners.map(signer => ({\n signature: null,\n publicKey: signer.publicKey,\n }));\n\n const message = this._compile();\n this._partialSign(message, ...uniqueSigners);\n }\n\n /**\n * Partially sign a transaction with the specified accounts. All accounts must\n * correspond to either the fee payer or a signer account in the transaction\n * instructions.\n *\n * All the caveats from the `sign` method apply to `partialSign`\n */\n partialSign(...signers: Array) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n // Dedupe signers\n const seen = new Set();\n const uniqueSigners = [];\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n const message = this._compile();\n this._partialSign(message, ...uniqueSigners);\n }\n\n /**\n * @internal\n */\n _partialSign(message: Message, ...signers: Array) {\n const signData = message.serialize();\n signers.forEach(signer => {\n const signature = nacl.sign.detached(signData, signer.secretKey);\n this._addSignature(signer.publicKey, toBuffer(signature));\n });\n }\n\n /**\n * Add an externally created signature to a transaction. The public key\n * must correspond to either the fee payer or a signer account in the transaction\n * instructions.\n */\n addSignature(pubkey: PublicKey, signature: Buffer) {\n this._compile(); // Ensure signatures array is populated\n this._addSignature(pubkey, signature);\n }\n\n /**\n * @internal\n */\n _addSignature(pubkey: PublicKey, signature: Buffer) {\n invariant(signature.length === 64);\n\n const index = this.signatures.findIndex(sigpair =>\n pubkey.equals(sigpair.publicKey),\n );\n if (index < 0) {\n throw new Error(`unknown signer: ${pubkey.toString()}`);\n }\n\n this.signatures[index].signature = Buffer.from(signature);\n }\n\n /**\n * Verify signatures of a complete, signed Transaction\n */\n verifySignatures(): boolean {\n return this._verifySignatures(this.serializeMessage(), true);\n }\n\n /**\n * @internal\n */\n _verifySignatures(signData: Buffer, requireAllSignatures: boolean): boolean {\n for (const {signature, publicKey} of this.signatures) {\n if (signature === null) {\n if (requireAllSignatures) {\n return false;\n }\n } else {\n if (\n !nacl.sign.detached.verify(signData, signature, publicKey.toBuffer())\n ) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * Serialize the Transaction in the wire format.\n */\n serialize(config?: SerializeConfig): Buffer {\n const {requireAllSignatures, verifySignatures} = Object.assign(\n {requireAllSignatures: true, verifySignatures: true},\n config,\n );\n\n const signData = this.serializeMessage();\n if (\n verifySignatures &&\n !this._verifySignatures(signData, requireAllSignatures)\n ) {\n throw new Error('Signature verification failed');\n }\n\n return this._serialize(signData);\n }\n\n /**\n * @internal\n */\n _serialize(signData: Buffer): Buffer {\n const {signatures} = this;\n const signatureCount: number[] = [];\n shortvec.encodeLength(signatureCount, signatures.length);\n const transactionLength =\n signatureCount.length + signatures.length * 64 + signData.length;\n const wireTransaction = Buffer.alloc(transactionLength);\n invariant(signatures.length < 256);\n Buffer.from(signatureCount).copy(wireTransaction, 0);\n signatures.forEach(({signature}, index) => {\n if (signature !== null) {\n invariant(signature.length === 64, `signature has invalid length`);\n Buffer.from(signature).copy(\n wireTransaction,\n signatureCount.length + index * 64,\n );\n }\n });\n signData.copy(\n wireTransaction,\n signatureCount.length + signatures.length * 64,\n );\n invariant(\n wireTransaction.length <= PACKET_DATA_SIZE,\n `Transaction too large: ${wireTransaction.length} > ${PACKET_DATA_SIZE}`,\n );\n return wireTransaction;\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get keys(): Array {\n invariant(this.instructions.length === 1);\n return this.instructions[0].keys.map(keyObj => keyObj.pubkey);\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get programId(): PublicKey {\n invariant(this.instructions.length === 1);\n return this.instructions[0].programId;\n }\n\n /**\n * Deprecated method\n * @internal\n */\n get data(): Buffer {\n invariant(this.instructions.length === 1);\n return this.instructions[0].data;\n }\n\n /**\n * Parse a wire transaction into a Transaction object.\n */\n static from(buffer: Buffer | Uint8Array | Array): Transaction {\n // Slice up wire data\n let byteArray = [...buffer];\n\n const signatureCount = shortvec.decodeLength(byteArray);\n let signatures = [];\n for (let i = 0; i < signatureCount; i++) {\n const signature = byteArray.slice(0, SIGNATURE_LENGTH_IN_BYTES);\n byteArray = byteArray.slice(SIGNATURE_LENGTH_IN_BYTES);\n signatures.push(bs58.encode(Buffer.from(signature)));\n }\n\n return Transaction.populate(Message.from(byteArray), signatures);\n }\n\n /**\n * Populate Transaction object from message and signatures\n */\n static populate(\n message: Message,\n signatures: Array = [],\n ): Transaction {\n const transaction = new Transaction();\n transaction.recentBlockhash = message.recentBlockhash;\n if (message.header.numRequiredSignatures > 0) {\n transaction.feePayer = message.accountKeys[0];\n }\n signatures.forEach((signature, index) => {\n const sigPubkeyPair = {\n signature:\n signature == bs58.encode(DEFAULT_SIGNATURE)\n ? null\n : bs58.decode(signature),\n publicKey: message.accountKeys[index],\n };\n transaction.signatures.push(sigPubkeyPair);\n });\n\n message.instructions.forEach(instruction => {\n const keys = instruction.accounts.map(account => {\n const pubkey = message.accountKeys[account];\n return {\n pubkey,\n isSigner:\n transaction.signatures.some(\n keyObj => keyObj.publicKey.toString() === pubkey.toString(),\n ) || message.isAccountSigner(account),\n isWritable: message.isAccountWritable(account),\n };\n });\n\n transaction.instructions.push(\n new TransactionInstruction({\n keys,\n programId: message.accountKeys[instruction.programIdIndex],\n data: bs58.decode(instruction.data),\n }),\n );\n });\n\n transaction._message = message;\n transaction._json = transaction.toJSON();\n\n return transaction;\n }\n}\n", "import {PublicKey} from './publickey';\n\nexport const SYSVAR_CLOCK_PUBKEY = new PublicKey(\n 'SysvarC1ock11111111111111111111111111111111',\n);\n\nexport const SYSVAR_EPOCH_SCHEDULE_PUBKEY = new PublicKey(\n 'SysvarEpochSchedu1e111111111111111111111111',\n);\n\nexport const SYSVAR_INSTRUCTIONS_PUBKEY = new PublicKey(\n 'Sysvar1nstructions1111111111111111111111111',\n);\n\nexport const SYSVAR_RECENT_BLOCKHASHES_PUBKEY = new PublicKey(\n 'SysvarRecentB1ockHashes11111111111111111111',\n);\n\nexport const SYSVAR_RENT_PUBKEY = new PublicKey(\n 'SysvarRent111111111111111111111111111111111',\n);\n\nexport const SYSVAR_REWARDS_PUBKEY = new PublicKey(\n 'SysvarRewards111111111111111111111111111111',\n);\n\nexport const SYSVAR_SLOT_HASHES_PUBKEY = new PublicKey(\n 'SysvarS1otHashes111111111111111111111111111',\n);\n\nexport const SYSVAR_SLOT_HISTORY_PUBKEY = new PublicKey(\n 'SysvarS1otHistory11111111111111111111111111',\n);\n\nexport const SYSVAR_STAKE_HISTORY_PUBKEY = new PublicKey(\n 'SysvarStakeHistory1111111111111111111111111',\n);\n", "import {Connection} from '../connection';\nimport {Transaction} from '../transaction';\nimport type {ConfirmOptions} from '../connection';\nimport type {Signer} from '../keypair';\nimport type {TransactionSignature} from '../transaction';\n\n/**\n * Sign, send and confirm a transaction.\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Transaction} transaction\n * @param {Array} signers\n * @param {ConfirmOptions} [options]\n * @returns {Promise}\n */\nexport async function sendAndConfirmTransaction(\n connection: Connection,\n transaction: Transaction,\n signers: Array,\n options?: ConfirmOptions,\n): Promise {\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n maxRetries: options.maxRetries,\n minContextSlot: options.minContextSlot,\n };\n\n const signature = await connection.sendTransaction(\n transaction,\n signers,\n sendOptions,\n );\n\n const status =\n transaction.recentBlockhash != null &&\n transaction.lastValidBlockHeight != null\n ? (\n await connection.confirmTransaction(\n {\n signature: signature,\n blockhash: transaction.recentBlockhash,\n lastValidBlockHeight: transaction.lastValidBlockHeight,\n },\n options && options.commitment,\n )\n ).value\n : (\n await connection.confirmTransaction(\n signature,\n options && options.commitment,\n )\n ).value;\n\n if (status.err) {\n throw new Error(\n `Transaction ${signature} failed (${JSON.stringify(status)})`,\n );\n }\n\n return signature;\n}\n", "// zzz\nexport function sleep(ms: number): Promise {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n", "import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from './layout';\n\nexport interface IInstructionInputData {\n readonly instruction: number;\n}\n\n/**\n * @internal\n */\nexport type InstructionType = {\n /** The Instruction index (from solana upstream program) */\n index: number;\n /** The BufferLayout to use to build data */\n layout: BufferLayout.Layout;\n};\n\n/**\n * Populate a buffer of instruction data using an InstructionType\n * @internal\n */\nexport function encodeData(\n type: InstructionType,\n fields?: any,\n): Buffer {\n const allocLength =\n type.layout.span >= 0 ? type.layout.span : Layout.getAlloc(type, fields);\n const data = Buffer.alloc(allocLength);\n const layoutFields = Object.assign({instruction: type.index}, fields);\n type.layout.encode(layoutFields, data);\n return data;\n}\n\n/**\n * Decode instruction data buffer using an InstructionType\n * @internal\n */\nexport function decodeData(\n type: InstructionType,\n buffer: Buffer,\n): TInputData {\n let data: TInputData;\n try {\n data = type.layout.decode(buffer);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (data.instruction !== type.index) {\n throw new Error(\n `invalid instruction; instruction index mismatch ${data.instruction} != ${type.index}`,\n );\n }\n\n return data;\n}\n", "import * as BufferLayout from '@solana/buffer-layout';\n\n/**\n * https://github.com/solana-labs/solana/blob/90bedd7e067b5b8f3ddbb45da00a4e9cabb22c62/sdk/src/fee_calculator.rs#L7-L11\n *\n * @internal\n */\nexport const FeeCalculatorLayout = BufferLayout.nu64('lamportsPerSignature');\n\n/**\n * Calculator for transaction fees.\n *\n * @deprecated Deprecated since Solana v1.8.0.\n */\nexport interface FeeCalculator {\n /** Cost in lamports to validate a signature. */\n lamportsPerSignature: number;\n}\n", "import * as BufferLayout from '@solana/buffer-layout';\nimport {Buffer} from 'buffer';\n\nimport type {Blockhash} from './blockhash';\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport type {FeeCalculator} from './fee-calculator';\nimport {FeeCalculatorLayout} from './fee-calculator';\nimport {toBuffer} from './utils/to-buffer';\n\n/**\n * See https://github.com/solana-labs/solana/blob/0ea2843ec9cdc517572b8e62c959f41b55cf4453/sdk/src/nonce_state.rs#L29-L32\n *\n * @internal\n */\nconst NonceAccountLayout = BufferLayout.struct<\n Readonly<{\n authorizedPubkey: Uint8Array;\n feeCalculator: Readonly<{\n lamportsPerSignature: number;\n }>;\n nonce: Uint8Array;\n state: number;\n version: number;\n }>\n>([\n BufferLayout.u32('version'),\n BufferLayout.u32('state'),\n Layout.publicKey('authorizedPubkey'),\n Layout.publicKey('nonce'),\n BufferLayout.struct>(\n [FeeCalculatorLayout],\n 'feeCalculator',\n ),\n]);\n\nexport const NONCE_ACCOUNT_LENGTH = NonceAccountLayout.span;\n\ntype NonceAccountArgs = {\n authorizedPubkey: PublicKey;\n nonce: Blockhash;\n feeCalculator: FeeCalculator;\n};\n\n/**\n * NonceAccount class\n */\nexport class NonceAccount {\n authorizedPubkey: PublicKey;\n nonce: Blockhash;\n feeCalculator: FeeCalculator;\n\n /**\n * @internal\n */\n constructor(args: NonceAccountArgs) {\n this.authorizedPubkey = args.authorizedPubkey;\n this.nonce = args.nonce;\n this.feeCalculator = args.feeCalculator;\n }\n\n /**\n * Deserialize NonceAccount from the account data.\n *\n * @param buffer account data\n * @return NonceAccount\n */\n static fromAccountData(\n buffer: Buffer | Uint8Array | Array,\n ): NonceAccount {\n const nonceAccount = NonceAccountLayout.decode(toBuffer(buffer), 0);\n return new NonceAccount({\n authorizedPubkey: new PublicKey(nonceAccount.authorizedPubkey),\n nonce: new PublicKey(nonceAccount.nonce).toString(),\n feeCalculator: nonceAccount.feeCalculator,\n });\n }\n}\n", "import {Buffer} from 'buffer';\nimport {blob, Layout} from '@solana/buffer-layout';\nimport {toBigIntLE, toBufferLE} from 'bigint-buffer';\n\ninterface EncodeDecode {\n decode(buffer: Buffer, offset?: number): T;\n encode(src: T, buffer: Buffer, offset?: number): number;\n}\n\nconst encodeDecode = (layout: Layout): EncodeDecode => {\n const decode = layout.decode.bind(layout);\n const encode = layout.encode.bind(layout);\n return {decode, encode};\n};\n\nconst bigInt =\n (length: number) =>\n (property?: string): Layout => {\n const layout = blob(length, property);\n const {encode, decode} = encodeDecode(layout);\n\n const bigIntLayout = layout as Layout as Layout;\n\n bigIntLayout.decode = (buffer: Buffer, offset: number) => {\n const src = decode(buffer, offset);\n return toBigIntLE(Buffer.from(src));\n };\n\n bigIntLayout.encode = (bigInt: bigint, buffer: Buffer, offset: number) => {\n const src = toBufferLE(bigInt, length);\n return encode(src, buffer, offset);\n };\n\n return bigIntLayout;\n };\n\nexport const u64 = bigInt(8);\n\nexport const u128 = bigInt(16);\n\nexport const u192 = bigInt(24);\n\nexport const u256 = bigInt(32);\n", "import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {NONCE_ACCOUNT_LENGTH} from '../nonce-account';\nimport {PublicKey} from '../publickey';\nimport {SYSVAR_RECENT_BLOCKHASHES_PUBKEY, SYSVAR_RENT_PUBKEY} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\nimport {u64} from '../utils/bigint';\n\n/**\n * Create account system transaction params\n */\nexport type CreateAccountParams = {\n /** The account that will transfer lamports to the created account */\n fromPubkey: PublicKey;\n /** Public key of the created account */\n newAccountPubkey: PublicKey;\n /** Amount of lamports to transfer to the created account */\n lamports: number;\n /** Amount of space in bytes to allocate to the created account */\n space: number;\n /** Public key of the program to assign as the owner of the created account */\n programId: PublicKey;\n};\n\n/**\n * Transfer system transaction params\n */\nexport type TransferParams = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: number | bigint;\n};\n\n/**\n * Assign system transaction params\n */\nexport type AssignParams = {\n /** Public key of the account which will be assigned a new owner */\n accountPubkey: PublicKey;\n /** Public key of the program to assign as the owner */\n programId: PublicKey;\n};\n\n/**\n * Create account with seed system transaction params\n */\nexport type CreateAccountWithSeedParams = {\n /** The account that will transfer lamports to the created account */\n fromPubkey: PublicKey;\n /** Public key of the created account. Must be pre-calculated with PublicKey.createWithSeed() */\n newAccountPubkey: PublicKey;\n /** Base public key to use to derive the address of the created account. Must be the same as the base key used to create `newAccountPubkey` */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the created account. Must be the same as the seed used to create `newAccountPubkey` */\n seed: string;\n /** Amount of lamports to transfer to the created account */\n lamports: number;\n /** Amount of space in bytes to allocate to the created account */\n space: number;\n /** Public key of the program to assign as the owner of the created account */\n programId: PublicKey;\n};\n\n/**\n * Create nonce account system transaction params\n */\nexport type CreateNonceAccountParams = {\n /** The account that will transfer lamports to the created nonce account */\n fromPubkey: PublicKey;\n /** Public key of the created nonce account */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the created nonce account */\n authorizedPubkey: PublicKey;\n /** Amount of lamports to transfer to the created nonce account */\n lamports: number;\n};\n\n/**\n * Create nonce account with seed system transaction params\n */\nexport type CreateNonceAccountWithSeedParams = {\n /** The account that will transfer lamports to the created nonce account */\n fromPubkey: PublicKey;\n /** Public key of the created nonce account */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the created nonce account */\n authorizedPubkey: PublicKey;\n /** Amount of lamports to transfer to the created nonce account */\n lamports: number;\n /** Base public key to use to derive the address of the nonce account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the nonce account */\n seed: string;\n};\n\n/**\n * Initialize nonce account system instruction params\n */\nexport type InitializeNonceParams = {\n /** Nonce account which will be initialized */\n noncePubkey: PublicKey;\n /** Public key to set as authority of the initialized nonce account */\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Advance nonce account system instruction params\n */\nexport type AdvanceNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the nonce authority */\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Withdraw nonce account system transaction params\n */\nexport type WithdrawNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the nonce authority */\n authorizedPubkey: PublicKey;\n /** Public key of the account which will receive the withdrawn nonce account balance */\n toPubkey: PublicKey;\n /** Amount of lamports to withdraw from the nonce account */\n lamports: number;\n};\n\n/**\n * Authorize nonce account system transaction params\n */\nexport type AuthorizeNonceParams = {\n /** Nonce account */\n noncePubkey: PublicKey;\n /** Public key of the current nonce authority */\n authorizedPubkey: PublicKey;\n /** Public key to set as the new nonce authority */\n newAuthorizedPubkey: PublicKey;\n};\n\n/**\n * Allocate account system transaction params\n */\nexport type AllocateParams = {\n /** Account to allocate */\n accountPubkey: PublicKey;\n /** Amount of space in bytes to allocate */\n space: number;\n};\n\n/**\n * Allocate account with seed system transaction params\n */\nexport type AllocateWithSeedParams = {\n /** Account to allocate */\n accountPubkey: PublicKey;\n /** Base public key to use to derive the address of the allocated account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the allocated account */\n seed: string;\n /** Amount of space in bytes to allocate */\n space: number;\n /** Public key of the program to assign as the owner of the allocated account */\n programId: PublicKey;\n};\n\n/**\n * Assign account with seed system transaction params\n */\nexport type AssignWithSeedParams = {\n /** Public key of the account which will be assigned a new owner */\n accountPubkey: PublicKey;\n /** Base public key to use to derive the address of the assigned account */\n basePubkey: PublicKey;\n /** Seed to use to derive the address of the assigned account */\n seed: string;\n /** Public key of the program to assign as the owner */\n programId: PublicKey;\n};\n\n/**\n * Transfer with seed system transaction params\n */\nexport type TransferWithSeedParams = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Base public key to use to derive the funding account address */\n basePubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: number | bigint;\n /** Seed to use to derive the funding account address */\n seed: string;\n /** Program id to use to derive the funding account address */\n programId: PublicKey;\n};\n\n/** Decoded transfer system transaction instruction */\nexport type DecodedTransferInstruction = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: bigint;\n};\n\n/** Decoded transferWithSeed system transaction instruction */\nexport type DecodedTransferWithSeedInstruction = {\n /** Account that will transfer lamports */\n fromPubkey: PublicKey;\n /** Base public key to use to derive the funding account address */\n basePubkey: PublicKey;\n /** Account that will receive transferred lamports */\n toPubkey: PublicKey;\n /** Amount of lamports to transfer */\n lamports: bigint;\n /** Seed to use to derive the funding account address */\n seed: string;\n /** Program id to use to derive the funding account address */\n programId: PublicKey;\n};\n\n/**\n * System Instruction class\n */\nexport class SystemInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a system instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): SystemInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: SystemInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(SYSTEM_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as SystemInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a SystemInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode a create account system instruction and retrieve the instruction params.\n */\n static decodeCreateAccount(\n instruction: TransactionInstruction,\n ): CreateAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {lamports, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Create,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n lamports,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a transfer system instruction and retrieve the instruction params.\n */\n static decodeTransfer(\n instruction: TransactionInstruction,\n ): DecodedTransferInstruction {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {lamports} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Transfer,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a transfer with seed system instruction and retrieve the instruction params.\n */\n static decodeTransferWithSeed(\n instruction: TransactionInstruction,\n ): DecodedTransferWithSeedInstruction {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {lamports, seed, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n basePubkey: instruction.keys[1].pubkey,\n toPubkey: instruction.keys[2].pubkey,\n lamports,\n seed,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an allocate system instruction and retrieve the instruction params.\n */\n static decodeAllocate(instruction: TransactionInstruction): AllocateParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {space} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Allocate,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n space,\n };\n }\n\n /**\n * Decode an allocate with seed system instruction and retrieve the instruction params.\n */\n static decodeAllocateWithSeed(\n instruction: TransactionInstruction,\n ): AllocateWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {base, seed, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an assign system instruction and retrieve the instruction params.\n */\n static decodeAssign(instruction: TransactionInstruction): AssignParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.Assign,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode an assign with seed system instruction and retrieve the instruction params.\n */\n static decodeAssignWithSeed(\n instruction: TransactionInstruction,\n ): AssignWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n\n const {base, seed, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed,\n instruction.data,\n );\n\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a create account with seed system instruction and retrieve the instruction params.\n */\n static decodeCreateWithSeed(\n instruction: TransactionInstruction,\n ): CreateAccountWithSeedParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {base, seed, lamports, space, programId} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed,\n instruction.data,\n );\n\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n lamports,\n space,\n programId: new PublicKey(programId),\n };\n }\n\n /**\n * Decode a nonce initialize system instruction and retrieve the instruction params.\n */\n static decodeNonceInitialize(\n instruction: TransactionInstruction,\n ): InitializeNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {authorized} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: new PublicKey(authorized),\n };\n }\n\n /**\n * Decode a nonce advance system instruction and retrieve the instruction params.\n */\n static decodeNonceAdvance(\n instruction: TransactionInstruction,\n ): AdvanceNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n };\n }\n\n /**\n * Decode a nonce withdraw system instruction and retrieve the instruction params.\n */\n static decodeNonceWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n\n const {lamports} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a nonce authorize system instruction and retrieve the instruction params.\n */\n static decodeNonceAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeNonceParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {authorized} = decodeData(\n SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount,\n instruction.data,\n );\n\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[1].pubkey,\n newAuthorizedPubkey: new PublicKey(authorized),\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(SystemProgram.programId)) {\n throw new Error('invalid instruction; programId is not SystemProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid SystemInstructionType's\n */\nexport type SystemInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof SystemInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'AdvanceNonceAccount'\n | 'Allocate'\n | 'AllocateWithSeed'\n | 'Assign'\n | 'AssignWithSeed'\n | 'AuthorizeNonceAccount'\n | 'Create'\n | 'CreateWithSeed'\n | 'InitializeNonceAccount'\n | 'Transfer'\n | 'TransferWithSeed'\n | 'WithdrawNonceAccount'\n | 'UpgradeNonceAccount';\n\ntype SystemInstructionInputData = {\n AdvanceNonceAccount: IInstructionInputData;\n Allocate: IInstructionInputData & {\n space: number;\n };\n AllocateWithSeed: IInstructionInputData & {\n base: Uint8Array;\n programId: Uint8Array;\n seed: string;\n space: number;\n };\n Assign: IInstructionInputData & {\n programId: Uint8Array;\n };\n AssignWithSeed: IInstructionInputData & {\n base: Uint8Array;\n seed: string;\n programId: Uint8Array;\n };\n AuthorizeNonceAccount: IInstructionInputData & {\n authorized: Uint8Array;\n };\n Create: IInstructionInputData & {\n lamports: number;\n programId: Uint8Array;\n space: number;\n };\n CreateWithSeed: IInstructionInputData & {\n base: Uint8Array;\n lamports: number;\n programId: Uint8Array;\n seed: string;\n space: number;\n };\n InitializeNonceAccount: IInstructionInputData & {\n authorized: Uint8Array;\n };\n Transfer: IInstructionInputData & {\n lamports: bigint;\n };\n TransferWithSeed: IInstructionInputData & {\n lamports: bigint;\n programId: Uint8Array;\n seed: string;\n };\n WithdrawNonceAccount: IInstructionInputData & {\n lamports: number;\n };\n UpgradeNonceAccount: IInstructionInputData;\n};\n\n/**\n * An enumeration of valid system InstructionType's\n * @internal\n */\nexport const SYSTEM_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in SystemInstructionType]: InstructionType<\n SystemInstructionInputData[Instruction]\n >;\n}>({\n Create: {\n index: 0,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ]),\n },\n Assign: {\n index: 1,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('programId'),\n ]),\n },\n Transfer: {\n index: 2,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n u64('lamports'),\n ]),\n },\n CreateWithSeed: {\n index: 3,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n BufferLayout.ns64('lamports'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ]),\n },\n AdvanceNonceAccount: {\n index: 4,\n layout: BufferLayout.struct<\n SystemInstructionInputData['AdvanceNonceAccount']\n >([BufferLayout.u32('instruction')]),\n },\n WithdrawNonceAccount: {\n index: 5,\n layout: BufferLayout.struct<\n SystemInstructionInputData['WithdrawNonceAccount']\n >([BufferLayout.u32('instruction'), BufferLayout.ns64('lamports')]),\n },\n InitializeNonceAccount: {\n index: 6,\n layout: BufferLayout.struct<\n SystemInstructionInputData['InitializeNonceAccount']\n >([BufferLayout.u32('instruction'), Layout.publicKey('authorized')]),\n },\n AuthorizeNonceAccount: {\n index: 7,\n layout: BufferLayout.struct<\n SystemInstructionInputData['AuthorizeNonceAccount']\n >([BufferLayout.u32('instruction'), Layout.publicKey('authorized')]),\n },\n Allocate: {\n index: 8,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('space'),\n ]),\n },\n AllocateWithSeed: {\n index: 9,\n layout: BufferLayout.struct(\n [\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n BufferLayout.ns64('space'),\n Layout.publicKey('programId'),\n ],\n ),\n },\n AssignWithSeed: {\n index: 10,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('base'),\n Layout.rustString('seed'),\n Layout.publicKey('programId'),\n ]),\n },\n TransferWithSeed: {\n index: 11,\n layout: BufferLayout.struct(\n [\n BufferLayout.u32('instruction'),\n u64('lamports'),\n Layout.rustString('seed'),\n Layout.publicKey('programId'),\n ],\n ),\n },\n UpgradeNonceAccount: {\n index: 12,\n layout: BufferLayout.struct<\n SystemInstructionInputData['UpgradeNonceAccount']\n >([BufferLayout.u32('instruction')]),\n },\n});\n\n/**\n * Factory class for transactions to interact with the System program\n */\nexport class SystemProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the System program\n */\n static programId: PublicKey = new PublicKey(\n '11111111111111111111111111111111',\n );\n\n /**\n * Generate a transaction instruction that creates a new account\n */\n static createAccount(params: CreateAccountParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Create;\n const data = encodeData(type, {\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.newAccountPubkey, isSigner: true, isWritable: true},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that transfers lamports from one account to another\n */\n static transfer(\n params: TransferParams | TransferWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed;\n data = encodeData(type, {\n lamports: BigInt(params.lamports),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.fromPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Transfer;\n data = encodeData(type, {lamports: BigInt(params.lamports)});\n keys = [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n ];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that assigns an account to a program\n */\n static assign(\n params: AssignParams | AssignWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.accountPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Assign;\n data = encodeData(type, {\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [{pubkey: params.accountPubkey, isSigner: true, isWritable: true}];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that creates a new account at\n * an address generated with `from`, a seed, and programId\n */\n static createAccountWithSeed(\n params: CreateAccountWithSeedParams,\n ): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed;\n const data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n let keys = [\n {pubkey: params.fromPubkey, isSigner: true, isWritable: true},\n {pubkey: params.newAccountPubkey, isSigner: false, isWritable: true},\n ];\n if (params.basePubkey != params.fromPubkey) {\n keys.push({pubkey: params.basePubkey, isSigner: true, isWritable: false});\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction that creates a new Nonce account\n */\n static createNonceAccount(\n params: CreateNonceAccountParams | CreateNonceAccountWithSeedParams,\n ): Transaction {\n const transaction = new Transaction();\n if ('basePubkey' in params && 'seed' in params) {\n transaction.add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId,\n }),\n );\n } else {\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId,\n }),\n );\n }\n\n const initParams = {\n noncePubkey: params.noncePubkey,\n authorizedPubkey: params.authorizedPubkey,\n };\n\n transaction.add(this.nonceInitialize(initParams));\n return transaction;\n }\n\n /**\n * Generate an instruction to initialize a Nonce account\n */\n static nonceInitialize(\n params: InitializeNonceParams,\n ): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.authorizedPubkey.toBuffer()),\n });\n const instructionData = {\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate an instruction to advance the nonce in a Nonce account\n */\n static nonceAdvance(params: AdvanceNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount;\n const data = encodeData(type);\n const instructionData = {\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a transaction instruction that withdraws lamports from a Nonce account\n */\n static nonceWithdraw(params: WithdrawNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount;\n const data = encodeData(type, {lamports: params.lamports});\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {pubkey: params.toPubkey, isSigner: false, isWritable: true},\n {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that authorizes a new PublicKey as the authority\n * on a Nonce account.\n */\n static nonceAuthorize(params: AuthorizeNonceParams): TransactionInstruction {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.newAuthorizedPubkey.toBuffer()),\n });\n\n return new TransactionInstruction({\n keys: [\n {pubkey: params.noncePubkey, isSigner: false, isWritable: true},\n {pubkey: params.authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction instruction that allocates space in an account without funding\n */\n static allocate(\n params: AllocateParams | AllocateWithSeedParams,\n ): TransactionInstruction {\n let data;\n let keys;\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer()),\n });\n keys = [\n {pubkey: params.accountPubkey, isSigner: false, isWritable: true},\n {pubkey: params.basePubkey, isSigner: true, isWritable: false},\n ];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Allocate;\n data = encodeData(type, {\n space: params.space,\n });\n keys = [{pubkey: params.accountPubkey, isSigner: true, isWritable: true}];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data,\n });\n }\n}\n", "import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport {PublicKey} from './publickey';\nimport {Transaction, PACKET_DATA_SIZE} from './transaction';\nimport {SYSVAR_RENT_PUBKEY} from './sysvar';\nimport {sendAndConfirmTransaction} from './utils/send-and-confirm-transaction';\nimport {sleep} from './utils/sleep';\nimport type {Connection} from './connection';\nimport type {Signer} from './keypair';\nimport {SystemProgram} from './programs/system';\nimport {IInstructionInputData} from './instruction';\n\n// Keep program chunks under PACKET_DATA_SIZE, leaving enough room for the\n// rest of the Transaction fields\n//\n// TODO: replace 300 with a proper constant for the size of the other\n// Transaction fields\nconst CHUNK_SIZE = PACKET_DATA_SIZE - 300;\n\n/**\n * Program loader interface\n */\nexport class Loader {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Amount of program data placed in each load Transaction\n */\n static chunkSize: number = CHUNK_SIZE;\n\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength: number): number {\n return (\n 2 * // Every transaction requires two signatures (payer + program)\n (Math.ceil(dataLength / Loader.chunkSize) +\n 1 + // Add one for Create transaction\n 1) // Add one for Finalize transaction\n );\n }\n\n /**\n * Loads a generic program\n *\n * @param connection The connection to use\n * @param payer System account that pays to load the program\n * @param program Account to load the program into\n * @param programId Public key that identifies the loader\n * @param data Program octets\n * @return true if program was loaded successfully, false if program was already loaded\n */\n static async load(\n connection: Connection,\n payer: Signer,\n program: Signer,\n programId: PublicKey,\n data: Buffer | Uint8Array | Array,\n ): Promise {\n {\n const balanceNeeded = await connection.getMinimumBalanceForRentExemption(\n data.length,\n );\n\n // Fetch program account info to check if it has already been created\n const programInfo = await connection.getAccountInfo(\n program.publicKey,\n 'confirmed',\n );\n\n let transaction: Transaction | null = null;\n if (programInfo !== null) {\n if (programInfo.executable) {\n console.error('Program load failed, account is already executable');\n return false;\n }\n\n if (programInfo.data.length !== data.length) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.allocate({\n accountPubkey: program.publicKey,\n space: data.length,\n }),\n );\n }\n\n if (!programInfo.owner.equals(programId)) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.assign({\n accountPubkey: program.publicKey,\n programId,\n }),\n );\n }\n\n if (programInfo.lamports < balanceNeeded) {\n transaction = transaction || new Transaction();\n transaction.add(\n SystemProgram.transfer({\n fromPubkey: payer.publicKey,\n toPubkey: program.publicKey,\n lamports: balanceNeeded - programInfo.lamports,\n }),\n );\n }\n } else {\n transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: program.publicKey,\n lamports: balanceNeeded > 0 ? balanceNeeded : 1,\n space: data.length,\n programId,\n }),\n );\n }\n\n // If the account is already created correctly, skip this step\n // and proceed directly to loading instructions\n if (transaction !== null) {\n await sendAndConfirmTransaction(\n connection,\n transaction,\n [payer, program],\n {\n commitment: 'confirmed',\n },\n );\n }\n }\n\n const dataLayout = BufferLayout.struct<\n Readonly<{\n bytes: number[];\n bytesLength: number;\n bytesLengthPadding: number;\n instruction: number;\n offset: number;\n }>\n >([\n BufferLayout.u32('instruction'),\n BufferLayout.u32('offset'),\n BufferLayout.u32('bytesLength'),\n BufferLayout.u32('bytesLengthPadding'),\n BufferLayout.seq(\n BufferLayout.u8('byte'),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'bytes',\n ),\n ]);\n\n const chunkSize = Loader.chunkSize;\n let offset = 0;\n let array = data;\n let transactions = [];\n while (array.length > 0) {\n const bytes = array.slice(0, chunkSize);\n const data = Buffer.alloc(chunkSize + 16);\n dataLayout.encode(\n {\n instruction: 0, // Load instruction\n offset,\n bytes: bytes as number[],\n bytesLength: 0,\n bytesLengthPadding: 0,\n },\n data,\n );\n\n const transaction = new Transaction().add({\n keys: [{pubkey: program.publicKey, isSigner: true, isWritable: true}],\n programId,\n data,\n });\n transactions.push(\n sendAndConfirmTransaction(connection, transaction, [payer, program], {\n commitment: 'confirmed',\n }),\n );\n\n // Delay between sends in an attempt to reduce rate limit errors\n if (connection._rpcEndpoint.includes('solana.com')) {\n const REQUESTS_PER_SECOND = 4;\n await sleep(1000 / REQUESTS_PER_SECOND);\n }\n\n offset += chunkSize;\n array = array.slice(chunkSize);\n }\n await Promise.all(transactions);\n\n // Finalize the account loaded with program data for execution\n {\n const dataLayout = BufferLayout.struct([\n BufferLayout.u32('instruction'),\n ]);\n\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode(\n {\n instruction: 1, // Finalize instruction\n },\n data,\n );\n\n const transaction = new Transaction().add({\n keys: [\n {pubkey: program.publicKey, isSigner: true, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId,\n data,\n });\n await sendAndConfirmTransaction(\n connection,\n transaction,\n [payer, program],\n {\n commitment: 'confirmed',\n },\n );\n }\n\n // success\n return true;\n }\n}\n", "import type {Buffer} from 'buffer';\n\nimport {PublicKey} from './publickey';\nimport {Loader} from './loader';\nimport type {Connection} from './connection';\nimport type {Signer} from './keypair';\n\nexport const BPF_LOADER_PROGRAM_ID = new PublicKey(\n 'BPFLoader2111111111111111111111111111111111',\n);\n\n/**\n * Factory class for transactions to interact with a program loader\n */\nexport class BpfLoader {\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength: number): number {\n return Loader.getMinNumSignatures(dataLength);\n }\n\n /**\n * Load a BPF program\n *\n * @param connection The connection to use\n * @param payer Account that will pay program loading fees\n * @param program Account to load the program into\n * @param elf The entire ELF containing the BPF program\n * @param loaderProgramId The program id of the BPF loader to use\n * @return true if program was loaded successfully, false if program was already loaded\n */\n static load(\n connection: Connection,\n payer: Signer,\n program: Signer,\n elf: Buffer | Uint8Array | Array,\n loaderProgramId: PublicKey,\n ): Promise {\n return Loader.load(connection, payer, program, loaderProgramId, elf);\n }\n}\n", "var objToString = Object.prototype.toString;\nvar objKeys = Object.keys || function(obj) {\n\t\tvar keys = [];\n\t\tfor (var name in obj) {\n\t\t\tkeys.push(name);\n\t\t}\n\t\treturn keys;\n\t};\n\nfunction stringify(val, isArrayProp) {\n\tvar i, max, str, keys, key, propVal, toStr;\n\tif (val === true) {\n\t\treturn \"true\";\n\t}\n\tif (val === false) {\n\t\treturn \"false\";\n\t}\n\tswitch (typeof val) {\n\t\tcase \"object\":\n\t\t\tif (val === null) {\n\t\t\t\treturn null;\n\t\t\t} else if (val.toJSON && typeof val.toJSON === \"function\") {\n\t\t\t\treturn stringify(val.toJSON(), isArrayProp);\n\t\t\t} else {\n\t\t\t\ttoStr = objToString.call(val);\n\t\t\t\tif (toStr === \"[object Array]\") {\n\t\t\t\t\tstr = '[';\n\t\t\t\t\tmax = val.length - 1;\n\t\t\t\t\tfor(i = 0; i < max; i++) {\n\t\t\t\t\t\tstr += stringify(val[i], true) + ',';\n\t\t\t\t\t}\n\t\t\t\t\tif (max > -1) {\n\t\t\t\t\t\tstr += stringify(val[i], true);\n\t\t\t\t\t}\n\t\t\t\t\treturn str + ']';\n\t\t\t\t} else if (toStr === \"[object Object]\") {\n\t\t\t\t\t// only object is left\n\t\t\t\t\tkeys = objKeys(val).sort();\n\t\t\t\t\tmax = keys.length;\n\t\t\t\t\tstr = \"\";\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile (i < max) {\n\t\t\t\t\t\tkey = keys[i];\n\t\t\t\t\t\tpropVal = stringify(val[key], false);\n\t\t\t\t\t\tif (propVal !== undefined) {\n\t\t\t\t\t\t\tif (str) {\n\t\t\t\t\t\t\t\tstr += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstr += JSON.stringify(key) + ':' + propVal;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\treturn '{' + str + '}';\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"function\":\n\t\tcase \"undefined\":\n\t\t\treturn isArrayProp ? null : undefined;\n\t\tcase \"string\":\n\t\t\treturn JSON.stringify(val);\n\t\tdefault:\n\t\t\treturn isFinite(val) ? val : null;\n\t}\n}\n\nmodule.exports = function(val) {\n\tvar returnVal = stringify(val, false);\n\tif (returnVal !== undefined) {\n\t\treturn ''+ returnVal;\n\t}\n};\n", "const MINIMUM_SLOT_PER_EPOCH = 32;\n\n// Returns the number of trailing zeros in the binary representation of self.\nfunction trailingZeros(n: number) {\n let trailingZeros = 0;\n while (n > 1) {\n n /= 2;\n trailingZeros++;\n }\n return trailingZeros;\n}\n\n// Returns the smallest power of two greater than or equal to n\nfunction nextPowerOfTwo(n: number) {\n if (n === 0) return 1;\n n--;\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n n |= n >> 32;\n return n + 1;\n}\n\n/**\n * Epoch schedule\n * (see https://docs.solana.com/terminology#epoch)\n * Can be retrieved with the {@link connection.getEpochSchedule} method\n */\nexport class EpochSchedule {\n /** The maximum number of slots in each epoch */\n public slotsPerEpoch: number;\n /** The number of slots before beginning of an epoch to calculate a leader schedule for that epoch */\n public leaderScheduleSlotOffset: number;\n /** Indicates whether epochs start short and grow */\n public warmup: boolean;\n /** The first epoch with `slotsPerEpoch` slots */\n public firstNormalEpoch: number;\n /** The first slot of `firstNormalEpoch` */\n public firstNormalSlot: number;\n\n constructor(\n slotsPerEpoch: number,\n leaderScheduleSlotOffset: number,\n warmup: boolean,\n firstNormalEpoch: number,\n firstNormalSlot: number,\n ) {\n this.slotsPerEpoch = slotsPerEpoch;\n this.leaderScheduleSlotOffset = leaderScheduleSlotOffset;\n this.warmup = warmup;\n this.firstNormalEpoch = firstNormalEpoch;\n this.firstNormalSlot = firstNormalSlot;\n }\n\n getEpoch(slot: number): number {\n return this.getEpochAndSlotIndex(slot)[0];\n }\n\n getEpochAndSlotIndex(slot: number): [number, number] {\n if (slot < this.firstNormalSlot) {\n const epoch =\n trailingZeros(nextPowerOfTwo(slot + MINIMUM_SLOT_PER_EPOCH + 1)) -\n trailingZeros(MINIMUM_SLOT_PER_EPOCH) -\n 1;\n\n const epochLen = this.getSlotsInEpoch(epoch);\n const slotIndex = slot - (epochLen - MINIMUM_SLOT_PER_EPOCH);\n return [epoch, slotIndex];\n } else {\n const normalSlotIndex = slot - this.firstNormalSlot;\n const normalEpochIndex = Math.floor(normalSlotIndex / this.slotsPerEpoch);\n const epoch = this.firstNormalEpoch + normalEpochIndex;\n const slotIndex = normalSlotIndex % this.slotsPerEpoch;\n return [epoch, slotIndex];\n }\n }\n\n getFirstSlotInEpoch(epoch: number): number {\n if (epoch <= this.firstNormalEpoch) {\n return (Math.pow(2, epoch) - 1) * MINIMUM_SLOT_PER_EPOCH;\n } else {\n return (\n (epoch - this.firstNormalEpoch) * this.slotsPerEpoch +\n this.firstNormalSlot\n );\n }\n }\n\n getLastSlotInEpoch(epoch: number): number {\n return this.getFirstSlotInEpoch(epoch) + this.getSlotsInEpoch(epoch) - 1;\n }\n\n getSlotsInEpoch(epoch: number) {\n if (epoch < this.firstNormalEpoch) {\n return Math.pow(2, epoch + trailingZeros(MINIMUM_SLOT_PER_EPOCH));\n } else {\n return this.slotsPerEpoch;\n }\n }\n}\n", "export class SendTransactionError extends Error {\n logs: string[] | undefined;\n\n constructor(message: string, logs?: string[]) {\n super(message);\n\n this.logs = logs;\n }\n}\n\n// Keep in sync with client/src/rpc_custom_errors.rs\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\nexport const SolanaJSONRPCErrorCode = {\n JSON_RPC_SERVER_ERROR_BLOCK_CLEANED_UP: -32001,\n JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE: -32002,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE: -32003,\n JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE: -32004,\n JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY: -32005,\n JSON_RPC_SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE: -32006,\n JSON_RPC_SERVER_ERROR_SLOT_SKIPPED: -32007,\n JSON_RPC_SERVER_ERROR_NO_SNAPSHOT: -32008,\n JSON_RPC_SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED: -32009,\n JSON_RPC_SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX: -32010,\n JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE: -32011,\n JSON_RPC_SCAN_ERROR: -32012,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH: -32013,\n JSON_RPC_SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET: -32014,\n JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION: -32015,\n JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED: -32016,\n} as const;\nexport type SolanaJSONRPCErrorCodeEnum =\n typeof SolanaJSONRPCErrorCode[keyof typeof SolanaJSONRPCErrorCode];\n\nexport class SolanaJSONRPCError extends Error {\n code: SolanaJSONRPCErrorCodeEnum | unknown;\n data?: any;\n constructor(\n {\n code,\n message,\n data,\n }: Readonly<{code: unknown; message: string; data?: any}>,\n customMessage?: string,\n ) {\n super(customMessage != null ? `${customMessage}: ${message}` : message);\n this.code = code;\n this.data = data;\n this.name = 'SolanaJSONRPCError';\n }\n}\n", "export const Headers = globalThis.Headers;\nexport const Request = globalThis.Request;\nexport const Response = globalThis.Response;\nexport default globalThis.fetch;\n", "// TODO: These constants should be removed in favor of reading them out of a\n// Syscall account\n\n/**\n * @internal\n */\nexport const NUM_TICKS_PER_SECOND = 160;\n\n/**\n * @internal\n */\nexport const DEFAULT_TICKS_PER_SLOT = 64;\n\n/**\n * @internal\n */\nexport const NUM_SLOTS_PER_SECOND =\n NUM_TICKS_PER_SECOND / DEFAULT_TICKS_PER_SLOT;\n\n/**\n * @internal\n */\nexport const MS_PER_SLOT = 1000 / NUM_SLOTS_PER_SECOND;\n", "import * as BufferLayout from '@solana/buffer-layout';\n\nexport interface IAccountStateData {\n readonly typeIndex: number;\n}\n\n/**\n * @internal\n */\nexport type AccountType = {\n /** The account type index (from solana upstream program) */\n index: number;\n /** The BufferLayout to use to build data */\n layout: BufferLayout.Layout;\n};\n\n/**\n * Decode account data buffer using an AccountType\n * @internal\n */\nexport function decodeData(\n type: AccountType,\n data: Uint8Array,\n): TAccountStateData {\n let decoded: TAccountStateData;\n try {\n decoded = type.layout.decode(data);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (decoded.typeIndex !== type.index) {\n throw new Error(\n `invalid account data; account type mismatch ${decoded.typeIndex} != ${type.index}`,\n );\n }\n\n return decoded;\n}\n", "import * as BufferLayout from '@solana/buffer-layout';\n\nimport assert from '../../utils/assert';\nimport * as Layout from '../../layout';\nimport {PublicKey} from '../../publickey';\nimport {u64} from '../../utils/bigint';\nimport {decodeData} from '../../account-data';\n\nexport type AddressLookupTableState = {\n deactivationSlot: bigint;\n lastExtendedSlot: number;\n lastExtendedSlotStartIndex: number;\n authority?: PublicKey;\n addresses: Array;\n};\n\nexport type AddressLookupTableAccountArgs = {\n key: PublicKey;\n state: AddressLookupTableState;\n};\n\n/// The serialized size of lookup table metadata\nconst LOOKUP_TABLE_META_SIZE = 56;\n\nexport class AddressLookupTableAccount {\n key: PublicKey;\n state: AddressLookupTableState;\n\n constructor(args: AddressLookupTableAccountArgs) {\n this.key = args.key;\n this.state = args.state;\n }\n\n isActive(): boolean {\n const U64_MAX = 2n ** 64n - 1n;\n return this.state.deactivationSlot === U64_MAX;\n }\n\n static deserialize(accountData: Uint8Array): AddressLookupTableState {\n const meta = decodeData(LookupTableMetaLayout, accountData);\n\n const serializedAddressesLen = accountData.length - LOOKUP_TABLE_META_SIZE;\n assert(serializedAddressesLen >= 0, 'lookup table is invalid');\n assert(serializedAddressesLen % 32 === 0, 'lookup table is invalid');\n\n const numSerializedAddresses = serializedAddressesLen / 32;\n const {addresses} = BufferLayout.struct<{addresses: Array}>([\n BufferLayout.seq(Layout.publicKey(), numSerializedAddresses, 'addresses'),\n ]).decode(accountData.slice(LOOKUP_TABLE_META_SIZE));\n\n return {\n deactivationSlot: meta.deactivationSlot,\n lastExtendedSlot: meta.lastExtendedSlot,\n lastExtendedSlotStartIndex: meta.lastExtendedStartIndex,\n authority:\n meta.authority.length !== 0\n ? new PublicKey(meta.authority[0])\n : undefined,\n addresses: addresses.map(address => new PublicKey(address)),\n };\n }\n}\n\nconst LookupTableMetaLayout = {\n index: 1,\n layout: BufferLayout.struct<{\n typeIndex: number;\n deactivationSlot: bigint;\n lastExtendedSlot: number;\n lastExtendedStartIndex: number;\n authority: Array;\n }>([\n BufferLayout.u32('typeIndex'),\n u64('deactivationSlot'),\n BufferLayout.nu64('lastExtendedSlot'),\n BufferLayout.u8('lastExtendedStartIndex'),\n BufferLayout.u8(), // option\n BufferLayout.seq(\n Layout.publicKey(),\n BufferLayout.offset(BufferLayout.u8(), -1),\n 'authority',\n ),\n ]),\n};\n", "export const URL = globalThis.URL;\nexport const URLSearchParams = globalThis.URLSearchParams;\n", "import {URL} from './url-impl';\n\nexport function makeWebsocketUrl(endpoint: string) {\n let url = new URL(endpoint);\n const useHttps = url.protocol === 'https:';\n\n url.protocol = useHttps ? 'wss:' : 'ws:';\n url.host = '';\n\n // Only shift the port by +1 as a convention for ws(s) only if given endpoint\n // is explictly specifying the endpoint port (HTTP-based RPC), assuming\n // we're directly trying to connect to solana-validator's ws listening port.\n // When the endpoint omits the port, we're connecting to the protocol\n // default ports: http(80) or https(443) and it's assumed we're behind a reverse\n // proxy which manages WebSocket upgrade and backend port redirection.\n if (url.port !== '') {\n url.port = String(Number(url.port) + 1);\n }\n return url.toString();\n}\n", "import bs58 from 'bs58';\nimport {Buffer} from 'buffer';\n// @ts-ignore\nimport fastStableStringify from 'fast-stable-stringify';\nimport {\n type as pick,\n number,\n string,\n array,\n boolean,\n literal,\n record,\n union,\n optional,\n nullable,\n coerce,\n instance,\n create,\n tuple,\n unknown,\n any,\n} from 'superstruct';\nimport type {Struct} from 'superstruct';\nimport {Client as RpcWebSocketClient} from 'rpc-websockets';\nimport RpcClient from 'jayson/lib/client/browser';\n\nimport {AgentManager} from './agent-manager';\nimport {EpochSchedule} from './epoch-schedule';\nimport {SendTransactionError, SolanaJSONRPCError} from './errors';\nimport fetchImpl, {Response} from './fetch-impl';\nimport {NonceAccount} from './nonce-account';\nimport {PublicKey} from './publickey';\nimport {Signer} from './keypair';\nimport {MS_PER_SLOT} from './timing';\nimport {Transaction, TransactionStatus} from './transaction';\nimport {Message} from './message';\nimport {AddressLookupTableAccount} from './programs/address-lookup-table/state';\nimport assert from './utils/assert';\nimport {sleep} from './utils/sleep';\nimport {toBuffer} from './utils/to-buffer';\nimport {\n TransactionExpiredBlockheightExceededError,\n TransactionExpiredTimeoutError,\n} from './transaction/expiry-custom-errors';\nimport {makeWebsocketUrl} from './utils/makeWebsocketUrl';\nimport {URL} from './utils/url-impl';\nimport type {Blockhash} from './blockhash';\nimport type {FeeCalculator} from './fee-calculator';\nimport type {TransactionSignature} from './transaction';\nimport type {CompiledInstruction} from './message';\n\nconst PublicKeyFromString = coerce(\n instance(PublicKey),\n string(),\n value => new PublicKey(value),\n);\n\nconst RawAccountDataResult = tuple([string(), literal('base64')]);\n\nconst BufferFromRawAccountData = coerce(\n instance(Buffer),\n RawAccountDataResult,\n value => Buffer.from(value[0], 'base64'),\n);\n\n/**\n * Attempt to use a recent blockhash for up to 30 seconds\n * @internal\n */\nexport const BLOCKHASH_CACHE_TIMEOUT_MS = 30 * 1000;\n\n/**\n * HACK.\n * Copied from rpc-websockets/dist/lib/client.\n * Otherwise, `yarn build` fails with:\n * https://gist.github.com/steveluscher/c057eca81d479ef705cdb53162f9971d\n */\ninterface IWSRequestParams {\n [x: string]: any;\n [x: number]: any;\n}\n\ntype ClientSubscriptionId = number;\n/** @internal */ type ServerSubscriptionId = number;\n/** @internal */ type SubscriptionConfigHash = string;\n/** @internal */ type SubscriptionDisposeFn = () => Promise;\n/**\n * @internal\n * Every subscription contains the args used to open the subscription with\n * the server, and a list of callers interested in notifications.\n */\ntype BaseSubscription = Readonly<{\n args: IWSRequestParams;\n callbacks: Set['callback']>;\n}>;\n/**\n * @internal\n * A subscription may be in various states of connectedness. Only when it is\n * fully connected will it have a server subscription id associated with it.\n * This id can be returned to the server to unsubscribe the client entirely.\n */\ntype StatefulSubscription = Readonly<\n // New subscriptions that have not yet been\n // sent to the server start in this state.\n | {\n state: 'pending';\n }\n // These subscriptions have been sent to the server\n // and are waiting for the server to acknowledge them.\n | {\n state: 'subscribing';\n }\n // These subscriptions have been acknowledged by the\n // server and have been assigned server subscription ids.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'subscribed';\n }\n // These subscriptions are intended to be torn down and\n // are waiting on an acknowledgement from the server.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'unsubscribing';\n }\n // The request to tear down these subscriptions has been\n // acknowledged by the server. The `serverSubscriptionId`\n // is the id of the now-dead subscription.\n | {\n serverSubscriptionId: ServerSubscriptionId;\n state: 'unsubscribed';\n }\n>;\n/**\n * A type that encapsulates a subscription's RPC method\n * names and notification (callback) signature.\n */\ntype SubscriptionConfig = Readonly<\n | {\n callback: AccountChangeCallback;\n method: 'accountSubscribe';\n unsubscribeMethod: 'accountUnsubscribe';\n }\n | {\n callback: LogsCallback;\n method: 'logsSubscribe';\n unsubscribeMethod: 'logsUnsubscribe';\n }\n | {\n callback: ProgramAccountChangeCallback;\n method: 'programSubscribe';\n unsubscribeMethod: 'programUnsubscribe';\n }\n | {\n callback: RootChangeCallback;\n method: 'rootSubscribe';\n unsubscribeMethod: 'rootUnsubscribe';\n }\n | {\n callback: SignatureSubscriptionCallback;\n method: 'signatureSubscribe';\n unsubscribeMethod: 'signatureUnsubscribe';\n }\n | {\n callback: SlotChangeCallback;\n method: 'slotSubscribe';\n unsubscribeMethod: 'slotUnsubscribe';\n }\n | {\n callback: SlotUpdateCallback;\n method: 'slotsUpdatesSubscribe';\n unsubscribeMethod: 'slotsUpdatesUnsubscribe';\n }\n>;\n/**\n * @internal\n * Utility type that keeps tagged unions intact while omitting properties.\n */\ntype DistributiveOmit = T extends unknown\n ? Omit\n : never;\n/**\n * @internal\n * This type represents a single subscribable 'topic.' It's made up of:\n *\n * - The args used to open the subscription with the server,\n * - The state of the subscription, in terms of its connectedness, and\n * - The set of callbacks to call when the server publishes notifications\n *\n * This record gets indexed by `SubscriptionConfigHash` and is used to\n * set up subscriptions, fan out notifications, and track subscription state.\n */\ntype Subscription = BaseSubscription &\n StatefulSubscription &\n DistributiveOmit;\n\ntype RpcRequest = (methodName: string, args: Array) => Promise;\n\ntype RpcBatchRequest = (requests: RpcParams[]) => Promise;\n\n/**\n * @internal\n */\nexport type RpcParams = {\n methodName: string;\n args: Array;\n};\n\nexport type TokenAccountsFilter =\n | {\n mint: PublicKey;\n }\n | {\n programId: PublicKey;\n };\n\n/**\n * Extra contextual information for RPC responses\n */\nexport type Context = {\n slot: number;\n};\n\n/**\n * Options for sending transactions\n */\nexport type SendOptions = {\n /** disable transaction verification step */\n skipPreflight?: boolean;\n /** preflight commitment level */\n preflightCommitment?: Commitment;\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n maxRetries?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Options for confirming transactions\n */\nexport type ConfirmOptions = {\n /** disable transaction verification step */\n skipPreflight?: boolean;\n /** desired commitment level */\n commitment?: Commitment;\n /** preflight commitment level */\n preflightCommitment?: Commitment;\n /** Maximum number of times for the RPC node to retry sending the transaction to the leader. */\n maxRetries?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Options for getConfirmedSignaturesForAddress2\n */\nexport type ConfirmedSignaturesForAddress2Options = {\n /**\n * Start searching backwards from this transaction signature.\n * @remark If not provided the search starts from the highest max confirmed block.\n */\n before?: TransactionSignature;\n /** Search until this transaction signature is reached, if found before `limit`. */\n until?: TransactionSignature;\n /** Maximum transaction signatures to return (between 1 and 1,000, default: 1,000). */\n limit?: number;\n};\n\n/**\n * Options for getSignaturesForAddress\n */\nexport type SignaturesForAddressOptions = {\n /**\n * Start searching backwards from this transaction signature.\n * @remark If not provided the search starts from the highest max confirmed block.\n */\n before?: TransactionSignature;\n /** Search until this transaction signature is reached, if found before `limit`. */\n until?: TransactionSignature;\n /** Maximum transaction signatures to return (between 1 and 1,000, default: 1,000). */\n limit?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * RPC Response with extra contextual information\n */\nexport type RpcResponseAndContext = {\n /** response context */\n context: Context;\n /** response value */\n value: T;\n};\n\nexport type BlockhashWithExpiryBlockHeight = Readonly<{\n blockhash: Blockhash;\n lastValidBlockHeight: number;\n}>;\n\n/**\n * A strategy for confirming transactions that uses the last valid\n * block height for a given blockhash to check for transaction expiration.\n */\nexport type BlockheightBasedTransactionConfirmationStrategy = {\n signature: TransactionSignature;\n} & BlockhashWithExpiryBlockHeight;\n\n/** @internal */\nfunction extractCommitmentFromConfig(\n commitmentOrConfig?: Commitment | ({commitment?: Commitment} & TConfig),\n) {\n let commitment: Commitment | undefined;\n let config: Omit | undefined;\n if (typeof commitmentOrConfig === 'string') {\n commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n const {commitment: specifiedCommitment, ...specifiedConfig} =\n commitmentOrConfig;\n commitment = specifiedCommitment;\n config = specifiedConfig;\n }\n return {commitment, config};\n}\n\n/**\n * @internal\n */\nfunction createRpcResult(result: Struct) {\n return union([\n pick({\n jsonrpc: literal('2.0'),\n id: string(),\n result,\n }),\n pick({\n jsonrpc: literal('2.0'),\n id: string(),\n error: pick({\n code: unknown(),\n message: string(),\n data: optional(any()),\n }),\n }),\n ]);\n}\n\nconst UnknownRpcResult = createRpcResult(unknown());\n\n/**\n * @internal\n */\nfunction jsonRpcResult(schema: Struct) {\n return coerce(createRpcResult(schema), UnknownRpcResult, value => {\n if ('error' in value) {\n return value;\n } else {\n return {\n ...value,\n result: create(value.result, schema),\n };\n }\n });\n}\n\n/**\n * @internal\n */\nfunction jsonRpcResultAndContext(value: Struct) {\n return jsonRpcResult(\n pick({\n context: pick({\n slot: number(),\n }),\n value,\n }),\n );\n}\n\n/**\n * @internal\n */\nfunction notificationResultAndContext(value: Struct) {\n return pick({\n context: pick({\n slot: number(),\n }),\n value,\n });\n}\n\n/**\n * The level of commitment desired when querying state\n *
\n *   'processed': Query the most recent block which has reached 1 confirmation by the connected node\n *   'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n *   'finalized': Query the most recent block which has been finalized by the cluster\n * 
\n */\nexport type Commitment =\n | 'processed'\n | 'confirmed'\n | 'finalized'\n | 'recent' // Deprecated as of v1.5.5\n | 'single' // Deprecated as of v1.5.5\n | 'singleGossip' // Deprecated as of v1.5.5\n | 'root' // Deprecated as of v1.5.5\n | 'max'; // Deprecated as of v1.5.5\n\n/**\n * A subset of Commitment levels, which are at least optimistically confirmed\n *
\n *   'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n *   'finalized': Query the most recent block which has been finalized by the cluster\n * 
\n */\nexport type Finality = 'confirmed' | 'finalized';\n\n/**\n * Filter for largest accounts query\n *
\n *   'circulating':    Return the largest accounts that are part of the circulating supply\n *   'nonCirculating': Return the largest accounts that are not part of the circulating supply\n * 
\n */\nexport type LargestAccountsFilter = 'circulating' | 'nonCirculating';\n\n/**\n * Configuration object for changing `getAccountInfo` query behavior\n */\nexport type GetAccountInfoConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getBalance` query behavior\n */\nexport type GetBalanceConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getBlock` query behavior\n */\nexport type GetBlockConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /** The max transaction version to return in responses. If the requested transaction is a higher version, an error will be returned */\n maxSupportedTransactionVersion?: number;\n};\n\n/**\n * Configuration object for changing `getStakeMinimumDelegation` query behavior\n */\nexport type GetStakeMinimumDelegationConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n};\n\n/**\n * Configuration object for changing `getBlockHeight` query behavior\n */\nexport type GetBlockHeightConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getEpochInfo` query behavior\n */\nexport type GetEpochInfoConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getInflationReward` query behavior\n */\nexport type GetInflationRewardConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** An epoch for which the reward occurs. If omitted, the previous epoch will be used */\n epoch?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getLatestBlockhash` query behavior\n */\nexport type GetLatestBlockhashConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getSlot` query behavior\n */\nexport type GetSlotConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getSlotLeader` query behavior\n */\nexport type GetSlotLeaderConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for changing `getTransaction` query behavior\n */\nexport type GetTransactionConfig = {\n /** The level of finality desired */\n commitment?: Finality;\n /** The max transaction version to return in responses. If the requested transaction is a higher version, an error will be returned */\n maxSupportedTransactionVersion?: number;\n};\n\n/**\n * Configuration object for changing `getLargestAccounts` query behavior\n */\nexport type GetLargestAccountsConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** Filter largest accounts by whether they are part of the circulating supply */\n filter?: LargestAccountsFilter;\n};\n\n/**\n * Configuration object for changing `getSupply` request behavior\n */\nexport type GetSupplyConfig = {\n /** The level of commitment desired */\n commitment?: Commitment;\n /** Exclude non circulating accounts list from response */\n excludeNonCirculatingAccountsList?: boolean;\n};\n\n/**\n * Configuration object for changing query behavior\n */\nexport type SignatureStatusConfig = {\n /** enable searching status history, not needed for recent transactions */\n searchTransactionHistory: boolean;\n};\n\n/**\n * Information describing a cluster node\n */\nexport type ContactInfo = {\n /** Identity public key of the node */\n pubkey: string;\n /** Gossip network address for the node */\n gossip: string | null;\n /** TPU network address for the node (null if not available) */\n tpu: string | null;\n /** JSON RPC network address for the node (null if not available) */\n rpc: string | null;\n /** Software version of the node (null if not available) */\n version: string | null;\n};\n\n/**\n * Information describing a vote account\n */\nexport type VoteAccountInfo = {\n /** Public key of the vote account */\n votePubkey: string;\n /** Identity public key of the node voting with this account */\n nodePubkey: string;\n /** The stake, in lamports, delegated to this vote account and activated */\n activatedStake: number;\n /** Whether the vote account is staked for this epoch */\n epochVoteAccount: boolean;\n /** Recent epoch voting credit history for this voter */\n epochCredits: Array<[number, number, number]>;\n /** A percentage (0-100) of rewards payout owed to the voter */\n commission: number;\n /** Most recent slot voted on by this vote account */\n lastVote: number;\n};\n\n/**\n * A collection of cluster vote accounts\n */\nexport type VoteAccountStatus = {\n /** Active vote accounts */\n current: Array;\n /** Inactive vote accounts */\n delinquent: Array;\n};\n\n/**\n * Network Inflation\n * (see https://docs.solana.com/implemented-proposals/ed_overview)\n */\nexport type InflationGovernor = {\n foundation: number;\n foundationTerm: number;\n initial: number;\n taper: number;\n terminal: number;\n};\n\nconst GetInflationGovernorResult = pick({\n foundation: number(),\n foundationTerm: number(),\n initial: number(),\n taper: number(),\n terminal: number(),\n});\n\n/**\n * The inflation reward for an epoch\n */\nexport type InflationReward = {\n /** epoch for which the reward occurs */\n epoch: number;\n /** the slot in which the rewards are effective */\n effectiveSlot: number;\n /** reward amount in lamports */\n amount: number;\n /** post balance of the account in lamports */\n postBalance: number;\n};\n\n/**\n * Expected JSON RPC response for the \"getInflationReward\" message\n */\nconst GetInflationRewardResult = jsonRpcResult(\n array(\n nullable(\n pick({\n epoch: number(),\n effectiveSlot: number(),\n amount: number(),\n postBalance: number(),\n }),\n ),\n ),\n);\n\n/**\n * Information about the current epoch\n */\nexport type EpochInfo = {\n epoch: number;\n slotIndex: number;\n slotsInEpoch: number;\n absoluteSlot: number;\n blockHeight?: number;\n transactionCount?: number;\n};\n\nconst GetEpochInfoResult = pick({\n epoch: number(),\n slotIndex: number(),\n slotsInEpoch: number(),\n absoluteSlot: number(),\n blockHeight: optional(number()),\n transactionCount: optional(number()),\n});\n\nconst GetEpochScheduleResult = pick({\n slotsPerEpoch: number(),\n leaderScheduleSlotOffset: number(),\n warmup: boolean(),\n firstNormalEpoch: number(),\n firstNormalSlot: number(),\n});\n\n/**\n * Leader schedule\n * (see https://docs.solana.com/terminology#leader-schedule)\n */\nexport type LeaderSchedule = {\n [address: string]: number[];\n};\n\nconst GetLeaderScheduleResult = record(string(), array(number()));\n\n/**\n * Transaction error or null\n */\nconst TransactionErrorResult = nullable(union([pick({}), string()]));\n\n/**\n * Signature status for a transaction\n */\nconst SignatureStatusResult = pick({\n err: TransactionErrorResult,\n});\n\n/**\n * Transaction signature received notification\n */\nconst SignatureReceivedResult = literal('receivedSignature');\n\n/**\n * Version info for a node\n */\nexport type Version = {\n /** Version of solana-core */\n 'solana-core': string;\n 'feature-set'?: number;\n};\n\nconst VersionResult = pick({\n 'solana-core': string(),\n 'feature-set': optional(number()),\n});\n\nexport type SimulatedTransactionAccountInfo = {\n /** `true` if this account's data contains a loaded program */\n executable: boolean;\n /** Identifier of the program that owns the account */\n owner: string;\n /** Number of lamports assigned to the account */\n lamports: number;\n /** Optional data assigned to the account */\n data: string[];\n /** Optional rent epoch info for account */\n rentEpoch?: number;\n};\n\nexport type TransactionReturnDataEncoding = 'base64';\n\nexport type TransactionReturnData = {\n programId: string;\n data: [string, TransactionReturnDataEncoding];\n};\n\nexport type SimulatedTransactionResponse = {\n err: TransactionError | string | null;\n logs: Array | null;\n accounts?: (SimulatedTransactionAccountInfo | null)[] | null;\n unitsConsumed?: number;\n returnData?: TransactionReturnData | null;\n};\nconst SimulatedTransactionResponseStruct = jsonRpcResultAndContext(\n pick({\n err: nullable(union([pick({}), string()])),\n logs: nullable(array(string())),\n accounts: optional(\n nullable(\n array(\n nullable(\n pick({\n executable: boolean(),\n owner: string(),\n lamports: number(),\n data: array(string()),\n rentEpoch: optional(number()),\n }),\n ),\n ),\n ),\n ),\n unitsConsumed: optional(number()),\n returnData: optional(\n nullable(\n pick({\n programId: string(),\n data: tuple([string(), literal('base64')]),\n }),\n ),\n ),\n }),\n);\n\nexport type ParsedInnerInstruction = {\n index: number;\n instructions: (ParsedInstruction | PartiallyDecodedInstruction)[];\n};\n\nexport type TokenBalance = {\n accountIndex: number;\n mint: string;\n owner?: string;\n uiTokenAmount: TokenAmount;\n};\n\n/**\n * Metadata for a parsed confirmed transaction on the ledger\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link ParsedTransactionMeta} instead.\n */\nexport type ParsedConfirmedTransactionMeta = ParsedTransactionMeta;\n\n/**\n * Collection of addresses loaded by a transaction using address table lookups\n */\nexport type LoadedAddresses = {\n writable: Array;\n readonly: Array;\n};\n\n/**\n * Metadata for a parsed transaction on the ledger\n */\nexport type ParsedTransactionMeta = {\n /** The fee charged for processing the transaction */\n fee: number;\n /** An array of cross program invoked parsed instructions */\n innerInstructions?: ParsedInnerInstruction[] | null;\n /** The balances of the transaction accounts before processing */\n preBalances: Array;\n /** The balances of the transaction accounts after processing */\n postBalances: Array;\n /** An array of program log messages emitted during a transaction */\n logMessages?: Array | null;\n /** The token balances of the transaction accounts before processing */\n preTokenBalances?: Array | null;\n /** The token balances of the transaction accounts after processing */\n postTokenBalances?: Array | null;\n /** The error result of transaction processing */\n err: TransactionError | null;\n /** The collection of addresses loaded using address lookup tables */\n loadedAddresses?: LoadedAddresses;\n};\n\nexport type CompiledInnerInstruction = {\n index: number;\n instructions: CompiledInstruction[];\n};\n\n/**\n * Metadata for a confirmed transaction on the ledger\n */\nexport type ConfirmedTransactionMeta = {\n /** The fee charged for processing the transaction */\n fee: number;\n /** An array of cross program invoked instructions */\n innerInstructions?: CompiledInnerInstruction[] | null;\n /** The balances of the transaction accounts before processing */\n preBalances: Array;\n /** The balances of the transaction accounts after processing */\n postBalances: Array;\n /** An array of program log messages emitted during a transaction */\n logMessages?: Array | null;\n /** The token balances of the transaction accounts before processing */\n preTokenBalances?: Array | null;\n /** The token balances of the transaction accounts after processing */\n postTokenBalances?: Array | null;\n /** The error result of transaction processing */\n err: TransactionError | null;\n};\n\n/**\n * A processed transaction from the RPC API\n */\nexport type TransactionResponse = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: Message;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A confirmed transaction on the ledger\n *\n * @deprecated Deprecated since Solana v1.8.0.\n */\nexport type ConfirmedTransaction = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The details of the transaction */\n transaction: Transaction;\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A partially decoded transaction instruction\n */\nexport type PartiallyDecodedInstruction = {\n /** Program id called by this instruction */\n programId: PublicKey;\n /** Public keys of accounts passed to this instruction */\n accounts: Array;\n /** Raw base-58 instruction data */\n data: string;\n};\n\n/**\n * A parsed transaction message account\n */\nexport type ParsedMessageAccount = {\n /** Public key of the account */\n pubkey: PublicKey;\n /** Indicates if the account signed the transaction */\n signer: boolean;\n /** Indicates if the account is writable for this transaction */\n writable: boolean;\n};\n\n/**\n * A parsed transaction instruction\n */\nexport type ParsedInstruction = {\n /** Name of the program for this instruction */\n program: string;\n /** ID of the program for this instruction */\n programId: PublicKey;\n /** Parsed instruction info */\n parsed: any;\n};\n\n/**\n * A parsed transaction message\n */\nexport type ParsedMessage = {\n /** Accounts used in the instructions */\n accountKeys: ParsedMessageAccount[];\n /** The atomically executed instructions for the transaction */\n instructions: (ParsedInstruction | PartiallyDecodedInstruction)[];\n /** Recent blockhash */\n recentBlockhash: string;\n};\n\n/**\n * A parsed transaction\n */\nexport type ParsedTransaction = {\n /** Signatures for the transaction */\n signatures: Array;\n /** Message of the transaction */\n message: ParsedMessage;\n};\n\n/**\n * A parsed and confirmed transaction on the ledger\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link ParsedTransactionWithMeta} instead.\n */\nexport type ParsedConfirmedTransaction = ParsedTransactionWithMeta;\n\n/**\n * A parsed transaction on the ledger with meta\n */\nexport type ParsedTransactionWithMeta = {\n /** The slot during which the transaction was processed */\n slot: number;\n /** The details of the transaction */\n transaction: ParsedTransaction;\n /** Metadata produced from the transaction */\n meta: ParsedTransactionMeta | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * A processed block fetched from the RPC API\n */\nexport type BlockResponse = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions with status meta and original message */\n transactions: Array<{\n /** The transaction */\n transaction: {\n /** The transaction message */\n message: Message;\n /** The transaction signatures */\n signatures: string[];\n };\n /** Metadata produced from the transaction */\n meta: ConfirmedTransactionMeta | null;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n /** Public key of reward recipient */\n pubkey: string;\n /** Reward value in lamports */\n lamports: number;\n /** Account balance after reward is applied */\n postBalance: number | null;\n /** Type of reward received */\n rewardType: string | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A confirmed block on the ledger\n *\n * @deprecated Deprecated since Solana v1.8.0.\n */\nexport type ConfirmedBlock = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of transactions and status metas */\n transactions: Array<{\n transaction: Transaction;\n meta: ConfirmedTransactionMeta | null;\n }>;\n /** Vector of block rewards */\n rewards?: Array<{\n pubkey: string;\n lamports: number;\n postBalance: number | null;\n rewardType: string | null;\n }>;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * A Block on the ledger with signatures only\n */\nexport type BlockSignatures = {\n /** Blockhash of this block */\n blockhash: Blockhash;\n /** Blockhash of this block's parent */\n previousBlockhash: Blockhash;\n /** Slot index of this block's parent */\n parentSlot: number;\n /** Vector of signatures */\n signatures: Array;\n /** The unix timestamp of when the block was processed */\n blockTime: number | null;\n};\n\n/**\n * recent block production information\n */\nexport type BlockProduction = Readonly<{\n /** a dictionary of validator identities, as base-58 encoded strings. Value is a two element array containing the number of leader slots and the number of blocks produced */\n byIdentity: Readonly>>;\n /** Block production slot range */\n range: Readonly<{\n /** first slot of the block production information (inclusive) */\n firstSlot: number;\n /** last slot of block production information (inclusive) */\n lastSlot: number;\n }>;\n}>;\n\nexport type GetBlockProductionConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Slot range to return block production for. If parameter not provided, defaults to current epoch. */\n range?: {\n /** first slot to return block production information for (inclusive) */\n firstSlot: number;\n /** last slot to return block production information for (inclusive). If parameter not provided, defaults to the highest slot */\n lastSlot?: number;\n };\n /** Only return results for this validator identity (base-58 encoded) */\n identity?: string;\n};\n\n/**\n * Expected JSON RPC response for the \"getBlockProduction\" message\n */\nconst BlockProductionResponseStruct = jsonRpcResultAndContext(\n pick({\n byIdentity: record(string(), array(number())),\n range: pick({\n firstSlot: number(),\n lastSlot: number(),\n }),\n }),\n);\n\n/**\n * A performance sample\n */\nexport type PerfSample = {\n /** Slot number of sample */\n slot: number;\n /** Number of transactions in a sample window */\n numTransactions: number;\n /** Number of slots in a sample window */\n numSlots: number;\n /** Sample window in seconds */\n samplePeriodSecs: number;\n};\n\nfunction createRpcClient(\n url: string,\n useHttps: boolean,\n httpHeaders?: HttpHeaders,\n customFetch?: FetchFn,\n fetchMiddleware?: FetchMiddleware,\n disableRetryOnRateLimit?: boolean,\n): RpcClient {\n const fetch = customFetch ? customFetch : fetchImpl;\n let agentManager: AgentManager | undefined;\n if (!process.env.BROWSER) {\n agentManager = new AgentManager(useHttps);\n }\n\n let fetchWithMiddleware: FetchFn | undefined;\n\n if (fetchMiddleware) {\n fetchWithMiddleware = async (info, init) => {\n const modifiedFetchArgs = await new Promise>(\n (resolve, reject) => {\n try {\n fetchMiddleware(info, init, (modifiedInfo, modifiedInit) =>\n resolve([modifiedInfo, modifiedInit]),\n );\n } catch (error) {\n reject(error);\n }\n },\n );\n return await fetch(...modifiedFetchArgs);\n };\n }\n\n const clientBrowser = new RpcClient(async (request, callback) => {\n const agent = agentManager ? agentManager.requestStart() : undefined;\n const options = {\n method: 'POST',\n body: request,\n agent,\n headers: Object.assign(\n {\n 'Content-Type': 'application/json',\n },\n httpHeaders || {},\n COMMON_HTTP_HEADERS,\n ),\n };\n\n try {\n let too_many_requests_retries = 5;\n let res: Response;\n let waitTime = 500;\n for (;;) {\n if (fetchWithMiddleware) {\n res = await fetchWithMiddleware(url, options);\n } else {\n res = await fetch(url, options);\n }\n\n if (res.status !== 429 /* Too many requests */) {\n break;\n }\n if (disableRetryOnRateLimit === true) {\n break;\n }\n too_many_requests_retries -= 1;\n if (too_many_requests_retries === 0) {\n break;\n }\n console.log(\n `Server responded with ${res.status} ${res.statusText}. Retrying after ${waitTime}ms delay...`,\n );\n await sleep(waitTime);\n waitTime *= 2;\n }\n\n const text = await res.text();\n if (res.ok) {\n callback(null, text);\n } else {\n callback(new Error(`${res.status} ${res.statusText}: ${text}`));\n }\n } catch (err) {\n if (err instanceof Error) callback(err);\n } finally {\n agentManager && agentManager.requestEnd();\n }\n }, {});\n\n return clientBrowser;\n}\n\nfunction createRpcRequest(client: RpcClient): RpcRequest {\n return (method, args) => {\n return new Promise((resolve, reject) => {\n client.request(method, args, (err: any, response: any) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(response);\n });\n });\n };\n}\n\nfunction createRpcBatchRequest(client: RpcClient): RpcBatchRequest {\n return (requests: RpcParams[]) => {\n return new Promise((resolve, reject) => {\n // Do nothing if requests is empty\n if (requests.length === 0) resolve([]);\n\n const batch = requests.map((params: RpcParams) => {\n return client.request(params.methodName, params.args);\n });\n\n client.request(batch, (err: any, response: any) => {\n if (err) {\n reject(err);\n return;\n }\n resolve(response);\n });\n });\n };\n}\n\n/**\n * Expected JSON RPC response for the \"getInflationGovernor\" message\n */\nconst GetInflationGovernorRpcResult = jsonRpcResult(GetInflationGovernorResult);\n\n/**\n * Expected JSON RPC response for the \"getEpochInfo\" message\n */\nconst GetEpochInfoRpcResult = jsonRpcResult(GetEpochInfoResult);\n\n/**\n * Expected JSON RPC response for the \"getEpochSchedule\" message\n */\nconst GetEpochScheduleRpcResult = jsonRpcResult(GetEpochScheduleResult);\n\n/**\n * Expected JSON RPC response for the \"getLeaderSchedule\" message\n */\nconst GetLeaderScheduleRpcResult = jsonRpcResult(GetLeaderScheduleResult);\n\n/**\n * Expected JSON RPC response for the \"minimumLedgerSlot\" and \"getFirstAvailableBlock\" messages\n */\nconst SlotRpcResult = jsonRpcResult(number());\n\n/**\n * Supply\n */\nexport type Supply = {\n /** Total supply in lamports */\n total: number;\n /** Circulating supply in lamports */\n circulating: number;\n /** Non-circulating supply in lamports */\n nonCirculating: number;\n /** List of non-circulating account addresses */\n nonCirculatingAccounts: Array;\n};\n\n/**\n * Expected JSON RPC response for the \"getSupply\" message\n */\nconst GetSupplyRpcResult = jsonRpcResultAndContext(\n pick({\n total: number(),\n circulating: number(),\n nonCirculating: number(),\n nonCirculatingAccounts: array(PublicKeyFromString),\n }),\n);\n\n/**\n * Token amount object which returns a token amount in different formats\n * for various client use cases.\n */\nexport type TokenAmount = {\n /** Raw amount of tokens as string ignoring decimals */\n amount: string;\n /** Number of decimals configured for token's mint */\n decimals: number;\n /** Token amount as float, accounts for decimals */\n uiAmount: number | null;\n /** Token amount as string, accounts for decimals */\n uiAmountString?: string;\n};\n\n/**\n * Expected JSON RPC structure for token amounts\n */\nconst TokenAmountResult = pick({\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string()),\n});\n\n/**\n * Token address and balance.\n */\nexport type TokenAccountBalancePair = {\n /** Address of the token account */\n address: PublicKey;\n /** Raw amount of tokens as string ignoring decimals */\n amount: string;\n /** Number of decimals configured for token's mint */\n decimals: number;\n /** Token amount as float, accounts for decimals */\n uiAmount: number | null;\n /** Token amount as string, accounts for decimals */\n uiAmountString?: string;\n};\n\n/**\n * Expected JSON RPC response for the \"getTokenLargestAccounts\" message\n */\nconst GetTokenLargestAccountsResult = jsonRpcResultAndContext(\n array(\n pick({\n address: PublicKeyFromString,\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message\n */\nconst GetTokenAccountsByOwner = jsonRpcResultAndContext(\n array(\n pick({\n pubkey: PublicKeyFromString,\n account: pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number(),\n }),\n }),\n ),\n);\n\nconst ParsedAccountDataResult = pick({\n program: string(),\n parsed: unknown(),\n space: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message with parsed data\n */\nconst GetParsedTokenAccountsByOwner = jsonRpcResultAndContext(\n array(\n pick({\n pubkey: PublicKeyFromString,\n account: pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedAccountDataResult,\n rentEpoch: number(),\n }),\n }),\n ),\n);\n\n/**\n * Pair of an account address and its balance\n */\nexport type AccountBalancePair = {\n address: PublicKey;\n lamports: number;\n};\n\n/**\n * Expected JSON RPC response for the \"getLargestAccounts\" message\n */\nconst GetLargestAccountsRpcResult = jsonRpcResultAndContext(\n array(\n pick({\n lamports: number(),\n address: PublicKeyFromString,\n }),\n ),\n);\n\n/**\n * @internal\n */\nconst AccountInfoResult = pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number(),\n});\n\n/**\n * @internal\n */\nconst KeyedAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult,\n});\n\nconst ParsedOrRawAccountData = coerce(\n union([instance(Buffer), ParsedAccountDataResult]),\n union([RawAccountDataResult, ParsedAccountDataResult]),\n value => {\n if (Array.isArray(value)) {\n return create(value, BufferFromRawAccountData);\n } else {\n return value;\n }\n },\n);\n\n/**\n * @internal\n */\nconst ParsedAccountInfoResult = pick({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedOrRawAccountData,\n rentEpoch: number(),\n});\n\nconst KeyedParsedAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: ParsedAccountInfoResult,\n});\n\n/**\n * @internal\n */\nconst StakeActivationResult = pick({\n state: union([\n literal('active'),\n literal('inactive'),\n literal('activating'),\n literal('deactivating'),\n ]),\n active: number(),\n inactive: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"getConfirmedSignaturesForAddress2\" message\n */\n\nconst GetConfirmedSignaturesForAddress2RpcResult = jsonRpcResult(\n array(\n pick({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getSignaturesForAddress\" message\n */\nconst GetSignaturesForAddressRpcResult = jsonRpcResult(\n array(\n pick({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/***\n * Expected JSON RPC response for the \"accountNotification\" message\n */\nconst AccountNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(AccountInfoResult),\n});\n\n/**\n * @internal\n */\nconst ProgramAccountInfoResult = pick({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult,\n});\n\n/***\n * Expected JSON RPC response for the \"programNotification\" message\n */\nconst ProgramAccountNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(ProgramAccountInfoResult),\n});\n\n/**\n * @internal\n */\nconst SlotInfoResult = pick({\n parent: number(),\n slot: number(),\n root: number(),\n});\n\n/**\n * Expected JSON RPC response for the \"slotNotification\" message\n */\nconst SlotNotificationResult = pick({\n subscription: number(),\n result: SlotInfoResult,\n});\n\n/**\n * Slot updates which can be used for tracking the live progress of a cluster.\n * - `\"firstShredReceived\"`: connected node received the first shred of a block.\n * Indicates that a new block that is being produced.\n * - `\"completed\"`: connected node has received all shreds of a block. Indicates\n * a block was recently produced.\n * - `\"optimisticConfirmation\"`: block was optimistically confirmed by the\n * cluster. It is not guaranteed that an optimistic confirmation notification\n * will be sent for every finalized blocks.\n * - `\"root\"`: the connected node rooted this block.\n * - `\"createdBank\"`: the connected node has started validating this block.\n * - `\"frozen\"`: the connected node has validated this block.\n * - `\"dead\"`: the connected node failed to validate this block.\n */\nexport type SlotUpdate =\n | {\n type: 'firstShredReceived';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'completed';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'createdBank';\n slot: number;\n timestamp: number;\n parent: number;\n }\n | {\n type: 'frozen';\n slot: number;\n timestamp: number;\n stats: {\n numTransactionEntries: number;\n numSuccessfulTransactions: number;\n numFailedTransactions: number;\n maxTransactionsPerEntry: number;\n };\n }\n | {\n type: 'dead';\n slot: number;\n timestamp: number;\n err: string;\n }\n | {\n type: 'optimisticConfirmation';\n slot: number;\n timestamp: number;\n }\n | {\n type: 'root';\n slot: number;\n timestamp: number;\n };\n\n/**\n * @internal\n */\nconst SlotUpdateResult = union([\n pick({\n type: union([\n literal('firstShredReceived'),\n literal('completed'),\n literal('optimisticConfirmation'),\n literal('root'),\n ]),\n slot: number(),\n timestamp: number(),\n }),\n pick({\n type: literal('createdBank'),\n parent: number(),\n slot: number(),\n timestamp: number(),\n }),\n pick({\n type: literal('frozen'),\n slot: number(),\n timestamp: number(),\n stats: pick({\n numTransactionEntries: number(),\n numSuccessfulTransactions: number(),\n numFailedTransactions: number(),\n maxTransactionsPerEntry: number(),\n }),\n }),\n pick({\n type: literal('dead'),\n slot: number(),\n timestamp: number(),\n err: string(),\n }),\n]);\n\n/**\n * Expected JSON RPC response for the \"slotsUpdatesNotification\" message\n */\nconst SlotUpdateNotificationResult = pick({\n subscription: number(),\n result: SlotUpdateResult,\n});\n\n/**\n * Expected JSON RPC response for the \"signatureNotification\" message\n */\nconst SignatureNotificationResult = pick({\n subscription: number(),\n result: notificationResultAndContext(\n union([SignatureStatusResult, SignatureReceivedResult]),\n ),\n});\n\n/**\n * Expected JSON RPC response for the \"rootNotification\" message\n */\nconst RootNotificationResult = pick({\n subscription: number(),\n result: number(),\n});\n\nconst ContactInfoResult = pick({\n pubkey: string(),\n gossip: nullable(string()),\n tpu: nullable(string()),\n rpc: nullable(string()),\n version: nullable(string()),\n});\n\nconst VoteAccountInfoResult = pick({\n votePubkey: string(),\n nodePubkey: string(),\n activatedStake: number(),\n epochVoteAccount: boolean(),\n epochCredits: array(tuple([number(), number(), number()])),\n commission: number(),\n lastVote: number(),\n rootSlot: nullable(number()),\n});\n\n/**\n * Expected JSON RPC response for the \"getVoteAccounts\" message\n */\nconst GetVoteAccounts = jsonRpcResult(\n pick({\n current: array(VoteAccountInfoResult),\n delinquent: array(VoteAccountInfoResult),\n }),\n);\n\nconst ConfirmationStatus = union([\n literal('processed'),\n literal('confirmed'),\n literal('finalized'),\n]);\n\nconst SignatureStatusResponse = pick({\n slot: number(),\n confirmations: nullable(number()),\n err: TransactionErrorResult,\n confirmationStatus: optional(ConfirmationStatus),\n});\n\n/**\n * Expected JSON RPC response for the \"getSignatureStatuses\" message\n */\nconst GetSignatureStatusesRpcResult = jsonRpcResultAndContext(\n array(nullable(SignatureStatusResponse)),\n);\n\n/**\n * Expected JSON RPC response for the \"getMinimumBalanceForRentExemption\" message\n */\nconst GetMinimumBalanceForRentExemptionRpcResult = jsonRpcResult(number());\n\nconst ConfirmedTransactionResult = pick({\n signatures: array(string()),\n message: pick({\n accountKeys: array(string()),\n header: pick({\n numRequiredSignatures: number(),\n numReadonlySignedAccounts: number(),\n numReadonlyUnsignedAccounts: number(),\n }),\n instructions: array(\n pick({\n accounts: array(number()),\n data: string(),\n programIdIndex: number(),\n }),\n ),\n recentBlockhash: string(),\n }),\n});\n\nconst ParsedInstructionResult = pick({\n parsed: unknown(),\n program: string(),\n programId: PublicKeyFromString,\n});\n\nconst RawInstructionResult = pick({\n accounts: array(PublicKeyFromString),\n data: string(),\n programId: PublicKeyFromString,\n});\n\nconst InstructionResult = union([\n RawInstructionResult,\n ParsedInstructionResult,\n]);\n\nconst UnknownInstructionResult = union([\n pick({\n parsed: unknown(),\n program: string(),\n programId: string(),\n }),\n pick({\n accounts: array(string()),\n data: string(),\n programId: string(),\n }),\n]);\n\nconst ParsedOrRawInstruction = coerce(\n InstructionResult,\n UnknownInstructionResult,\n value => {\n if ('accounts' in value) {\n return create(value, RawInstructionResult);\n } else {\n return create(value, ParsedInstructionResult);\n }\n },\n);\n\n/**\n * @internal\n */\nconst ParsedConfirmedTransactionResult = pick({\n signatures: array(string()),\n message: pick({\n accountKeys: array(\n pick({\n pubkey: PublicKeyFromString,\n signer: boolean(),\n writable: boolean(),\n }),\n ),\n instructions: array(ParsedOrRawInstruction),\n recentBlockhash: string(),\n }),\n});\n\nconst TokenBalanceResult = pick({\n accountIndex: number(),\n mint: string(),\n owner: optional(string()),\n uiTokenAmount: TokenAmountResult,\n});\n\nconst LoadedAddressesResult = pick({\n writable: array(PublicKeyFromString),\n readonly: array(PublicKeyFromString),\n});\n\n/**\n * @internal\n */\nconst ConfirmedTransactionMetaResult = pick({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(\n pick({\n accounts: array(number()),\n data: string(),\n programIdIndex: number(),\n }),\n ),\n }),\n ),\n ),\n ),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n loadedAddresses: optional(LoadedAddressesResult),\n});\n\n/**\n * @internal\n */\nconst ParsedConfirmedTransactionMetaResult = pick({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(\n nullable(\n array(\n pick({\n index: number(),\n instructions: array(ParsedOrRawInstruction),\n }),\n ),\n ),\n ),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n loadedAddresses: optional(LoadedAddressesResult),\n});\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\nconst GetBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n }),\n ),\n rewards: optional(\n array(\n pick({\n pubkey: string(),\n lamports: number(),\n postBalance: nullable(number()),\n rewardType: nullable(string()),\n }),\n ),\n ),\n blockTime: nullable(number()),\n blockHeight: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getConfirmedBlock\" message\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link GetBlockRpcResult} instead.\n */\nconst GetConfirmedBlockRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(\n pick({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n }),\n ),\n rewards: optional(\n array(\n pick({\n pubkey: string(),\n lamports: number(),\n postBalance: nullable(number()),\n rewardType: nullable(string()),\n }),\n ),\n ),\n blockTime: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\nconst GetBlockSignaturesRpcResult = jsonRpcResult(\n nullable(\n pick({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n signatures: array(string()),\n blockTime: nullable(number()),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getTransaction\" message\n */\nconst GetTransactionRpcResult = jsonRpcResult(\n nullable(\n pick({\n slot: number(),\n meta: ConfirmedTransactionMetaResult,\n blockTime: optional(nullable(number())),\n transaction: ConfirmedTransactionResult,\n }),\n ),\n);\n\n/**\n * Expected parsed JSON RPC response for the \"getTransaction\" message\n */\nconst GetParsedTransactionRpcResult = jsonRpcResult(\n nullable(\n pick({\n slot: number(),\n transaction: ParsedConfirmedTransactionResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n blockTime: optional(nullable(number())),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"getRecentBlockhash\" message\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link GetLatestBlockhashRpcResult} instead.\n */\nconst GetRecentBlockhashAndContextRpcResult = jsonRpcResultAndContext(\n pick({\n blockhash: string(),\n feeCalculator: pick({\n lamportsPerSignature: number(),\n }),\n }),\n);\n\n/**\n * Expected JSON RPC response for the \"getLatestBlockhash\" message\n */\nconst GetLatestBlockhashRpcResult = jsonRpcResultAndContext(\n pick({\n blockhash: string(),\n lastValidBlockHeight: number(),\n }),\n);\n\nconst PerfSampleResult = pick({\n slot: number(),\n numTransactions: number(),\n numSlots: number(),\n samplePeriodSecs: number(),\n});\n\n/*\n * Expected JSON RPC response for \"getRecentPerformanceSamples\" message\n */\nconst GetRecentPerformanceSamplesRpcResult = jsonRpcResult(\n array(PerfSampleResult),\n);\n\n/**\n * Expected JSON RPC response for the \"getFeeCalculatorForBlockhash\" message\n */\nconst GetFeeCalculatorRpcResult = jsonRpcResultAndContext(\n nullable(\n pick({\n feeCalculator: pick({\n lamportsPerSignature: number(),\n }),\n }),\n ),\n);\n\n/**\n * Expected JSON RPC response for the \"requestAirdrop\" message\n */\nconst RequestAirdropRpcResult = jsonRpcResult(string());\n\n/**\n * Expected JSON RPC response for the \"sendTransaction\" message\n */\nconst SendTransactionRpcResult = jsonRpcResult(string());\n\n/**\n * Information about the latest slot being processed by a node\n */\nexport type SlotInfo = {\n /** Currently processing slot */\n slot: number;\n /** Parent of the current slot */\n parent: number;\n /** The root block of the current slot's fork */\n root: number;\n};\n\n/**\n * Parsed account data\n */\nexport type ParsedAccountData = {\n /** Name of the program that owns this account */\n program: string;\n /** Parsed account data */\n parsed: any;\n /** Space used by account data */\n space: number;\n};\n\n/**\n * Stake Activation data\n */\nexport type StakeActivationData = {\n /** the stake account's activation state */\n state: 'active' | 'inactive' | 'activating' | 'deactivating';\n /** stake active during the epoch */\n active: number;\n /** stake inactive during the epoch */\n inactive: number;\n};\n\n/**\n * Data slice argument for getProgramAccounts\n */\nexport type DataSlice = {\n /** offset of data slice */\n offset: number;\n /** length of data slice */\n length: number;\n};\n\n/**\n * Memory comparison filter for getProgramAccounts\n */\nexport type MemcmpFilter = {\n memcmp: {\n /** offset into program account data to start comparison */\n offset: number;\n /** data to match, as base-58 encoded string and limited to less than 129 bytes */\n bytes: string;\n };\n};\n\n/**\n * Data size comparison filter for getProgramAccounts\n */\nexport type DataSizeFilter = {\n /** Size of data for program account data length comparison */\n dataSize: number;\n};\n\n/**\n * A filter object for getProgramAccounts\n */\nexport type GetProgramAccountsFilter = MemcmpFilter | DataSizeFilter;\n\n/**\n * Configuration object for getProgramAccounts requests\n */\nexport type GetProgramAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional encoding for account data (default base64)\n * To use \"jsonParsed\" encoding, please refer to `getParsedProgramAccounts` in connection.ts\n * */\n encoding?: 'base64';\n /** Optional data slice to limit the returned account data */\n dataSlice?: DataSlice;\n /** Optional array of filters to apply to accounts */\n filters?: GetProgramAccountsFilter[];\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for getParsedProgramAccounts\n */\nexport type GetParsedProgramAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional array of filters to apply to accounts */\n filters?: GetProgramAccountsFilter[];\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for getMultipleAccounts\n */\nexport type GetMultipleAccountsConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetStakeActivationConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Epoch for which to calculate activation details. If parameter not provided, defaults to current epoch */\n epoch?: number;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetTokenAccountsByOwnerConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Configuration object for `getStakeActivation`\n */\nexport type GetTransactionCountConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** The minimum slot that the request can be evaluated at */\n minContextSlot?: number;\n};\n\n/**\n * Information describing an account\n */\nexport type AccountInfo = {\n /** `true` if this account's data contains a loaded program */\n executable: boolean;\n /** Identifier of the program that owns the account */\n owner: PublicKey;\n /** Number of lamports assigned to the account */\n lamports: number;\n /** Optional data assigned to the account */\n data: T;\n /** Optional rent epoch info for account */\n rentEpoch?: number;\n};\n\n/**\n * Account information identified by pubkey\n */\nexport type KeyedAccountInfo = {\n accountId: PublicKey;\n accountInfo: AccountInfo;\n};\n\n/**\n * Callback function for account change notifications\n */\nexport type AccountChangeCallback = (\n accountInfo: AccountInfo,\n context: Context,\n) => void;\n\n/**\n * Callback function for program account change notifications\n */\nexport type ProgramAccountChangeCallback = (\n keyedAccountInfo: KeyedAccountInfo,\n context: Context,\n) => void;\n\n/**\n * Callback function for slot change notifications\n */\nexport type SlotChangeCallback = (slotInfo: SlotInfo) => void;\n\n/**\n * Callback function for slot update notifications\n */\nexport type SlotUpdateCallback = (slotUpdate: SlotUpdate) => void;\n\n/**\n * Callback function for signature status notifications\n */\nexport type SignatureResultCallback = (\n signatureResult: SignatureResult,\n context: Context,\n) => void;\n\n/**\n * Signature status notification with transaction result\n */\nexport type SignatureStatusNotification = {\n type: 'status';\n result: SignatureResult;\n};\n\n/**\n * Signature received notification\n */\nexport type SignatureReceivedNotification = {\n type: 'received';\n};\n\n/**\n * Callback function for signature notifications\n */\nexport type SignatureSubscriptionCallback = (\n notification: SignatureStatusNotification | SignatureReceivedNotification,\n context: Context,\n) => void;\n\n/**\n * Signature subscription options\n */\nexport type SignatureSubscriptionOptions = {\n commitment?: Commitment;\n enableReceivedNotification?: boolean;\n};\n\n/**\n * Callback function for root change notifications\n */\nexport type RootChangeCallback = (root: number) => void;\n\n/**\n * @internal\n */\nconst LogsResult = pick({\n err: TransactionErrorResult,\n logs: array(string()),\n signature: string(),\n});\n\n/**\n * Logs result.\n */\nexport type Logs = {\n err: TransactionError | null;\n logs: string[];\n signature: string;\n};\n\n/**\n * Expected JSON RPC response for the \"logsNotification\" message.\n */\nconst LogsNotificationResult = pick({\n result: notificationResultAndContext(LogsResult),\n subscription: number(),\n});\n\n/**\n * Filter for log subscriptions.\n */\nexport type LogsFilter = PublicKey | 'all' | 'allWithVotes';\n\n/**\n * Callback function for log notifications.\n */\nexport type LogsCallback = (logs: Logs, ctx: Context) => void;\n\n/**\n * Signature result\n */\nexport type SignatureResult = {\n err: TransactionError | null;\n};\n\n/**\n * Transaction error\n */\nexport type TransactionError = {} | string;\n\n/**\n * Transaction confirmation status\n *
\n *   'processed': Transaction landed in a block which has reached 1 confirmation by the connected node\n *   'confirmed': Transaction landed in a block which has reached 1 confirmation by the cluster\n *   'finalized': Transaction landed in a block which has been finalized by the cluster\n * 
\n */\nexport type TransactionConfirmationStatus =\n | 'processed'\n | 'confirmed'\n | 'finalized';\n\n/**\n * Signature status\n */\nexport type SignatureStatus = {\n /** when the transaction was processed */\n slot: number;\n /** the number of blocks that have been confirmed and voted on in the fork containing `slot` */\n confirmations: number | null;\n /** transaction error, if any */\n err: TransactionError | null;\n /** cluster confirmation status, if data available. Possible responses: `processed`, `confirmed`, `finalized` */\n confirmationStatus?: TransactionConfirmationStatus;\n};\n\n/**\n * A confirmed signature with its status\n */\nexport type ConfirmedSignatureInfo = {\n /** the transaction signature */\n signature: string;\n /** when the transaction was processed */\n slot: number;\n /** error, if any */\n err: TransactionError | null;\n /** memo associated with the transaction, if any */\n memo: string | null;\n /** The unix timestamp of when the transaction was processed */\n blockTime?: number | null;\n};\n\n/**\n * An object defining headers to be passed to the RPC server\n */\nexport type HttpHeaders = {\n [header: string]: string;\n} & {\n // Prohibited headers; for internal use only.\n 'solana-client'?: never;\n};\n\n/**\n * The type of the JavaScript `fetch()` API\n */\nexport type FetchFn = typeof fetchImpl;\n\n/**\n * A callback used to augment the outgoing HTTP request\n */\nexport type FetchMiddleware = (\n info: Parameters[0],\n init: Parameters[1],\n fetch: (...a: Parameters) => void,\n) => void;\n\n/**\n * Configuration for instantiating a Connection\n */\nexport type ConnectionConfig = {\n /** Optional commitment level */\n commitment?: Commitment;\n /** Optional endpoint URL to the fullnode JSON RPC PubSub WebSocket Endpoint */\n wsEndpoint?: string;\n /** Optional HTTP headers object */\n httpHeaders?: HttpHeaders;\n /** Optional custom fetch function */\n fetch?: FetchFn;\n /** Optional fetch middleware callback */\n fetchMiddleware?: FetchMiddleware;\n /** Optional Disable retrying calls when server responds with HTTP 429 (Too Many Requests) */\n disableRetryOnRateLimit?: boolean;\n /** time to allow for the server to initially process a transaction (in milliseconds) */\n confirmTransactionInitialTimeout?: number;\n};\n\n/** @internal */\nconst COMMON_HTTP_HEADERS = {\n 'solana-client': `js/${process.env.npm_package_version ?? 'UNKNOWN'}`,\n};\n\n/**\n * A connection to a fullnode JSON RPC endpoint\n */\nexport class Connection {\n /** @internal */ _commitment?: Commitment;\n /** @internal */ _confirmTransactionInitialTimeout?: number;\n /** @internal */ _rpcEndpoint: string;\n /** @internal */ _rpcWsEndpoint: string;\n /** @internal */ _rpcClient: RpcClient;\n /** @internal */ _rpcRequest: RpcRequest;\n /** @internal */ _rpcBatchRequest: RpcBatchRequest;\n /** @internal */ _rpcWebSocket: RpcWebSocketClient;\n /** @internal */ _rpcWebSocketConnected: boolean = false;\n /** @internal */ _rpcWebSocketHeartbeat: ReturnType<\n typeof setInterval\n > | null = null;\n /** @internal */ _rpcWebSocketIdleTimeout: ReturnType<\n typeof setTimeout\n > | null = null;\n /** @internal\n * A number that we increment every time an active connection closes.\n * Used to determine whether the same socket connection that was open\n * when an async operation started is the same one that's active when\n * its continuation fires.\n *\n */ private _rpcWebSocketGeneration: number = 0;\n\n /** @internal */ _disableBlockhashCaching: boolean = false;\n /** @internal */ _pollingBlockhash: boolean = false;\n /** @internal */ _blockhashInfo: {\n latestBlockhash: BlockhashWithExpiryBlockHeight | null;\n lastFetch: number;\n simulatedSignatures: Array;\n transactionSignatures: Array;\n } = {\n latestBlockhash: null,\n lastFetch: 0,\n transactionSignatures: [],\n simulatedSignatures: [],\n };\n\n /** @internal */ private _nextClientSubscriptionId: ClientSubscriptionId = 0;\n /** @internal */ private _subscriptionDisposeFunctionsByClientSubscriptionId: {\n [clientSubscriptionId: ClientSubscriptionId]:\n | SubscriptionDisposeFn\n | undefined;\n } = {};\n /** @internal */ private _subscriptionCallbacksByServerSubscriptionId: {\n [serverSubscriptionId: ServerSubscriptionId]:\n | Set\n | undefined;\n } = {};\n /** @internal */ private _subscriptionsByHash: {\n [hash: SubscriptionConfigHash]: Subscription | undefined;\n } = {};\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n /** @internal */ private _subscriptionsAutoDisposedByRpc: Set =\n new Set();\n\n /**\n * Establish a JSON RPC connection\n *\n * @param endpoint URL to the fullnode JSON RPC endpoint\n * @param commitmentOrConfig optional default commitment level or optional ConnectionConfig configuration object\n */\n constructor(\n endpoint: string,\n commitmentOrConfig?: Commitment | ConnectionConfig,\n ) {\n let url = new URL(endpoint);\n const useHttps = url.protocol === 'https:';\n\n let wsEndpoint;\n let httpHeaders;\n let fetch;\n let fetchMiddleware;\n let disableRetryOnRateLimit;\n if (commitmentOrConfig && typeof commitmentOrConfig === 'string') {\n this._commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n this._commitment = commitmentOrConfig.commitment;\n this._confirmTransactionInitialTimeout =\n commitmentOrConfig.confirmTransactionInitialTimeout;\n wsEndpoint = commitmentOrConfig.wsEndpoint;\n httpHeaders = commitmentOrConfig.httpHeaders;\n fetch = commitmentOrConfig.fetch;\n fetchMiddleware = commitmentOrConfig.fetchMiddleware;\n disableRetryOnRateLimit = commitmentOrConfig.disableRetryOnRateLimit;\n }\n\n this._rpcEndpoint = endpoint;\n this._rpcWsEndpoint = wsEndpoint || makeWebsocketUrl(endpoint);\n\n this._rpcClient = createRpcClient(\n url.toString(),\n useHttps,\n httpHeaders,\n fetch,\n fetchMiddleware,\n disableRetryOnRateLimit,\n );\n this._rpcRequest = createRpcRequest(this._rpcClient);\n this._rpcBatchRequest = createRpcBatchRequest(this._rpcClient);\n\n this._rpcWebSocket = new RpcWebSocketClient(this._rpcWsEndpoint, {\n autoconnect: false,\n max_reconnects: Infinity,\n });\n this._rpcWebSocket.on('open', this._wsOnOpen.bind(this));\n this._rpcWebSocket.on('error', this._wsOnError.bind(this));\n this._rpcWebSocket.on('close', this._wsOnClose.bind(this));\n this._rpcWebSocket.on(\n 'accountNotification',\n this._wsOnAccountNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'programNotification',\n this._wsOnProgramAccountNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'slotNotification',\n this._wsOnSlotNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'slotsUpdatesNotification',\n this._wsOnSlotUpdatesNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'signatureNotification',\n this._wsOnSignatureNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'rootNotification',\n this._wsOnRootNotification.bind(this),\n );\n this._rpcWebSocket.on(\n 'logsNotification',\n this._wsOnLogsNotification.bind(this),\n );\n }\n\n /**\n * The default commitment used for requests\n */\n get commitment(): Commitment | undefined {\n return this._commitment;\n }\n\n /**\n * The RPC endpoint\n */\n get rpcEndpoint(): string {\n return this._rpcEndpoint;\n }\n\n /**\n * Fetch the balance for the specified public key, return with context\n */\n async getBalanceAndContext(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetBalanceConfig,\n ): Promise> {\n /** @internal */\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get balance for ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the balance for the specified public key\n */\n async getBalance(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetBalanceConfig,\n ): Promise {\n return await this.getBalanceAndContext(publicKey, commitmentOrConfig)\n .then(x => x.value)\n .catch(e => {\n throw new Error(\n 'failed to get balance of account ' + publicKey.toBase58() + ': ' + e,\n );\n });\n }\n\n /**\n * Fetch the estimated production time of a block\n */\n async getBlockTime(slot: number): Promise {\n const unsafeRes = await this._rpcRequest('getBlockTime', [slot]);\n const res = create(unsafeRes, jsonRpcResult(nullable(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get block time for slot ${slot}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the lowest slot that the node has information about in its ledger.\n * This value may increase over time if the node is configured to purge older ledger data\n */\n async getMinimumLedgerSlot(): Promise {\n const unsafeRes = await this._rpcRequest('minimumLedgerSlot', []);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get minimum ledger slot',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the slot of the lowest confirmed block that has not been purged from the ledger\n */\n async getFirstAvailableBlock(): Promise {\n const unsafeRes = await this._rpcRequest('getFirstAvailableBlock', []);\n const res = create(unsafeRes, SlotRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get first available block',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch information about the current supply\n */\n async getSupply(\n config?: GetSupplyConfig | Commitment,\n ): Promise> {\n let configArg: GetSupplyConfig = {};\n if (typeof config === 'string') {\n configArg = {commitment: config};\n } else if (config) {\n configArg = {\n ...config,\n commitment: (config && config.commitment) || this.commitment,\n };\n } else {\n configArg = {\n commitment: this.commitment,\n };\n }\n\n const unsafeRes = await this._rpcRequest('getSupply', [configArg]);\n const res = create(unsafeRes, GetSupplyRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get supply');\n }\n return res.result;\n }\n\n /**\n * Fetch the current supply of a token mint\n */\n async getTokenSupply(\n tokenMintAddress: PublicKey,\n commitment?: Commitment,\n ): Promise> {\n const args = this._buildArgs([tokenMintAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenSupply', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get token supply');\n }\n return res.result;\n }\n\n /**\n * Fetch the current balance of a token account\n */\n async getTokenAccountBalance(\n tokenAddress: PublicKey,\n commitment?: Commitment,\n ): Promise> {\n const args = this._buildArgs([tokenAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenAccountBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get token account balance',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the token accounts owned by the specified account\n *\n * @return {Promise}>>>}\n */\n async getTokenAccountsByOwner(\n ownerAddress: PublicKey,\n filter: TokenAccountsFilter,\n commitmentOrConfig?: Commitment | GetTokenAccountsByOwnerConfig,\n ): Promise<\n RpcResponseAndContext<\n Array<{pubkey: PublicKey; account: AccountInfo}>\n >\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n let _args: any[] = [ownerAddress.toBase58()];\n if ('mint' in filter) {\n _args.push({mint: filter.mint.toBase58()});\n } else {\n _args.push({programId: filter.programId.toBase58()});\n }\n\n const args = this._buildArgs(_args, commitment, 'base64', config);\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetTokenAccountsByOwner);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get token accounts owned by account ${ownerAddress.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed token accounts owned by the specified account\n *\n * @return {Promise}>>>}\n */\n async getParsedTokenAccountsByOwner(\n ownerAddress: PublicKey,\n filter: TokenAccountsFilter,\n commitment?: Commitment,\n ): Promise<\n RpcResponseAndContext<\n Array<{pubkey: PublicKey; account: AccountInfo}>\n >\n > {\n let _args: any[] = [ownerAddress.toBase58()];\n if ('mint' in filter) {\n _args.push({mint: filter.mint.toBase58()});\n } else {\n _args.push({programId: filter.programId.toBase58()});\n }\n\n const args = this._buildArgs(_args, commitment, 'jsonParsed');\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetParsedTokenAccountsByOwner);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get token accounts owned by account ${ownerAddress.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the 20 largest accounts with their current balances\n */\n async getLargestAccounts(\n config?: GetLargestAccountsConfig,\n ): Promise>> {\n const arg = {\n ...config,\n commitment: (config && config.commitment) || this.commitment,\n };\n const args = arg.filter || arg.commitment ? [arg] : [];\n const unsafeRes = await this._rpcRequest('getLargestAccounts', args);\n const res = create(unsafeRes, GetLargestAccountsRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get largest accounts');\n }\n return res.result;\n }\n\n /**\n * Fetch the 20 largest token accounts with their current balances\n * for a given mint.\n */\n async getTokenLargestAccounts(\n mintAddress: PublicKey,\n commitment?: Commitment,\n ): Promise>> {\n const args = this._buildArgs([mintAddress.toBase58()], commitment);\n const unsafeRes = await this._rpcRequest('getTokenLargestAccounts', args);\n const res = create(unsafeRes, GetTokenLargestAccountsResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get token largest accounts',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for the specified public key, return with context\n */\n async getAccountInfoAndContext(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise | null>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n 'base64',\n config,\n );\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(nullable(AccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info about account ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed account info for the specified public key\n */\n async getParsedAccountInfo(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise<\n RpcResponseAndContext | null>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(nullable(ParsedAccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info about account ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for the specified public key\n */\n async getAccountInfo(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetAccountInfoConfig,\n ): Promise | null> {\n try {\n const res = await this.getAccountInfoAndContext(\n publicKey,\n commitmentOrConfig,\n );\n return res.value;\n } catch (e) {\n throw new Error(\n 'failed to get info about account ' + publicKey.toBase58() + ': ' + e,\n );\n }\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys, return with context\n */\n async getMultipleAccountsInfoAndContext(\n publicKeys: PublicKey[],\n commitmentOrConfig?: Commitment | GetMultipleAccountsConfig,\n ): Promise | null)[]>> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const keys = publicKeys.map(key => key.toBase58());\n const args = this._buildArgs([keys], commitment, 'base64', config);\n const unsafeRes = await this._rpcRequest('getMultipleAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResultAndContext(array(nullable(AccountInfoResult))),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get info for accounts ${keys}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys\n */\n async getMultipleAccountsInfo(\n publicKeys: PublicKey[],\n commitmentOrConfig?: Commitment | GetMultipleAccountsConfig,\n ): Promise<(AccountInfo | null)[]> {\n const res = await this.getMultipleAccountsInfoAndContext(\n publicKeys,\n commitmentOrConfig,\n );\n return res.value;\n }\n\n /**\n * Returns epoch activation information for a stake account that has been delegated\n */\n async getStakeActivation(\n publicKey: PublicKey,\n commitmentOrConfig?: Commitment | GetStakeActivationConfig,\n epoch?: number,\n ): Promise {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment,\n undefined /* encoding */,\n {\n ...config,\n epoch: epoch != null ? epoch : config?.epoch,\n },\n );\n\n const unsafeRes = await this._rpcRequest('getStakeActivation', args);\n const res = create(unsafeRes, jsonRpcResult(StakeActivationResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get Stake Activation ${publicKey.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch all the accounts owned by the specified program id\n *\n * @return {Promise}>>}\n */\n async getProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetProgramAccountsConfig | Commitment,\n ): Promise}>> {\n const {commitment, config} =\n extractCommitmentFromConfig(configOrCommitment);\n const {encoding, ...configWithoutEncoding} = config || {};\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment,\n encoding || 'base64',\n configWithoutEncoding,\n );\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const res = create(unsafeRes, jsonRpcResult(array(KeyedAccountInfoResult)));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get accounts owned by program ${programId.toBase58()}`,\n );\n }\n return res.result;\n }\n\n /**\n * Fetch and parse all the accounts owned by the specified program id\n *\n * @return {Promise}>>}\n */\n async getParsedProgramAccounts(\n programId: PublicKey,\n configOrCommitment?: GetParsedProgramAccountsConfig | Commitment,\n ): Promise<\n Array<{\n pubkey: PublicKey;\n account: AccountInfo;\n }>\n > {\n const {commitment, config} =\n extractCommitmentFromConfig(configOrCommitment);\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const res = create(\n unsafeRes,\n jsonRpcResult(array(KeyedParsedAccountInfoResult)),\n );\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get accounts owned by program ${programId.toBase58()}`,\n );\n }\n return res.result;\n }\n\n confirmTransaction(\n strategy: BlockheightBasedTransactionConfirmationStrategy,\n commitment?: Commitment,\n ): Promise>;\n\n /** @deprecated Instead, call `confirmTransaction` using a `TransactionConfirmationConfig` */\n // eslint-disable-next-line no-dupe-class-members\n confirmTransaction(\n strategy: TransactionSignature,\n commitment?: Commitment,\n ): Promise>;\n\n // eslint-disable-next-line no-dupe-class-members\n async confirmTransaction(\n strategy:\n | BlockheightBasedTransactionConfirmationStrategy\n | TransactionSignature,\n commitment?: Commitment,\n ): Promise> {\n let rawSignature: string;\n\n if (typeof strategy == 'string') {\n rawSignature = strategy;\n } else {\n const config =\n strategy as BlockheightBasedTransactionConfirmationStrategy;\n rawSignature = config.signature;\n }\n\n let decodedSignature;\n\n try {\n decodedSignature = bs58.decode(rawSignature);\n } catch (err) {\n throw new Error('signature must be base58 encoded: ' + rawSignature);\n }\n\n assert(decodedSignature.length === 64, 'signature has invalid length');\n\n const subscriptionCommitment = commitment || this.commitment;\n let timeoutId;\n let subscriptionId;\n let done = false;\n\n const confirmationPromise = new Promise<{\n __type: TransactionStatus.PROCESSED;\n response: RpcResponseAndContext;\n }>((resolve, reject) => {\n try {\n subscriptionId = this.onSignature(\n rawSignature,\n (result: SignatureResult, context: Context) => {\n subscriptionId = undefined;\n const response = {\n context,\n value: result,\n };\n done = true;\n resolve({__type: TransactionStatus.PROCESSED, response});\n },\n subscriptionCommitment,\n );\n } catch (err) {\n reject(err);\n }\n });\n\n const expiryPromise = new Promise<\n | {__type: TransactionStatus.BLOCKHEIGHT_EXCEEDED}\n | {__type: TransactionStatus.TIMED_OUT; timeoutMs: number}\n >(resolve => {\n if (typeof strategy === 'string') {\n let timeoutMs = this._confirmTransactionInitialTimeout || 60 * 1000;\n switch (subscriptionCommitment) {\n case 'processed':\n case 'recent':\n case 'single':\n case 'confirmed':\n case 'singleGossip': {\n timeoutMs = this._confirmTransactionInitialTimeout || 30 * 1000;\n break;\n }\n // exhaust enums to ensure full coverage\n case 'finalized':\n case 'max':\n case 'root':\n }\n\n timeoutId = setTimeout(\n () => resolve({__type: TransactionStatus.TIMED_OUT, timeoutMs}),\n timeoutMs,\n );\n } else {\n let config =\n strategy as BlockheightBasedTransactionConfirmationStrategy;\n const checkBlockHeight = async () => {\n try {\n const blockHeight = await this.getBlockHeight(commitment);\n return blockHeight;\n } catch (_e) {\n return -1;\n }\n };\n (async () => {\n let currentBlockHeight = await checkBlockHeight();\n if (done) return;\n while (currentBlockHeight <= config.lastValidBlockHeight) {\n await sleep(1000);\n if (done) return;\n currentBlockHeight = await checkBlockHeight();\n if (done) return;\n }\n resolve({__type: TransactionStatus.BLOCKHEIGHT_EXCEEDED});\n })();\n }\n });\n\n let result: RpcResponseAndContext;\n try {\n const outcome = await Promise.race([confirmationPromise, expiryPromise]);\n switch (outcome.__type) {\n case TransactionStatus.BLOCKHEIGHT_EXCEEDED:\n throw new TransactionExpiredBlockheightExceededError(rawSignature);\n case TransactionStatus.PROCESSED:\n result = outcome.response;\n break;\n case TransactionStatus.TIMED_OUT:\n throw new TransactionExpiredTimeoutError(\n rawSignature,\n outcome.timeoutMs / 1000,\n );\n }\n } finally {\n clearTimeout(timeoutId);\n if (subscriptionId) {\n this.removeSignatureListener(subscriptionId);\n }\n }\n return result;\n }\n\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n async getClusterNodes(): Promise> {\n const unsafeRes = await this._rpcRequest('getClusterNodes', []);\n const res = create(unsafeRes, jsonRpcResult(array(ContactInfoResult)));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get cluster nodes');\n }\n return res.result;\n }\n\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n async getVoteAccounts(commitment?: Commitment): Promise {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getVoteAccounts', args);\n const res = create(unsafeRes, GetVoteAccounts);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get vote accounts');\n }\n return res.result;\n }\n\n /**\n * Fetch the current slot that the node is processing\n */\n async getSlot(\n commitmentOrConfig?: Commitment | GetSlotConfig,\n ): Promise {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getSlot', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot');\n }\n return res.result;\n }\n\n /**\n * Fetch the current slot leader of the cluster\n */\n async getSlotLeader(\n commitmentOrConfig?: Commitment | GetSlotLeaderConfig,\n ): Promise {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getSlotLeader', args);\n const res = create(unsafeRes, jsonRpcResult(string()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot leader');\n }\n return res.result;\n }\n\n /**\n * Fetch `limit` number of slot leaders starting from `startSlot`\n *\n * @param startSlot fetch slot leaders starting from this slot\n * @param limit number of slot leaders to return\n */\n async getSlotLeaders(\n startSlot: number,\n limit: number,\n ): Promise> {\n const args = [startSlot, limit];\n const unsafeRes = await this._rpcRequest('getSlotLeaders', args);\n const res = create(unsafeRes, jsonRpcResult(array(PublicKeyFromString)));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot leaders');\n }\n return res.result;\n }\n\n /**\n * Fetch the current status of a signature\n */\n async getSignatureStatus(\n signature: TransactionSignature,\n config?: SignatureStatusConfig,\n ): Promise> {\n const {context, value: values} = await this.getSignatureStatuses(\n [signature],\n config,\n );\n assert(values.length === 1);\n const value = values[0];\n return {context, value};\n }\n\n /**\n * Fetch the current statuses of a batch of signatures\n */\n async getSignatureStatuses(\n signatures: Array,\n config?: SignatureStatusConfig,\n ): Promise>> {\n const params: any[] = [signatures];\n if (config) {\n params.push(config);\n }\n const unsafeRes = await this._rpcRequest('getSignatureStatuses', params);\n const res = create(unsafeRes, GetSignatureStatusesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get signature status');\n }\n return res.result;\n }\n\n /**\n * Fetch the current transaction count of the cluster\n */\n async getTransactionCount(\n commitmentOrConfig?: Commitment | GetTransactionCountConfig,\n ): Promise {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransactionCount', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get transaction count',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch the current total currency supply of the cluster in lamports\n *\n * @deprecated Deprecated since v1.2.8. Please use {@link getSupply} instead.\n */\n async getTotalSupply(commitment?: Commitment): Promise {\n const result = await this.getSupply({\n commitment,\n excludeNonCirculatingAccountsList: true,\n });\n return result.value.total;\n }\n\n /**\n * Fetch the cluster InflationGovernor parameters\n */\n async getInflationGovernor(\n commitment?: Commitment,\n ): Promise {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getInflationGovernor', args);\n const res = create(unsafeRes, GetInflationGovernorRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation');\n }\n return res.result;\n }\n\n /**\n * Fetch the inflation reward for a list of addresses for an epoch\n */\n async getInflationReward(\n addresses: PublicKey[],\n epoch?: number,\n commitmentOrConfig?: Commitment | GetInflationRewardConfig,\n ): Promise<(InflationReward | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [addresses.map(pubkey => pubkey.toBase58())],\n commitment,\n undefined /* encoding */,\n {\n ...config,\n epoch: epoch != null ? epoch : config?.epoch,\n },\n );\n const unsafeRes = await this._rpcRequest('getInflationReward', args);\n const res = create(unsafeRes, GetInflationRewardResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation reward');\n }\n return res.result;\n }\n\n /**\n * Fetch the Epoch Info parameters\n */\n async getEpochInfo(\n commitmentOrConfig?: Commitment | GetEpochInfoConfig,\n ): Promise {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getEpochInfo', args);\n const res = create(unsafeRes, GetEpochInfoRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get epoch info');\n }\n return res.result;\n }\n\n /**\n * Fetch the Epoch Schedule parameters\n */\n async getEpochSchedule(): Promise {\n const unsafeRes = await this._rpcRequest('getEpochSchedule', []);\n const res = create(unsafeRes, GetEpochScheduleRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get epoch schedule');\n }\n const epochSchedule = res.result;\n return new EpochSchedule(\n epochSchedule.slotsPerEpoch,\n epochSchedule.leaderScheduleSlotOffset,\n epochSchedule.warmup,\n epochSchedule.firstNormalEpoch,\n epochSchedule.firstNormalSlot,\n );\n }\n\n /**\n * Fetch the leader schedule for the current epoch\n * @return {Promise>}\n */\n async getLeaderSchedule(): Promise {\n const unsafeRes = await this._rpcRequest('getLeaderSchedule', []);\n const res = create(unsafeRes, GetLeaderScheduleRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get leader schedule');\n }\n return res.result;\n }\n\n /**\n * Fetch the minimum balance needed to exempt an account of `dataLength`\n * size from rent\n */\n async getMinimumBalanceForRentExemption(\n dataLength: number,\n commitment?: Commitment,\n ): Promise {\n const args = this._buildArgs([dataLength], commitment);\n const unsafeRes = await this._rpcRequest(\n 'getMinimumBalanceForRentExemption',\n args,\n );\n const res = create(unsafeRes, GetMinimumBalanceForRentExemptionRpcResult);\n if ('error' in res) {\n console.warn('Unable to fetch minimum balance for rent exemption');\n return 0;\n }\n return res.result;\n }\n\n /**\n * Fetch a recent blockhash from the cluster, return with context\n * @return {Promise>}\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getLatestBlockhash} instead.\n */\n async getRecentBlockhashAndContext(\n commitment?: Commitment,\n ): Promise<\n RpcResponseAndContext<{blockhash: Blockhash; feeCalculator: FeeCalculator}>\n > {\n const args = this._buildArgs([], commitment);\n const unsafeRes = await this._rpcRequest('getRecentBlockhash', args);\n const res = create(unsafeRes, GetRecentBlockhashAndContextRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get recent blockhash');\n }\n return res.result;\n }\n\n /**\n * Fetch recent performance samples\n * @return {Promise>}\n */\n async getRecentPerformanceSamples(\n limit?: number,\n ): Promise> {\n const unsafeRes = await this._rpcRequest(\n 'getRecentPerformanceSamples',\n limit ? [limit] : [],\n );\n const res = create(unsafeRes, GetRecentPerformanceSamplesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get recent performance samples',\n );\n }\n\n return res.result;\n }\n\n /**\n * Fetch the fee calculator for a recent blockhash from the cluster, return with context\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getFeeForMessage} instead.\n */\n async getFeeCalculatorForBlockhash(\n blockhash: Blockhash,\n commitment?: Commitment,\n ): Promise> {\n const args = this._buildArgs([blockhash], commitment);\n const unsafeRes = await this._rpcRequest(\n 'getFeeCalculatorForBlockhash',\n args,\n );\n\n const res = create(unsafeRes, GetFeeCalculatorRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get fee calculator');\n }\n const {context, value} = res.result;\n return {\n context,\n value: value !== null ? value.feeCalculator : null,\n };\n }\n\n /**\n * Fetch the fee for a message from the cluster, return with context\n */\n async getFeeForMessage(\n message: Message,\n commitment?: Commitment,\n ): Promise> {\n const wireMessage = message.serialize().toString('base64');\n const args = this._buildArgs([wireMessage], commitment);\n const unsafeRes = await this._rpcRequest('getFeeForMessage', args);\n\n const res = create(unsafeRes, jsonRpcResultAndContext(nullable(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot');\n }\n if (res.result === null) {\n throw new Error('invalid blockhash');\n }\n return res.result as unknown as RpcResponseAndContext;\n }\n\n /**\n * Fetch a recent blockhash from the cluster\n * @return {Promise<{blockhash: Blockhash, feeCalculator: FeeCalculator}>}\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getLatestBlockhash} instead.\n */\n async getRecentBlockhash(\n commitment?: Commitment,\n ): Promise<{blockhash: Blockhash; feeCalculator: FeeCalculator}> {\n try {\n const res = await this.getRecentBlockhashAndContext(commitment);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise}\n */\n async getLatestBlockhash(\n commitmentOrConfig?: Commitment | GetLatestBlockhashConfig,\n ): Promise {\n try {\n const res = await this.getLatestBlockhashAndContext(commitmentOrConfig);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise}\n */\n async getLatestBlockhashAndContext(\n commitmentOrConfig?: Commitment | GetLatestBlockhashConfig,\n ): Promise> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getLatestBlockhash', args);\n const res = create(unsafeRes, GetLatestBlockhashRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get latest blockhash');\n }\n return res.result;\n }\n\n /**\n * Fetch the node version\n */\n async getVersion(): Promise {\n const unsafeRes = await this._rpcRequest('getVersion', []);\n const res = create(unsafeRes, jsonRpcResult(VersionResult));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get version');\n }\n return res.result;\n }\n\n /**\n * Fetch the genesis hash\n */\n async getGenesisHash(): Promise {\n const unsafeRes = await this._rpcRequest('getGenesisHash', []);\n const res = create(unsafeRes, jsonRpcResult(string()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get genesis hash');\n }\n return res.result;\n }\n\n /**\n * Fetch a processed block from the cluster.\n */\n async getBlock(\n slot: number,\n rawConfig?: GetBlockConfig,\n ): Promise {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n const res = create(unsafeRes, GetBlockRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transactions: result.transactions.map(({transaction, meta}) => {\n const message = new Message(transaction.message);\n return {\n meta,\n transaction: {\n ...transaction,\n message,\n },\n };\n }),\n };\n }\n\n /*\n * Returns the current block height of the node\n */\n async getBlockHeight(\n commitmentOrConfig?: Commitment | GetBlockHeightConfig,\n ): Promise {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgs(\n [],\n commitment,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getBlockHeight', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get block height information',\n );\n }\n\n return res.result;\n }\n\n /*\n * Returns recent block production information from the current or previous epoch\n */\n async getBlockProduction(\n configOrCommitment?: GetBlockProductionConfig | Commitment,\n ): Promise> {\n let extra: Omit | undefined;\n let commitment: Commitment | undefined;\n\n if (typeof configOrCommitment === 'string') {\n commitment = configOrCommitment;\n } else if (configOrCommitment) {\n const {commitment: c, ...rest} = configOrCommitment;\n commitment = c;\n extra = rest;\n }\n\n const args = this._buildArgs([], commitment, 'base64', extra);\n const unsafeRes = await this._rpcRequest('getBlockProduction', args);\n const res = create(unsafeRes, BlockProductionResponseStruct);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get block production information',\n );\n }\n\n return res.result;\n }\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n */\n async getTransaction(\n signature: string,\n rawConfig?: GetTransactionConfig,\n ): Promise {\n const {commitment, config} = extractCommitmentFromConfig(rawConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transaction: {\n ...result.transaction,\n message: new Message(result.transaction.message),\n },\n };\n }\n\n /**\n * Fetch parsed transaction details for a confirmed or finalized transaction\n */\n async getParsedTransaction(\n signature: TransactionSignature,\n commitmentOrConfig?: GetTransactionConfig | Finality,\n ): Promise {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n return res.result;\n }\n\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n */\n async getParsedTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig?: GetTransactionConfig | Finality,\n ): Promise<(ParsedConfirmedTransaction | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n 'jsonParsed',\n config,\n );\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transactions');\n }\n return res.result;\n });\n\n return res;\n }\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link TransactionResponse}.\n */\n async getTransactions(\n signatures: TransactionSignature[],\n commitmentOrConfig?: GetTransactionConfig | Finality,\n ): Promise<(TransactionResponse | null)[]> {\n const {commitment, config} =\n extractCommitmentFromConfig(commitmentOrConfig);\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment as Finality,\n undefined /* encoding */,\n config,\n );\n return {\n methodName: 'getTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transactions');\n }\n const result = res.result;\n if (!result) return result;\n\n return {\n ...result,\n transaction: {\n ...result.transaction,\n message: new Message(result.transaction.message),\n },\n };\n });\n\n return res;\n }\n\n /**\n * Fetch a list of Transactions and transaction statuses from the cluster\n * for a confirmed block.\n *\n * @deprecated Deprecated since v1.13.0. Please use {@link getBlock} instead.\n */\n async getConfirmedBlock(\n slot: number,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed([slot], commitment);\n const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);\n const res = create(unsafeRes, GetConfirmedBlockRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n\n const result = res.result;\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n\n const block = {\n ...result,\n transactions: result.transactions.map(({transaction, meta}) => {\n const message = new Message(transaction.message);\n return {\n meta,\n transaction: {\n ...transaction,\n message,\n },\n };\n }),\n };\n\n return {\n ...block,\n transactions: block.transactions.map(({transaction, meta}) => {\n return {\n meta,\n transaction: Transaction.populate(\n transaction.message,\n transaction.signatures,\n ),\n };\n }),\n };\n }\n\n /**\n * Fetch confirmed blocks between two slots\n */\n async getBlocks(\n startSlot: number,\n endSlot?: number,\n commitment?: Finality,\n ): Promise> {\n const args = this._buildArgsAtLeastConfirmed(\n endSlot !== undefined ? [startSlot, endSlot] : [startSlot],\n commitment,\n );\n const unsafeRes = await this._rpcRequest('getBlocks', args);\n const res = create(unsafeRes, jsonRpcResult(array(number())));\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get blocks');\n }\n return res.result;\n }\n\n /**\n * Fetch a list of Signatures from the cluster for a block, excluding rewards\n */\n async getBlockSignatures(\n slot: number,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment,\n undefined,\n {\n transactionDetails: 'signatures',\n rewards: false,\n },\n );\n const unsafeRes = await this._rpcRequest('getBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get block');\n }\n const result = res.result;\n if (!result) {\n throw new Error('Block ' + slot + ' not found');\n }\n return result;\n }\n\n /**\n * Fetch a list of Signatures from the cluster for a confirmed block, excluding rewards\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getBlockSignatures} instead.\n */\n async getConfirmedBlockSignatures(\n slot: number,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed(\n [slot],\n commitment,\n undefined,\n {\n transactionDetails: 'signatures',\n rewards: false,\n },\n );\n const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n const result = res.result;\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n return result;\n }\n\n /**\n * Fetch a transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getTransaction} instead.\n */\n async getConfirmedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed([signature], commitment);\n const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n const result = res.result;\n if (!result) return result;\n\n const message = new Message(result.transaction.message);\n const signatures = result.transaction.signatures;\n return {\n ...result,\n transaction: Transaction.populate(message, signatures),\n };\n }\n\n /**\n * Fetch parsed transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getParsedTransaction} instead.\n */\n async getParsedConfirmedTransaction(\n signature: TransactionSignature,\n commitment?: Finality,\n ): Promise {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed transaction',\n );\n }\n return res.result;\n }\n\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getParsedTransactions} instead.\n */\n async getParsedConfirmedTransactions(\n signatures: TransactionSignature[],\n commitment?: Finality,\n ): Promise<(ParsedConfirmedTransaction | null)[]> {\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed(\n [signature],\n commitment,\n 'jsonParsed',\n );\n return {\n methodName: 'getConfirmedTransaction',\n args,\n };\n });\n\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map((unsafeRes: any) => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed transactions',\n );\n }\n return res.result;\n });\n\n return res;\n }\n\n /**\n * Fetch a list of all the confirmed signatures for transactions involving an address\n * within a specified slot range. Max range allowed is 10,000 slots.\n *\n * @deprecated Deprecated since v1.3. Please use {@link getConfirmedSignaturesForAddress2} instead.\n *\n * @param address queried address\n * @param startSlot start slot, inclusive\n * @param endSlot end slot, inclusive\n */\n async getConfirmedSignaturesForAddress(\n address: PublicKey,\n startSlot: number,\n endSlot: number,\n ): Promise> {\n let options: any = {};\n\n let firstAvailableBlock = await this.getFirstAvailableBlock();\n while (!('until' in options)) {\n startSlot--;\n if (startSlot <= 0 || startSlot < firstAvailableBlock) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(\n startSlot,\n 'finalized',\n );\n if (block.signatures.length > 0) {\n options.until =\n block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n let highestConfirmedRoot = await this.getSlot('finalized');\n while (!('before' in options)) {\n endSlot++;\n if (endSlot > highestConfirmedRoot) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(endSlot);\n if (block.signatures.length > 0) {\n options.before =\n block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n const confirmedSignatureInfo = await this.getConfirmedSignaturesForAddress2(\n address,\n options,\n );\n return confirmedSignatureInfo.map(info => info.signature);\n }\n\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n *\n * @param address queried address\n * @param options\n */\n async getConfirmedSignaturesForAddress2(\n address: PublicKey,\n options?: ConfirmedSignaturesForAddress2Options,\n commitment?: Finality,\n ): Promise> {\n const args = this._buildArgsAtLeastConfirmed(\n [address.toBase58()],\n commitment,\n undefined,\n options,\n );\n const unsafeRes = await this._rpcRequest(\n 'getConfirmedSignaturesForAddress2',\n args,\n );\n const res = create(unsafeRes, GetConfirmedSignaturesForAddress2RpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get confirmed signatures for address',\n );\n }\n return res.result;\n }\n\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n *\n * @param address queried address\n * @param options\n */\n async getSignaturesForAddress(\n address: PublicKey,\n options?: SignaturesForAddressOptions,\n commitment?: Finality,\n ): Promise> {\n const args = this._buildArgsAtLeastConfirmed(\n [address.toBase58()],\n commitment,\n undefined,\n options,\n );\n const unsafeRes = await this._rpcRequest('getSignaturesForAddress', args);\n const res = create(unsafeRes, GetSignaturesForAddressRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n 'failed to get signatures for address',\n );\n }\n return res.result;\n }\n\n async getAddressLookupTable(\n accountKey: PublicKey,\n config?: GetAccountInfoConfig,\n ): Promise> {\n const {context, value: accountInfo} = await this.getAccountInfoAndContext(\n accountKey,\n config,\n );\n\n let value = null;\n if (accountInfo !== null) {\n value = new AddressLookupTableAccount({\n key: accountKey,\n state: AddressLookupTableAccount.deserialize(accountInfo.data),\n });\n }\n\n return {\n context,\n value,\n };\n }\n\n /**\n * Fetch the contents of a Nonce account from the cluster, return with context\n */\n async getNonceAndContext(\n nonceAccount: PublicKey,\n commitment?: Commitment,\n ): Promise> {\n const {context, value: accountInfo} = await this.getAccountInfoAndContext(\n nonceAccount,\n commitment,\n );\n\n let value = null;\n if (accountInfo !== null) {\n value = NonceAccount.fromAccountData(accountInfo.data);\n }\n\n return {\n context,\n value,\n };\n }\n\n /**\n * Fetch the contents of a Nonce account from the cluster\n */\n async getNonce(\n nonceAccount: PublicKey,\n commitment?: Commitment,\n ): Promise {\n return await this.getNonceAndContext(nonceAccount, commitment)\n .then(x => x.value)\n .catch(e => {\n throw new Error(\n 'failed to get nonce for account ' +\n nonceAccount.toBase58() +\n ': ' +\n e,\n );\n });\n }\n\n /**\n * Request an allocation of lamports to the specified address\n *\n * ```typescript\n * import { Connection, PublicKey, LAMPORTS_PER_SOL } from \"@solana/web3.js\";\n *\n * (async () => {\n * const connection = new Connection(\"https://api.testnet.solana.com\", \"confirmed\");\n * const myAddress = new PublicKey(\"2nr1bHFT86W9tGnyvmYW4vcHKsQB3sVQfnddasz4kExM\");\n * const signature = await connection.requestAirdrop(myAddress, LAMPORTS_PER_SOL);\n * await connection.confirmTransaction(signature);\n * })();\n * ```\n */\n async requestAirdrop(\n to: PublicKey,\n lamports: number,\n ): Promise {\n const unsafeRes = await this._rpcRequest('requestAirdrop', [\n to.toBase58(),\n lamports,\n ]);\n const res = create(unsafeRes, RequestAirdropRpcResult);\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `airdrop to ${to.toBase58()} failed`,\n );\n }\n return res.result;\n }\n\n /**\n * @internal\n */\n async _blockhashWithExpiryBlockHeight(\n disableCache: boolean,\n ): Promise {\n if (!disableCache) {\n // Wait for polling to finish\n while (this._pollingBlockhash) {\n await sleep(100);\n }\n const timeSinceFetch = Date.now() - this._blockhashInfo.lastFetch;\n const expired = timeSinceFetch >= BLOCKHASH_CACHE_TIMEOUT_MS;\n if (this._blockhashInfo.latestBlockhash !== null && !expired) {\n return this._blockhashInfo.latestBlockhash;\n }\n }\n\n return await this._pollNewBlockhash();\n }\n\n /**\n * @internal\n */\n async _pollNewBlockhash(): Promise {\n this._pollingBlockhash = true;\n try {\n const startTime = Date.now();\n const cachedLatestBlockhash = this._blockhashInfo.latestBlockhash;\n const cachedBlockhash = cachedLatestBlockhash\n ? cachedLatestBlockhash.blockhash\n : null;\n for (let i = 0; i < 50; i++) {\n const latestBlockhash = await this.getLatestBlockhash('finalized');\n\n if (cachedBlockhash !== latestBlockhash.blockhash) {\n this._blockhashInfo = {\n latestBlockhash,\n lastFetch: Date.now(),\n transactionSignatures: [],\n simulatedSignatures: [],\n };\n return latestBlockhash;\n }\n\n // Sleep for approximately half a slot\n await sleep(MS_PER_SLOT / 2);\n }\n\n throw new Error(\n `Unable to obtain a new blockhash after ${Date.now() - startTime}ms`,\n );\n } finally {\n this._pollingBlockhash = false;\n }\n }\n\n /**\n * get the stake minimum delegation\n */\n async getStakeMinimumDelegation(\n config?: GetStakeMinimumDelegationConfig,\n ): Promise> {\n const {commitment, config: configArg} = extractCommitmentFromConfig(config);\n const args = this._buildArgs([], commitment, 'base64', configArg);\n const unsafeRes = await this._rpcRequest('getStakeMinimumDelegation', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n if ('error' in res) {\n throw new SolanaJSONRPCError(\n res.error,\n `failed to get stake minimum delegation`,\n );\n }\n return res.result;\n }\n\n /**\n * Simulate a transaction\n */\n async simulateTransaction(\n transactionOrMessage: Transaction | Message,\n signers?: Array,\n includeAccounts?: boolean | Array,\n ): Promise> {\n let transaction;\n if (transactionOrMessage instanceof Transaction) {\n let originalTx: Transaction = transactionOrMessage;\n transaction = new Transaction();\n transaction.feePayer = originalTx.feePayer;\n transaction.instructions = transactionOrMessage.instructions;\n transaction.nonceInfo = originalTx.nonceInfo;\n transaction.signatures = originalTx.signatures;\n } else {\n transaction = Transaction.populate(transactionOrMessage);\n // HACK: this function relies on mutating the populated transaction\n transaction._message = transaction._json = undefined;\n }\n\n if (transaction.nonceInfo && signers) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n for (;;) {\n const latestBlockhash = await this._blockhashWithExpiryBlockHeight(\n disableCache,\n );\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n\n if (!signers) break;\n\n transaction.sign(...signers);\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n if (\n !this._blockhashInfo.simulatedSignatures.includes(signature) &&\n !this._blockhashInfo.transactionSignatures.includes(signature)\n ) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.simulatedSignatures.push(signature);\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const message = transaction._compile();\n const signData = message.serialize();\n const wireTransaction = transaction._serialize(signData);\n const encodedTransaction = wireTransaction.toString('base64');\n const config: any = {\n encoding: 'base64',\n commitment: this.commitment,\n };\n\n if (includeAccounts) {\n const addresses = (\n Array.isArray(includeAccounts)\n ? includeAccounts\n : message.nonProgramIds()\n ).map(key => key.toBase58());\n\n config['accounts'] = {\n encoding: 'base64',\n addresses,\n };\n }\n\n if (signers) {\n config.sigVerify = true;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('simulateTransaction', args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n if ('error' in res) {\n let logs;\n if ('data' in res.error) {\n logs = res.error.data.logs;\n if (logs && Array.isArray(logs)) {\n const traceIndent = '\\n ';\n const logTrace = traceIndent + logs.join(traceIndent);\n console.error(res.error.message, logTrace);\n }\n }\n throw new SendTransactionError(\n 'failed to simulate transaction: ' + res.error.message,\n logs,\n );\n }\n return res.result;\n }\n\n /**\n * Sign and send a transaction\n */\n async sendTransaction(\n transaction: Transaction,\n signers: Array,\n options?: SendOptions,\n ): Promise {\n if (transaction.nonceInfo) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n for (;;) {\n const latestBlockhash = await this._blockhashWithExpiryBlockHeight(\n disableCache,\n );\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n transaction.sign(...signers);\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n if (!this._blockhashInfo.transactionSignatures.includes(signature)) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.transactionSignatures.push(signature);\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const wireTransaction = transaction.serialize();\n return await this.sendRawTransaction(wireTransaction, options);\n }\n\n /**\n * Send a transaction that has already been signed and serialized into the\n * wire format\n */\n async sendRawTransaction(\n rawTransaction: Buffer | Uint8Array | Array,\n options?: SendOptions,\n ): Promise {\n const encodedTransaction = toBuffer(rawTransaction).toString('base64');\n const result = await this.sendEncodedTransaction(\n encodedTransaction,\n options,\n );\n return result;\n }\n\n /**\n * Send a transaction that has already been signed, serialized into the\n * wire format, and encoded as a base64 string\n */\n async sendEncodedTransaction(\n encodedTransaction: string,\n options?: SendOptions,\n ): Promise {\n const config: any = {encoding: 'base64'};\n const skipPreflight = options && options.skipPreflight;\n const preflightCommitment =\n (options && options.preflightCommitment) || this.commitment;\n\n if (options && options.maxRetries != null) {\n config.maxRetries = options.maxRetries;\n }\n if (options && options.minContextSlot != null) {\n config.minContextSlot = options.minContextSlot;\n }\n if (skipPreflight) {\n config.skipPreflight = skipPreflight;\n }\n if (preflightCommitment) {\n config.preflightCommitment = preflightCommitment;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('sendTransaction', args);\n const res = create(unsafeRes, SendTransactionRpcResult);\n if ('error' in res) {\n let logs;\n if ('data' in res.error) {\n logs = res.error.data.logs;\n }\n throw new SendTransactionError(\n 'failed to send transaction: ' + res.error.message,\n logs,\n );\n }\n return res.result;\n }\n\n /**\n * @internal\n */\n _wsOnOpen() {\n this._rpcWebSocketConnected = true;\n this._rpcWebSocketHeartbeat = setInterval(() => {\n // Ping server every 5s to prevent idle timeouts\n this._rpcWebSocket.notify('ping').catch(() => {});\n }, 5000);\n this._updateSubscriptions();\n }\n\n /**\n * @internal\n */\n _wsOnError(err: Error) {\n this._rpcWebSocketConnected = false;\n console.error('ws error:', err.message);\n }\n\n /**\n * @internal\n */\n _wsOnClose(code: number) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketGeneration++;\n if (this._rpcWebSocketIdleTimeout) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n }\n if (this._rpcWebSocketHeartbeat) {\n clearInterval(this._rpcWebSocketHeartbeat);\n this._rpcWebSocketHeartbeat = null;\n }\n\n if (code === 1000) {\n // explicit close, check if any subscriptions have been made since close\n this._updateSubscriptions();\n return;\n }\n\n // implicit close, prepare subscriptions for auto-reconnect\n this._subscriptionCallbacksByServerSubscriptionId = {};\n Object.entries(\n this._subscriptionsByHash as Record,\n ).forEach(([hash, subscription]) => {\n this._subscriptionsByHash[hash] = {\n ...subscription,\n state: 'pending',\n };\n });\n }\n\n /**\n * @internal\n */\n async _updateSubscriptions() {\n if (Object.keys(this._subscriptionsByHash).length === 0) {\n if (this._rpcWebSocketConnected) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketIdleTimeout = setTimeout(() => {\n this._rpcWebSocketIdleTimeout = null;\n try {\n this._rpcWebSocket.close();\n } catch (err) {\n // swallow error if socket has already been closed.\n if (err instanceof Error) {\n console.log(\n `Error when closing socket connection: ${err.message}`,\n );\n }\n }\n }, 500);\n }\n return;\n }\n\n if (this._rpcWebSocketIdleTimeout !== null) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n this._rpcWebSocketConnected = true;\n }\n\n if (!this._rpcWebSocketConnected) {\n this._rpcWebSocket.connect();\n return;\n }\n\n const activeWebSocketGeneration = this._rpcWebSocketGeneration;\n const isCurrentConnectionStillActive = () => {\n return activeWebSocketGeneration === this._rpcWebSocketGeneration;\n };\n\n await Promise.all(\n // Don't be tempted to change this to `Object.entries`. We call\n // `_updateSubscriptions` recursively when processing the state,\n // so it's important that we look up the *current* version of\n // each subscription, every time we process a hash.\n Object.keys(this._subscriptionsByHash).map(async hash => {\n const subscription = this._subscriptionsByHash[hash];\n if (subscription === undefined) {\n // This entry has since been deleted. Skip.\n return;\n }\n switch (subscription.state) {\n case 'pending':\n case 'unsubscribed':\n if (subscription.callbacks.size === 0) {\n /**\n * You can end up here when:\n *\n * - a subscription has recently unsubscribed\n * without having new callbacks added to it\n * while the unsubscribe was in flight, or\n * - when a pending subscription has its\n * listeners removed before a request was\n * sent to the server.\n *\n * Being that nobody is interested in this\n * subscription any longer, delete it.\n */\n delete this._subscriptionsByHash[hash];\n if (subscription.state === 'unsubscribed') {\n delete this._subscriptionCallbacksByServerSubscriptionId[\n subscription.serverSubscriptionId\n ];\n }\n await this._updateSubscriptions();\n return;\n }\n await (async () => {\n const {args, method} = subscription;\n try {\n this._subscriptionsByHash[hash] = {\n ...subscription,\n state: 'subscribing',\n };\n const serverSubscriptionId: ServerSubscriptionId =\n (await this._rpcWebSocket.call(method, args)) as number;\n this._subscriptionsByHash[hash] = {\n ...subscription,\n serverSubscriptionId,\n state: 'subscribed',\n };\n this._subscriptionCallbacksByServerSubscriptionId[\n serverSubscriptionId\n ] = subscription.callbacks;\n await this._updateSubscriptions();\n } catch (e) {\n if (e instanceof Error) {\n console.error(\n `${method} error for argument`,\n args,\n e.message,\n );\n }\n if (!isCurrentConnectionStillActive()) {\n return;\n }\n // TODO: Maybe add an 'errored' state or a retry limit?\n this._subscriptionsByHash[hash] = {\n ...subscription,\n state: 'pending',\n };\n await this._updateSubscriptions();\n }\n })();\n break;\n case 'subscribed':\n if (subscription.callbacks.size === 0) {\n // By the time we successfully set up a subscription\n // with the server, the client stopped caring about it.\n // Tear it down now.\n await (async () => {\n const {serverSubscriptionId, unsubscribeMethod} = subscription;\n if (\n this._subscriptionsAutoDisposedByRpc.has(serverSubscriptionId)\n ) {\n /**\n * Special case.\n * If we're dealing with a subscription that has been auto-\n * disposed by the RPC, then we can skip the RPC call to\n * tear down the subscription here.\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.delete(\n serverSubscriptionId,\n );\n } else {\n this._subscriptionsByHash[hash] = {\n ...subscription,\n state: 'unsubscribing',\n };\n try {\n await this._rpcWebSocket.call(unsubscribeMethod, [\n serverSubscriptionId,\n ]);\n } catch (e) {\n if (e instanceof Error) {\n console.error(`${unsubscribeMethod} error:`, e.message);\n }\n if (!isCurrentConnectionStillActive()) {\n return;\n }\n // TODO: Maybe add an 'errored' state or a retry limit?\n this._subscriptionsByHash[hash] = {\n ...subscription,\n state: 'subscribed',\n };\n await this._updateSubscriptions();\n return;\n }\n }\n this._subscriptionsByHash[hash] = {\n ...subscription,\n state: 'unsubscribed',\n };\n await this._updateSubscriptions();\n })();\n }\n break;\n case 'subscribing':\n case 'unsubscribing':\n break;\n }\n }),\n );\n }\n\n /**\n * @internal\n */\n private _handleServerNotification<\n TCallback extends SubscriptionConfig['callback'],\n >(\n serverSubscriptionId: ServerSubscriptionId,\n callbackArgs: Parameters,\n ): void {\n const callbacks =\n this._subscriptionCallbacksByServerSubscriptionId[serverSubscriptionId];\n if (callbacks === undefined) {\n return;\n }\n callbacks.forEach(cb => {\n try {\n cb(\n // I failed to find a way to convince TypeScript that `cb` is of type\n // `TCallback` which is certainly compatible with `Parameters`.\n // See https://github.com/microsoft/TypeScript/issues/47615\n // @ts-ignore\n ...callbackArgs,\n );\n } catch (e) {\n console.error(e);\n }\n });\n }\n\n /**\n * @internal\n */\n _wsOnAccountNotification(notification: object) {\n const {result, subscription} = create(\n notification,\n AccountNotificationResult,\n );\n this._handleServerNotification(subscription, [\n result.value,\n result.context,\n ]);\n }\n\n /**\n * @internal\n */\n private _makeSubscription(\n subscriptionConfig: SubscriptionConfig,\n /**\n * When preparing `args` for a call to `_makeSubscription`, be sure\n * to carefully apply a default `commitment` property, if necessary.\n *\n * - If the user supplied a `commitment` use that.\n * - Otherwise, if the `Connection::commitment` is set, use that.\n * - Otherwise, set it to the RPC server default: `finalized`.\n *\n * This is extremely important to ensure that these two fundamentally\n * identical subscriptions produce the same identifying hash:\n *\n * - A subscription made without specifying a commitment.\n * - A subscription made where the commitment specified is the same\n * as the default applied to the subscription above.\n *\n * Example; these two subscriptions must produce the same hash:\n *\n * - An `accountSubscribe` subscription for `'PUBKEY'`\n * - An `accountSubscribe` subscription for `'PUBKEY'` with commitment\n * `'finalized'`.\n *\n * See the 'making a subscription with defaulted params omitted' test\n * in `connection-subscriptions.ts` for more.\n */\n args: IWSRequestParams,\n ): ClientSubscriptionId {\n const clientSubscriptionId = this._nextClientSubscriptionId++;\n const hash = fastStableStringify(\n [subscriptionConfig.method, args],\n true /* isArrayProp */,\n );\n const existingSubscription = this._subscriptionsByHash[hash];\n if (existingSubscription === undefined) {\n this._subscriptionsByHash[hash] = {\n ...subscriptionConfig,\n args,\n callbacks: new Set([subscriptionConfig.callback]),\n state: 'pending',\n };\n } else {\n existingSubscription.callbacks.add(subscriptionConfig.callback);\n }\n this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ] = async () => {\n delete this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ];\n const subscription = this._subscriptionsByHash[hash];\n assert(\n subscription !== undefined,\n `Could not find a \\`Subscription\\` when tearing down client subscription #${clientSubscriptionId}`,\n );\n subscription.callbacks.delete(subscriptionConfig.callback);\n await this._updateSubscriptions();\n };\n this._updateSubscriptions();\n return clientSubscriptionId;\n }\n\n /**\n * Register a callback to be invoked whenever the specified account changes\n *\n * @param publicKey Public key of the account to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param commitment Specify the commitment level account changes must reach before notification\n * @return subscription id\n */\n onAccountChange(\n publicKey: PublicKey,\n callback: AccountChangeCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [publicKey.toBase58()],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64',\n );\n return this._makeSubscription(\n {\n callback,\n method: 'accountSubscribe',\n unsubscribeMethod: 'accountUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister an account notification callback\n *\n * @param id client subscription id to deregister\n */\n async removeAccountChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'account change',\n );\n }\n\n /**\n * @internal\n */\n _wsOnProgramAccountNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n ProgramAccountNotificationResult,\n );\n this._handleServerNotification(subscription, [\n {\n accountId: result.value.pubkey,\n accountInfo: result.value.account,\n },\n result.context,\n ]);\n }\n\n /**\n * Register a callback to be invoked whenever accounts owned by the\n * specified program change\n *\n * @param programId Public key of the program to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param commitment Specify the commitment level account changes must reach before notification\n * @param filters The program account filters to pass into the RPC method\n * @return subscription id\n */\n onProgramAccountChange(\n programId: PublicKey,\n callback: ProgramAccountChangeCallback,\n commitment?: Commitment,\n filters?: GetProgramAccountsFilter[],\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [programId.toBase58()],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64' /* encoding */,\n filters ? {filters: filters} : undefined /* extra */,\n );\n return this._makeSubscription(\n {\n callback,\n method: 'programSubscribe',\n unsubscribeMethod: 'programUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister an account notification callback\n *\n * @param id client subscription id to deregister\n */\n async removeProgramAccountChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'program account change',\n );\n }\n\n /**\n * Registers a callback to be invoked whenever logs are emitted.\n */\n onLogs(\n filter: LogsFilter,\n callback: LogsCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [typeof filter === 'object' ? {mentions: [filter.toString()]} : filter],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n );\n return this._makeSubscription(\n {\n callback,\n method: 'logsSubscribe',\n unsubscribeMethod: 'logsUnsubscribe',\n },\n args,\n );\n }\n\n /**\n * Deregister a logs callback.\n *\n * @param id client subscription id to deregister.\n */\n async removeOnLogsListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(clientSubscriptionId, 'logs');\n }\n\n /**\n * @internal\n */\n _wsOnLogsNotification(notification: Object) {\n const {result, subscription} = create(notification, LogsNotificationResult);\n this._handleServerNotification(subscription, [\n result.value,\n result.context,\n ]);\n }\n\n /**\n * @internal\n */\n _wsOnSlotNotification(notification: Object) {\n const {result, subscription} = create(notification, SlotNotificationResult);\n this._handleServerNotification(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon slot changes\n *\n * @param callback Function to invoke whenever the slot changes\n * @return subscription id\n */\n onSlotChange(callback: SlotChangeCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'slotSubscribe',\n unsubscribeMethod: 'slotUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a slot notification callback\n *\n * @param id client subscription id to deregister\n */\n async removeSlotChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'slot change',\n );\n }\n\n /**\n * @internal\n */\n _wsOnSlotUpdatesNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n SlotUpdateNotificationResult,\n );\n this._handleServerNotification(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon slot updates. {@link SlotUpdate}'s\n * may be useful to track live progress of a cluster.\n *\n * @param callback Function to invoke whenever the slot updates\n * @return subscription id\n */\n onSlotUpdate(callback: SlotUpdateCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'slotsUpdatesSubscribe',\n unsubscribeMethod: 'slotsUpdatesUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a slot update notification callback\n *\n * @param id client subscription id to deregister\n */\n async removeSlotUpdateListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'slot update',\n );\n }\n\n /**\n * @internal\n */\n\n private async _unsubscribeClientSubscription(\n clientSubscriptionId: ClientSubscriptionId,\n subscriptionName: string,\n ) {\n const dispose =\n this._subscriptionDisposeFunctionsByClientSubscriptionId[\n clientSubscriptionId\n ];\n if (dispose) {\n await dispose();\n } else {\n console.warn(\n 'Ignored unsubscribe request because an active subscription with id ' +\n `\\`${clientSubscriptionId}\\` for '${subscriptionName}' events ` +\n 'could not be found.',\n );\n }\n }\n\n _buildArgs(\n args: Array,\n override?: Commitment,\n encoding?: 'jsonParsed' | 'base64',\n extra?: any,\n ): Array {\n const commitment = override || this._commitment;\n if (commitment || encoding || extra) {\n let options: any = {};\n if (encoding) {\n options.encoding = encoding;\n }\n if (commitment) {\n options.commitment = commitment;\n }\n if (extra) {\n options = Object.assign(options, extra);\n }\n args.push(options);\n }\n return args;\n }\n\n /**\n * @internal\n */\n _buildArgsAtLeastConfirmed(\n args: Array,\n override?: Finality,\n encoding?: 'jsonParsed' | 'base64',\n extra?: any,\n ): Array {\n const commitment = override || this._commitment;\n if (commitment && !['confirmed', 'finalized'].includes(commitment)) {\n throw new Error(\n 'Using Connection with default commitment: `' +\n this._commitment +\n '`, but method requires at least `confirmed`',\n );\n }\n return this._buildArgs(args, override, encoding, extra);\n }\n\n /**\n * @internal\n */\n _wsOnSignatureNotification(notification: Object) {\n const {result, subscription} = create(\n notification,\n SignatureNotificationResult,\n );\n if (result.value !== 'receivedSignature') {\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.add(subscription);\n }\n this._handleServerNotification(\n subscription,\n result.value === 'receivedSignature'\n ? [{type: 'received'}, result.context]\n : [{type: 'status', result: result.value}, result.context],\n );\n }\n\n /**\n * Register a callback to be invoked upon signature updates\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param commitment Specify the commitment level signature must reach before notification\n * @return subscription id\n */\n onSignature(\n signature: TransactionSignature,\n callback: SignatureResultCallback,\n commitment?: Commitment,\n ): ClientSubscriptionId {\n const args = this._buildArgs(\n [signature],\n commitment || this._commitment || 'finalized', // Apply connection/server default.\n );\n const clientSubscriptionId = this._makeSubscription(\n {\n callback: (notification, context) => {\n if (notification.type === 'status') {\n callback(notification.result, context);\n // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n try {\n this.removeSignatureListener(clientSubscriptionId);\n // eslint-disable-next-line no-empty\n } catch (_err) {\n // Already removed.\n }\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe',\n },\n args,\n );\n return clientSubscriptionId;\n }\n\n /**\n * Register a callback to be invoked when a transaction is\n * received and/or processed.\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param options Enable received notifications and set the commitment\n * level that signature must reach before notification\n * @return subscription id\n */\n onSignatureWithOptions(\n signature: TransactionSignature,\n callback: SignatureSubscriptionCallback,\n options?: SignatureSubscriptionOptions,\n ): ClientSubscriptionId {\n const {commitment, ...extra} = {\n ...options,\n commitment:\n (options && options.commitment) || this._commitment || 'finalized', // Apply connection/server default.\n };\n const args = this._buildArgs(\n [signature],\n commitment,\n undefined /* encoding */,\n extra,\n );\n const clientSubscriptionId = this._makeSubscription(\n {\n callback: (notification, context) => {\n callback(notification, context);\n // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n try {\n this.removeSignatureListener(clientSubscriptionId);\n // eslint-disable-next-line no-empty\n } catch (_err) {\n // Already removed.\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe',\n },\n args,\n );\n return clientSubscriptionId;\n }\n\n /**\n * Deregister a signature notification callback\n *\n * @param id client subscription id to deregister\n */\n async removeSignatureListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'signature result',\n );\n }\n\n /**\n * @internal\n */\n _wsOnRootNotification(notification: Object) {\n const {result, subscription} = create(notification, RootNotificationResult);\n this._handleServerNotification(subscription, [result]);\n }\n\n /**\n * Register a callback to be invoked upon root changes\n *\n * @param callback Function to invoke whenever the root changes\n * @return subscription id\n */\n onRootChange(callback: RootChangeCallback): ClientSubscriptionId {\n return this._makeSubscription(\n {\n callback,\n method: 'rootSubscribe',\n unsubscribeMethod: 'rootUnsubscribe',\n },\n [] /* args */,\n );\n }\n\n /**\n * Deregister a root notification callback\n *\n * @param id client subscription id to deregister\n */\n async removeRootChangeListener(\n clientSubscriptionId: ClientSubscriptionId,\n ): Promise {\n await this._unsubscribeClientSubscription(\n clientSubscriptionId,\n 'root change',\n );\n }\n}\n", "import nacl from 'tweetnacl';\n\nimport {PublicKey} from './publickey';\n\n/**\n * Keypair signer interface\n */\nexport interface Signer {\n publicKey: PublicKey;\n secretKey: Uint8Array;\n}\n\n/**\n * Ed25519 Keypair\n */\nexport interface Ed25519Keypair {\n publicKey: Uint8Array;\n secretKey: Uint8Array;\n}\n\n/**\n * An account keypair used for signing transactions.\n */\nexport class Keypair {\n private _keypair: Ed25519Keypair;\n\n /**\n * Create a new keypair instance.\n * Generate random keypair if no {@link Ed25519Keypair} is provided.\n *\n * @param keypair ed25519 keypair\n */\n constructor(keypair?: Ed25519Keypair) {\n if (keypair) {\n this._keypair = keypair;\n } else {\n this._keypair = nacl.sign.keyPair();\n }\n }\n\n /**\n * Generate a new random keypair\n */\n static generate(): Keypair {\n return new Keypair(nacl.sign.keyPair());\n }\n\n /**\n * Create a keypair from a raw secret key byte array.\n *\n * This method should only be used to recreate a keypair from a previously\n * generated secret key. Generating keypairs from a random seed should be done\n * with the {@link Keypair.fromSeed} method.\n *\n * @throws error if the provided secret key is invalid and validation is not skipped.\n *\n * @param secretKey secret key byte array\n * @param options: skip secret key validation\n */\n static fromSecretKey(\n secretKey: Uint8Array,\n options?: {skipValidation?: boolean},\n ): Keypair {\n const keypair = nacl.sign.keyPair.fromSecretKey(secretKey);\n if (!options || !options.skipValidation) {\n const encoder = new TextEncoder();\n const signData = encoder.encode('@solana/web3.js-validation-v1');\n const signature = nacl.sign.detached(signData, keypair.secretKey);\n if (!nacl.sign.detached.verify(signData, signature, keypair.publicKey)) {\n throw new Error('provided secretKey is invalid');\n }\n }\n return new Keypair(keypair);\n }\n\n /**\n * Generate a keypair from a 32 byte seed.\n *\n * @param seed seed byte array\n */\n static fromSeed(seed: Uint8Array): Keypair {\n return new Keypair(nacl.sign.keyPair.fromSeed(seed));\n }\n\n /**\n * The public key for this keypair\n */\n get publicKey(): PublicKey {\n return new PublicKey(this._keypair.publicKey);\n }\n\n /**\n * The raw secret key for this keypair\n */\n get secretKey(): Uint8Array {\n return this._keypair.secretKey;\n }\n}\n", "import {toBufferLE} from 'bigint-buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\n\nimport * as Layout from '../../layout';\nimport {PublicKey} from '../../publickey';\nimport * as bigintLayout from '../../utils/bigint';\nimport {SystemProgram} from '../system';\nimport {TransactionInstruction} from '../../transaction';\nimport {decodeData, encodeData, IInstructionInputData} from '../../instruction';\n\nexport * from './state';\n\nexport type CreateLookupTableParams = {\n /** Account used to derive and control the new address lookup table. */\n authority: PublicKey;\n /** Account that will fund the new address lookup table. */\n payer: PublicKey;\n /** A recent slot must be used in the derivation path for each initialized table. */\n recentSlot: bigint | number;\n};\n\nexport type FreezeLookupTableParams = {\n /** Address lookup table account to freeze. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n};\n\nexport type ExtendLookupTableParams = {\n /** Address lookup table account to extend. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n /** Account that will fund the table reallocation.\n * Not required if the reallocation has already been funded. */\n payer?: PublicKey;\n /** List of Public Keys to be added to the lookup table. */\n addresses: Array;\n};\n\nexport type DeactivateLookupTableParams = {\n /** Address lookup table account to deactivate. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n};\n\nexport type CloseLookupTableParams = {\n /** Address lookup table account to close. */\n lookupTable: PublicKey;\n /** Account which is the current authority. */\n authority: PublicKey;\n /** Recipient of closed account lamports. */\n recipient: PublicKey;\n};\n\n/**\n * An enumeration of valid LookupTableInstructionType's\n */\nexport type LookupTableInstructionType =\n | 'CreateLookupTable'\n | 'ExtendLookupTable'\n | 'CloseLookupTable'\n | 'FreezeLookupTable'\n | 'DeactivateLookupTable';\n\ntype LookupTableInstructionInputData = {\n CreateLookupTable: IInstructionInputData &\n Readonly<{\n recentSlot: bigint;\n bumpSeed: number;\n }>;\n FreezeLookupTable: IInstructionInputData;\n ExtendLookupTable: IInstructionInputData &\n Readonly<{\n numberOfAddresses: bigint;\n addresses: Array;\n }>;\n DeactivateLookupTable: IInstructionInputData;\n CloseLookupTable: IInstructionInputData;\n};\n\n/**\n * An enumeration of valid address lookup table InstructionType's\n * @internal\n */\nexport const LOOKUP_TABLE_INSTRUCTION_LAYOUTS = Object.freeze({\n CreateLookupTable: {\n index: 0,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['CreateLookupTable']\n >([\n BufferLayout.u32('instruction'),\n bigintLayout.u64('recentSlot'),\n BufferLayout.u8('bumpSeed'),\n ]),\n },\n FreezeLookupTable: {\n index: 1,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['FreezeLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n ExtendLookupTable: {\n index: 2,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['ExtendLookupTable']\n >([\n BufferLayout.u32('instruction'),\n bigintLayout.u64(),\n BufferLayout.seq(\n Layout.publicKey(),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'addresses',\n ),\n ]),\n },\n DeactivateLookupTable: {\n index: 3,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['DeactivateLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n CloseLookupTable: {\n index: 4,\n layout: BufferLayout.struct<\n LookupTableInstructionInputData['CloseLookupTable']\n >([BufferLayout.u32('instruction')]),\n },\n});\n\nexport class AddressLookupTableInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): LookupTableInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const index = instructionTypeLayout.decode(instruction.data);\n\n let type: LookupTableInstructionType | undefined;\n for (const [layoutType, layout] of Object.entries(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS,\n )) {\n if ((layout as any).index == index) {\n type = layoutType as LookupTableInstructionType;\n break;\n }\n }\n if (!type) {\n throw new Error(\n 'Invalid Instruction. Should be a LookupTable Instruction',\n );\n }\n return type;\n }\n\n static decodeCreateLookupTable(\n instruction: TransactionInstruction,\n ): CreateLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 4);\n\n const {recentSlot} = decodeData(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable,\n instruction.data,\n );\n\n return {\n authority: instruction.keys[1].pubkey,\n payer: instruction.keys[2].pubkey,\n recentSlot: Number(recentSlot),\n };\n }\n\n static decodeExtendLookupTable(\n instruction: TransactionInstruction,\n ): ExtendLookupTableParams {\n this.checkProgramId(instruction.programId);\n if (instruction.keys.length < 2) {\n throw new Error(\n `invalid instruction; found ${instruction.keys.length} keys, expected at least 2`,\n );\n }\n\n const {addresses} = decodeData(\n LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable,\n instruction.data,\n );\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n payer:\n instruction.keys.length > 2 ? instruction.keys[2].pubkey : undefined,\n addresses: addresses.map(buffer => new PublicKey(buffer)),\n };\n }\n\n static decodeCloseLookupTable(\n instruction: TransactionInstruction,\n ): CloseLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 3);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n recipient: instruction.keys[2].pubkey,\n };\n }\n\n static decodeFreezeLookupTable(\n instruction: TransactionInstruction,\n ): FreezeLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 2);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n };\n }\n\n static decodeDeactivateLookupTable(\n instruction: TransactionInstruction,\n ): DeactivateLookupTableParams {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 2);\n\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(AddressLookupTableProgram.programId)) {\n throw new Error(\n 'invalid instruction; programId is not AddressLookupTable Program',\n );\n }\n }\n /**\n * @internal\n */\n static checkKeysLength(keys: Array, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\nexport class AddressLookupTableProgram {\n /**\n * @internal\n */\n constructor() {}\n\n static programId: PublicKey = new PublicKey(\n 'AddressLookupTab1e1111111111111111111111111',\n );\n\n static createLookupTable(params: CreateLookupTableParams) {\n const [lookupTableAddress, bumpSeed] = PublicKey.findProgramAddressSync(\n [params.authority.toBuffer(), toBufferLE(BigInt(params.recentSlot), 8)],\n this.programId,\n );\n\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable;\n const data = encodeData(type, {\n recentSlot: BigInt(params.recentSlot),\n bumpSeed: bumpSeed,\n });\n\n const keys = [\n {\n pubkey: lookupTableAddress,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n {\n pubkey: params.payer,\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n ];\n\n return [\n new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n }),\n lookupTableAddress,\n ] as [TransactionInstruction, PublicKey];\n }\n\n static freezeLookupTable(params: FreezeLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.FreezeLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static extendLookupTable(params: ExtendLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable;\n const data = encodeData(type, {\n addresses: params.addresses.map(addr => addr.toBytes()),\n });\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n if (params.payer) {\n keys.push(\n {\n pubkey: params.payer,\n isSigner: true,\n isWritable: true,\n },\n {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false,\n },\n );\n }\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static deactivateLookupTable(params: DeactivateLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.DeactivateLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n\n static closeLookupTable(params: CloseLookupTableParams) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CloseLookupTable;\n const data = encodeData(type);\n\n const keys = [\n {\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true,\n },\n {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false,\n },\n {\n pubkey: params.recipient,\n isSigner: false,\n isWritable: true,\n },\n ];\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data,\n });\n }\n}\n", "import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport {u64} from '../utils/bigint';\n\n/**\n * Compute Budget Instruction class\n */\nexport class ComputeBudgetInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a compute budget instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): ComputeBudgetInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u8('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: ComputeBudgetInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS,\n )) {\n if (layout.index == typeIndex) {\n type = ixType as ComputeBudgetInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error(\n 'Instruction type incorrect; not a ComputeBudgetInstruction',\n );\n }\n\n return type;\n }\n\n /**\n * Decode request units compute budget instruction and retrieve the instruction params.\n */\n static decodeRequestUnits(\n instruction: TransactionInstruction,\n ): RequestUnitsParams {\n this.checkProgramId(instruction.programId);\n const {units, additionalFee} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits,\n instruction.data,\n );\n return {units, additionalFee};\n }\n\n /**\n * Decode request heap frame compute budget instruction and retrieve the instruction params.\n */\n static decodeRequestHeapFrame(\n instruction: TransactionInstruction,\n ): RequestHeapFrameParams {\n this.checkProgramId(instruction.programId);\n const {bytes} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame,\n instruction.data,\n );\n return {bytes};\n }\n\n /**\n * Decode set compute unit limit compute budget instruction and retrieve the instruction params.\n */\n static decodeSetComputeUnitLimit(\n instruction: TransactionInstruction,\n ): SetComputeUnitLimitParams {\n this.checkProgramId(instruction.programId);\n const {units} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit,\n instruction.data,\n );\n return {units};\n }\n\n /**\n * Decode set compute unit price compute budget instruction and retrieve the instruction params.\n */\n static decodeSetComputeUnitPrice(\n instruction: TransactionInstruction,\n ): SetComputeUnitPriceParams {\n this.checkProgramId(instruction.programId);\n const {microLamports} = decodeData(\n COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice,\n instruction.data,\n );\n return {microLamports};\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(ComputeBudgetProgram.programId)) {\n throw new Error(\n 'invalid instruction; programId is not ComputeBudgetProgram',\n );\n }\n }\n}\n\n/**\n * An enumeration of valid ComputeBudgetInstructionType's\n */\nexport type ComputeBudgetInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof ComputeBudgetInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'RequestUnits'\n | 'RequestHeapFrame'\n | 'SetComputeUnitLimit'\n | 'SetComputeUnitPrice';\n\ntype ComputeBudgetInstructionInputData = {\n RequestUnits: IInstructionInputData & Readonly;\n RequestHeapFrame: IInstructionInputData & Readonly;\n SetComputeUnitLimit: IInstructionInputData &\n Readonly;\n SetComputeUnitPrice: IInstructionInputData &\n Readonly;\n};\n\n/**\n * Request units instruction params\n */\nexport interface RequestUnitsParams {\n /** Units to request for transaction-wide compute */\n units: number;\n /** Prioritization fee lamports */\n additionalFee: number;\n}\n\n/**\n * Request heap frame instruction params\n */\nexport type RequestHeapFrameParams = {\n /** Requested transaction-wide program heap size in bytes. Must be multiple of 1024. Applies to each program, including CPIs. */\n bytes: number;\n};\n\n/**\n * Set compute unit limit instruction params\n */\nexport interface SetComputeUnitLimitParams {\n /** Transaction-wide compute unit limit */\n units: number;\n}\n\n/**\n * Set compute unit price instruction params\n */\nexport interface SetComputeUnitPriceParams {\n /** Transaction compute unit price used for prioritization fees */\n microLamports: number | bigint;\n}\n\n/**\n * An enumeration of valid ComputeBudget InstructionType's\n * @internal\n */\nexport const COMPUTE_BUDGET_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in ComputeBudgetInstructionType]: InstructionType<\n ComputeBudgetInstructionInputData[Instruction]\n >;\n}>({\n RequestUnits: {\n index: 0,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['RequestUnits']\n >([\n BufferLayout.u8('instruction'),\n BufferLayout.u32('units'),\n BufferLayout.u32('additionalFee'),\n ]),\n },\n RequestHeapFrame: {\n index: 1,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['RequestHeapFrame']\n >([BufferLayout.u8('instruction'), BufferLayout.u32('bytes')]),\n },\n SetComputeUnitLimit: {\n index: 2,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['SetComputeUnitLimit']\n >([BufferLayout.u8('instruction'), BufferLayout.u32('units')]),\n },\n SetComputeUnitPrice: {\n index: 3,\n layout: BufferLayout.struct<\n ComputeBudgetInstructionInputData['SetComputeUnitPrice']\n >([BufferLayout.u8('instruction'), u64('microLamports')]),\n },\n});\n\n/**\n * Factory class for transaction instructions to interact with the Compute Budget program\n */\nexport class ComputeBudgetProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Compute Budget program\n */\n static programId: PublicKey = new PublicKey(\n 'ComputeBudget111111111111111111111111111111',\n );\n\n static requestUnits(params: RequestUnitsParams): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static requestHeapFrame(\n params: RequestHeapFrameParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static setComputeUnitLimit(\n params: SetComputeUnitLimitParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n\n static setComputeUnitPrice(\n params: SetComputeUnitPriceParams,\n ): TransactionInstruction {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice;\n const data = encodeData(type, {\n microLamports: BigInt(params.microLamports),\n });\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data,\n });\n }\n}\n", "import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\nimport nacl from 'tweetnacl';\n\nimport {Keypair} from '../keypair';\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\n\nconst PRIVATE_KEY_BYTES = 64;\nconst PUBLIC_KEY_BYTES = 32;\nconst SIGNATURE_BYTES = 64;\n\n/**\n * Params for creating an ed25519 instruction using a public key\n */\nexport type CreateEd25519InstructionWithPublicKeyParams = {\n publicKey: Uint8Array;\n message: Uint8Array;\n signature: Uint8Array;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an ed25519 instruction using a private key\n */\nexport type CreateEd25519InstructionWithPrivateKeyParams = {\n privateKey: Uint8Array;\n message: Uint8Array;\n instructionIndex?: number;\n};\n\nconst ED25519_INSTRUCTION_LAYOUT = BufferLayout.struct<\n Readonly<{\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n numSignatures: number;\n padding: number;\n publicKeyInstructionIndex: number;\n publicKeyOffset: number;\n signatureInstructionIndex: number;\n signatureOffset: number;\n }>\n>([\n BufferLayout.u8('numSignatures'),\n BufferLayout.u8('padding'),\n BufferLayout.u16('signatureOffset'),\n BufferLayout.u16('signatureInstructionIndex'),\n BufferLayout.u16('publicKeyOffset'),\n BufferLayout.u16('publicKeyInstructionIndex'),\n BufferLayout.u16('messageDataOffset'),\n BufferLayout.u16('messageDataSize'),\n BufferLayout.u16('messageInstructionIndex'),\n]);\n\nexport class Ed25519Program {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the ed25519 program\n */\n static programId: PublicKey = new PublicKey(\n 'Ed25519SigVerify111111111111111111111111111',\n );\n\n /**\n * Create an ed25519 instruction with a public key and signature. The\n * public key must be a buffer that is 32 bytes long, and the signature\n * must be a buffer of 64 bytes.\n */\n static createInstructionWithPublicKey(\n params: CreateEd25519InstructionWithPublicKeyParams,\n ): TransactionInstruction {\n const {publicKey, message, signature, instructionIndex} = params;\n\n assert(\n publicKey.length === PUBLIC_KEY_BYTES,\n `Public Key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`,\n );\n\n assert(\n signature.length === SIGNATURE_BYTES,\n `Signature must be ${SIGNATURE_BYTES} bytes but received ${signature.length} bytes`,\n );\n\n const publicKeyOffset = ED25519_INSTRUCTION_LAYOUT.span;\n const signatureOffset = publicKeyOffset + publicKey.length;\n const messageDataOffset = signatureOffset + signature.length;\n const numSignatures = 1;\n\n const instructionData = Buffer.alloc(messageDataOffset + message.length);\n\n const index =\n instructionIndex == null\n ? 0xffff // An index of `u16::MAX` makes it default to the current instruction.\n : instructionIndex;\n\n ED25519_INSTRUCTION_LAYOUT.encode(\n {\n numSignatures,\n padding: 0,\n signatureOffset,\n signatureInstructionIndex: index,\n publicKeyOffset,\n publicKeyInstructionIndex: index,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: index,\n },\n instructionData,\n );\n\n instructionData.fill(publicKey, publicKeyOffset);\n instructionData.fill(signature, signatureOffset);\n instructionData.fill(message, messageDataOffset);\n\n return new TransactionInstruction({\n keys: [],\n programId: Ed25519Program.programId,\n data: instructionData,\n });\n }\n\n /**\n * Create an ed25519 instruction with a private key. The private key\n * must be a buffer that is 64 bytes long.\n */\n static createInstructionWithPrivateKey(\n params: CreateEd25519InstructionWithPrivateKeyParams,\n ): TransactionInstruction {\n const {privateKey, message, instructionIndex} = params;\n\n assert(\n privateKey.length === PRIVATE_KEY_BYTES,\n `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${privateKey.length} bytes`,\n );\n\n try {\n const keypair = Keypair.fromSecretKey(privateKey);\n const publicKey = keypair.publicKey.toBytes();\n const signature = nacl.sign.detached(message, keypair.secretKey);\n\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n instructionIndex,\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n}\n", "import {Buffer} from 'buffer';\nimport * as BufferLayout from '@solana/buffer-layout';\nimport secp256k1 from 'secp256k1';\nimport sha3 from 'js-sha3';\n\nimport {PublicKey} from '../publickey';\nimport {TransactionInstruction} from '../transaction';\nimport assert from '../utils/assert';\nimport {toBuffer} from '../utils/to-buffer';\n\nconst {publicKeyCreate, ecdsaSign} = secp256k1;\n\nconst PRIVATE_KEY_BYTES = 32;\nconst ETHEREUM_ADDRESS_BYTES = 20;\nconst PUBLIC_KEY_BYTES = 64;\nconst SIGNATURE_OFFSETS_SERIALIZED_SIZE = 11;\n\n/**\n * Params for creating an secp256k1 instruction using a public key\n */\nexport type CreateSecp256k1InstructionWithPublicKeyParams = {\n publicKey: Buffer | Uint8Array | Array;\n message: Buffer | Uint8Array | Array;\n signature: Buffer | Uint8Array | Array;\n recoveryId: number;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an secp256k1 instruction using an Ethereum address\n */\nexport type CreateSecp256k1InstructionWithEthAddressParams = {\n ethAddress: Buffer | Uint8Array | Array | string;\n message: Buffer | Uint8Array | Array;\n signature: Buffer | Uint8Array | Array;\n recoveryId: number;\n instructionIndex?: number;\n};\n\n/**\n * Params for creating an secp256k1 instruction using a private key\n */\nexport type CreateSecp256k1InstructionWithPrivateKeyParams = {\n privateKey: Buffer | Uint8Array | Array;\n message: Buffer | Uint8Array | Array;\n instructionIndex?: number;\n};\n\nconst SECP256K1_INSTRUCTION_LAYOUT = BufferLayout.struct<\n Readonly<{\n ethAddress: Uint8Array;\n ethAddressInstructionIndex: number;\n ethAddressOffset: number;\n messageDataOffset: number;\n messageDataSize: number;\n messageInstructionIndex: number;\n numSignatures: number;\n recoveryId: number;\n signature: Uint8Array;\n signatureInstructionIndex: number;\n signatureOffset: number;\n }>\n>([\n BufferLayout.u8('numSignatures'),\n BufferLayout.u16('signatureOffset'),\n BufferLayout.u8('signatureInstructionIndex'),\n BufferLayout.u16('ethAddressOffset'),\n BufferLayout.u8('ethAddressInstructionIndex'),\n BufferLayout.u16('messageDataOffset'),\n BufferLayout.u16('messageDataSize'),\n BufferLayout.u8('messageInstructionIndex'),\n BufferLayout.blob(20, 'ethAddress'),\n BufferLayout.blob(64, 'signature'),\n BufferLayout.u8('recoveryId'),\n]);\n\nexport class Secp256k1Program {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the secp256k1 program\n */\n static programId: PublicKey = new PublicKey(\n 'KeccakSecp256k11111111111111111111111111111',\n );\n\n /**\n * Construct an Ethereum address from a secp256k1 public key buffer.\n * @param {Buffer} publicKey a 64 byte secp256k1 public key buffer\n */\n static publicKeyToEthAddress(\n publicKey: Buffer | Uint8Array | Array,\n ): Buffer {\n assert(\n publicKey.length === PUBLIC_KEY_BYTES,\n `Public key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`,\n );\n\n try {\n return Buffer.from(\n sha3.keccak_256.update(toBuffer(publicKey)).digest(),\n ).slice(-ETHEREUM_ADDRESS_BYTES);\n } catch (error) {\n throw new Error(`Error constructing Ethereum address: ${error}`);\n }\n }\n\n /**\n * Create an secp256k1 instruction with a public key. The public key\n * must be a buffer that is 64 bytes long.\n */\n static createInstructionWithPublicKey(\n params: CreateSecp256k1InstructionWithPublicKeyParams,\n ): TransactionInstruction {\n const {publicKey, message, signature, recoveryId, instructionIndex} =\n params;\n return Secp256k1Program.createInstructionWithEthAddress({\n ethAddress: Secp256k1Program.publicKeyToEthAddress(publicKey),\n message,\n signature,\n recoveryId,\n instructionIndex,\n });\n }\n\n /**\n * Create an secp256k1 instruction with an Ethereum address. The address\n * must be a hex string or a buffer that is 20 bytes long.\n */\n static createInstructionWithEthAddress(\n params: CreateSecp256k1InstructionWithEthAddressParams,\n ): TransactionInstruction {\n const {\n ethAddress: rawAddress,\n message,\n signature,\n recoveryId,\n instructionIndex = 0,\n } = params;\n\n let ethAddress;\n if (typeof rawAddress === 'string') {\n if (rawAddress.startsWith('0x')) {\n ethAddress = Buffer.from(rawAddress.substr(2), 'hex');\n } else {\n ethAddress = Buffer.from(rawAddress, 'hex');\n }\n } else {\n ethAddress = rawAddress;\n }\n\n assert(\n ethAddress.length === ETHEREUM_ADDRESS_BYTES,\n `Address must be ${ETHEREUM_ADDRESS_BYTES} bytes but received ${ethAddress.length} bytes`,\n );\n\n const dataStart = 1 + SIGNATURE_OFFSETS_SERIALIZED_SIZE;\n const ethAddressOffset = dataStart;\n const signatureOffset = dataStart + ethAddress.length;\n const messageDataOffset = signatureOffset + signature.length + 1;\n const numSignatures = 1;\n\n const instructionData = Buffer.alloc(\n SECP256K1_INSTRUCTION_LAYOUT.span + message.length,\n );\n\n SECP256K1_INSTRUCTION_LAYOUT.encode(\n {\n numSignatures,\n signatureOffset,\n signatureInstructionIndex: instructionIndex,\n ethAddressOffset,\n ethAddressInstructionIndex: instructionIndex,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: instructionIndex,\n signature: toBuffer(signature),\n ethAddress: toBuffer(ethAddress),\n recoveryId,\n },\n instructionData,\n );\n\n instructionData.fill(toBuffer(message), SECP256K1_INSTRUCTION_LAYOUT.span);\n\n return new TransactionInstruction({\n keys: [],\n programId: Secp256k1Program.programId,\n data: instructionData,\n });\n }\n\n /**\n * Create an secp256k1 instruction with a private key. The private key\n * must be a buffer that is 32 bytes long.\n */\n static createInstructionWithPrivateKey(\n params: CreateSecp256k1InstructionWithPrivateKeyParams,\n ): TransactionInstruction {\n const {privateKey: pkey, message, instructionIndex} = params;\n\n assert(\n pkey.length === PRIVATE_KEY_BYTES,\n `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${pkey.length} bytes`,\n );\n\n try {\n const privateKey = toBuffer(pkey);\n const publicKey = publicKeyCreate(privateKey, false).slice(1); // throw away leading byte\n const messageHash = Buffer.from(\n sha3.keccak_256.update(toBuffer(message)).digest(),\n );\n const {signature, recid: recoveryId} = ecdsaSign(messageHash, privateKey);\n\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n recoveryId,\n instructionIndex,\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n}\n", "import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {PublicKey} from '../publickey';\nimport {SystemProgram} from './system';\nimport {\n SYSVAR_CLOCK_PUBKEY,\n SYSVAR_RENT_PUBKEY,\n SYSVAR_STAKE_HISTORY_PUBKEY,\n} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\n\n/**\n * Address of the stake config account which configures the rate\n * of stake warmup and cooldown as well as the slashing penalty.\n */\nexport const STAKE_CONFIG_ID = new PublicKey(\n 'StakeConfig11111111111111111111111111111111',\n);\n\n/**\n * Stake account authority info\n */\nexport class Authorized {\n /** stake authority */\n staker: PublicKey;\n /** withdraw authority */\n withdrawer: PublicKey;\n\n /**\n * Create a new Authorized object\n * @param staker the stake authority\n * @param withdrawer the withdraw authority\n */\n constructor(staker: PublicKey, withdrawer: PublicKey) {\n this.staker = staker;\n this.withdrawer = withdrawer;\n }\n}\n\ntype AuthorizedRaw = Readonly<{\n staker: Uint8Array;\n withdrawer: Uint8Array;\n}>;\n\n/**\n * Stake account lockup info\n */\nexport class Lockup {\n /** Unix timestamp of lockup expiration */\n unixTimestamp: number;\n /** Epoch of lockup expiration */\n epoch: number;\n /** Lockup custodian authority */\n custodian: PublicKey;\n\n /**\n * Create a new Lockup object\n */\n constructor(unixTimestamp: number, epoch: number, custodian: PublicKey) {\n this.unixTimestamp = unixTimestamp;\n this.epoch = epoch;\n this.custodian = custodian;\n }\n\n /**\n * Default, inactive Lockup value\n */\n static default: Lockup = new Lockup(0, 0, PublicKey.default);\n}\n\ntype LockupRaw = Readonly<{\n custodian: Uint8Array;\n epoch: number;\n unixTimestamp: number;\n}>;\n\n/**\n * Create stake account transaction params\n */\nexport type CreateStakeAccountParams = {\n /** Address of the account which will fund creation */\n fromPubkey: PublicKey;\n /** Address of the new stake account */\n stakePubkey: PublicKey;\n /** Authorities of the new stake account */\n authorized: Authorized;\n /** Lockup of the new stake account */\n lockup?: Lockup;\n /** Funding amount */\n lamports: number;\n};\n\n/**\n * Create stake account with seed transaction params\n */\nexport type CreateStakeAccountWithSeedParams = {\n fromPubkey: PublicKey;\n stakePubkey: PublicKey;\n basePubkey: PublicKey;\n seed: string;\n authorized: Authorized;\n lockup?: Lockup;\n lamports: number;\n};\n\n/**\n * Initialize stake instruction params\n */\nexport type InitializeStakeParams = {\n stakePubkey: PublicKey;\n authorized: Authorized;\n lockup?: Lockup;\n};\n\n/**\n * Delegate stake instruction params\n */\nexport type DelegateStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n votePubkey: PublicKey;\n};\n\n/**\n * Authorize stake instruction params\n */\nexport type AuthorizeStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n newAuthorizedPubkey: PublicKey;\n stakeAuthorizationType: StakeAuthorizationType;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Authorize stake instruction params using a derived key\n */\nexport type AuthorizeWithSeedStakeParams = {\n stakePubkey: PublicKey;\n authorityBase: PublicKey;\n authoritySeed: string;\n authorityOwner: PublicKey;\n newAuthorizedPubkey: PublicKey;\n stakeAuthorizationType: StakeAuthorizationType;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Split stake instruction params\n */\nexport type SplitStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n splitStakePubkey: PublicKey;\n lamports: number;\n};\n\n/**\n * Split with seed transaction params\n */\nexport type SplitStakeWithSeedParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n splitStakePubkey: PublicKey;\n basePubkey: PublicKey;\n seed: string;\n lamports: number;\n};\n\n/**\n * Withdraw stake instruction params\n */\nexport type WithdrawStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n toPubkey: PublicKey;\n lamports: number;\n custodianPubkey?: PublicKey;\n};\n\n/**\n * Deactivate stake instruction params\n */\nexport type DeactivateStakeParams = {\n stakePubkey: PublicKey;\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Merge stake instruction params\n */\nexport type MergeStakeParams = {\n stakePubkey: PublicKey;\n sourceStakePubKey: PublicKey;\n authorizedPubkey: PublicKey;\n};\n\n/**\n * Stake Instruction class\n */\nexport class StakeInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a stake instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): StakeInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: StakeInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(STAKE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as StakeInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a StakeInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode a initialize stake instruction and retrieve the instruction params.\n */\n static decodeInitialize(\n instruction: TransactionInstruction,\n ): InitializeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {authorized, lockup} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Initialize,\n instruction.data,\n );\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorized: new Authorized(\n new PublicKey(authorized.staker),\n new PublicKey(authorized.withdrawer),\n ),\n lockup: new Lockup(\n lockup.unixTimestamp,\n lockup.epoch,\n new PublicKey(lockup.custodian),\n ),\n };\n }\n\n /**\n * Decode a delegate stake instruction and retrieve the instruction params.\n */\n static decodeDelegate(\n instruction: TransactionInstruction,\n ): DelegateStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 6);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Delegate, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n votePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[5].pubkey,\n };\n }\n\n /**\n * Decode an authorize stake instruction and retrieve the instruction params.\n */\n static decodeAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {newAuthorized, stakeAuthorizationType} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Authorize,\n instruction.data,\n );\n\n const o: AuthorizeStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType,\n },\n };\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n return o;\n }\n\n /**\n * Decode an authorize-with-seed stake instruction and retrieve the instruction params.\n */\n static decodeAuthorizeWithSeed(\n instruction: TransactionInstruction,\n ): AuthorizeWithSeedStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n\n const {\n newAuthorized,\n stakeAuthorizationType,\n authoritySeed,\n authorityOwner,\n } = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed,\n instruction.data,\n );\n\n const o: AuthorizeWithSeedStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n authorityBase: instruction.keys[1].pubkey,\n authoritySeed: authoritySeed,\n authorityOwner: new PublicKey(authorityOwner),\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType,\n },\n };\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n return o;\n }\n\n /**\n * Decode a split stake instruction and retrieve the instruction params.\n */\n static decodeSplit(instruction: TransactionInstruction): SplitStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {lamports} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Split,\n instruction.data,\n );\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n splitStakePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n lamports,\n };\n }\n\n /**\n * Decode a merge stake instruction and retrieve the instruction params.\n */\n static decodeMerge(instruction: TransactionInstruction): MergeStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Merge, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n sourceStakePubKey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n };\n }\n\n /**\n * Decode a withdraw stake instruction and retrieve the instruction params.\n */\n static decodeWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n const {lamports} = decodeData(\n STAKE_INSTRUCTION_LAYOUTS.Withdraw,\n instruction.data,\n );\n\n const o: WithdrawStakeParams = {\n stakePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports,\n };\n if (instruction.keys.length > 5) {\n o.custodianPubkey = instruction.keys[5].pubkey;\n }\n return o;\n }\n\n /**\n * Decode a deactivate stake instruction and retrieve the instruction params.\n */\n static decodeDeactivate(\n instruction: TransactionInstruction,\n ): DeactivateStakeParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData(STAKE_INSTRUCTION_LAYOUTS.Deactivate, instruction.data);\n\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(StakeProgram.programId)) {\n throw new Error('invalid instruction; programId is not StakeProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid StakeInstructionType's\n */\nexport type StakeInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof StakeInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n | 'Authorize'\n | 'AuthorizeWithSeed'\n | 'Deactivate'\n | 'Delegate'\n | 'Initialize'\n | 'Merge'\n | 'Split'\n | 'Withdraw';\n\ntype StakeInstructionInputData = {\n Authorize: IInstructionInputData &\n Readonly<{\n newAuthorized: Uint8Array;\n stakeAuthorizationType: number;\n }>;\n AuthorizeWithSeed: IInstructionInputData &\n Readonly<{\n authorityOwner: Uint8Array;\n authoritySeed: string;\n instruction: number;\n newAuthorized: Uint8Array;\n stakeAuthorizationType: number;\n }>;\n Deactivate: IInstructionInputData;\n Delegate: IInstructionInputData;\n Initialize: IInstructionInputData &\n Readonly<{\n authorized: AuthorizedRaw;\n lockup: LockupRaw;\n }>;\n Merge: IInstructionInputData;\n Split: IInstructionInputData &\n Readonly<{\n lamports: number;\n }>;\n Withdraw: IInstructionInputData &\n Readonly<{\n lamports: number;\n }>;\n};\n\n/**\n * An enumeration of valid stake InstructionType's\n * @internal\n */\nexport const STAKE_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in StakeInstructionType]: InstructionType<\n StakeInstructionInputData[Instruction]\n >;\n}>({\n Initialize: {\n index: 0,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.authorized(),\n Layout.lockup(),\n ]),\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('stakeAuthorizationType'),\n ]),\n },\n Delegate: {\n index: 2,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n ]),\n },\n Split: {\n index: 3,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n Withdraw: {\n index: 4,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n Deactivate: {\n index: 5,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n ]),\n },\n Merge: {\n index: 7,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n ]),\n },\n AuthorizeWithSeed: {\n index: 8,\n layout: BufferLayout.struct(\n [\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('stakeAuthorizationType'),\n Layout.rustString('authoritySeed'),\n Layout.publicKey('authorityOwner'),\n ],\n ),\n },\n});\n\n/**\n * Stake authorization type\n */\nexport type StakeAuthorizationType = {\n /** The Stake Authorization index (from solana-stake-program) */\n index: number;\n};\n\n/**\n * An enumeration of valid StakeAuthorizationLayout's\n */\nexport const StakeAuthorizationLayout = Object.freeze({\n Staker: {\n index: 0,\n },\n Withdrawer: {\n index: 1,\n },\n});\n\n/**\n * Factory class for transactions to interact with the Stake program\n */\nexport class StakeProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Stake program\n */\n static programId: PublicKey = new PublicKey(\n 'Stake11111111111111111111111111111111111111',\n );\n\n /**\n * Max space of a Stake account\n *\n * This is generated from the solana-stake-program StakeState struct as\n * `StakeState::size_of()`:\n * https://docs.rs/solana-stake-program/latest/solana_stake_program/stake_state/enum.StakeState.html\n */\n static space: number = 200;\n\n /**\n * Generate an Initialize instruction to add to a Stake Create transaction\n */\n static initialize(params: InitializeStakeParams): TransactionInstruction {\n const {stakePubkey, authorized, lockup: maybeLockup} = params;\n const lockup: Lockup = maybeLockup || Lockup.default;\n const type = STAKE_INSTRUCTION_LAYOUTS.Initialize;\n const data = encodeData(type, {\n authorized: {\n staker: toBuffer(authorized.staker.toBuffer()),\n withdrawer: toBuffer(authorized.withdrawer.toBuffer()),\n },\n lockup: {\n unixTimestamp: lockup.unixTimestamp,\n epoch: lockup.epoch,\n custodian: toBuffer(lockup.custodian.toBuffer()),\n },\n });\n const instructionData = {\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a Transaction that creates a new Stake account at\n * an address generated with `from`, a seed, and the Stake programId\n */\n static createAccountWithSeed(\n params: CreateStakeAccountWithSeedParams,\n ): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n const {stakePubkey, authorized, lockup} = params;\n return transaction.add(this.initialize({stakePubkey, authorized, lockup}));\n }\n\n /**\n * Generate a Transaction that creates a new Stake account\n */\n static createAccount(params: CreateStakeAccountParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n const {stakePubkey, authorized, lockup} = params;\n return transaction.add(this.initialize({stakePubkey, authorized, lockup}));\n }\n\n /**\n * Generate a Transaction that delegates Stake tokens to a validator\n * Vote PublicKey. This transaction can also be used to redelegate Stake\n * to a new validator Vote PublicKey.\n */\n static delegate(params: DelegateStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey, votePubkey} = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.Delegate;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: votePubkey, isSigner: false, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: STAKE_CONFIG_ID, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n static authorize(params: AuthorizeStakeParams): Transaction {\n const {\n stakePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey,\n } = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n });\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: true},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({pubkey: custodianPubkey, isSigner: false, isWritable: false});\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n static authorizeWithSeed(params: AuthorizeWithSeedStakeParams): Transaction {\n const {\n stakePubkey,\n authorityBase,\n authoritySeed,\n authorityOwner,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey,\n } = params;\n\n const type = STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n authoritySeed: authoritySeed,\n authorityOwner: toBuffer(authorityOwner.toBuffer()),\n });\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: authorityBase, isSigner: true, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({pubkey: custodianPubkey, isSigner: false, isWritable: false});\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * @internal\n */\n static splitInstruction(params: SplitStakeParams): TransactionInstruction {\n const {stakePubkey, authorizedPubkey, splitStakePubkey, lamports} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Split;\n const data = encodeData(type, {lamports});\n return new TransactionInstruction({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: splitStakePubkey, isSigner: false, isWritable: true},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that splits Stake tokens into another stake account\n */\n static split(params: SplitStakeParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.authorizedPubkey,\n newAccountPubkey: params.splitStakePubkey,\n lamports: 0,\n space: this.space,\n programId: this.programId,\n }),\n );\n return transaction.add(this.splitInstruction(params));\n }\n\n /**\n * Generate a Transaction that splits Stake tokens into another account\n * derived from a base public key and seed\n */\n static splitWithSeed(params: SplitStakeWithSeedParams): Transaction {\n const {\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n basePubkey,\n seed,\n lamports,\n } = params;\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.allocate({\n accountPubkey: splitStakePubkey,\n basePubkey,\n seed,\n space: this.space,\n programId: this.programId,\n }),\n );\n return transaction.add(\n this.splitInstruction({\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n lamports,\n }),\n );\n }\n\n /**\n * Generate a Transaction that merges Stake accounts.\n */\n static merge(params: MergeStakeParams): Transaction {\n const {stakePubkey, sourceStakePubKey, authorizedPubkey} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Merge;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: sourceStakePubKey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that withdraws deactivated Stake tokens.\n */\n static withdraw(params: WithdrawStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey, toPubkey, lamports, custodianPubkey} =\n params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {lamports});\n\n const keys = [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: toPubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n if (custodianPubkey) {\n keys.push({pubkey: custodianPubkey, isSigner: false, isWritable: false});\n }\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a Transaction that deactivates Stake tokens.\n */\n static deactivate(params: DeactivateStakeParams): Transaction {\n const {stakePubkey, authorizedPubkey} = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Deactivate;\n const data = encodeData(type);\n\n return new Transaction().add({\n keys: [\n {pubkey: stakePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n });\n }\n}\n", "import * as BufferLayout from '@solana/buffer-layout';\n\nimport {\n encodeData,\n decodeData,\n InstructionType,\n IInstructionInputData,\n} from '../instruction';\nimport * as Layout from '../layout';\nimport {PublicKey} from '../publickey';\nimport {SystemProgram} from './system';\nimport {SYSVAR_CLOCK_PUBKEY, SYSVAR_RENT_PUBKEY} from '../sysvar';\nimport {Transaction, TransactionInstruction} from '../transaction';\nimport {toBuffer} from '../utils/to-buffer';\n\n/**\n * Vote account info\n */\nexport class VoteInit {\n nodePubkey: PublicKey;\n authorizedVoter: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number; /** [0, 100] */\n\n constructor(\n nodePubkey: PublicKey,\n authorizedVoter: PublicKey,\n authorizedWithdrawer: PublicKey,\n commission: number,\n ) {\n this.nodePubkey = nodePubkey;\n this.authorizedVoter = authorizedVoter;\n this.authorizedWithdrawer = authorizedWithdrawer;\n this.commission = commission;\n }\n}\n\n/**\n * Create vote account transaction params\n */\nexport type CreateVoteAccountParams = {\n fromPubkey: PublicKey;\n votePubkey: PublicKey;\n voteInit: VoteInit;\n lamports: number;\n};\n\n/**\n * InitializeAccount instruction params\n */\nexport type InitializeAccountParams = {\n votePubkey: PublicKey;\n nodePubkey: PublicKey;\n voteInit: VoteInit;\n};\n\n/**\n * Authorize instruction params\n */\nexport type AuthorizeVoteParams = {\n votePubkey: PublicKey;\n /** Current vote or withdraw authority, depending on `voteAuthorizationType` */\n authorizedPubkey: PublicKey;\n newAuthorizedPubkey: PublicKey;\n voteAuthorizationType: VoteAuthorizationType;\n};\n\n/**\n * Withdraw from vote account transaction params\n */\nexport type WithdrawFromVoteAccountParams = {\n votePubkey: PublicKey;\n authorizedWithdrawerPubkey: PublicKey;\n lamports: number;\n toPubkey: PublicKey;\n};\n\n/**\n * Vote Instruction class\n */\nexport class VoteInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Decode a vote instruction and retrieve the instruction type.\n */\n static decodeInstructionType(\n instruction: TransactionInstruction,\n ): VoteInstructionType {\n this.checkProgramId(instruction.programId);\n\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n\n let type: VoteInstructionType | undefined;\n for (const [ixType, layout] of Object.entries(VOTE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType as VoteInstructionType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a VoteInstruction');\n }\n\n return type;\n }\n\n /**\n * Decode an initialize vote instruction and retrieve the instruction params.\n */\n static decodeInitializeAccount(\n instruction: TransactionInstruction,\n ): InitializeAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 4);\n\n const {voteInit} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.InitializeAccount,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n nodePubkey: instruction.keys[3].pubkey,\n voteInit: new VoteInit(\n new PublicKey(voteInit.nodePubkey),\n new PublicKey(voteInit.authorizedVoter),\n new PublicKey(voteInit.authorizedWithdrawer),\n voteInit.commission,\n ),\n };\n }\n\n /**\n * Decode an authorize instruction and retrieve the instruction params.\n */\n static decodeAuthorize(\n instruction: TransactionInstruction,\n ): AuthorizeVoteParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {newAuthorized, voteAuthorizationType} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.Authorize,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n voteAuthorizationType: {\n index: voteAuthorizationType,\n },\n };\n }\n\n /**\n * Decode a withdraw instruction and retrieve the instruction params.\n */\n static decodeWithdraw(\n instruction: TransactionInstruction,\n ): WithdrawFromVoteAccountParams {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n\n const {lamports} = decodeData(\n VOTE_INSTRUCTION_LAYOUTS.Withdraw,\n instruction.data,\n );\n\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedWithdrawerPubkey: instruction.keys[2].pubkey,\n lamports,\n toPubkey: instruction.keys[1].pubkey,\n };\n }\n\n /**\n * @internal\n */\n static checkProgramId(programId: PublicKey) {\n if (!programId.equals(VoteProgram.programId)) {\n throw new Error('invalid instruction; programId is not VoteProgram');\n }\n }\n\n /**\n * @internal\n */\n static checkKeyLength(keys: Array, expectedLength: number) {\n if (keys.length < expectedLength) {\n throw new Error(\n `invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`,\n );\n }\n }\n}\n\n/**\n * An enumeration of valid VoteInstructionType's\n */\nexport type VoteInstructionType =\n // FIXME\n // It would be preferable for this type to be `keyof VoteInstructionInputData`\n // but Typedoc does not transpile `keyof` expressions.\n // See https://github.com/TypeStrong/typedoc/issues/1894\n 'Authorize' | 'InitializeAccount' | 'Withdraw';\n\ntype VoteInstructionInputData = {\n Authorize: IInstructionInputData & {\n newAuthorized: Uint8Array;\n voteAuthorizationType: number;\n };\n InitializeAccount: IInstructionInputData & {\n voteInit: Readonly<{\n authorizedVoter: Uint8Array;\n authorizedWithdrawer: Uint8Array;\n commission: number;\n nodePubkey: Uint8Array;\n }>;\n };\n Withdraw: IInstructionInputData & {\n lamports: number;\n };\n};\n\nconst VOTE_INSTRUCTION_LAYOUTS = Object.freeze<{\n [Instruction in VoteInstructionType]: InstructionType<\n VoteInstructionInputData[Instruction]\n >;\n}>({\n InitializeAccount: {\n index: 0,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.voteInit(),\n ]),\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n Layout.publicKey('newAuthorized'),\n BufferLayout.u32('voteAuthorizationType'),\n ]),\n },\n Withdraw: {\n index: 3,\n layout: BufferLayout.struct([\n BufferLayout.u32('instruction'),\n BufferLayout.ns64('lamports'),\n ]),\n },\n});\n\n/**\n * VoteAuthorize type\n */\nexport type VoteAuthorizationType = {\n /** The VoteAuthorize index (from solana-vote-program) */\n index: number;\n};\n\n/**\n * An enumeration of valid VoteAuthorization layouts.\n */\nexport const VoteAuthorizationLayout = Object.freeze({\n Voter: {\n index: 0,\n },\n Withdrawer: {\n index: 1,\n },\n});\n\n/**\n * Factory class for transactions to interact with the Vote program\n */\nexport class VoteProgram {\n /**\n * @internal\n */\n constructor() {}\n\n /**\n * Public key that identifies the Vote program\n */\n static programId: PublicKey = new PublicKey(\n 'Vote111111111111111111111111111111111111111',\n );\n\n /**\n * Max space of a Vote account\n *\n * This is generated from the solana-vote-program VoteState struct as\n * `VoteState::size_of()`:\n * https://docs.rs/solana-vote-program/1.9.5/solana_vote_program/vote_state/struct.VoteState.html#method.size_of\n */\n static space: number = 3731;\n\n /**\n * Generate an Initialize instruction.\n */\n static initializeAccount(\n params: InitializeAccountParams,\n ): TransactionInstruction {\n const {votePubkey, nodePubkey, voteInit} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.InitializeAccount;\n const data = encodeData(type, {\n voteInit: {\n nodePubkey: toBuffer(voteInit.nodePubkey.toBuffer()),\n authorizedVoter: toBuffer(voteInit.authorizedVoter.toBuffer()),\n authorizedWithdrawer: toBuffer(\n voteInit.authorizedWithdrawer.toBuffer(),\n ),\n commission: voteInit.commission,\n },\n });\n const instructionData = {\n keys: [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: nodePubkey, isSigner: true, isWritable: false},\n ],\n programId: this.programId,\n data,\n };\n return new TransactionInstruction(instructionData);\n }\n\n /**\n * Generate a transaction that creates a new Vote account.\n */\n static createAccount(params: CreateVoteAccountParams): Transaction {\n const transaction = new Transaction();\n transaction.add(\n SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.votePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId,\n }),\n );\n\n return transaction.add(\n this.initializeAccount({\n votePubkey: params.votePubkey,\n nodePubkey: params.voteInit.nodePubkey,\n voteInit: params.voteInit,\n }),\n );\n }\n\n /**\n * Generate a transaction that authorizes a new Voter or Withdrawer on the Vote account.\n */\n static authorize(params: AuthorizeVoteParams): Transaction {\n const {\n votePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n voteAuthorizationType,\n } = params;\n\n const type = VOTE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n voteAuthorizationType: voteAuthorizationType.index,\n });\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false},\n {pubkey: authorizedPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n\n /**\n * Generate a transaction to withdraw from a Vote account.\n */\n static withdraw(params: WithdrawFromVoteAccountParams): Transaction {\n const {votePubkey, authorizedWithdrawerPubkey, lamports, toPubkey} = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {lamports});\n\n const keys = [\n {pubkey: votePubkey, isSigner: false, isWritable: true},\n {pubkey: toPubkey, isSigner: false, isWritable: true},\n {pubkey: authorizedWithdrawerPubkey, isSigner: true, isWritable: false},\n ];\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data,\n });\n }\n}\n", "import {Buffer} from 'buffer';\nimport {\n assert as assertType,\n optional,\n string,\n type as pick,\n} from 'superstruct';\n\nimport * as Layout from './layout';\nimport * as shortvec from './utils/shortvec-encoding';\nimport {PublicKey} from './publickey';\n\nexport const VALIDATOR_INFO_KEY = new PublicKey(\n 'Va1idator1nfo111111111111111111111111111111',\n);\n\n/**\n * @internal\n */\ntype ConfigKey = {\n publicKey: PublicKey;\n isSigner: boolean;\n};\n\n/**\n * Info used to identity validators.\n */\nexport type Info = {\n /** validator name */\n name: string;\n /** optional, validator website */\n website?: string;\n /** optional, extra information the validator chose to share */\n details?: string;\n /** optional, used to identify validators on keybase.io */\n keybaseUsername?: string;\n};\n\nconst InfoString = pick({\n name: string(),\n website: optional(string()),\n details: optional(string()),\n keybaseUsername: optional(string()),\n});\n\n/**\n * ValidatorInfo class\n */\nexport class ValidatorInfo {\n /**\n * validator public key\n */\n key: PublicKey;\n /**\n * validator information\n */\n info: Info;\n\n /**\n * Construct a valid ValidatorInfo\n *\n * @param key validator public key\n * @param info validator information\n */\n constructor(key: PublicKey, info: Info) {\n this.key = key;\n this.info = info;\n }\n\n /**\n * Deserialize ValidatorInfo from the config account data. Exactly two config\n * keys are required in the data.\n *\n * @param buffer config account data\n * @return null if info was not found\n */\n static fromConfigData(\n buffer: Buffer | Uint8Array | Array,\n ): ValidatorInfo | null {\n const PUBKEY_LENGTH = 32;\n\n let byteArray = [...buffer];\n const configKeyCount = shortvec.decodeLength(byteArray);\n if (configKeyCount !== 2) return null;\n\n const configKeys: Array = [];\n for (let i = 0; i < 2; i++) {\n const publicKey = new PublicKey(byteArray.slice(0, PUBKEY_LENGTH));\n byteArray = byteArray.slice(PUBKEY_LENGTH);\n const isSigner = byteArray.slice(0, 1)[0] === 1;\n byteArray = byteArray.slice(1);\n configKeys.push({publicKey, isSigner});\n }\n\n if (configKeys[0].publicKey.equals(VALIDATOR_INFO_KEY)) {\n if (configKeys[1].isSigner) {\n const rawInfo: any = Layout.rustString().decode(Buffer.from(byteArray));\n const info = JSON.parse(rawInfo as string);\n assertType(info, InfoString);\n return new ValidatorInfo(configKeys[1].publicKey, info);\n }\n }\n\n return null;\n }\n}\n", "import * as BufferLayout from '@solana/buffer-layout';\nimport type {Buffer} from 'buffer';\n\nimport * as Layout from './layout';\nimport {PublicKey} from './publickey';\nimport {toBuffer} from './utils/to-buffer';\n\nexport const VOTE_PROGRAM_ID = new PublicKey(\n 'Vote111111111111111111111111111111111111111',\n);\n\nexport type Lockout = {\n slot: number;\n confirmationCount: number;\n};\n\n/**\n * History of how many credits earned by the end of each epoch\n */\nexport type EpochCredits = Readonly<{\n epoch: number;\n credits: number;\n prevCredits: number;\n}>;\n\nexport type AuthorizedVoter = Readonly<{\n epoch: number;\n authorizedVoter: PublicKey;\n}>;\n\ntype AuthorizedVoterRaw = Readonly<{\n authorizedVoter: Uint8Array;\n epoch: number;\n}>;\n\ntype PriorVoters = Readonly<{\n buf: PriorVoterRaw[];\n idx: number;\n isEmpty: number;\n}>;\n\nexport type PriorVoter = Readonly<{\n authorizedPubkey: PublicKey;\n epochOfLastAuthorizedSwitch: number;\n targetEpoch: number;\n}>;\n\ntype PriorVoterRaw = Readonly<{\n authorizedPubkey: Uint8Array;\n epochOfLastAuthorizedSwitch: number;\n targetEpoch: number;\n}>;\n\nexport type BlockTimestamp = Readonly<{\n slot: number;\n timestamp: number;\n}>;\n\ntype VoteAccountData = Readonly<{\n authorizedVoters: AuthorizedVoterRaw[];\n authorizedWithdrawer: Uint8Array;\n commission: number;\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n nodePubkey: Uint8Array;\n priorVoters: PriorVoters;\n rootSlot: number;\n rootSlotValid: number;\n votes: Lockout[];\n}>;\n\n/**\n * See https://github.com/solana-labs/solana/blob/8a12ed029cfa38d4a45400916c2463fb82bbec8c/programs/vote_api/src/vote_state.rs#L68-L88\n *\n * @internal\n */\nconst VoteAccountLayout = BufferLayout.struct([\n Layout.publicKey('nodePubkey'),\n Layout.publicKey('authorizedWithdrawer'),\n BufferLayout.u8('commission'),\n BufferLayout.nu64(), // votes.length\n BufferLayout.seq(\n BufferLayout.struct([\n BufferLayout.nu64('slot'),\n BufferLayout.u32('confirmationCount'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'votes',\n ),\n BufferLayout.u8('rootSlotValid'),\n BufferLayout.nu64('rootSlot'),\n BufferLayout.nu64(), // authorizedVoters.length\n BufferLayout.seq(\n BufferLayout.struct([\n BufferLayout.nu64('epoch'),\n Layout.publicKey('authorizedVoter'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'authorizedVoters',\n ),\n BufferLayout.struct(\n [\n BufferLayout.seq(\n BufferLayout.struct([\n Layout.publicKey('authorizedPubkey'),\n BufferLayout.nu64('epochOfLastAuthorizedSwitch'),\n BufferLayout.nu64('targetEpoch'),\n ]),\n 32,\n 'buf',\n ),\n BufferLayout.nu64('idx'),\n BufferLayout.u8('isEmpty'),\n ],\n 'priorVoters',\n ),\n BufferLayout.nu64(), // epochCredits.length\n BufferLayout.seq(\n BufferLayout.struct([\n BufferLayout.nu64('epoch'),\n BufferLayout.nu64('credits'),\n BufferLayout.nu64('prevCredits'),\n ]),\n BufferLayout.offset(BufferLayout.u32(), -8),\n 'epochCredits',\n ),\n BufferLayout.struct(\n [BufferLayout.nu64('slot'), BufferLayout.nu64('timestamp')],\n 'lastTimestamp',\n ),\n]);\n\ntype VoteAccountArgs = {\n nodePubkey: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number;\n rootSlot: number | null;\n votes: Lockout[];\n authorizedVoters: AuthorizedVoter[];\n priorVoters: PriorVoter[];\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n};\n\n/**\n * VoteAccount class\n */\nexport class VoteAccount {\n nodePubkey: PublicKey;\n authorizedWithdrawer: PublicKey;\n commission: number;\n rootSlot: number | null;\n votes: Lockout[];\n authorizedVoters: AuthorizedVoter[];\n priorVoters: PriorVoter[];\n epochCredits: EpochCredits[];\n lastTimestamp: BlockTimestamp;\n\n /**\n * @internal\n */\n constructor(args: VoteAccountArgs) {\n this.nodePubkey = args.nodePubkey;\n this.authorizedWithdrawer = args.authorizedWithdrawer;\n this.commission = args.commission;\n this.rootSlot = args.rootSlot;\n this.votes = args.votes;\n this.authorizedVoters = args.authorizedVoters;\n this.priorVoters = args.priorVoters;\n this.epochCredits = args.epochCredits;\n this.lastTimestamp = args.lastTimestamp;\n }\n\n /**\n * Deserialize VoteAccount from the account data.\n *\n * @param buffer account data\n * @return VoteAccount\n */\n static fromAccountData(\n buffer: Buffer | Uint8Array | Array,\n ): VoteAccount {\n const versionOffset = 4;\n const va = VoteAccountLayout.decode(toBuffer(buffer), versionOffset);\n\n let rootSlot: number | null = va.rootSlot;\n if (!va.rootSlotValid) {\n rootSlot = null;\n }\n\n return new VoteAccount({\n nodePubkey: new PublicKey(va.nodePubkey),\n authorizedWithdrawer: new PublicKey(va.authorizedWithdrawer),\n commission: va.commission,\n votes: va.votes,\n rootSlot,\n authorizedVoters: va.authorizedVoters.map(parseAuthorizedVoter),\n priorVoters: getPriorVoters(va.priorVoters),\n epochCredits: va.epochCredits,\n lastTimestamp: va.lastTimestamp,\n });\n }\n}\n\nfunction parseAuthorizedVoter({\n authorizedVoter,\n epoch,\n}: AuthorizedVoterRaw): AuthorizedVoter {\n return {\n epoch,\n authorizedVoter: new PublicKey(authorizedVoter),\n };\n}\n\nfunction parsePriorVoters({\n authorizedPubkey,\n epochOfLastAuthorizedSwitch,\n targetEpoch,\n}: PriorVoterRaw): PriorVoter {\n return {\n authorizedPubkey: new PublicKey(authorizedPubkey),\n epochOfLastAuthorizedSwitch,\n targetEpoch,\n };\n}\n\nfunction getPriorVoters({buf, idx, isEmpty}: PriorVoters): PriorVoter[] {\n if (isEmpty) {\n return [];\n }\n\n return [\n ...buf.slice(idx + 1).map(parsePriorVoters),\n ...buf.slice(0, idx).map(parsePriorVoters),\n ];\n}\n", "const endpoint = {\n http: {\n devnet: 'http://api.devnet.solana.com',\n testnet: 'http://api.testnet.solana.com',\n 'mainnet-beta': 'http://api.mainnet-beta.solana.com/',\n },\n https: {\n devnet: 'https://api.devnet.solana.com',\n testnet: 'https://api.testnet.solana.com',\n 'mainnet-beta': 'https://api.mainnet-beta.solana.com/',\n },\n};\n\nexport type Cluster = 'devnet' | 'testnet' | 'mainnet-beta';\n\n/**\n * Retrieves the RPC API URL for the specified cluster\n */\nexport function clusterApiUrl(cluster?: Cluster, tls?: boolean): string {\n const key = tls === false ? 'http' : 'https';\n\n if (!cluster) {\n return endpoint[key]['devnet'];\n }\n\n const url = endpoint[key][cluster];\n if (!url) {\n throw new Error(`Unknown ${key} cluster: ${cluster}`);\n }\n return url;\n}\n", "import type {Buffer} from 'buffer';\n\nimport {\n BlockheightBasedTransactionConfirmationStrategy,\n Connection,\n} from '../connection';\nimport type {TransactionSignature} from '../transaction';\nimport type {ConfirmOptions} from '../connection';\n\n/**\n * Send and confirm a raw transaction\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Buffer} rawTransaction\n * @param {BlockheightBasedTransactionConfirmationStrategy} confirmationStrategy\n * @param {ConfirmOptions} [options]\n * @returns {Promise}\n */\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n confirmationStrategy: BlockheightBasedTransactionConfirmationStrategy,\n options?: ConfirmOptions,\n): Promise;\n\n/**\n * @deprecated Calling `sendAndConfirmRawTransaction()` without a `confirmationStrategy`\n * is no longer supported and will be removed in a future version.\n */\n// eslint-disable-next-line no-redeclare\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n options?: ConfirmOptions,\n): Promise;\n\n// eslint-disable-next-line no-redeclare\nexport async function sendAndConfirmRawTransaction(\n connection: Connection,\n rawTransaction: Buffer,\n confirmationStrategyOrConfirmOptions:\n | BlockheightBasedTransactionConfirmationStrategy\n | ConfirmOptions\n | undefined,\n maybeConfirmOptions?: ConfirmOptions,\n): Promise {\n let confirmationStrategy:\n | BlockheightBasedTransactionConfirmationStrategy\n | undefined;\n let options: ConfirmOptions | undefined;\n if (\n confirmationStrategyOrConfirmOptions &&\n Object.prototype.hasOwnProperty.call(\n confirmationStrategyOrConfirmOptions,\n 'lastValidBlockHeight',\n )\n ) {\n confirmationStrategy =\n confirmationStrategyOrConfirmOptions as BlockheightBasedTransactionConfirmationStrategy;\n options = maybeConfirmOptions;\n } else {\n options = confirmationStrategyOrConfirmOptions as\n | ConfirmOptions\n | undefined;\n }\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n minContextSlot: options.minContextSlot,\n };\n\n const signature = await connection.sendRawTransaction(\n rawTransaction,\n sendOptions,\n );\n\n const commitment = options && options.commitment;\n const confirmationPromise = confirmationStrategy\n ? connection.confirmTransaction(confirmationStrategy, commitment)\n : connection.confirmTransaction(signature, commitment);\n const status = (await confirmationPromise).value;\n\n if (status.err) {\n throw new Error(\n `Raw transaction ${signature} failed (${JSON.stringify(status)})`,\n );\n }\n\n return signature;\n}\n", "export * from './account';\nexport * from './blockhash';\nexport * from './bpf-loader-deprecated';\nexport * from './bpf-loader';\nexport * from './connection';\nexport * from './epoch-schedule';\nexport * from './errors';\nexport * from './fee-calculator';\nexport * from './keypair';\nexport * from './loader';\nexport * from './message';\nexport * from './nonce-account';\nexport * from './programs';\nexport * from './publickey';\nexport * from './transaction';\nexport * from './validator-info';\nexport * from './vote-account';\nexport * from './sysvar';\nexport * from './utils';\n\n/**\n * There are 1-billion lamports in one SOL\n */\nexport const LAMPORTS_PER_SOL = 1000000000;\n", "import { PublicKey } from '@solana/web3.js';\n\n/** Address of the SPL Token program */\nexport const TOKEN_PROGRAM_ID = new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');\n\n/** Address of the SPL Token 2022 program */\nexport const TOKEN_2022_PROGRAM_ID = new PublicKey('TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb');\n\n/** Address of the SPL Associated Token Account program */\nexport const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL');\n\n/** Address of the special mint for wrapped native SOL in spl-token */\nexport const NATIVE_MINT = new PublicKey('So11111111111111111111111111111111111111112');\n\n/** Address of the special mint for wrapped native SOL in spl-token-2022 */\nexport const NATIVE_MINT_2022 = new PublicKey('9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP');\n\n/** Check that the token program provided is not `Tokenkeg...`, useful when using extensions */\nexport function programSupportsExtensions(programId: PublicKey): boolean {\n if (programId === TOKEN_PROGRAM_ID) {\n return false;\n } else {\n return true;\n }\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface AmountToUiAmountInstructionData {\n instruction: TokenInstruction.AmountToUiAmount;\n amount: bigint;\n}\n\n/** TODO: docs */\nexport const amountToUiAmountInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n]);\n\n/**\n * Construct a AmountToUiAmount instruction\n *\n * @param mint Public key of the mint\n * @param amount Amount of tokens to be converted to UiAmount\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createAmountToUiAmountInstruction(\n mint: PublicKey,\n amount: number | bigint,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [{ pubkey: mint, isSigner: false, isWritable: false }];\n\n const data = Buffer.alloc(amountToUiAmountInstructionData.span);\n amountToUiAmountInstructionData.encode(\n {\n instruction: TokenInstruction.AmountToUiAmount,\n amount: BigInt(amount),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid AmountToUiAmount instruction */\nexport interface DecodedAmountToUiAmountInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.AmountToUiAmount;\n amount: bigint;\n };\n}\n\n/**\n * Decode a AmountToUiAmount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeAmountToUiAmountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedAmountToUiAmountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== amountToUiAmountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint },\n data,\n } = decodeAmountToUiAmountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.AmountToUiAmount) throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n },\n data,\n };\n}\n\n/** A decoded, non-validated AmountToUiAmount instruction */\nexport interface DecodedAmountToUiAmountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n amount: bigint;\n };\n}\n\n/**\n * Decode a AmountToUiAmount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeAmountToUiAmountInstructionUnchecked({\n programId,\n keys: [mint],\n data,\n}: TransactionInstruction): DecodedAmountToUiAmountInstructionUnchecked {\n return {\n programId,\n keys: {\n mint,\n },\n data: amountToUiAmountInstructionData.decode(data),\n };\n}\n", null, null, "/*\r\n * bignumber.js v9.1.0\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\nvar\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return \u00B10 if x is \u00B10 or y is \u00B1Infinity, or return \u00B1Infinity as y is \u00B10.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on \u00B1Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is \u00B1Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and \u00B1Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, \u00B1Infinity, \u00B10 or \u00B11, or n is \u00B1Infinity, NaN or \u00B10.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to \u00B1Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to \u00B1Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to \u00B10: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = \u00B1Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return \u00B10, else return \u00B1Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, \u00B1Infinity or \u00B10?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return \u00B1Infinity if either is \u00B1Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return \u00B10 if either is \u00B10.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return \u00B1Infinity if either \u00B1Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is \u00B1Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n // Node.js v10.12.0+\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n// These functions don't need access to variables,\r\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\nfunction bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// EXPORT\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n", null, null, null, "/** Base class for errors */\nexport abstract class TokenError extends Error {\n constructor(message?: string) {\n super(message);\n }\n}\n\n/** Thrown if an account is not found at the expected address */\nexport class TokenAccountNotFoundError extends TokenError {\n name = 'TokenAccountNotFoundError';\n}\n\n/** Thrown if a program state account is not a valid Account */\nexport class TokenInvalidAccountError extends TokenError {\n name = 'TokenInvalidAccountError';\n}\n\n/** Thrown if a program state account is not owned by the expected token program */\nexport class TokenInvalidAccountOwnerError extends TokenError {\n name = 'TokenInvalidAccountOwnerError';\n}\n\n/** Thrown if the byte length of an program state account doesn't match the expected size */\nexport class TokenInvalidAccountSizeError extends TokenError {\n name = 'TokenInvalidAccountSizeError';\n}\n\n/** Thrown if the mint of a token account doesn't match the expected mint */\nexport class TokenInvalidMintError extends TokenError {\n name = 'TokenInvalidMintError';\n}\n\n/** Thrown if the owner of a token account doesn't match the expected owner */\nexport class TokenInvalidOwnerError extends TokenError {\n name = 'TokenInvalidOwnerError';\n}\n\n/** Thrown if the owner of a token account is a PDA (Program Derived Address) */\nexport class TokenOwnerOffCurveError extends TokenError {\n name = 'TokenOwnerOffCurveError';\n}\n\n/** Thrown if an instruction's program is invalid */\nexport class TokenInvalidInstructionProgramError extends TokenError {\n name = 'TokenInvalidInstructionProgramError';\n}\n\n/** Thrown if an instruction's keys are invalid */\nexport class TokenInvalidInstructionKeysError extends TokenError {\n name = 'TokenInvalidInstructionKeysError';\n}\n\n/** Thrown if an instruction's data is invalid */\nexport class TokenInvalidInstructionDataError extends TokenError {\n name = 'TokenInvalidInstructionDataError';\n}\n\n/** Thrown if an instruction's type is invalid */\nexport class TokenInvalidInstructionTypeError extends TokenError {\n name = 'TokenInvalidInstructionTypeError';\n}\n\n/** Thrown if the program does not support the desired instruction */\nexport class TokenUnsupportedInstructionError extends TokenError {\n name = 'TokenUnsupportedInstructionError';\n}\n", "/** Instructions defined by the program */\nexport enum TokenInstruction {\n InitializeMint = 0,\n InitializeAccount = 1,\n InitializeMultisig = 2,\n Transfer = 3,\n Approve = 4,\n Revoke = 5,\n SetAuthority = 6,\n MintTo = 7,\n Burn = 8,\n CloseAccount = 9,\n FreezeAccount = 10,\n ThawAccount = 11,\n TransferChecked = 12,\n ApproveChecked = 13,\n MintToChecked = 14,\n BurnChecked = 15,\n InitializeAccount2 = 16,\n SyncNative = 17,\n InitializeAccount3 = 18,\n InitializeMultisig2 = 19,\n InitializeMint2 = 20,\n GetAccountDataSize = 21,\n InitializeImmutableOwner = 22,\n AmountToUiAmount = 23,\n UiAmountToAmount = 24,\n InitializeMintCloseAuthority = 25,\n TransferFeeExtension = 26,\n ConfidentialTransferExtension = 27,\n DefaultAccountStateExtension = 28,\n Reallocate = 29,\n MemoTransferExtension = 30,\n CreateNativeMint = 31,\n InitializeNonTransferableMint = 32,\n InterestBearingMintExtension = 33,\n}\n", "import type { Connection, PublicKey, Signer, TransactionError } from '@solana/web3.js';\nimport { Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createAmountToUiAmountInstruction } from '../instructions/amountToUiAmount.js';\n\n/**\n * Amount as a string using mint-prescribed decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Mint for the account\n * @param amount Amount of tokens to be converted to Ui Amount\n * @param programId SPL Token program account\n *\n * @return Ui Amount generated\n */\nexport async function amountToUiAmount(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n amount: number | bigint,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const transaction = new Transaction().add(createAmountToUiAmountInstruction(mint, amount, programId));\n const { returnData, err } = (await connection.simulateTransaction(transaction, [payer], false)).value;\n if (returnData?.data) {\n return Buffer.from(returnData.data[0], returnData.data[1]).toString('utf-8');\n }\n return err;\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface ApproveInstructionData {\n instruction: TokenInstruction.Approve;\n amount: bigint;\n}\n\n/** TODO: docs */\nexport const approveInstructionData = struct([u8('instruction'), u64('amount')]);\n\n/**\n * Construct an Approve instruction\n *\n * @param account Account to set the delegate for\n * @param delegate Account authorized to transfer tokens from the account\n * @param owner Owner of the account\n * @param amount Maximum number of tokens the delegate may transfer\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createApproveInstruction(\n account: PublicKey,\n delegate: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: delegate, isSigner: false, isWritable: false },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(approveInstructionData.span);\n approveInstructionData.encode(\n {\n instruction: TokenInstruction.Approve,\n amount: BigInt(amount),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid Approve instruction */\nexport interface DecodedApproveInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n delegate: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.Approve;\n amount: bigint;\n };\n}\n\n/**\n * Decode an Approve instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeApproveInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedApproveInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== approveInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, delegate, owner, multiSigners },\n data,\n } = decodeApproveInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Approve) throw new TokenInvalidInstructionTypeError();\n if (!account || !delegate || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n delegate,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated Approve instruction */\nexport interface DecodedApproveInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n delegate: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n };\n}\n\n/**\n * Decode an Approve instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeApproveInstructionUnchecked({\n programId,\n keys: [account, delegate, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedApproveInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n delegate,\n owner,\n multiSigners,\n },\n data: approveInstructionData.decode(data),\n };\n}\n", "import type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\n\n/** @internal */\nexport function addSigners(keys: AccountMeta[], ownerOrAuthority: PublicKey, multiSigners: Signer[]): AccountMeta[] {\n if (multiSigners.length) {\n keys.push({ pubkey: ownerOrAuthority, isSigner: false, isWritable: false });\n for (const signer of multiSigners) {\n keys.push({ pubkey: signer.publicKey, isSigner: true, isWritable: false });\n }\n } else {\n keys.push({ pubkey: ownerOrAuthority, isSigner: true, isWritable: false });\n }\n return keys;\n}\n", "import type { Signer } from '@solana/web3.js';\nimport { PublicKey } from '@solana/web3.js';\n\n/** @internal */\nexport function getSigners(signerOrMultisig: Signer | PublicKey, multiSigners: Signer[]): [PublicKey, Signer[]] {\n return signerOrMultisig instanceof PublicKey\n ? [signerOrMultisig, multiSigners]\n : [signerOrMultisig.publicKey, [signerOrMultisig]];\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createApproveInstruction } from '../instructions/approve.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Approve a delegate to transfer up to a maximum number of tokens from an account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Address of the token account\n * @param delegate Account authorized to transfer tokens from the account\n * @param owner Owner of the account\n * @param amount Maximum number of tokens the delegate may transfer\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function approve(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n delegate: PublicKey,\n owner: Signer | PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createApproveInstruction(account, delegate, ownerPublicKey, amount, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface ApproveCheckedInstructionData {\n instruction: TokenInstruction.ApproveChecked;\n amount: bigint;\n decimals: number;\n}\n\n/** TODO: docs */\nexport const approveCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n\n/**\n * Construct an ApproveChecked instruction\n *\n * @param account Account to set the delegate for\n * @param mint Mint account\n * @param delegate Account authorized to transfer of tokens from the account\n * @param owner Owner of the account\n * @param amount Maximum number of tokens the delegate may transfer\n * @param decimals Number of decimals in approve amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createApproveCheckedInstruction(\n account: PublicKey,\n mint: PublicKey,\n delegate: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: delegate, isSigner: false, isWritable: false },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(approveCheckedInstructionData.span);\n approveCheckedInstructionData.encode(\n {\n instruction: TokenInstruction.ApproveChecked,\n amount: BigInt(amount),\n decimals,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid ApproveChecked instruction */\nexport interface DecodedApproveCheckedInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n delegate: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.ApproveChecked;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode an ApproveChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeApproveCheckedInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedApproveCheckedInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== approveCheckedInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, delegate, owner, multiSigners },\n data,\n } = decodeApproveCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.ApproveChecked) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !delegate || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n delegate,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated ApproveChecked instruction */\nexport interface DecodedApproveCheckedInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n delegate: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode an ApproveChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeApproveCheckedInstructionUnchecked({\n programId,\n keys: [account, mint, delegate, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedApproveCheckedInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n delegate,\n owner,\n multiSigners,\n },\n data: approveCheckedInstructionData.decode(data),\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createApproveCheckedInstruction } from '../instructions/approveChecked.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Approve a delegate to transfer up to a maximum number of tokens from an account, asserting the token mint and\n * decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Address of the account\n * @param delegate Account authorized to perform a transfer tokens from the source account\n * @param owner Owner of the source account\n * @param amount Maximum number of tokens the delegate may transfer\n * @param decimals Number of decimals in approve amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function approveChecked(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n account: PublicKey,\n delegate: PublicKey,\n owner: Signer | PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createApproveCheckedInstruction(\n account,\n mint,\n delegate,\n ownerPublicKey,\n amount,\n decimals,\n multiSigners,\n programId\n )\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface BurnInstructionData {\n instruction: TokenInstruction.Burn;\n amount: bigint;\n}\n\n/** TODO: docs */\nexport const burnInstructionData = struct([u8('instruction'), u64('amount')]);\n\n/**\n * Construct a Burn instruction\n *\n * @param account Account to burn tokens from\n * @param mint Mint for the account\n * @param owner Owner of the account\n * @param amount Number of tokens to burn\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createBurnInstruction(\n account: PublicKey,\n mint: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: true },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(burnInstructionData.span);\n burnInstructionData.encode(\n {\n instruction: TokenInstruction.Burn,\n amount: BigInt(amount),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid Burn instruction */\nexport interface DecodedBurnInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.Burn;\n amount: bigint;\n };\n}\n\n/**\n * Decode a Burn instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeBurnInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedBurnInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== burnInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, owner, multiSigners },\n data,\n } = decodeBurnInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Burn) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated Burn instruction */\nexport interface DecodedBurnInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n };\n}\n\n/**\n * Decode a Burn instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeBurnInstructionUnchecked({\n programId,\n keys: [account, mint, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedBurnInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data: burnInstructionData.decode(data),\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createBurnInstruction } from '../instructions/burn.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Burn tokens from an account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to burn tokens from\n * @param mint Mint for the account\n * @param owner Account owner\n * @param amount Amount to burn\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function burn(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n mint: PublicKey,\n owner: Signer | PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createBurnInstruction(account, mint, ownerPublicKey, amount, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface BurnCheckedInstructionData {\n instruction: TokenInstruction.BurnChecked;\n amount: bigint;\n decimals: number;\n}\n\n/** TODO: docs */\nexport const burnCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n\n/**\n * Construct a BurnChecked instruction\n *\n * @param mint Mint for the account\n * @param account Account to burn tokens from\n * @param owner Owner of the account\n * @param amount Number of tokens to burn\n * @param decimals Number of decimals in burn amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createBurnCheckedInstruction(\n account: PublicKey,\n mint: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: true },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(burnCheckedInstructionData.span);\n burnCheckedInstructionData.encode(\n {\n instruction: TokenInstruction.BurnChecked,\n amount: BigInt(amount),\n decimals,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid BurnChecked instruction */\nexport interface DecodedBurnCheckedInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.BurnChecked;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a BurnChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeBurnCheckedInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedBurnCheckedInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== burnCheckedInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, owner, multiSigners },\n data,\n } = decodeBurnCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.BurnChecked) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated BurnChecked instruction */\nexport interface DecodedBurnCheckedInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a BurnChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeBurnCheckedInstructionUnchecked({\n programId,\n keys: [account, mint, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedBurnCheckedInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data: burnCheckedInstructionData.decode(data),\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createBurnCheckedInstruction } from '../instructions/burnChecked.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Burn tokens from an account, asserting the token mint and decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to burn tokens from\n * @param mint Mint for the account\n * @param owner Account owner\n * @param amount Amount to burn\n * @param decimals Number of decimals in amount to burn\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function burnChecked(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n mint: PublicKey,\n owner: Signer | PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createBurnCheckedInstruction(account, mint, ownerPublicKey, amount, decimals, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface CloseAccountInstructionData {\n instruction: TokenInstruction.CloseAccount;\n}\n\n/** TODO: docs */\nexport const closeAccountInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a CloseAccount instruction\n *\n * @param account Account to close\n * @param destination Account to receive the remaining balance of the closed account\n * @param authority Account close authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createCloseAccountInstruction(\n account: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(closeAccountInstructionData.span);\n closeAccountInstructionData.encode({ instruction: TokenInstruction.CloseAccount }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid CloseAccount instruction */\nexport interface DecodedCloseAccountInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.CloseAccount;\n };\n}\n\n/**\n * Decode a CloseAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeCloseAccountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedCloseAccountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== closeAccountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, destination, authority, multiSigners },\n data,\n } = decodeCloseAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.CloseAccount) throw new TokenInvalidInstructionTypeError();\n if (!account || !destination || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n destination,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated CloseAccount instruction */\nexport interface DecodedCloseAccountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a CloseAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeCloseAccountInstructionUnchecked({\n programId,\n keys: [account, destination, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedCloseAccountInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n destination,\n authority,\n multiSigners,\n },\n data: closeAccountInstructionData.decode(data),\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createCloseAccountInstruction } from '../instructions/closeAccount.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Close a token account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to close\n * @param destination Account to receive the remaining balance of the closed account\n * @param authority Authority which is allowed to close the account\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function closeAccount(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n destination: PublicKey,\n authority: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createCloseAccountInstruction(account, destination, authorityPublicKey, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import { struct, u32, u8 } from '@solana/buffer-layout';\nimport { publicKey, u64 } from '@solana/buffer-layout-utils';\nimport type { AccountInfo, Commitment, Connection, PublicKey } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenAccountNotFoundError,\n TokenInvalidAccountError,\n TokenInvalidAccountOwnerError,\n TokenInvalidAccountSizeError,\n} from '../errors.js';\nimport { ACCOUNT_TYPE_SIZE, AccountType } from '../extensions/accountType.js';\nimport type { ExtensionType } from '../extensions/extensionType.js';\nimport { getAccountLen } from '../extensions/extensionType.js';\nimport { MULTISIG_SIZE } from './multisig.js';\n\n/** Information about a token account */\nexport interface Account {\n /** Address of the account */\n address: PublicKey;\n /** Mint associated with the account */\n mint: PublicKey;\n /** Owner of the account */\n owner: PublicKey;\n /** Number of tokens the account holds */\n amount: bigint;\n /** Authority that can transfer tokens from the account */\n delegate: PublicKey | null;\n /** Number of tokens the delegate is authorized to transfer */\n delegatedAmount: bigint;\n /** True if the account is initialized */\n isInitialized: boolean;\n /** True if the account is frozen */\n isFrozen: boolean;\n /** True if the account is a native token account */\n isNative: boolean;\n /**\n * If the account is a native token account, it must be rent-exempt. The rent-exempt reserve is the amount that must\n * remain in the balance until the account is closed.\n */\n rentExemptReserve: bigint | null;\n /** Optional authority to close the account */\n closeAuthority: PublicKey | null;\n tlvData: Buffer;\n}\n\n/** Token account state as stored by the program */\nexport enum AccountState {\n Uninitialized = 0,\n Initialized = 1,\n Frozen = 2,\n}\n\n/** Token account as stored by the program */\nexport interface RawAccount {\n mint: PublicKey;\n owner: PublicKey;\n amount: bigint;\n delegateOption: 1 | 0;\n delegate: PublicKey;\n state: AccountState;\n isNativeOption: 1 | 0;\n isNative: bigint;\n delegatedAmount: bigint;\n closeAuthorityOption: 1 | 0;\n closeAuthority: PublicKey;\n}\n\n/** Buffer layout for de/serializing a token account */\nexport const AccountLayout = struct([\n publicKey('mint'),\n publicKey('owner'),\n u64('amount'),\n u32('delegateOption'),\n publicKey('delegate'),\n u8('state'),\n u32('isNativeOption'),\n u64('isNative'),\n u64('delegatedAmount'),\n u32('closeAuthorityOption'),\n publicKey('closeAuthority'),\n]);\n\n/** Byte length of a token account */\nexport const ACCOUNT_SIZE = AccountLayout.span;\n\n/**\n * Retrieve information about a token account\n *\n * @param connection Connection to use\n * @param address Token account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Token account information\n */\nexport async function getAccount(\n connection: Connection,\n address: PublicKey,\n commitment?: Commitment,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const info = await connection.getAccountInfo(address, commitment);\n return unpackAccount(address, info, programId);\n}\n\n/**\n * Retrieve information about multiple token accounts in a single RPC call\n *\n * @param connection Connection to use\n * @param addresses Token accounts\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Token account information\n */\nexport async function getMultipleAccounts(\n connection: Connection,\n addresses: PublicKey[],\n commitment?: Commitment,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const infos = await connection.getMultipleAccountsInfo(addresses, commitment);\n return addresses.map((address, i) => unpackAccount(address, infos[i], programId));\n}\n\n/** Get the minimum lamport balance for a base token account to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptAccount(\n connection: Connection,\n commitment?: Commitment\n): Promise {\n return await getMinimumBalanceForRentExemptAccountWithExtensions(connection, [], commitment);\n}\n\n/** Get the minimum lamport balance for a rent-exempt token account with extensions\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptAccountWithExtensions(\n connection: Connection,\n extensions: ExtensionType[],\n commitment?: Commitment\n): Promise {\n const accountLen = getAccountLen(extensions);\n return await connection.getMinimumBalanceForRentExemption(accountLen, commitment);\n}\n\n/**\n * Unpack a token account\n *\n * @param address Token account\n * @param info Token account data\n * @param programId SPL Token program account\n *\n * @return Unpacked token account\n */\nexport function unpackAccount(\n address: PublicKey,\n info: AccountInfo | null,\n programId = TOKEN_PROGRAM_ID\n): Account {\n if (!info) throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId)) throw new TokenInvalidAccountOwnerError();\n if (info.data.length < ACCOUNT_SIZE) throw new TokenInvalidAccountSizeError();\n\n const rawAccount = AccountLayout.decode(info.data.slice(0, ACCOUNT_SIZE));\n let tlvData = Buffer.alloc(0);\n if (info.data.length > ACCOUNT_SIZE) {\n if (info.data.length === MULTISIG_SIZE) throw new TokenInvalidAccountSizeError();\n if (info.data[ACCOUNT_SIZE] != AccountType.Account) throw new TokenInvalidAccountError();\n tlvData = info.data.slice(ACCOUNT_SIZE + ACCOUNT_TYPE_SIZE);\n }\n\n return {\n address,\n mint: rawAccount.mint,\n owner: rawAccount.owner,\n amount: rawAccount.amount,\n delegate: rawAccount.delegateOption ? rawAccount.delegate : null,\n delegatedAmount: rawAccount.delegatedAmount,\n isInitialized: rawAccount.state !== AccountState.Uninitialized,\n isFrozen: rawAccount.state === AccountState.Frozen,\n isNative: !!rawAccount.isNativeOption,\n rentExemptReserve: rawAccount.isNativeOption ? rawAccount.isNative : null,\n closeAuthority: rawAccount.closeAuthorityOption ? rawAccount.closeAuthority : null,\n tlvData,\n };\n}\n", "export enum AccountType {\n Uninitialized,\n Mint,\n Account,\n}\nexport const ACCOUNT_TYPE_SIZE = 1;\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { bool, publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountInfo, Commitment, Connection, PublicKey } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { TokenAccountNotFoundError, TokenInvalidAccountOwnerError, TokenInvalidAccountSizeError } from '../errors.js';\n\n/** Information about a multisig */\nexport interface Multisig {\n /** Address of the multisig */\n address: PublicKey;\n /** Number of signers required */\n m: number;\n /** Number of possible signers, corresponds to the number of `signers` that are valid */\n n: number;\n /** Is this mint initialized */\n isInitialized: boolean;\n /** Full set of signers, of which `n` are valid */\n signer1: PublicKey;\n signer2: PublicKey;\n signer3: PublicKey;\n signer4: PublicKey;\n signer5: PublicKey;\n signer6: PublicKey;\n signer7: PublicKey;\n signer8: PublicKey;\n signer9: PublicKey;\n signer10: PublicKey;\n signer11: PublicKey;\n}\n\n/** Multisig as stored by the program */\nexport type RawMultisig = Omit;\n\n/** Buffer layout for de/serializing a multisig */\nexport const MultisigLayout = struct([\n u8('m'),\n u8('n'),\n bool('isInitialized'),\n publicKey('signer1'),\n publicKey('signer2'),\n publicKey('signer3'),\n publicKey('signer4'),\n publicKey('signer5'),\n publicKey('signer6'),\n publicKey('signer7'),\n publicKey('signer8'),\n publicKey('signer9'),\n publicKey('signer10'),\n publicKey('signer11'),\n]);\n\n/** Byte length of a multisig */\nexport const MULTISIG_SIZE = MultisigLayout.span;\n\n/**\n * Retrieve information about a multisig\n *\n * @param connection Connection to use\n * @param address Multisig account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Multisig information\n */\nexport async function getMultisig(\n connection: Connection,\n address: PublicKey,\n commitment?: Commitment,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const info = await connection.getAccountInfo(address, commitment);\n return unpackMultisig(address, info, programId);\n}\n\n/**\n * Unpack a multisig\n *\n * @param address Multisig account\n * @param info Multisig account data\n * @param programId SPL Token program account\n *\n * @return Unpacked multisig\n */\nexport function unpackMultisig(\n address: PublicKey,\n info: AccountInfo | null,\n programId = TOKEN_PROGRAM_ID\n): Multisig {\n if (!info) throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId)) throw new TokenInvalidAccountOwnerError();\n if (info.data.length != MULTISIG_SIZE) throw new TokenInvalidAccountSizeError();\n\n const multisig = MultisigLayout.decode(info.data);\n\n return { address, ...multisig };\n}\n\n/** Get the minimum lamport balance for a multisig to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMultisig(\n connection: Connection,\n commitment?: Commitment\n): Promise {\n return await connection.getMinimumBalanceForRentExemption(MULTISIG_SIZE, commitment);\n}\n", "import { struct, u32, u8 } from '@solana/buffer-layout';\nimport { bool, publicKey, u64 } from '@solana/buffer-layout-utils';\nimport type { AccountInfo, Commitment, Connection } from '@solana/web3.js';\nimport { PublicKey } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenAccountNotFoundError,\n TokenInvalidAccountOwnerError,\n TokenInvalidAccountSizeError,\n TokenInvalidMintError,\n TokenOwnerOffCurveError,\n} from '../errors.js';\nimport { ACCOUNT_TYPE_SIZE, AccountType } from '../extensions/accountType.js';\nimport type { ExtensionType } from '../extensions/extensionType.js';\nimport { getMintLen } from '../extensions/extensionType.js';\nimport { ACCOUNT_SIZE } from './account.js';\nimport { MULTISIG_SIZE } from './multisig.js';\n\n/** Information about a mint */\nexport interface Mint {\n /** Address of the mint */\n address: PublicKey;\n /**\n * Optional authority used to mint new tokens. The mint authority may only be provided during mint creation.\n * If no mint authority is present then the mint has a fixed supply and no further tokens may be minted.\n */\n mintAuthority: PublicKey | null;\n /** Total supply of tokens */\n supply: bigint;\n /** Number of base 10 digits to the right of the decimal place */\n decimals: number;\n /** Is this mint initialized */\n isInitialized: boolean;\n /** Optional authority to freeze token accounts */\n freezeAuthority: PublicKey | null;\n /** Additional data for extension */\n tlvData: Buffer;\n}\n\n/** Mint as stored by the program */\nexport interface RawMint {\n mintAuthorityOption: 1 | 0;\n mintAuthority: PublicKey;\n supply: bigint;\n decimals: number;\n isInitialized: boolean;\n freezeAuthorityOption: 1 | 0;\n freezeAuthority: PublicKey;\n}\n\n/** Buffer layout for de/serializing a mint */\nexport const MintLayout = struct([\n u32('mintAuthorityOption'),\n publicKey('mintAuthority'),\n u64('supply'),\n u8('decimals'),\n bool('isInitialized'),\n u32('freezeAuthorityOption'),\n publicKey('freezeAuthority'),\n]);\n\n/** Byte length of a mint */\nexport const MINT_SIZE = MintLayout.span;\n\n/**\n * Retrieve information about a mint\n *\n * @param connection Connection to use\n * @param address Mint account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Mint information\n */\nexport async function getMint(\n connection: Connection,\n address: PublicKey,\n commitment?: Commitment,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const info = await connection.getAccountInfo(address, commitment);\n return unpackMint(address, info, programId);\n}\n\n/**\n * Unpack a mint\n *\n * @param address Mint account\n * @param info Mint account data\n * @param programId SPL Token program account\n *\n * @return Unpacked mint\n */\nexport function unpackMint(address: PublicKey, info: AccountInfo | null, programId = TOKEN_PROGRAM_ID): Mint {\n if (!info) throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId)) throw new TokenInvalidAccountOwnerError();\n if (info.data.length < MINT_SIZE) throw new TokenInvalidAccountSizeError();\n\n const rawMint = MintLayout.decode(info.data.slice(0, MINT_SIZE));\n let tlvData = Buffer.alloc(0);\n if (info.data.length > MINT_SIZE) {\n if (info.data.length <= ACCOUNT_SIZE) throw new TokenInvalidAccountSizeError();\n if (info.data.length === MULTISIG_SIZE) throw new TokenInvalidAccountSizeError();\n if (info.data[ACCOUNT_SIZE] != AccountType.Mint) throw new TokenInvalidMintError();\n tlvData = info.data.slice(ACCOUNT_SIZE + ACCOUNT_TYPE_SIZE);\n }\n\n return {\n address,\n mintAuthority: rawMint.mintAuthorityOption ? rawMint.mintAuthority : null,\n supply: rawMint.supply,\n decimals: rawMint.decimals,\n isInitialized: rawMint.isInitialized,\n freezeAuthority: rawMint.freezeAuthorityOption ? rawMint.freezeAuthority : null,\n tlvData,\n };\n}\n\n/** Get the minimum lamport balance for a mint to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMint(\n connection: Connection,\n commitment?: Commitment\n): Promise {\n return await getMinimumBalanceForRentExemptMintWithExtensions(connection, [], commitment);\n}\n\n/** Get the minimum lamport balance for a rent-exempt mint with extensions\n *\n * @param connection Connection to use\n * @param extensions Extension types included in the mint\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMintWithExtensions(\n connection: Connection,\n extensions: ExtensionType[],\n commitment?: Commitment\n): Promise {\n const mintLen = getMintLen(extensions);\n return await connection.getMinimumBalanceForRentExemption(mintLen, commitment);\n}\n\n/**\n * Async version of getAssociatedTokenAddressSync\n * For backwards compatibility\n *\n * @param mint Token mint account\n * @param owner Owner of the new account\n * @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Promise containing the address of the associated token account\n */\nexport async function getAssociatedTokenAddress(\n mint: PublicKey,\n owner: PublicKey,\n allowOwnerOffCurve = false,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): Promise {\n if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer())) throw new TokenOwnerOffCurveError();\n\n const [address] = await PublicKey.findProgramAddress(\n [owner.toBuffer(), programId.toBuffer(), mint.toBuffer()],\n associatedTokenProgramId\n );\n\n return address;\n}\n\n/**\n * Get the address of the associated token account for a given mint and owner\n *\n * @param mint Token mint account\n * @param owner Owner of the new account\n * @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Address of the associated token account\n */\nexport function getAssociatedTokenAddressSync(\n mint: PublicKey,\n owner: PublicKey,\n allowOwnerOffCurve = false,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): PublicKey {\n if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer())) throw new TokenOwnerOffCurveError();\n\n const [address] = PublicKey.findProgramAddressSync(\n [owner.toBuffer(), programId.toBuffer(), mint.toBuffer()],\n associatedTokenProgramId\n );\n\n return address;\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport type { PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions, TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport { TokenUnsupportedInstructionError } from '../../errors.js';\nimport { TokenInstruction } from '../../instructions/types.js';\nimport type { AccountState } from '../../state/account.js';\n\nexport enum DefaultAccountStateInstruction {\n Initialize = 0,\n Update = 1,\n}\n\n/** TODO: docs */\nexport interface DefaultAccountStateInstructionData {\n instruction: TokenInstruction.DefaultAccountStateExtension;\n defaultAccountStateInstruction: DefaultAccountStateInstruction;\n accountState: AccountState;\n}\n\n/** TODO: docs */\nexport const defaultAccountStateInstructionData = struct([\n u8('instruction'),\n u8('defaultAccountStateInstruction'),\n u8('accountState'),\n]);\n\n/**\n * Construct an InitializeDefaultAccountState instruction\n *\n * @param mint Mint to initialize\n * @param accountState Default account state to set on all new accounts\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeDefaultAccountStateInstruction(\n mint: PublicKey,\n accountState: AccountState,\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n const data = Buffer.alloc(defaultAccountStateInstructionData.span);\n defaultAccountStateInstructionData.encode(\n {\n instruction: TokenInstruction.DefaultAccountStateExtension,\n defaultAccountStateInstruction: DefaultAccountStateInstruction.Initialize,\n accountState,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/**\n * Construct an UpdateDefaultAccountState instruction\n *\n * @param mint Mint to update\n * @param accountState Default account state to set on all accounts\n * @param freezeAuthority The mint's freeze authority\n * @param signers The signer account(s) for a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createUpdateDefaultAccountStateInstruction(\n mint: PublicKey,\n accountState: AccountState,\n freezeAuthority: PublicKey,\n multiSigners: Signer[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n keys.push({ pubkey: freezeAuthority, isSigner: !multiSigners.length, isWritable: false });\n for (const signer of multiSigners) {\n keys.push({ pubkey: signer.publicKey, isSigner: true, isWritable: false });\n }\n\n const data = Buffer.alloc(defaultAccountStateInstructionData.span);\n defaultAccountStateInstructionData.encode(\n {\n instruction: TokenInstruction.DefaultAccountStateExtension,\n defaultAccountStateInstruction: DefaultAccountStateInstruction.Update,\n accountState,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { getSigners } from '../../actions/internal.js';\nimport { TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport type { AccountState } from '../../state/account.js';\nimport {\n createInitializeDefaultAccountStateInstruction,\n createUpdateDefaultAccountStateInstruction,\n} from './instructions.js';\n\n/**\n * Initialize a default account state on a mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Mint to initialize with extension\n * @param state Account state with which to initialize new accounts\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function initializeDefaultAccountState(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n state: AccountState,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const transaction = new Transaction().add(createInitializeDefaultAccountStateInstruction(mint, state, programId));\n\n return await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n}\n\n/**\n * Update the default account state on a mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Mint to modify\n * @param state New account state to set on created accounts\n * @param freezeAuthority Freeze authority of the mint\n * @param multiSigners Signing accounts if `freezeAuthority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function updateDefaultAccountState(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n state: AccountState,\n freezeAuthority: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [freezeAuthorityPublicKey, signers] = getSigners(freezeAuthority, multiSigners);\n\n const transaction = new Transaction().add(\n createUpdateDefaultAccountStateInstruction(mint, state, freezeAuthorityPublicKey, signers, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountState } from '../../state/account.js';\nimport type { Mint } from '../../state/mint.js';\nimport { ExtensionType, getExtensionData } from '../extensionType.js';\n\n/** DefaultAccountState as stored by the program */\nexport interface DefaultAccountState {\n /** Default AccountState in which new accounts are initialized */\n state: AccountState;\n}\n\n/** Buffer layout for de/serializing a transfer fee config extension */\nexport const DefaultAccountStateLayout = struct([u8('state')]);\n\nexport const DEFAULT_ACCOUNT_STATE_SIZE = DefaultAccountStateLayout.span;\n\nexport function getDefaultAccountState(mint: Mint): DefaultAccountState | null {\n const extensionData = getExtensionData(ExtensionType.DefaultAccountState, mint.tlvData);\n if (extensionData !== null) {\n return DefaultAccountStateLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n", "import { struct } from '@solana/buffer-layout';\nimport type { Account } from '../state/account.js';\nimport { ExtensionType, getExtensionData } from './extensionType.js';\n\n/** ImmutableOwner as stored by the program */\nexport interface ImmutableOwner {} // eslint-disable-line\n\n/** Buffer layout for de/serializing an account */\nexport const ImmutableOwnerLayout = struct([]);\n\nexport const IMMUTABLE_OWNER_SIZE = ImmutableOwnerLayout.span;\n\nexport function getImmutableOwner(account: Account): ImmutableOwner | null {\n const extensionData = getExtensionData(ExtensionType.ImmutableOwner, account.tlvData);\n if (extensionData !== null) {\n return ImmutableOwnerLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n", "import { ns64, s16, struct } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { PublicKey } from '@solana/web3.js';\nimport type { Mint } from '../../state/mint.js';\nimport { ExtensionType, getExtensionData } from '../extensionType.js';\n\nexport interface InterestBearingMintConfigState {\n rateAuthority: PublicKey;\n initializationTimestamp: bigint;\n preUpdateAverageRate: number;\n lastUpdateTimestamp: bigint;\n currentRate: number;\n}\n\nexport const InterestBearingMintConfigStateLayout = struct([\n publicKey('rateAuthority'),\n ns64('initializationTimestamp'),\n s16('preUpdateAverageRate'),\n ns64('lastUpdateTimestamp'),\n s16('currentRate'),\n]);\n\nexport const INTEREST_BEARING_MINT_CONFIG_STATE_SIZE = InterestBearingMintConfigStateLayout.span;\n\nexport function getInterestBearingMintConfigState(mint: Mint): InterestBearingMintConfigState | null {\n const extensionData = getExtensionData(ExtensionType.InterestBearingMint, mint.tlvData);\n if (extensionData !== null) {\n return InterestBearingMintConfigStateLayout.decode(extensionData);\n }\n return null;\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport type { PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions, TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport { TokenUnsupportedInstructionError } from '../../errors.js';\nimport { TokenInstruction } from '../../instructions/types.js';\n\nexport enum MemoTransferInstruction {\n Enable = 0,\n Disable = 1,\n}\n\n/** TODO: docs */\nexport interface MemoTransferInstructionData {\n instruction: TokenInstruction.MemoTransferExtension;\n memoTransferInstruction: MemoTransferInstruction;\n}\n\n/** TODO: docs */\nexport const memoTransferInstructionData = struct([\n u8('instruction'),\n u8('memoTransferInstruction'),\n]);\n\n/**\n * Construct an EnableRequiredMemoTransfers instruction\n *\n * @param account Token account to update\n * @param authority The account's owner/delegate\n * @param signers The signer account(s)\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createEnableRequiredMemoTransfersInstruction(\n account: PublicKey,\n authority: PublicKey,\n multiSigners: Signer[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n return createMemoTransferInstruction(/* enable */ true, account, authority, multiSigners, programId);\n}\n\n/**\n * Construct a DisableMemoTransfer instruction\n *\n * @param account Token account to update\n * @param authority The account's owner/delegate\n * @param signers The signer account(s)\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createDisableRequiredMemoTransfersInstruction(\n account: PublicKey,\n authority: PublicKey,\n multiSigners: Signer[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n return createMemoTransferInstruction(/* enable */ false, account, authority, multiSigners, programId);\n}\n\nfunction createMemoTransferInstruction(\n enable: boolean,\n account: PublicKey,\n authority: PublicKey,\n multiSigners: Signer[],\n programId: PublicKey\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [{ pubkey: account, isSigner: false, isWritable: true }];\n keys.push({ pubkey: authority, isSigner: !multiSigners.length, isWritable: false });\n for (const signer of multiSigners) {\n keys.push({ pubkey: signer.publicKey, isSigner: true, isWritable: false });\n }\n\n const data = Buffer.alloc(memoTransferInstructionData.span);\n memoTransferInstructionData.encode(\n {\n instruction: TokenInstruction.MemoTransferExtension,\n memoTransferInstruction: enable ? MemoTransferInstruction.Enable : MemoTransferInstruction.Disable,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { getSigners } from '../../actions/internal.js';\nimport { TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport {\n createDisableRequiredMemoTransfersInstruction,\n createEnableRequiredMemoTransfersInstruction,\n} from './instructions.js';\n\n/**\n * Enable memo transfers on the given account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to modify\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function enableRequiredMemoTransfers(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n owner: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createEnableRequiredMemoTransfersInstruction(account, ownerPublicKey, signers, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n\n/**\n * Disable memo transfers on the given account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to modify\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function disableRequiredMemoTransfers(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n owner: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createDisableRequiredMemoTransfersInstruction(account, ownerPublicKey, signers, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import { struct } from '@solana/buffer-layout';\nimport { bool } from '@solana/buffer-layout-utils';\nimport type { Account } from '../../state/account.js';\nimport { ExtensionType, getExtensionData } from '../extensionType.js';\n\n/** MemoTransfer as stored by the program */\nexport interface MemoTransfer {\n /** Require transfers into this account to be accompanied by a memo */\n requireIncomingTransferMemos: boolean;\n}\n\n/** Buffer layout for de/serializing a transfer fee config extension */\nexport const MemoTransferLayout = struct([bool('requireIncomingTransferMemos')]);\n\nexport const MEMO_TRANSFER_SIZE = MemoTransferLayout.span;\n\nexport function getMemoTransfer(account: Account): MemoTransfer | null {\n const extensionData = getExtensionData(ExtensionType.MemoTransfer, account.tlvData);\n if (extensionData !== null) {\n return MemoTransferLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n", "import { struct } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { PublicKey } from '@solana/web3.js';\nimport type { Mint } from '../state/mint.js';\nimport { ExtensionType, getExtensionData } from './extensionType.js';\n\n/** MintCloseAuthority as stored by the program */\nexport interface MintCloseAuthority {\n closeAuthority: PublicKey;\n}\n\n/** Buffer layout for de/serializing a mint */\nexport const MintCloseAuthorityLayout = struct([publicKey('closeAuthority')]);\n\nexport const MINT_CLOSE_AUTHORITY_SIZE = MintCloseAuthorityLayout.span;\n\nexport function getMintCloseAuthority(mint: Mint): MintCloseAuthority | null {\n const extensionData = getExtensionData(ExtensionType.MintCloseAuthority, mint.tlvData);\n if (extensionData !== null) {\n return MintCloseAuthorityLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n", "import { struct } from '@solana/buffer-layout';\nimport type { Mint } from '../state/mint.js';\nimport { ExtensionType, getExtensionData } from './extensionType.js';\n\n/** Non-transferable state as stored by the program */\nexport interface NonTransferable {} // eslint-disable-line\n\n/** Buffer layout for de/serializing an account */\nexport const NonTransferableLayout = struct([]);\n\nexport const NON_TRANSFERABLE_SIZE = NonTransferableLayout.span;\n\nexport function getNonTransferable(mint: Mint): NonTransferable | null {\n const extensionData = getExtensionData(ExtensionType.NonTransferable, mint.tlvData);\n if (extensionData !== null) {\n return NonTransferableLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n", "import { struct, u16, u8 } from '@solana/buffer-layout';\nimport { publicKey, u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, Signer } from '@solana/web3.js';\nimport { PublicKey, TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions, TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n TokenUnsupportedInstructionError,\n} from '../../errors.js';\nimport { TokenInstruction } from '../../instructions/types.js';\n\nexport enum TransferFeeInstruction {\n InitializeTransferFeeConfig = 0,\n TransferCheckedWithFee = 1,\n WithdrawWithheldTokensFromMint = 2,\n WithdrawWithheldTokensFromAccounts = 3,\n HarvestWithheldTokensToMint = 4,\n SetTransferFee = 5,\n}\n\n// InitializeTransferFeeConfig\n\n/** TODO: docs */\nexport interface InitializeTransferFeeConfigInstructionData {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.InitializeTransferFeeConfig;\n transferFeeConfigAuthorityOption: 1 | 0;\n transferFeeConfigAuthority: PublicKey;\n withdrawWithheldAuthorityOption: 1 | 0;\n withdrawWithheldAuthority: PublicKey;\n transferFeeBasisPoints: number;\n maximumFee: bigint;\n}\n\n/** TODO: docs */\nexport const initializeTransferFeeConfigInstructionData = struct([\n u8('instruction'),\n u8('transferFeeInstruction'),\n u8('transferFeeConfigAuthorityOption'),\n publicKey('transferFeeConfigAuthority'),\n u8('withdrawWithheldAuthorityOption'),\n publicKey('withdrawWithheldAuthority'),\n u16('transferFeeBasisPoints'),\n u64('maximumFee'),\n]);\n\n/**\n * Construct an InitializeTransferFeeConfig instruction\n *\n * @param mint Token mint account\n * @param transferFeeConfigAuthority Optional authority that can update the fees\n * @param withdrawWithheldAuthority Optional authority that can withdraw fees\n * @param transferFeeBasisPoints Amount of transfer collected as fees, expressed as basis points of the transfer amount\n * @param maximumFee Maximum fee assessed on transfers\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeTransferFeeConfigInstruction(\n mint: PublicKey,\n transferFeeConfigAuthority: PublicKey | null,\n withdrawWithheldAuthority: PublicKey | null,\n transferFeeBasisPoints: number,\n maximumFee: bigint,\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(initializeTransferFeeConfigInstructionData.span);\n initializeTransferFeeConfigInstructionData.encode(\n {\n instruction: TokenInstruction.TransferFeeExtension,\n transferFeeInstruction: TransferFeeInstruction.InitializeTransferFeeConfig,\n transferFeeConfigAuthorityOption: transferFeeConfigAuthority ? 1 : 0,\n transferFeeConfigAuthority: transferFeeConfigAuthority || new PublicKey(0),\n withdrawWithheldAuthorityOption: withdrawWithheldAuthority ? 1 : 0,\n withdrawWithheldAuthority: withdrawWithheldAuthority || new PublicKey(0),\n transferFeeBasisPoints: transferFeeBasisPoints,\n maximumFee: maximumFee,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeTransferFeeConfig instruction */\nexport interface DecodedInitializeTransferFeeConfigInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.InitializeTransferFeeConfig;\n transferFeeConfigAuthority: PublicKey | null;\n withdrawWithheldAuthority: PublicKey | null;\n transferFeeBasisPoints: number;\n maximumFee: bigint;\n };\n}\n\n/**\n * Decode an InitializeTransferFeeConfig instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeTransferFeeConfigInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedInitializeTransferFeeConfigInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeTransferFeeConfigInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint },\n data,\n } = decodeInitializeTransferFeeConfigInstructionUnchecked(instruction);\n if (\n data.instruction !== TokenInstruction.TransferFeeExtension ||\n data.transferFeeInstruction !== TransferFeeInstruction.InitializeTransferFeeConfig\n )\n throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeTransferFeeConfig instruction */\nexport interface DecodedInitializeTransferFeeConfigInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.InitializeTransferFeeConfig;\n transferFeeConfigAuthority: PublicKey | null;\n withdrawWithheldAuthority: PublicKey | null;\n transferFeeBasisPoints: number;\n maximumFee: bigint;\n };\n}\n\n/**\n * Decode an InitializeTransferFeeConfig instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeTransferFeeConfigInstructionUnchecked({\n programId,\n keys: [mint],\n data,\n}: TransactionInstruction): DecodedInitializeTransferFeeConfigInstructionUnchecked {\n const {\n instruction,\n transferFeeInstruction,\n transferFeeConfigAuthorityOption,\n transferFeeConfigAuthority,\n withdrawWithheldAuthorityOption,\n withdrawWithheldAuthority,\n transferFeeBasisPoints,\n maximumFee,\n } = initializeTransferFeeConfigInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n mint,\n },\n data: {\n instruction,\n transferFeeInstruction,\n transferFeeConfigAuthority: transferFeeConfigAuthorityOption ? transferFeeConfigAuthority : null,\n withdrawWithheldAuthority: withdrawWithheldAuthorityOption ? withdrawWithheldAuthority : null,\n transferFeeBasisPoints,\n maximumFee,\n },\n };\n}\n\n// TransferCheckedWithFee\nexport interface TransferCheckedWithFeeInstructionData {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.TransferCheckedWithFee;\n amount: bigint;\n decimals: number;\n fee: bigint;\n}\n\nexport const transferCheckedWithFeeInstructionData = struct([\n u8('instruction'),\n u8('transferFeeInstruction'),\n u64('amount'),\n u8('decimals'),\n u64('fee'),\n]);\n\n/**\n * Construct an TransferCheckedWithFee instruction\n *\n * @param source The source account\n * @param mint The token mint\n * @param destination The destination account\n * @param authority The source account's owner/delegate\n * @param signers The signer account(s)\n * @param amount The amount of tokens to transfer\n * @param decimals The expected number of base 10 digits to the right of the decimal place\n * @param fee The expected fee assesed on this transfer, calculated off-chain based on the transferFeeBasisPoints and maximumFee of the mint.\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createTransferCheckedWithFeeInstruction(\n source: PublicKey,\n mint: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n amount: bigint,\n decimals: number,\n fee: bigint,\n multiSigners: Signer[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const data = Buffer.alloc(transferCheckedWithFeeInstructionData.span);\n transferCheckedWithFeeInstructionData.encode(\n {\n instruction: TokenInstruction.TransferFeeExtension,\n transferFeeInstruction: TransferFeeInstruction.TransferCheckedWithFee,\n amount,\n decimals,\n fee,\n },\n data\n );\n const keys: AccountMeta[] = [];\n keys.push({ pubkey: source, isSigner: false, isWritable: true });\n keys.push({ pubkey: mint, isSigner: false, isWritable: false });\n keys.push({ pubkey: destination, isSigner: false, isWritable: true });\n keys.push({ pubkey: authority, isSigner: !multiSigners.length, isWritable: false });\n for (const signer of multiSigners) {\n keys.push({ pubkey: signer.publicKey, isSigner: true, isWritable: false });\n }\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid TransferCheckedWithFee instruction */\nexport interface DecodedTransferCheckedWithFeeInstruction {\n programId: PublicKey;\n keys: {\n source: AccountMeta;\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n signers: AccountMeta[] | null;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.TransferCheckedWithFee;\n amount: bigint;\n decimals: number;\n fee: bigint;\n };\n}\n\n/**\n * Decode a TransferCheckedWithFee instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeTransferCheckedWithFeeInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedTransferCheckedWithFeeInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== transferCheckedWithFeeInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { source, mint, destination, authority, signers },\n data,\n } = decodeTransferCheckedWithFeeInstructionUnchecked(instruction);\n if (\n data.instruction !== TokenInstruction.TransferFeeExtension ||\n data.transferFeeInstruction !== TransferFeeInstruction.TransferCheckedWithFee\n )\n throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n source,\n mint,\n destination,\n authority,\n signers: signers ? signers : null,\n },\n data,\n };\n}\n\n/** A decoded, non-validated TransferCheckedWithFees instruction */\nexport interface DecodedTransferCheckedWithFeeInstructionUnchecked {\n programId: PublicKey;\n keys: {\n source: AccountMeta;\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n signers: AccountMeta[] | undefined;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.TransferCheckedWithFee;\n amount: bigint;\n decimals: number;\n fee: bigint;\n };\n}\n\n/**\n * Decode a TransferCheckedWithFees instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeTransferCheckedWithFeeInstructionUnchecked({\n programId,\n keys: [source, mint, destination, authority, ...signers],\n data,\n}: TransactionInstruction): DecodedTransferCheckedWithFeeInstructionUnchecked {\n const { instruction, transferFeeInstruction, amount, decimals, fee } =\n transferCheckedWithFeeInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n source,\n mint,\n destination,\n authority,\n signers,\n },\n data: {\n instruction,\n transferFeeInstruction,\n amount,\n decimals,\n fee,\n },\n };\n}\n\n// WithdrawWithheldTokensFromMint\nexport interface WithdrawWithheldTokensFromMintInstructionData {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromMint;\n}\n\nexport const withdrawWithheldTokensFromMintInstructionData = struct([\n u8('instruction'),\n u8('transferFeeInstruction'),\n]);\n\n/**\n * Construct a WithdrawWithheldTokensFromMint instruction\n *\n * @param mint The token mint\n * @param destination The destination account\n * @param authority The source account's owner/delegate\n * @param signers The signer account(s)\n * @param programID SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createWithdrawWithheldTokensFromMintInstruction(\n mint: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n signers: Signer[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const data = Buffer.alloc(withdrawWithheldTokensFromMintInstructionData.span);\n withdrawWithheldTokensFromMintInstructionData.encode(\n {\n instruction: TokenInstruction.TransferFeeExtension,\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromMint,\n },\n data\n );\n const keys: AccountMeta[] = [];\n keys.push(\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n { pubkey: authority, isSigner: !signers.length, isWritable: false }\n );\n for (const signer of signers) {\n keys.push({ pubkey: signer.publicKey, isSigner: true, isWritable: false });\n }\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid WithdrawWithheldTokensFromMint instruction */\nexport interface DecodedWithdrawWithheldTokensFromMintInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n signers: AccountMeta[] | null;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromMint;\n };\n}\n\n/**\n * Decode a WithdrawWithheldTokensFromMint instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeWithdrawWithheldTokensFromMintInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedWithdrawWithheldTokensFromMintInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== withdrawWithheldTokensFromMintInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, destination, authority, signers },\n data,\n } = decodeWithdrawWithheldTokensFromMintInstructionUnchecked(instruction);\n if (\n data.instruction !== TokenInstruction.TransferFeeExtension ||\n data.transferFeeInstruction !== TransferFeeInstruction.WithdrawWithheldTokensFromMint\n )\n throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n signers: signers ? signers : null,\n },\n data,\n };\n}\n\n/** A decoded, valid WithdrawWithheldTokensFromMint instruction */\nexport interface DecodedWithdrawWithheldTokensFromMintInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n signers: AccountMeta[] | null;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromMint;\n };\n}\n\n/**\n * Decode a WithdrawWithheldTokensFromMint instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeWithdrawWithheldTokensFromMintInstructionUnchecked({\n programId,\n keys: [mint, destination, authority, ...signers],\n data,\n}: TransactionInstruction): DecodedWithdrawWithheldTokensFromMintInstructionUnchecked {\n const { instruction, transferFeeInstruction } = withdrawWithheldTokensFromMintInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n signers,\n },\n data: {\n instruction,\n transferFeeInstruction,\n },\n };\n}\n\n// WithdrawWithheldTokensFromAccounts\nexport interface WithdrawWithheldTokensFromAccountsInstructionData {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromAccounts;\n numTokenAccounts: number;\n}\n\nexport const withdrawWithheldTokensFromAccountsInstructionData =\n struct([\n u8('instruction'),\n u8('transferFeeInstruction'),\n u8('numTokenAccounts'),\n ]);\n\n/**\n * Construct a WithdrawWithheldTokensFromAccounts instruction\n *\n * @param mint The token mint\n * @param destination The destination account\n * @param authority The source account's owner/delegate\n * @param signers The signer account(s)\n * @param sources The source accounts to withdraw from\n * @param programID SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createWithdrawWithheldTokensFromAccountsInstruction(\n mint: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n signers: Signer[],\n sources: PublicKey[],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const data = Buffer.alloc(withdrawWithheldTokensFromAccountsInstructionData.span);\n withdrawWithheldTokensFromAccountsInstructionData.encode(\n {\n instruction: TokenInstruction.TransferFeeExtension,\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromAccounts,\n numTokenAccounts: sources.length,\n },\n data\n );\n const keys: AccountMeta[] = [];\n keys.push(\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n { pubkey: authority, isSigner: !signers.length, isWritable: false }\n );\n for (const signer of signers) {\n keys.push({ pubkey: signer.publicKey, isSigner: true, isWritable: false });\n }\n for (const source of sources) {\n keys.push({ pubkey: source, isSigner: false, isWritable: true });\n }\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid WithdrawWithheldTokensFromAccounts instruction */\nexport interface DecodedWithdrawWithheldTokensFromAccountsInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n signers: AccountMeta[] | null;\n sources: AccountMeta[] | null;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromAccounts;\n numTokenAccounts: number;\n };\n}\n\n/**\n * Decode a WithdrawWithheldTokensFromAccounts instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeWithdrawWithheldTokensFromAccountsInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedWithdrawWithheldTokensFromAccountsInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== withdrawWithheldTokensFromAccountsInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, destination, authority, signers, sources },\n data,\n } = decodeWithdrawWithheldTokensFromAccountsInstructionUnchecked(instruction);\n if (\n data.instruction !== TokenInstruction.TransferFeeExtension ||\n data.transferFeeInstruction !== TransferFeeInstruction.WithdrawWithheldTokensFromAccounts\n )\n throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n signers: signers ? signers : null,\n sources: sources ? sources : null,\n },\n data,\n };\n}\n\n/** A decoded, valid WithdrawWithheldTokensFromAccounts instruction */\nexport interface DecodedWithdrawWithheldTokensFromAccountsInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n signers: AccountMeta[] | null;\n sources: AccountMeta[] | null;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.WithdrawWithheldTokensFromAccounts;\n numTokenAccounts: number;\n };\n}\n\n/**\n * Decode a WithdrawWithheldTokensFromAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeWithdrawWithheldTokensFromAccountsInstructionUnchecked({\n programId,\n keys,\n data,\n}: TransactionInstruction): DecodedWithdrawWithheldTokensFromAccountsInstructionUnchecked {\n const { instruction, transferFeeInstruction, numTokenAccounts } =\n withdrawWithheldTokensFromAccountsInstructionData.decode(data);\n const [mint, destination, authority, signers, sources] = [\n keys[0],\n keys[1],\n keys[2],\n keys.slice(3, 3 + numTokenAccounts),\n keys.slice(-1 * numTokenAccounts),\n ];\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n signers,\n sources,\n },\n data: {\n instruction,\n transferFeeInstruction,\n numTokenAccounts,\n },\n };\n}\n\n// HarvestWithheldTokensToMint\n\nexport interface HarvestWithheldTokensToMintInstructionData {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.HarvestWithheldTokensToMint;\n}\n\nexport const harvestWithheldTokensToMintInstructionData = struct([\n u8('instruction'),\n u8('transferFeeInstruction'),\n]);\n\n/**\n * Construct a HarvestWithheldTokensToMint instruction\n *\n * @param mint The token mint\n * @param sources The source accounts to withdraw from\n * @param programID SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createHarvestWithheldTokensToMintInstruction(\n mint: PublicKey,\n sources: PublicKey[],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const data = Buffer.alloc(harvestWithheldTokensToMintInstructionData.span);\n harvestWithheldTokensToMintInstructionData.encode(\n {\n instruction: TokenInstruction.TransferFeeExtension,\n transferFeeInstruction: TransferFeeInstruction.HarvestWithheldTokensToMint,\n },\n data\n );\n const keys: AccountMeta[] = [];\n keys.push({ pubkey: mint, isSigner: false, isWritable: true });\n for (const source of sources) {\n keys.push({ pubkey: source, isSigner: false, isWritable: true });\n }\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid HarvestWithheldTokensToMint instruction */\nexport interface DecodedHarvestWithheldTokensToMintInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n sources: AccountMeta[] | null;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.HarvestWithheldTokensToMint;\n };\n}\n\n/**\n * Decode a HarvestWithheldTokensToMint instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeHarvestWithheldTokensToMintInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedHarvestWithheldTokensToMintInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== harvestWithheldTokensToMintInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, sources },\n data,\n } = decodeHarvestWithheldTokensToMintInstructionUnchecked(instruction);\n if (\n data.instruction !== TokenInstruction.TransferFeeExtension ||\n data.transferFeeInstruction !== TransferFeeInstruction.HarvestWithheldTokensToMint\n )\n throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n sources,\n },\n data,\n };\n}\n\n/** A decoded, valid HarvestWithheldTokensToMint instruction */\nexport interface DecodedHarvestWithheldTokensToMintInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n sources: AccountMeta[] | null;\n };\n data: {\n instruction: TokenInstruction.TransferFeeExtension;\n transferFeeInstruction: TransferFeeInstruction.HarvestWithheldTokensToMint;\n };\n}\n\n/**\n * Decode a HarvestWithheldTokensToMint instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeHarvestWithheldTokensToMintInstructionUnchecked({\n programId,\n keys: [mint, ...sources],\n data,\n}: TransactionInstruction): DecodedHarvestWithheldTokensToMintInstructionUnchecked {\n const { instruction, transferFeeInstruction } = harvestWithheldTokensToMintInstructionData.decode(data);\n return {\n programId,\n keys: {\n mint,\n sources,\n },\n data: {\n instruction,\n transferFeeInstruction,\n },\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { getSigners } from '../../actions/internal.js';\nimport { TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport {\n createHarvestWithheldTokensToMintInstruction,\n createTransferCheckedWithFeeInstruction,\n createWithdrawWithheldTokensFromAccountsInstruction,\n createWithdrawWithheldTokensFromMintInstruction,\n} from './instructions.js';\n\n/**\n * Transfer tokens from one account to another, asserting the transfer fee, token mint, and decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param source Source account\n * @param mint Mint for the account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param amount Number of tokens to transfer\n * @param decimals Number of decimals in transfer amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function transferCheckedWithFee(\n connection: Connection,\n payer: Signer,\n source: PublicKey,\n mint: PublicKey,\n destination: PublicKey,\n owner: Signer | PublicKey,\n amount: bigint,\n decimals: number,\n fee: bigint,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createTransferCheckedWithFeeInstruction(\n source,\n mint,\n destination,\n ownerPublicKey,\n amount,\n decimals,\n fee,\n multiSigners,\n programId\n )\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n\n/**\n * Withdraw withheld tokens from mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint The token mint\n * @param destination The destination account\n * @param authority The mint's withdraw withheld tokens authority\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function withdrawWithheldTokensFromMint(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n destination: PublicKey,\n authority: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createWithdrawWithheldTokensFromMintInstruction(mint, destination, authorityPublicKey, signers, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n\n/**\n * Withdraw withheld tokens from accounts\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint The token mint\n * @param destination The destination account\n * @param authority The mint's withdraw withheld tokens authority\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param sources Source accounts from which to withdraw withheld fees\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function withdrawWithheldTokensFromAccounts(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n destination: PublicKey,\n authority: Signer | PublicKey,\n multiSigners: Signer[],\n sources: PublicKey[],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createWithdrawWithheldTokensFromAccountsInstruction(\n mint,\n destination,\n authorityPublicKey,\n signers,\n sources,\n programId\n )\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n\n/**\n * Harvest withheld tokens from accounts to the mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint The token mint\n * @param sources Source accounts from which to withdraw withheld fees\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function harvestWithheldTokensToMint(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n sources: PublicKey[],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const transaction = new Transaction().add(createHarvestWithheldTokensToMintInstruction(mint, sources, programId));\n\n return await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n}\n", "import type { Layout } from '@solana/buffer-layout';\nimport { struct, u16 } from '@solana/buffer-layout';\nimport { publicKey, u64 } from '@solana/buffer-layout-utils';\nimport type { PublicKey } from '@solana/web3.js';\nimport type { Account } from '../../state/account.js';\nimport type { Mint } from '../../state/mint.js';\nimport { ExtensionType, getExtensionData } from '../extensionType.js';\n\nexport const MAX_FEE_BASIS_POINTS = 10_000;\nexport const ONE_IN_BASIS_POINTS: bigint = MAX_FEE_BASIS_POINTS as unknown as bigint;\n\n/** TransferFeeConfig as stored by the program */\nexport interface TransferFee {\n /** First epoch where the transfer fee takes effect */\n epoch: bigint;\n /** Maximum fee assessed on transfers, expressed as an amount of tokens */\n maximumFee: bigint;\n /**\n * Amount of transfer collected as fees, expressed as basis points of the\n * transfer amount, ie. increments of 0.01%\n */\n transferFeeBasisPoints: number;\n}\n\n/** Transfer fee extension data for mints. */\nexport interface TransferFeeConfig {\n /** Optional authority to set the fee */\n transferFeeConfigAuthority: PublicKey;\n /** Withdraw from mint instructions must be signed by this key */\n withdrawWithheldAuthority: PublicKey;\n /** Withheld transfer fee tokens that have been moved to the mint for withdrawal */\n withheldAmount: bigint;\n /** Older transfer fee, used if the current epoch < newerTransferFee.epoch */\n olderTransferFee: TransferFee;\n /** Newer transfer fee, used if the current epoch >= newerTransferFee.epoch */\n newerTransferFee: TransferFee;\n}\n\n/** Buffer layout for de/serializing a transfer fee */\nexport function transferFeeLayout(property?: string): Layout {\n return struct([u64('epoch'), u64('maximumFee'), u16('transferFeeBasisPoints')], property);\n}\n\n/** Buffer layout for de/serializing a transfer fee config extension */\nexport const TransferFeeConfigLayout = struct([\n publicKey('transferFeeConfigAuthority'),\n publicKey('withdrawWithheldAuthority'),\n u64('withheldAmount'),\n transferFeeLayout('olderTransferFee'),\n transferFeeLayout('newerTransferFee'),\n]);\n\nexport const TRANSFER_FEE_CONFIG_SIZE = TransferFeeConfigLayout.span;\n\n/** Transfer fee amount data for accounts. */\nexport interface TransferFeeAmount {\n /** Withheld transfer fee tokens that can be claimed by the fee authority */\n withheldAmount: bigint;\n}\n/** Buffer layout for de/serializing */\nexport const TransferFeeAmountLayout = struct([u64('withheldAmount')]);\nexport const TRANSFER_FEE_AMOUNT_SIZE = TransferFeeAmountLayout.span;\n\nexport function getTransferFeeConfig(mint: Mint): TransferFeeConfig | null {\n const extensionData = getExtensionData(ExtensionType.TransferFeeConfig, mint.tlvData);\n if (extensionData !== null) {\n return TransferFeeConfigLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n\nexport function getTransferFeeAmount(account: Account): TransferFeeAmount | null {\n const extensionData = getExtensionData(ExtensionType.TransferFeeAmount, account.tlvData);\n if (extensionData !== null) {\n return TransferFeeAmountLayout.decode(extensionData);\n } else {\n return null;\n }\n}\n", "import { ACCOUNT_SIZE } from '../state/account.js';\nimport type { Mint } from '../state/mint.js';\nimport { MINT_SIZE } from '../state/mint.js';\nimport { MULTISIG_SIZE } from '../state/multisig.js';\nimport { ACCOUNT_TYPE_SIZE } from './accountType.js';\nimport { DEFAULT_ACCOUNT_STATE_SIZE } from './defaultAccountState/index.js';\nimport { IMMUTABLE_OWNER_SIZE } from './immutableOwner.js';\nimport { INTEREST_BEARING_MINT_CONFIG_STATE_SIZE } from './interestBearingMint/state.js';\nimport { MEMO_TRANSFER_SIZE } from './memoTransfer/index.js';\nimport { MINT_CLOSE_AUTHORITY_SIZE } from './mintCloseAuthority.js';\nimport { NON_TRANSFERABLE_SIZE } from './nonTransferable.js';\nimport { TRANSFER_FEE_AMOUNT_SIZE, TRANSFER_FEE_CONFIG_SIZE } from './transferFee/index.js';\n\nexport enum ExtensionType {\n Uninitialized,\n TransferFeeConfig,\n TransferFeeAmount,\n MintCloseAuthority,\n ConfidentialTransferMint,\n ConfidentialTransferAccount,\n DefaultAccountState,\n ImmutableOwner,\n MemoTransfer,\n NonTransferable,\n InterestBearingMint,\n}\n\nexport const TYPE_SIZE = 2;\nexport const LENGTH_SIZE = 2;\n\n// NOTE: All of these should eventually use their type's Span instead of these\n// constants. This is provided for at least creation to work.\nexport function getTypeLen(e: ExtensionType): number {\n switch (e) {\n case ExtensionType.Uninitialized:\n return 0;\n case ExtensionType.TransferFeeConfig:\n return TRANSFER_FEE_CONFIG_SIZE;\n case ExtensionType.TransferFeeAmount:\n return TRANSFER_FEE_AMOUNT_SIZE;\n case ExtensionType.MintCloseAuthority:\n return MINT_CLOSE_AUTHORITY_SIZE;\n case ExtensionType.ConfidentialTransferMint:\n return 97;\n case ExtensionType.ConfidentialTransferAccount:\n return 286;\n case ExtensionType.DefaultAccountState:\n return DEFAULT_ACCOUNT_STATE_SIZE;\n case ExtensionType.ImmutableOwner:\n return IMMUTABLE_OWNER_SIZE;\n case ExtensionType.MemoTransfer:\n return MEMO_TRANSFER_SIZE;\n case ExtensionType.NonTransferable:\n return NON_TRANSFERABLE_SIZE;\n case ExtensionType.InterestBearingMint:\n return INTEREST_BEARING_MINT_CONFIG_STATE_SIZE;\n default:\n throw Error(`Unknown extension type: ${e}`);\n }\n}\n\nexport function getAccountTypeOfMintType(e: ExtensionType): ExtensionType {\n switch (e) {\n case ExtensionType.TransferFeeConfig:\n return ExtensionType.TransferFeeAmount;\n case ExtensionType.ConfidentialTransferMint:\n return ExtensionType.ConfidentialTransferAccount;\n case ExtensionType.TransferFeeAmount:\n case ExtensionType.ConfidentialTransferAccount:\n case ExtensionType.DefaultAccountState:\n case ExtensionType.ImmutableOwner:\n case ExtensionType.MemoTransfer:\n case ExtensionType.MintCloseAuthority:\n case ExtensionType.NonTransferable:\n case ExtensionType.Uninitialized:\n case ExtensionType.InterestBearingMint:\n return ExtensionType.Uninitialized;\n }\n}\n\nfunction getLen(extensionTypes: ExtensionType[], baseSize: number): number {\n if (extensionTypes.length === 0) {\n return baseSize;\n } else {\n const accountLength =\n ACCOUNT_SIZE +\n ACCOUNT_TYPE_SIZE +\n extensionTypes\n .filter((element, i) => i === extensionTypes.indexOf(element))\n .map((element) => getTypeLen(element) + TYPE_SIZE + LENGTH_SIZE)\n .reduce((a, b) => a + b);\n if (accountLength === MULTISIG_SIZE) {\n return accountLength + TYPE_SIZE;\n } else {\n return accountLength;\n }\n }\n}\n\nexport function getMintLen(extensionTypes: ExtensionType[]): number {\n return getLen(extensionTypes, MINT_SIZE);\n}\n\nexport function getAccountLen(extensionTypes: ExtensionType[]): number {\n return getLen(extensionTypes, ACCOUNT_SIZE);\n}\n\nexport function getExtensionData(extension: ExtensionType, tlvData: Buffer): Buffer | null {\n let extensionTypeIndex = 0;\n while (extensionTypeIndex < tlvData.length) {\n const entryType = tlvData.readUInt16LE(extensionTypeIndex);\n const entryLength = tlvData.readUInt16LE(extensionTypeIndex + TYPE_SIZE);\n const typeIndex = extensionTypeIndex + TYPE_SIZE + LENGTH_SIZE;\n if (entryType == extension) {\n return tlvData.slice(typeIndex, typeIndex + entryLength);\n }\n extensionTypeIndex = typeIndex + entryLength;\n }\n return null;\n}\n\nexport function getExtensionTypes(tlvData: Buffer): ExtensionType[] {\n const extensionTypes = [];\n let extensionTypeIndex = 0;\n while (extensionTypeIndex < tlvData.length) {\n const entryType = tlvData.readUInt16LE(extensionTypeIndex);\n extensionTypes.push(entryType);\n const entryLength = tlvData.readUInt16LE(extensionTypeIndex + TYPE_SIZE);\n extensionTypeIndex += TYPE_SIZE + LENGTH_SIZE + entryLength;\n }\n return extensionTypes;\n}\n\nexport function getAccountLenForMint(mint: Mint): number {\n const extensionTypes = getExtensionTypes(mint.tlvData);\n const accountExtensions = extensionTypes.map(getAccountTypeOfMintType);\n return getAccountLen(accountExtensions);\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface InitializeAccountInstructionData {\n instruction: TokenInstruction.InitializeAccount;\n}\n\n/** TODO: docs */\nexport const initializeAccountInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct an InitializeAccount instruction\n *\n * @param account New token account\n * @param mint Mint account\n * @param owner Owner of the new account\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeAccountInstruction(\n account: PublicKey,\n mint: PublicKey,\n owner: PublicKey,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n\n const data = Buffer.alloc(initializeAccountInstructionData.span);\n initializeAccountInstructionData.encode({ instruction: TokenInstruction.InitializeAccount }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeAccount instruction */\nexport interface DecodedInitializeAccountInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n owner: AccountMeta;\n rent: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeAccount;\n };\n}\n\n/**\n * Decode an InitializeAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeAccountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeAccountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeAccountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, owner, rent },\n data,\n } = decodeInitializeAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeAccount) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !owner || !rent) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n rent,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeAccount instruction */\nexport interface DecodedInitializeAccountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n rent: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode an InitializeAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeAccountInstructionUnchecked({\n programId,\n keys: [account, mint, owner, rent],\n data,\n}: TransactionInstruction): DecodedInitializeAccountInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n rent,\n },\n data: initializeAccountInstructionData.decode(data),\n };\n}\n", "import type { PublicKey } from '@solana/web3.js';\nimport { SystemProgram, TransactionInstruction } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\n\n/**\n * Construct a CreateAssociatedTokenAccount instruction\n *\n * @param payer Payer of the initialization fees\n * @param associatedToken New associated token account\n * @param owner Owner of the new account\n * @param mint Token mint account\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createAssociatedTokenAccountInstruction(\n payer: PublicKey,\n associatedToken: PublicKey,\n owner: PublicKey,\n mint: PublicKey,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): TransactionInstruction {\n return buildAssociatedTokenAccountInstruction(\n payer,\n associatedToken,\n owner,\n mint,\n Buffer.alloc(0),\n programId,\n associatedTokenProgramId\n );\n}\n\n/**\n * Construct a CreateAssociatedTokenAccountIdempotent instruction\n *\n * @param payer Payer of the initialization fees\n * @param associatedToken New associated token account\n * @param owner Owner of the new account\n * @param mint Token mint account\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createAssociatedTokenAccountIdempotentInstruction(\n payer: PublicKey,\n associatedToken: PublicKey,\n owner: PublicKey,\n mint: PublicKey,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): TransactionInstruction {\n return buildAssociatedTokenAccountInstruction(\n payer,\n associatedToken,\n owner,\n mint,\n Buffer.from([1]),\n programId,\n associatedTokenProgramId\n );\n}\n\nfunction buildAssociatedTokenAccountInstruction(\n payer: PublicKey,\n associatedToken: PublicKey,\n owner: PublicKey,\n mint: PublicKey,\n instructionData: Buffer,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: associatedToken, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: programId, isSigner: false, isWritable: false },\n ];\n\n return new TransactionInstruction({\n keys,\n programId: associatedTokenProgramId,\n data: instructionData,\n });\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createAssociatedTokenAccountInstruction } from '../instructions/associatedTokenAccount.js';\nimport { getAssociatedTokenAddress } from '../state/mint.js';\n\n/**\n * Create and initialize a new associated token account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param mint Mint for the account\n * @param owner Owner of the new account\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Address of the new associated token account\n */\nexport async function createAssociatedTokenAccount(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n owner: PublicKey,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): Promise {\n const associatedToken = await getAssociatedTokenAddress(mint, owner, false, programId, associatedTokenProgramId);\n\n const transaction = new Transaction().add(\n createAssociatedTokenAccountInstruction(\n payer.publicKey,\n associatedToken,\n owner,\n mint,\n programId,\n associatedTokenProgramId\n )\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n\n return associatedToken;\n}\n", "import type { ConfirmOptions, Connection, Keypair, PublicKey, Signer } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, SystemProgram, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { getAccountLenForMint } from '../extensions/extensionType.js';\nimport { createInitializeAccountInstruction } from '../instructions/initializeAccount.js';\nimport { getMint } from '../state/mint.js';\nimport { createAssociatedTokenAccount } from './createAssociatedTokenAccount.js';\n\n/**\n * Create and initialize a new token account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param mint Mint for the account\n * @param owner Owner of the new account\n * @param keypair Optional keypair, defaulting to the associated token account for the `mint` and `owner`\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Address of the new token account\n */\nexport async function createAccount(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n owner: PublicKey,\n keypair?: Keypair,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n // If a keypair isn't provided, create the associated token account and return its address\n if (!keypair) return await createAssociatedTokenAccount(connection, payer, mint, owner, confirmOptions, programId);\n\n // Otherwise, create the account with the provided keypair and return its public key\n const mintState = await getMint(connection, mint, confirmOptions?.commitment, programId);\n const space = getAccountLenForMint(mintState);\n const lamports = await connection.getMinimumBalanceForRentExemption(space);\n\n const transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: keypair.publicKey,\n space,\n lamports,\n programId,\n }),\n createInitializeAccountInstruction(keypair.publicKey, mint, owner, programId)\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer, keypair], confirmOptions);\n\n return keypair.publicKey;\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createAssociatedTokenAccountIdempotentInstruction } from '../instructions/associatedTokenAccount.js';\nimport { getAssociatedTokenAddress } from '../state/mint.js';\n\n/**\n * Create and initialize a new associated token account\n * The instruction will succeed even if the associated token account already exists\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param mint Mint for the account\n * @param owner Owner of the new account\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Address of the new or existing associated token account\n */\nexport async function createAssociatedTokenAccountIdempotent(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n owner: PublicKey,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): Promise {\n const associatedToken = await getAssociatedTokenAddress(mint, owner, false, programId, associatedTokenProgramId);\n\n const transaction = new Transaction().add(\n createAssociatedTokenAccountIdempotentInstruction(\n payer.publicKey,\n associatedToken,\n owner,\n mint,\n programId,\n associatedTokenProgramId\n )\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n\n return associatedToken;\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountMeta } from '@solana/web3.js';\nimport { PublicKey, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface InitializeMint2InstructionData {\n instruction: TokenInstruction.InitializeMint2;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthorityOption: 1 | 0;\n freezeAuthority: PublicKey;\n}\n\n/** TODO: docs */\nexport const initializeMint2InstructionData = struct([\n u8('instruction'),\n u8('decimals'),\n publicKey('mintAuthority'),\n u8('freezeAuthorityOption'),\n publicKey('freezeAuthority'),\n]);\n\n/**\n * Construct an InitializeMint2 instruction\n *\n * @param mint Token mint account\n * @param decimals Number of decimals in token account amounts\n * @param mintAuthority Minting authority\n * @param freezeAuthority Optional authority that can freeze token accounts\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeMint2Instruction(\n mint: PublicKey,\n decimals: number,\n mintAuthority: PublicKey,\n freezeAuthority: PublicKey | null,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(initializeMint2InstructionData.span);\n initializeMint2InstructionData.encode(\n {\n instruction: TokenInstruction.InitializeMint2,\n decimals,\n mintAuthority,\n freezeAuthorityOption: freezeAuthority ? 1 : 0,\n freezeAuthority: freezeAuthority || new PublicKey(0),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeMint2 instruction */\nexport interface DecodedInitializeMint2Instruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeMint2;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializeMint2 instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeMint2Instruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeMint2Instruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeMint2InstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint },\n data,\n } = decodeInitializeMint2InstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeMint2) throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeMint2 instruction */\nexport interface DecodedInitializeMint2InstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializeMint2 instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeMint2InstructionUnchecked({\n programId,\n keys: [mint],\n data,\n}: TransactionInstruction): DecodedInitializeMint2InstructionUnchecked {\n const { instruction, decimals, mintAuthority, freezeAuthorityOption, freezeAuthority } =\n initializeMint2InstructionData.decode(data);\n\n return {\n programId,\n keys: {\n mint,\n },\n data: {\n instruction,\n decimals,\n mintAuthority,\n freezeAuthority: freezeAuthorityOption ? freezeAuthority : null,\n },\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { Keypair, sendAndConfirmTransaction, SystemProgram, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createInitializeMint2Instruction } from '../instructions/initializeMint2.js';\nimport { getMinimumBalanceForRentExemptMint, MINT_SIZE } from '../state/mint.js';\n\n/**\n * Create and initialize a new mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param mintAuthority Account or multisig that will control minting\n * @param freezeAuthority Optional account or multisig that can freeze token accounts\n * @param decimals Location of the decimal place\n * @param keypair Optional keypair, defaulting to a new random one\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Address of the new mint\n */\nexport async function createMint(\n connection: Connection,\n payer: Signer,\n mintAuthority: PublicKey,\n freezeAuthority: PublicKey | null,\n decimals: number,\n keypair = Keypair.generate(),\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const lamports = await getMinimumBalanceForRentExemptMint(connection);\n\n const transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: keypair.publicKey,\n space: MINT_SIZE,\n lamports,\n programId,\n }),\n createInitializeMint2Instruction(keypair.publicKey, decimals, mintAuthority, freezeAuthority, programId)\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer, keypair], confirmOptions);\n\n return keypair.publicKey;\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface InitializeMultisigInstructionData {\n instruction: TokenInstruction.InitializeMultisig;\n m: number;\n}\n\n/** TODO: docs */\nexport const initializeMultisigInstructionData = struct([\n u8('instruction'),\n u8('m'),\n]);\n\n/**\n * Construct an InitializeMultisig instruction\n *\n * @param account Multisig account\n * @param signers Full set of signers\n * @param m Number of required signatures\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeMultisigInstruction(\n account: PublicKey,\n signers: PublicKey[],\n m: number,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n for (const signer of signers) {\n keys.push({ pubkey: signer, isSigner: false, isWritable: false });\n }\n\n const data = Buffer.alloc(initializeMultisigInstructionData.span);\n initializeMultisigInstructionData.encode(\n {\n instruction: TokenInstruction.InitializeMultisig,\n m,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeMultisig instruction */\nexport interface DecodedInitializeMultisigInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n rent: AccountMeta;\n signers: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.InitializeMultisig;\n m: number;\n };\n}\n\n/**\n * Decode an InitializeMultisig instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeMultisigInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeMultisigInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeMultisigInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, rent, signers },\n data,\n } = decodeInitializeMultisigInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeMultisig) throw new TokenInvalidInstructionTypeError();\n if (!account || !rent || !signers.length) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n rent,\n signers,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeMultisig instruction */\nexport interface DecodedInitializeMultisigInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n rent: AccountMeta | undefined;\n signers: AccountMeta[];\n };\n data: {\n instruction: number;\n m: number;\n };\n}\n\n/**\n * Decode an InitializeMultisig instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeMultisigInstructionUnchecked({\n programId,\n keys: [account, rent, ...signers],\n data,\n}: TransactionInstruction): DecodedInitializeMultisigInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n rent,\n signers,\n },\n data: initializeMultisigInstructionData.decode(data),\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { Keypair, sendAndConfirmTransaction, SystemProgram, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createInitializeMultisigInstruction } from '../instructions/initializeMultisig.js';\nimport { getMinimumBalanceForRentExemptMultisig, MULTISIG_SIZE } from '../state/multisig.js';\n\n/**\n * Create and initialize a new multisig\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param signers Full set of signers\n * @param m Number of required signatures\n * @param keypair Optional keypair, defaulting to a new random one\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Address of the new multisig\n */\nexport async function createMultisig(\n connection: Connection,\n payer: Signer,\n signers: PublicKey[],\n m: number,\n keypair = Keypair.generate(),\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const lamports = await getMinimumBalanceForRentExemptMultisig(connection);\n\n const transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: keypair.publicKey,\n space: MULTISIG_SIZE,\n lamports,\n programId,\n }),\n createInitializeMultisigInstruction(keypair.publicKey, signers, m, programId)\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer, keypair], confirmOptions);\n\n return keypair.publicKey;\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport type { PublicKey } from '@solana/web3.js';\nimport { SystemProgram, TransactionInstruction } from '@solana/web3.js';\nimport { NATIVE_MINT_2022, programSupportsExtensions, TOKEN_2022_PROGRAM_ID } from '../constants.js';\nimport { TokenUnsupportedInstructionError } from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface CreateNativeMintInstructionData {\n instruction: TokenInstruction.CreateNativeMint;\n}\n\n/** TODO: docs */\nexport const createNativeMintInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a CreateNativeMint instruction\n *\n * @param account New token account\n * @param mint Mint account\n * @param owner Owner of the new account\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createCreateNativeMintInstruction(\n payer: PublicKey,\n nativeMintId = NATIVE_MINT_2022,\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: nativeMintId, isSigner: false, isWritable: true },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n ];\n\n const data = Buffer.alloc(createNativeMintInstructionData.span);\n createNativeMintInstructionData.encode({ instruction: TokenInstruction.CreateNativeMint }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n", "import type { ConfirmOptions, Connection, Signer } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { NATIVE_MINT_2022, TOKEN_2022_PROGRAM_ID } from '../constants.js';\nimport { createCreateNativeMintInstruction } from '../instructions/createNativeMint.js';\n\n/**\n * Create native mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n * @param nativeMint Native mint id associated with program\n */\nexport async function createNativeMint(\n connection: Connection,\n payer: Signer,\n confirmOptions?: ConfirmOptions,\n nativeMint = NATIVE_MINT_2022,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const transaction = new Transaction().add(\n createCreateNativeMintInstruction(payer.publicKey, nativeMint, programId)\n );\n await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface SyncNativeInstructionData {\n instruction: TokenInstruction.SyncNative;\n}\n\n/** TODO: docs */\nexport const syncNativeInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a SyncNative instruction\n *\n * @param account Native account to sync lamports from\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createSyncNativeInstruction(account: PublicKey, programId = TOKEN_PROGRAM_ID): TransactionInstruction {\n const keys = [{ pubkey: account, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(syncNativeInstructionData.span);\n syncNativeInstructionData.encode({ instruction: TokenInstruction.SyncNative }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid SyncNative instruction */\nexport interface DecodedSyncNativeInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.SyncNative;\n };\n}\n\n/**\n * Decode a SyncNative instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeSyncNativeInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedSyncNativeInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== syncNativeInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account },\n data,\n } = decodeSyncNativeInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.SyncNative) throw new TokenInvalidInstructionTypeError();\n if (!account) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n },\n data,\n };\n}\n\n/** A decoded, non-validated SyncNative instruction */\nexport interface DecodedSyncNativeInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a SyncNative instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeSyncNativeInstructionUnchecked({\n programId,\n keys: [account],\n data,\n}: TransactionInstruction): DecodedSyncNativeInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n },\n data: syncNativeInstructionData.decode(data),\n };\n}\n", "import type { ConfirmOptions, Connection, Keypair, PublicKey, Signer } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, SystemProgram, Transaction } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, NATIVE_MINT, TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createAssociatedTokenAccountInstruction } from '../instructions/associatedTokenAccount.js';\nimport { createInitializeAccountInstruction } from '../instructions/initializeAccount.js';\nimport { createSyncNativeInstruction } from '../instructions/syncNative.js';\nimport { ACCOUNT_SIZE, getMinimumBalanceForRentExemptAccount } from '../state/account.js';\nimport { getAssociatedTokenAddress } from '../state/mint.js';\nimport { createAccount } from './createAccount.js';\n\n/**\n * Create, initialize, and fund a new wrapped native SOL account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param owner Owner of the new token account\n * @param amount Number of lamports to wrap\n * @param keypair Optional keypair, defaulting to the associated token account for the native mint and `owner`\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Address of the new wrapped native SOL account\n */\nexport async function createWrappedNativeAccount(\n connection: Connection,\n payer: Signer,\n owner: PublicKey,\n amount: number,\n keypair?: Keypair,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID,\n nativeMint = NATIVE_MINT\n): Promise {\n // If the amount provided is explicitly 0 or NaN, just create the account without funding it\n if (!amount) return await createAccount(connection, payer, nativeMint, owner, keypair, confirmOptions, programId);\n\n // If a keypair isn't provided, create the account at the owner's ATA for the native mint and return its address\n if (!keypair) {\n const associatedToken = await getAssociatedTokenAddress(\n nativeMint,\n owner,\n false,\n programId,\n ASSOCIATED_TOKEN_PROGRAM_ID\n );\n\n const transaction = new Transaction().add(\n createAssociatedTokenAccountInstruction(\n payer.publicKey,\n associatedToken,\n owner,\n nativeMint,\n programId,\n ASSOCIATED_TOKEN_PROGRAM_ID\n ),\n SystemProgram.transfer({\n fromPubkey: payer.publicKey,\n toPubkey: associatedToken,\n lamports: amount,\n }),\n createSyncNativeInstruction(associatedToken, programId)\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n\n return associatedToken;\n }\n\n // Otherwise, create the account with the provided keypair and return its public key\n const lamports = await getMinimumBalanceForRentExemptAccount(connection);\n\n const transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: keypair.publicKey,\n space: ACCOUNT_SIZE,\n lamports,\n programId,\n }),\n SystemProgram.transfer({\n fromPubkey: payer.publicKey,\n toPubkey: keypair.publicKey,\n lamports: amount,\n }),\n createInitializeAccountInstruction(keypair.publicKey, nativeMint, owner, programId)\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer, keypair], confirmOptions);\n\n return keypair.publicKey;\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface FreezeAccountInstructionData {\n instruction: TokenInstruction.FreezeAccount;\n}\n\n/** TODO: docs */\nexport const freezeAccountInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a FreezeAccount instruction\n *\n * @param account Account to freeze\n * @param mint Mint account\n * @param authority Mint freeze authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createFreezeAccountInstruction(\n account: PublicKey,\n mint: PublicKey,\n authority: PublicKey,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(freezeAccountInstructionData.span);\n freezeAccountInstructionData.encode({ instruction: TokenInstruction.FreezeAccount }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid FreezeAccount instruction */\nexport interface DecodedFreezeAccountInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.FreezeAccount;\n };\n}\n\n/**\n * Decode a FreezeAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeFreezeAccountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedFreezeAccountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== freezeAccountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, authority, multiSigners },\n data,\n } = decodeFreezeAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.FreezeAccount) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated FreezeAccount instruction */\nexport interface DecodedFreezeAccountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a FreezeAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeFreezeAccountInstructionUnchecked({\n programId,\n keys: [account, mint, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedFreezeAccountInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data: freezeAccountInstructionData.decode(data),\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createFreezeAccountInstruction } from '../instructions/freezeAccount.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Freeze a token account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to freeze\n * @param mint Mint for the account\n * @param authority Mint freeze authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function freezeAccount(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n mint: PublicKey,\n authority: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createFreezeAccountInstruction(account, mint, authorityPublicKey, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import type { Commitment, ConfirmOptions, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenAccountNotFoundError,\n TokenInvalidAccountOwnerError,\n TokenInvalidMintError,\n TokenInvalidOwnerError,\n} from '../errors.js';\nimport { createAssociatedTokenAccountInstruction } from '../instructions/associatedTokenAccount.js';\nimport type { Account } from '../state/account.js';\nimport { getAccount } from '../state/account.js';\nimport { getAssociatedTokenAddress } from '../state/mint.js';\n\n/**\n * Retrieve the associated token account, or create it if it doesn't exist\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction and initialization fees\n * @param mint Mint associated with the account to set or verify\n * @param owner Owner of the account to set or verify\n * @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)\n * @param commitment Desired level of commitment for querying the state\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Address of the new associated token account\n */\nexport async function getOrCreateAssociatedTokenAccount(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n owner: PublicKey,\n allowOwnerOffCurve = false,\n commitment?: Commitment,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID,\n associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID\n): Promise {\n const associatedToken = await getAssociatedTokenAddress(\n mint,\n owner,\n allowOwnerOffCurve,\n programId,\n associatedTokenProgramId\n );\n\n // This is the optimal logic, considering TX fee, client-side computation, RPC roundtrips and guaranteed idempotent.\n // Sadly we can't do this atomically.\n let account: Account;\n try {\n account = await getAccount(connection, associatedToken, commitment, programId);\n } catch (error: unknown) {\n // TokenAccountNotFoundError can be possible if the associated address has already received some lamports,\n // becoming a system account. Assuming program derived addressing is safe, this is the only case for the\n // TokenInvalidAccountOwnerError in this code path.\n if (error instanceof TokenAccountNotFoundError || error instanceof TokenInvalidAccountOwnerError) {\n // As this isn't atomic, it's possible others can create associated accounts meanwhile.\n try {\n const transaction = new Transaction().add(\n createAssociatedTokenAccountInstruction(\n payer.publicKey,\n associatedToken,\n owner,\n mint,\n programId,\n associatedTokenProgramId\n )\n );\n\n await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n } catch (error: unknown) {\n // Ignore all errors; for now there is no API-compatible way to selectively ignore the expected\n // instruction error if the associated account exists already.\n }\n\n // Now this should always succeed\n account = await getAccount(connection, associatedToken, commitment, programId);\n } else {\n throw error;\n }\n }\n\n if (!account.mint.equals(mint)) throw new TokenInvalidMintError();\n if (!account.owner.equals(owner)) throw new TokenInvalidOwnerError();\n\n return account;\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface MintToInstructionData {\n instruction: TokenInstruction.MintTo;\n amount: bigint;\n}\n\n/** TODO: docs */\nexport const mintToInstructionData = struct([u8('instruction'), u64('amount')]);\n\n/**\n * Construct a MintTo instruction\n *\n * @param mint Public key of the mint\n * @param destination Address of the token account to mint to\n * @param authority The mint authority\n * @param amount Amount to mint\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createMintToInstruction(\n mint: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(mintToInstructionData.span);\n mintToInstructionData.encode(\n {\n instruction: TokenInstruction.MintTo,\n amount: BigInt(amount),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid MintTo instruction */\nexport interface DecodedMintToInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.MintTo;\n amount: bigint;\n };\n}\n\n/**\n * Decode a MintTo instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeMintToInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedMintToInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== mintToInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, destination, authority, multiSigners },\n data,\n } = decodeMintToInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.MintTo) throw new TokenInvalidInstructionTypeError();\n if (!mint || !destination || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated MintTo instruction */\nexport interface DecodedMintToInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n };\n}\n\n/**\n * Decode a MintTo instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeMintToInstructionUnchecked({\n programId,\n keys: [mint, destination, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedMintToInstructionUnchecked {\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data: mintToInstructionData.decode(data),\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createMintToInstruction } from '../instructions/mintTo.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Mint tokens to an account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Mint for the account\n * @param destination Address of the account to mint to\n * @param authority Minting authority\n * @param amount Amount to mint\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function mintTo(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n destination: PublicKey,\n authority: Signer | PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createMintToInstruction(mint, destination, authorityPublicKey, amount, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface MintToCheckedInstructionData {\n instruction: TokenInstruction.MintToChecked;\n amount: bigint;\n decimals: number;\n}\n\n/** TODO: docs */\nexport const mintToCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n\n/**\n * Construct a MintToChecked instruction\n *\n * @param mint Public key of the mint\n * @param destination Address of the token account to mint to\n * @param authority The mint authority\n * @param amount Amount to mint\n * @param decimals Number of decimals in amount to mint\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createMintToCheckedInstruction(\n mint: PublicKey,\n destination: PublicKey,\n authority: PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(mintToCheckedInstructionData.span);\n mintToCheckedInstructionData.encode(\n {\n instruction: TokenInstruction.MintToChecked,\n amount: BigInt(amount),\n decimals,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid MintToChecked instruction */\nexport interface DecodedMintToCheckedInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n destination: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.MintToChecked;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a MintToChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeMintToCheckedInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedMintToCheckedInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== mintToCheckedInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, destination, authority, multiSigners },\n data,\n } = decodeMintToCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.MintToChecked) throw new TokenInvalidInstructionTypeError();\n if (!mint || !destination || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated MintToChecked instruction */\nexport interface DecodedMintToCheckedInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a MintToChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeMintToCheckedInstructionUnchecked({\n programId,\n keys: [mint, destination, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedMintToCheckedInstructionUnchecked {\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data: mintToCheckedInstructionData.decode(data),\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createMintToCheckedInstruction } from '../instructions/mintToChecked.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Mint tokens to an account, asserting the token mint and decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Mint for the account\n * @param destination Address of the account to mint to\n * @param authority Minting authority\n * @param amount Amount to mint\n * @param decimals Number of decimals in amount to mint\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function mintToChecked(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n destination: PublicKey,\n authority: Signer | PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createMintToCheckedInstruction(mint, destination, authorityPublicKey, amount, decimals, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface RevokeInstructionData {\n instruction: TokenInstruction.Revoke;\n}\n\n/** TODO: docs */\nexport const revokeInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a Revoke instruction\n *\n * @param account Address of the token account\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createRevokeInstruction(\n account: PublicKey,\n owner: PublicKey,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners([{ pubkey: account, isSigner: false, isWritable: true }], owner, multiSigners);\n\n const data = Buffer.alloc(revokeInstructionData.span);\n revokeInstructionData.encode({ instruction: TokenInstruction.Revoke }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid Revoke instruction */\nexport interface DecodedRevokeInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.Revoke;\n };\n}\n\n/**\n * Decode a Revoke instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeRevokeInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedRevokeInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== revokeInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, owner, multiSigners },\n data,\n } = decodeRevokeInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Revoke) throw new TokenInvalidInstructionTypeError();\n if (!account || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated Revoke instruction */\nexport interface DecodedRevokeInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a Revoke instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeRevokeInstructionUnchecked({\n programId,\n keys: [account, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedRevokeInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n owner,\n multiSigners,\n },\n data: revokeInstructionData.decode(data),\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createRevokeInstruction } from '../instructions/revoke.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Revoke approval for the transfer of tokens from an account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Address of the token account\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function revoke(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n owner: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createRevokeInstruction(account, ownerPublicKey, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, Signer } from '@solana/web3.js';\nimport { PublicKey, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** Authority types defined by the program */\nexport enum AuthorityType {\n MintTokens = 0,\n FreezeAccount = 1,\n AccountOwner = 2,\n CloseAccount = 3,\n}\n\n/** TODO: docs */\nexport interface SetAuthorityInstructionData {\n instruction: TokenInstruction.SetAuthority;\n authorityType: AuthorityType;\n newAuthorityOption: 1 | 0;\n newAuthority: PublicKey;\n}\n\n/** TODO: docs */\nexport const setAuthorityInstructionData = struct([\n u8('instruction'),\n u8('authorityType'),\n u8('newAuthorityOption'),\n publicKey('newAuthority'),\n]);\n\n/**\n * Construct a SetAuthority instruction\n *\n * @param account Address of the token account\n * @param currentAuthority Current authority of the specified type\n * @param authorityType Type of authority to set\n * @param newAuthority New authority of the account\n * @param multiSigners Signing accounts if `currentAuthority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createSetAuthorityInstruction(\n account: PublicKey,\n currentAuthority: PublicKey,\n authorityType: AuthorityType,\n newAuthority: PublicKey | null,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners([{ pubkey: account, isSigner: false, isWritable: true }], currentAuthority, multiSigners);\n\n const data = Buffer.alloc(setAuthorityInstructionData.span);\n setAuthorityInstructionData.encode(\n {\n instruction: TokenInstruction.SetAuthority,\n authorityType,\n newAuthorityOption: newAuthority ? 1 : 0,\n newAuthority: newAuthority || new PublicKey(0),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid SetAuthority instruction */\nexport interface DecodedSetAuthorityInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n currentAuthority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.SetAuthority;\n authorityType: AuthorityType;\n newAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode a SetAuthority instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeSetAuthorityInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedSetAuthorityInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== setAuthorityInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, currentAuthority, multiSigners },\n data,\n } = decodeSetAuthorityInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.SetAuthority) throw new TokenInvalidInstructionTypeError();\n if (!account || !currentAuthority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n currentAuthority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated SetAuthority instruction */\nexport interface DecodedSetAuthorityInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n currentAuthority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n authorityType: AuthorityType;\n newAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode a SetAuthority instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeSetAuthorityInstructionUnchecked({\n programId,\n keys: [account, currentAuthority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedSetAuthorityInstructionUnchecked {\n const { instruction, authorityType, newAuthorityOption, newAuthority } = setAuthorityInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n account,\n currentAuthority,\n multiSigners,\n },\n data: {\n instruction,\n authorityType,\n newAuthority: newAuthorityOption ? newAuthority : null,\n },\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport type { AuthorityType } from '../instructions/setAuthority.js';\nimport { createSetAuthorityInstruction } from '../instructions/setAuthority.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Assign a new authority to the account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Address of the account\n * @param currentAuthority Current authority of the specified type\n * @param authorityType Type of authority to set\n * @param newAuthority New authority of the account\n * @param multiSigners Signing accounts if `currentAuthority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function setAuthority(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n currentAuthority: Signer | PublicKey,\n authorityType: AuthorityType,\n newAuthority: PublicKey | null,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [currentAuthorityPublicKey, signers] = getSigners(currentAuthority, multiSigners);\n\n const transaction = new Transaction().add(\n createSetAuthorityInstruction(\n account,\n currentAuthorityPublicKey,\n authorityType,\n newAuthority,\n multiSigners,\n programId\n )\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createSyncNativeInstruction } from '../instructions/syncNative.js';\n\n/**\n * Sync the balance of a native SPL token account to the underlying system account's lamports\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Native account to sync\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function syncNative(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const transaction = new Transaction().add(createSyncNativeInstruction(account, programId));\n\n return await sendAndConfirmTransaction(connection, transaction, [payer], confirmOptions);\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface ThawAccountInstructionData {\n instruction: TokenInstruction.ThawAccount;\n}\n\n/** TODO: docs */\nexport const thawAccountInstructionData = struct([u8('instruction')]);\n\n/**\n * Construct a ThawAccount instruction\n *\n * @param account Account to thaw\n * @param mint Mint account\n * @param authority Mint freeze authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createThawAccountInstruction(\n account: PublicKey,\n mint: PublicKey,\n authority: PublicKey,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n ],\n authority,\n multiSigners\n );\n\n const data = Buffer.alloc(thawAccountInstructionData.span);\n thawAccountInstructionData.encode({ instruction: TokenInstruction.ThawAccount }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid ThawAccount instruction */\nexport interface DecodedThawAccountInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n authority: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.ThawAccount;\n };\n}\n\n/**\n * Decode a ThawAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeThawAccountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedThawAccountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== thawAccountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, authority, multiSigners },\n data,\n } = decodeThawAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.ThawAccount) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !authority) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated ThawAccount instruction */\nexport interface DecodedThawAccountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n authority: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode a ThawAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeThawAccountInstructionUnchecked({\n programId,\n keys: [account, mint, authority, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedThawAccountInstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data: thawAccountInstructionData.decode(data),\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createThawAccountInstruction } from '../instructions/thawAccount.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Thaw (unfreeze) a token account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param account Account to thaw\n * @param mint Mint for the account\n * @param authority Mint freeze authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function thawAccount(\n connection: Connection,\n payer: Signer,\n account: PublicKey,\n mint: PublicKey,\n authority: Signer | PublicKey,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [authorityPublicKey, signers] = getSigners(authority, multiSigners);\n\n const transaction = new Transaction().add(\n createThawAccountInstruction(account, mint, authorityPublicKey, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface TransferInstructionData {\n instruction: TokenInstruction.Transfer;\n amount: bigint;\n}\n\n/** TODO: docs */\nexport const transferInstructionData = struct([u8('instruction'), u64('amount')]);\n\n/**\n * Construct a Transfer instruction\n *\n * @param source Source account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param amount Number of tokens to transfer\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createTransferInstruction(\n source: PublicKey,\n destination: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(transferInstructionData.span);\n transferInstructionData.encode(\n {\n instruction: TokenInstruction.Transfer,\n amount: BigInt(amount),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid Transfer instruction */\nexport interface DecodedTransferInstruction {\n programId: PublicKey;\n keys: {\n source: AccountMeta;\n destination: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.Transfer;\n amount: bigint;\n };\n}\n\n/**\n * Decode a Transfer instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeTransferInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedTransferInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== transferInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { source, destination, owner, multiSigners },\n data,\n } = decodeTransferInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Transfer) throw new TokenInvalidInstructionTypeError();\n if (!source || !destination || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n source,\n destination,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated Transfer instruction */\nexport interface DecodedTransferInstructionUnchecked {\n programId: PublicKey;\n keys: {\n source: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n };\n}\n\n/**\n * Decode a Transfer instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeTransferInstructionUnchecked({\n programId,\n keys: [source, destination, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedTransferInstructionUnchecked {\n return {\n programId,\n keys: {\n source,\n destination,\n owner,\n multiSigners,\n },\n data: transferInstructionData.decode(data),\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createTransferInstruction } from '../instructions/transfer.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Transfer tokens from one account to another\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param source Source account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param amount Number of tokens to transfer\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function transfer(\n connection: Connection,\n payer: Signer,\n source: PublicKey,\n destination: PublicKey,\n owner: Signer | PublicKey,\n amount: number | bigint,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createTransferInstruction(source, destination, ownerPublicKey, amount, multiSigners, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface TransferCheckedInstructionData {\n instruction: TokenInstruction.TransferChecked;\n amount: bigint;\n decimals: number;\n}\n\n/** TODO: docs */\nexport const transferCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n\n/**\n * Construct a TransferChecked instruction\n *\n * @param source Source account\n * @param mint Mint account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param amount Number of tokens to transfer\n * @param decimals Number of decimals in transfer amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createTransferCheckedInstruction(\n source: PublicKey,\n mint: PublicKey,\n destination: PublicKey,\n owner: PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = addSigners(\n [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: destination, isSigner: false, isWritable: true },\n ],\n owner,\n multiSigners\n );\n\n const data = Buffer.alloc(transferCheckedInstructionData.span);\n transferCheckedInstructionData.encode(\n {\n instruction: TokenInstruction.TransferChecked,\n amount: BigInt(amount),\n decimals,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid TransferChecked instruction */\nexport interface DecodedTransferCheckedInstruction {\n programId: PublicKey;\n keys: {\n source: AccountMeta;\n mint: AccountMeta;\n destination: AccountMeta;\n owner: AccountMeta;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: TokenInstruction.TransferChecked;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a TransferChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeTransferCheckedInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedTransferCheckedInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== transferCheckedInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { source, mint, destination, owner, multiSigners },\n data,\n } = decodeTransferCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.TransferChecked) throw new TokenInvalidInstructionTypeError();\n if (!source || !mint || !destination || !owner) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n source,\n mint,\n destination,\n owner,\n multiSigners,\n },\n data,\n };\n}\n\n/** A decoded, non-validated TransferChecked instruction */\nexport interface DecodedTransferCheckedInstructionUnchecked {\n programId: PublicKey;\n keys: {\n source: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n destination: AccountMeta | undefined;\n owner: AccountMeta | undefined;\n multiSigners: AccountMeta[];\n };\n data: {\n instruction: number;\n amount: bigint;\n decimals: number;\n };\n}\n\n/**\n * Decode a TransferChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeTransferCheckedInstructionUnchecked({\n programId,\n keys: [source, mint, destination, owner, ...multiSigners],\n data,\n}: TransactionInstruction): DecodedTransferCheckedInstructionUnchecked {\n return {\n programId,\n keys: {\n source,\n mint,\n destination,\n owner,\n multiSigners,\n },\n data: transferCheckedInstructionData.decode(data),\n };\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer, TransactionSignature } from '@solana/web3.js';\nimport { sendAndConfirmTransaction, Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createTransferCheckedInstruction } from '../instructions/transferChecked.js';\nimport { getSigners } from './internal.js';\n\n/**\n * Transfer tokens from one account to another, asserting the token mint and decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param source Source account\n * @param mint Mint for the account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param amount Number of tokens to transfer\n * @param decimals Number of decimals in transfer amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function transferChecked(\n connection: Connection,\n payer: Signer,\n source: PublicKey,\n mint: PublicKey,\n destination: PublicKey,\n owner: Signer | PublicKey,\n amount: number | bigint,\n decimals: number,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const [ownerPublicKey, signers] = getSigners(owner, multiSigners);\n\n const transaction = new Transaction().add(\n createTransferCheckedInstruction(\n source,\n mint,\n destination,\n ownerPublicKey,\n amount,\n decimals,\n multiSigners,\n programId\n )\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, ...signers], confirmOptions);\n}\n", "import { blob, struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface UiAmountToAmountInstructionData {\n instruction: TokenInstruction.UiAmountToAmount;\n amount: Uint8Array;\n}\n\n/** TODO: docs */\n\n/**\n * Construct a UiAmountToAmount instruction\n *\n * @param mint Public key of the mint\n * @param amount UiAmount of tokens to be converted to Amount\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createUiAmountToAmountInstruction(\n mint: PublicKey,\n amount: string,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [{ pubkey: mint, isSigner: false, isWritable: false }];\n const buf = Buffer.from(amount, 'utf8');\n const uiAmountToAmountInstructionData = struct([\n u8('instruction'),\n blob(buf.length, 'amount'),\n ]);\n\n const data = Buffer.alloc(uiAmountToAmountInstructionData.span);\n uiAmountToAmountInstructionData.encode(\n {\n instruction: TokenInstruction.UiAmountToAmount,\n amount: buf,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid UiAmountToAmount instruction */\nexport interface DecodedUiAmountToAmountInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.UiAmountToAmount;\n amount: Uint8Array;\n };\n}\n\n/**\n * Decode a UiAmountToAmount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeUiAmountToAmountInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedUiAmountToAmountInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n const uiAmountToAmountInstructionData = struct([\n u8('instruction'),\n blob(instruction.data.length - 1, 'amount'),\n ]);\n if (instruction.data.length !== uiAmountToAmountInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint },\n data,\n } = decodeUiAmountToAmountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.UiAmountToAmount) throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n },\n data,\n };\n}\n\n/** A decoded, non-validated UiAmountToAmount instruction */\nexport interface DecodedUiAmountToAmountInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n amount: Uint8Array;\n };\n}\n\n/**\n * Decode a UiAmountToAmount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeUiAmountToAmountInstructionUnchecked({\n programId,\n keys: [mint],\n data,\n}: TransactionInstruction): DecodedUiAmountToAmountInstructionUnchecked {\n const uiAmountToAmountInstructionData = struct([\n u8('instruction'),\n blob(data.length - 1, 'amount'),\n ]);\n return {\n programId,\n keys: {\n mint,\n },\n data: uiAmountToAmountInstructionData.decode(data),\n };\n}\n", "import { u64 } from '@solana/buffer-layout-utils';\nimport type { Connection, PublicKey, Signer, TransactionError } from '@solana/web3.js';\nimport { Transaction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { createUiAmountToAmountInstruction } from '../instructions/uiAmountToAmount.js';\n\n/**\n * Amount as a string using mint-prescribed decimals\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Mint for the account\n * @param amount Ui Amount of tokens to be converted to Amount\n * @param programId SPL Token program account\n *\n * @return Ui Amount generated\n */\nexport async function uiAmountToAmount(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n amount: string,\n programId = TOKEN_PROGRAM_ID\n): Promise {\n const transaction = new Transaction().add(createUiAmountToAmountInstruction(mint, amount, programId));\n const { returnData, err } = (await connection.simulateTransaction(transaction, [payer], false)).value;\n if (returnData) {\n const data = Buffer.from(returnData.data[0], returnData.data[1]);\n return u64().decode(data);\n }\n return err;\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountMeta } from '@solana/web3.js';\nimport { PublicKey, SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface InitializeMintInstructionData {\n instruction: TokenInstruction.InitializeMint;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthorityOption: 1 | 0;\n freezeAuthority: PublicKey;\n}\n\n/** TODO: docs */\nexport const initializeMintInstructionData = struct([\n u8('instruction'),\n u8('decimals'),\n publicKey('mintAuthority'),\n u8('freezeAuthorityOption'),\n publicKey('freezeAuthority'),\n]);\n\n/**\n * Construct an InitializeMint instruction\n *\n * @param mint Token mint account\n * @param decimals Number of decimals in token account amounts\n * @param mintAuthority Minting authority\n * @param freezeAuthority Optional authority that can freeze token accounts\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeMintInstruction(\n mint: PublicKey,\n decimals: number,\n mintAuthority: PublicKey,\n freezeAuthority: PublicKey | null,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n\n const data = Buffer.alloc(initializeMintInstructionData.span);\n initializeMintInstructionData.encode(\n {\n instruction: TokenInstruction.InitializeMint,\n decimals,\n mintAuthority,\n freezeAuthorityOption: freezeAuthority ? 1 : 0,\n freezeAuthority: freezeAuthority || new PublicKey(0),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeMint instruction */\nexport interface DecodedInitializeMintInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n rent: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeMint;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializeMint instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeMintInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeMintInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeMintInstructionData.span) throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint, rent },\n data,\n } = decodeInitializeMintInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeMint) throw new TokenInvalidInstructionTypeError();\n if (!mint || !rent) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n mint,\n rent,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeMint instruction */\nexport interface DecodedInitializeMintInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n rent: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n decimals: number;\n mintAuthority: PublicKey;\n freezeAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializeMint instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeMintInstructionUnchecked({\n programId,\n keys: [mint, rent],\n data,\n}: TransactionInstruction): DecodedInitializeMintInstructionUnchecked {\n const { instruction, decimals, mintAuthority, freezeAuthorityOption, freezeAuthority } =\n initializeMintInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n mint,\n rent,\n },\n data: {\n instruction,\n decimals,\n mintAuthority,\n freezeAuthority: freezeAuthorityOption ? freezeAuthority : null,\n },\n };\n}\n", "import { s16, struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { PublicKey, Signer } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport { addSigners } from '../../instructions/internal.js';\nimport { TokenInstruction } from '../../instructions/types.js';\n\nexport enum InterestBearingMintInstruction {\n Initialize = 0,\n UpdateRate = 1,\n}\n\nexport interface InterestBearingMintInitializeInstructionData {\n instruction: TokenInstruction.InterestBearingMintExtension;\n interestBearingMintInstruction: InterestBearingMintInstruction.Initialize;\n rateAuthority: PublicKey;\n rate: number;\n}\n\nexport interface InterestBearingMintUpdateRateInstructionData {\n instruction: TokenInstruction.InterestBearingMintExtension;\n interestBearingMintInstruction: InterestBearingMintInstruction.UpdateRate;\n rate: number;\n}\n\nexport const interestBearingMintInitializeInstructionData = struct([\n u8('instruction'),\n u8('interestBearingMintInstruction'),\n // TODO: Make this an optional public key\n publicKey('rateAuthority'),\n s16('rate'),\n]);\n\nexport const interestBearingMintUpdateRateInstructionData = struct([\n u8('instruction'),\n u8('interestBearingMintInstruction'),\n s16('rate'),\n]);\n\n/**\n * Construct an InitializeInterestBearingMint instruction\n *\n * @param mint Mint to initialize\n * @param rateAuthority The public key for the account that can update the rate\n * @param rate The initial interest rate\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeInterestBearingMintInstruction(\n mint: PublicKey,\n rateAuthority: PublicKey,\n rate: number,\n programId = TOKEN_2022_PROGRAM_ID\n) {\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n const data = Buffer.alloc(interestBearingMintInitializeInstructionData.span);\n interestBearingMintInitializeInstructionData.encode(\n {\n instruction: TokenInstruction.InterestBearingMintExtension,\n interestBearingMintInstruction: InterestBearingMintInstruction.Initialize,\n rateAuthority,\n rate,\n },\n data\n );\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/**\n * Construct an UpdateRateInterestBearingMint instruction\n *\n * @param mint Mint to initialize\n * @param rateAuthority The public key for the account that can update the rate\n * @param rate The updated interest rate\n * @param multiSigners Signing accounts if `rateAuthority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createUpdateRateInterestBearingMintInstruction(\n mint: PublicKey,\n rateAuthority: PublicKey,\n rate: number,\n multiSigners: Signer[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n) {\n const keys = addSigners(\n [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: rateAuthority, isSigner: !multiSigners.length, isWritable: false },\n ],\n rateAuthority,\n multiSigners\n );\n const data = Buffer.alloc(interestBearingMintUpdateRateInstructionData.span);\n interestBearingMintUpdateRateInstructionData.encode(\n {\n instruction: TokenInstruction.InterestBearingMintExtension,\n interestBearingMintInstruction: InterestBearingMintInstruction.UpdateRate,\n rate,\n },\n data\n );\n return new TransactionInstruction({ keys, programId, data });\n}\n", "import type { ConfirmOptions, Connection, PublicKey, Signer } from '@solana/web3.js';\nimport { Keypair, sendAndConfirmTransaction, SystemProgram, Transaction } from '@solana/web3.js';\nimport { getSigners } from '../../actions/internal.js';\nimport { TOKEN_2022_PROGRAM_ID } from '../../constants.js';\nimport { createInitializeMintInstruction } from '../../instructions/initializeMint.js';\nimport { ExtensionType, getMintLen } from '../extensionType.js';\nimport {\n createInitializeInterestBearingMintInstruction,\n createUpdateRateInterestBearingMintInstruction,\n} from './instructions.js';\n\n/**\n * Initialize an interest bearing account on a mint\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mintAuthority Account or multisig that will control minting\n * @param freezeAuthority Optional account or multisig that can freeze token accounts\n * @param rateAuthority The public key for the account that can update the rate\n * @param rate The initial interest rate\n * @param decimals Location of the decimal place\n * @param keypair Optional keypair, defaulting to a new random one\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Public key of the mint\n */\nexport async function createInterestBearingMint(\n connection: Connection,\n payer: Signer,\n mintAuthority: PublicKey,\n freezeAuthority: PublicKey,\n rateAuthority: PublicKey,\n rate: number,\n decimals: number,\n keypair = Keypair.generate(),\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const mintLen = getMintLen([ExtensionType.InterestBearingMint]);\n const lamports = await connection.getMinimumBalanceForRentExemption(mintLen);\n const transaction = new Transaction().add(\n SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: keypair.publicKey,\n space: mintLen,\n lamports,\n programId,\n }),\n createInitializeInterestBearingMintInstruction(keypair.publicKey, rateAuthority, rate, programId),\n createInitializeMintInstruction(keypair.publicKey, decimals, mintAuthority, freezeAuthority, programId)\n );\n await sendAndConfirmTransaction(connection, transaction, [payer, keypair], confirmOptions);\n return keypair.publicKey;\n}\n\n/**\n * Update the interest rate of an interest bearing account\n *\n * @param connection Connection to use\n * @param payer Payer of the transaction fees\n * @param mint Public key of the mint\n * @param rateAuthority The public key for the account that can update the rate\n * @param rate The initial interest rate\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param confirmOptions Options for confirming the transaction\n * @param programId SPL Token program account\n *\n * @return Signature of the confirmed transaction\n */\nexport async function updateRateInterestBearingMint(\n connection: Connection,\n payer: Signer,\n mint: PublicKey,\n rateAuthority: Signer,\n rate: number,\n multiSigners: Signer[] = [],\n confirmOptions?: ConfirmOptions,\n programId = TOKEN_2022_PROGRAM_ID\n): Promise {\n const [rateAuthorityPublicKey, signers] = getSigners(rateAuthority, multiSigners);\n const transaction = new Transaction().add(\n createUpdateRateInterestBearingMintInstruction(mint, rateAuthorityPublicKey, rate, signers, programId)\n );\n\n return await sendAndConfirmTransaction(connection, transaction, [payer, rateAuthority, ...signers], confirmOptions);\n}\n", "import { u8 } from '@solana/buffer-layout';\nimport type { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionTypeError } from '../errors.js';\nimport type { DecodedAmountToUiAmountInstruction } from './amountToUiAmount.js';\nimport { decodeAmountToUiAmountInstruction } from './amountToUiAmount.js';\nimport type { DecodedApproveInstruction } from './approve.js';\nimport { decodeApproveInstruction } from './approve.js';\nimport type { DecodedApproveCheckedInstruction } from './approveChecked.js';\nimport { decodeApproveCheckedInstruction } from './approveChecked.js';\nimport type { DecodedBurnInstruction } from './burn.js';\nimport { decodeBurnInstruction } from './burn.js';\nimport type { DecodedBurnCheckedInstruction } from './burnChecked.js';\nimport { decodeBurnCheckedInstruction } from './burnChecked.js';\nimport type { DecodedCloseAccountInstruction } from './closeAccount.js';\nimport { decodeCloseAccountInstruction } from './closeAccount.js';\nimport type { DecodedFreezeAccountInstruction } from './freezeAccount.js';\nimport { decodeFreezeAccountInstruction } from './freezeAccount.js';\nimport type { DecodedInitializeAccountInstruction } from './initializeAccount.js';\nimport { decodeInitializeAccountInstruction } from './initializeAccount.js';\nimport type { DecodedInitializeAccount2Instruction } from './initializeAccount2.js';\nimport { decodeInitializeAccount2Instruction } from './initializeAccount2.js';\nimport type { DecodedInitializeAccount3Instruction } from './initializeAccount3.js';\nimport { decodeInitializeAccount3Instruction } from './initializeAccount3.js';\nimport type { DecodedInitializeMintInstruction } from './initializeMint.js';\nimport { decodeInitializeMintInstruction } from './initializeMint.js';\nimport type { DecodedInitializeMint2Instruction } from './initializeMint2.js';\nimport { decodeInitializeMint2Instruction } from './initializeMint2.js';\nimport type { DecodedInitializeMultisigInstruction } from './initializeMultisig.js';\nimport { decodeInitializeMultisigInstruction } from './initializeMultisig.js';\nimport type { DecodedMintToInstruction } from './mintTo.js';\nimport { decodeMintToInstruction } from './mintTo.js';\nimport type { DecodedMintToCheckedInstruction } from './mintToChecked.js';\nimport { decodeMintToCheckedInstruction } from './mintToChecked.js';\nimport type { DecodedRevokeInstruction } from './revoke.js';\nimport { decodeRevokeInstruction } from './revoke.js';\nimport type { DecodedSetAuthorityInstruction } from './setAuthority.js';\nimport { decodeSetAuthorityInstruction } from './setAuthority.js';\nimport type { DecodedSyncNativeInstruction } from './syncNative.js';\nimport { decodeSyncNativeInstruction } from './syncNative.js';\nimport type { DecodedThawAccountInstruction } from './thawAccount.js';\nimport { decodeThawAccountInstruction } from './thawAccount.js';\nimport type { DecodedTransferInstruction } from './transfer.js';\nimport { decodeTransferInstruction } from './transfer.js';\nimport type { DecodedTransferCheckedInstruction } from './transferChecked.js';\nimport { decodeTransferCheckedInstruction } from './transferChecked.js';\nimport { TokenInstruction } from './types.js';\nimport type { DecodedUiAmountToAmountInstruction } from './uiAmountToAmount.js';\nimport { decodeUiAmountToAmountInstruction } from './uiAmountToAmount.js';\n\n/** TODO: docs */\nexport type DecodedInstruction =\n | DecodedInitializeMintInstruction\n | DecodedInitializeAccountInstruction\n | DecodedInitializeMultisigInstruction\n | DecodedTransferInstruction\n | DecodedApproveInstruction\n | DecodedRevokeInstruction\n | DecodedSetAuthorityInstruction\n | DecodedMintToInstruction\n | DecodedBurnInstruction\n | DecodedCloseAccountInstruction\n | DecodedFreezeAccountInstruction\n | DecodedThawAccountInstruction\n | DecodedTransferCheckedInstruction\n | DecodedApproveCheckedInstruction\n | DecodedMintToCheckedInstruction\n | DecodedBurnCheckedInstruction\n | DecodedInitializeAccount2Instruction\n | DecodedSyncNativeInstruction\n | DecodedInitializeAccount3Instruction\n | DecodedInitializeMint2Instruction\n | DecodedAmountToUiAmountInstruction\n | DecodedUiAmountToAmountInstruction\n // | DecodedInitializeMultisig2Instruction\n // TODO: implement ^ and remove `never`\n | never;\n\n/** TODO: docs */\nexport function decodeInstruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInstruction {\n if (!instruction.data.length) throw new TokenInvalidInstructionDataError();\n\n const type = u8().decode(instruction.data);\n if (type === TokenInstruction.InitializeMint) return decodeInitializeMintInstruction(instruction, programId);\n if (type === TokenInstruction.InitializeAccount) return decodeInitializeAccountInstruction(instruction, programId);\n if (type === TokenInstruction.InitializeMultisig)\n return decodeInitializeMultisigInstruction(instruction, programId);\n if (type === TokenInstruction.Transfer) return decodeTransferInstruction(instruction, programId);\n if (type === TokenInstruction.Approve) return decodeApproveInstruction(instruction, programId);\n if (type === TokenInstruction.Revoke) return decodeRevokeInstruction(instruction, programId);\n if (type === TokenInstruction.SetAuthority) return decodeSetAuthorityInstruction(instruction, programId);\n if (type === TokenInstruction.MintTo) return decodeMintToInstruction(instruction, programId);\n if (type === TokenInstruction.Burn) return decodeBurnInstruction(instruction, programId);\n if (type === TokenInstruction.CloseAccount) return decodeCloseAccountInstruction(instruction, programId);\n if (type === TokenInstruction.FreezeAccount) return decodeFreezeAccountInstruction(instruction, programId);\n if (type === TokenInstruction.ThawAccount) return decodeThawAccountInstruction(instruction, programId);\n if (type === TokenInstruction.TransferChecked) return decodeTransferCheckedInstruction(instruction, programId);\n if (type === TokenInstruction.ApproveChecked) return decodeApproveCheckedInstruction(instruction, programId);\n if (type === TokenInstruction.MintToChecked) return decodeMintToCheckedInstruction(instruction, programId);\n if (type === TokenInstruction.BurnChecked) return decodeBurnCheckedInstruction(instruction, programId);\n if (type === TokenInstruction.InitializeAccount2)\n return decodeInitializeAccount2Instruction(instruction, programId);\n if (type === TokenInstruction.SyncNative) return decodeSyncNativeInstruction(instruction, programId);\n if (type === TokenInstruction.InitializeAccount3)\n return decodeInitializeAccount3Instruction(instruction, programId);\n if (type === TokenInstruction.InitializeMint2) return decodeInitializeMint2Instruction(instruction, programId);\n if (type === TokenInstruction.AmountToUiAmount) return decodeAmountToUiAmountInstruction(instruction, programId);\n if (type === TokenInstruction.UiAmountToAmount) return decodeUiAmountToAmountInstruction(instruction, programId);\n // TODO: implement\n if (type === TokenInstruction.InitializeMultisig2) throw new TokenInvalidInstructionTypeError();\n\n throw new TokenInvalidInstructionTypeError();\n}\n\n/** TODO: docs */\nexport function isInitializeMintInstruction(decoded: DecodedInstruction): decoded is DecodedInitializeMintInstruction {\n return decoded.data.instruction === TokenInstruction.InitializeMint;\n}\n\n/** TODO: docs */\nexport function isInitializeAccountInstruction(\n decoded: DecodedInstruction\n): decoded is DecodedInitializeAccountInstruction {\n return decoded.data.instruction === TokenInstruction.InitializeAccount;\n}\n\n/** TODO: docs */\nexport function isInitializeMultisigInstruction(\n decoded: DecodedInstruction\n): decoded is DecodedInitializeMultisigInstruction {\n return decoded.data.instruction === TokenInstruction.InitializeMultisig;\n}\n\n/** TODO: docs */\nexport function isTransferInstruction(decoded: DecodedInstruction): decoded is DecodedTransferInstruction {\n return decoded.data.instruction === TokenInstruction.Transfer;\n}\n\n/** TODO: docs */\nexport function isApproveInstruction(decoded: DecodedInstruction): decoded is DecodedApproveInstruction {\n return decoded.data.instruction === TokenInstruction.Approve;\n}\n\n/** TODO: docs */\nexport function isRevokeInstruction(decoded: DecodedInstruction): decoded is DecodedRevokeInstruction {\n return decoded.data.instruction === TokenInstruction.Revoke;\n}\n\n/** TODO: docs */\nexport function isSetAuthorityInstruction(decoded: DecodedInstruction): decoded is DecodedSetAuthorityInstruction {\n return decoded.data.instruction === TokenInstruction.SetAuthority;\n}\n\n/** TODO: docs */\nexport function isMintToInstruction(decoded: DecodedInstruction): decoded is DecodedMintToInstruction {\n return decoded.data.instruction === TokenInstruction.MintTo;\n}\n\n/** TODO: docs */\nexport function isBurnInstruction(decoded: DecodedInstruction): decoded is DecodedBurnInstruction {\n return decoded.data.instruction === TokenInstruction.Burn;\n}\n\n/** TODO: docs */\nexport function isCloseAccountInstruction(decoded: DecodedInstruction): decoded is DecodedCloseAccountInstruction {\n return decoded.data.instruction === TokenInstruction.CloseAccount;\n}\n\n/** TODO: docs */\nexport function isFreezeAccountInstruction(decoded: DecodedInstruction): decoded is DecodedFreezeAccountInstruction {\n return decoded.data.instruction === TokenInstruction.FreezeAccount;\n}\n\n/** TODO: docs */\nexport function isThawAccountInstruction(decoded: DecodedInstruction): decoded is DecodedThawAccountInstruction {\n return decoded.data.instruction === TokenInstruction.ThawAccount;\n}\n\n/** TODO: docs */\nexport function isTransferCheckedInstruction(\n decoded: DecodedInstruction\n): decoded is DecodedTransferCheckedInstruction {\n return decoded.data.instruction === TokenInstruction.TransferChecked;\n}\n\n/** TODO: docs */\nexport function isApproveCheckedInstruction(decoded: DecodedInstruction): decoded is DecodedApproveCheckedInstruction {\n return decoded.data.instruction === TokenInstruction.ApproveChecked;\n}\n\n/** TODO: docs */\nexport function isMintToCheckedInstruction(decoded: DecodedInstruction): decoded is DecodedMintToCheckedInstruction {\n return decoded.data.instruction === TokenInstruction.MintToChecked;\n}\n\n/** TODO: docs */\nexport function isBurnCheckedInstruction(decoded: DecodedInstruction): decoded is DecodedBurnCheckedInstruction {\n return decoded.data.instruction === TokenInstruction.BurnChecked;\n}\n\n/** TODO: docs */\nexport function isInitializeAccount2Instruction(\n decoded: DecodedInstruction\n): decoded is DecodedInitializeAccount2Instruction {\n return decoded.data.instruction === TokenInstruction.InitializeAccount2;\n}\n\n/** TODO: docs */\nexport function isSyncNativeInstruction(decoded: DecodedInstruction): decoded is DecodedSyncNativeInstruction {\n return decoded.data.instruction === TokenInstruction.SyncNative;\n}\n\n/** TODO: docs */\nexport function isInitializeAccount3Instruction(\n decoded: DecodedInstruction\n): decoded is DecodedInitializeAccount3Instruction {\n return decoded.data.instruction === TokenInstruction.InitializeAccount3;\n}\n\n/** TODO: docs, implement */\n// export function isInitializeMultisig2Instruction(\n// decoded: DecodedInstruction\n// ): decoded is DecodedInitializeMultisig2Instruction {\n// return decoded.data.instruction === TokenInstruction.InitializeMultisig2;\n// }\n\n/** TODO: docs */\nexport function isInitializeMint2Instruction(\n decoded: DecodedInstruction\n): decoded is DecodedInitializeMint2Instruction {\n return decoded.data.instruction === TokenInstruction.InitializeMint2;\n}\n\n/** TODO: docs */\nexport function isAmountToUiAmountInstruction(\n decoded: DecodedInstruction\n): decoded is DecodedAmountToUiAmountInstruction {\n return decoded.data.instruction === TokenInstruction.AmountToUiAmount;\n}\n\n/** TODO: docs */\nexport function isUiamountToAmountInstruction(\n decoded: DecodedInstruction\n): decoded is DecodedUiAmountToAmountInstruction {\n return decoded.data.instruction === TokenInstruction.UiAmountToAmount;\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\nexport interface InitializeAccount2InstructionData {\n instruction: TokenInstruction.InitializeAccount2;\n owner: PublicKey;\n}\n\nexport const initializeAccount2InstructionData = struct([\n u8('instruction'),\n publicKey('owner'),\n]);\n\n/**\n * Construct an InitializeAccount2 instruction\n *\n * @param account New token account\n * @param mint Mint account\n * @param owner New account's owner/multisignature\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeAccount2Instruction(\n account: PublicKey,\n mint: PublicKey,\n owner: PublicKey,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n const data = Buffer.alloc(initializeAccount2InstructionData.span);\n initializeAccount2InstructionData.encode({ instruction: TokenInstruction.InitializeAccount2, owner }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeAccount2 instruction */\nexport interface DecodedInitializeAccount2Instruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n rent: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeAccount2;\n owner: PublicKey;\n };\n}\n\n/**\n * Decode an InitializeAccount2 instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeAccount2Instruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeAccount2Instruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeAccount2InstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint, rent },\n data,\n } = decodeInitializeAccount2InstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeAccount2) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !rent) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n rent,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeAccount2 instruction */\nexport interface DecodedInitializeAccount2InstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n rent: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n owner: PublicKey;\n };\n}\n\n/**\n * Decode an InitializeAccount2 instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeAccount2InstructionUnchecked({\n programId,\n keys: [account, mint, rent],\n data,\n}: TransactionInstruction): DecodedInitializeAccount2InstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n rent,\n },\n data: initializeAccount2InstructionData.decode(data),\n };\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\nexport interface InitializeAccount3InstructionData {\n instruction: TokenInstruction.InitializeAccount3;\n owner: PublicKey;\n}\n\nexport const initializeAccount3InstructionData = struct([\n u8('instruction'),\n publicKey('owner'),\n]);\n\n/**\n * Construct an InitializeAccount3 instruction\n *\n * @param account New token account\n * @param mint Mint account\n * @param owner New account's owner/multisignature\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeAccount3Instruction(\n account: PublicKey,\n mint: PublicKey,\n owner: PublicKey,\n programId = TOKEN_PROGRAM_ID\n): TransactionInstruction {\n const keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n ];\n const data = Buffer.alloc(initializeAccount3InstructionData.span);\n initializeAccount3InstructionData.encode({ instruction: TokenInstruction.InitializeAccount3, owner }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeAccount3 instruction */\nexport interface DecodedInitializeAccount3Instruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n mint: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeAccount3;\n owner: PublicKey;\n };\n}\n\n/**\n * Decode an InitializeAccount3 instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeAccount3Instruction(\n instruction: TransactionInstruction,\n programId = TOKEN_PROGRAM_ID\n): DecodedInitializeAccount3Instruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeAccount3InstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account, mint },\n data,\n } = decodeInitializeAccount3InstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeAccount3) throw new TokenInvalidInstructionTypeError();\n if (!account || !mint) throw new TokenInvalidInstructionKeysError();\n\n // TODO: key checks?\n\n return {\n programId,\n keys: {\n account,\n mint,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeAccount3 instruction */\nexport interface DecodedInitializeAccount3InstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n mint: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n owner: PublicKey;\n };\n}\n\n/**\n * Decode an InitializeAccount3 instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeAccount3InstructionUnchecked({\n programId,\n keys: [account, mint],\n data,\n}: TransactionInstruction): DecodedInitializeAccount3InstructionUnchecked {\n return {\n programId,\n keys: {\n account,\n mint,\n },\n data: initializeAccount3InstructionData.decode(data),\n };\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport type { AccountMeta, PublicKey } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** Deserialized instruction for the initiation of an immutable owner account */\nexport interface InitializeImmutableOwnerInstructionData {\n instruction: TokenInstruction.InitializeImmutableOwner;\n}\n\n/** The struct that represents the instruction data as it is read by the program */\nexport const initializeImmutableOwnerInstructionData = struct([\n u8('instruction'),\n]);\n\n/**\n * Construct an InitializeImmutableOwner instruction\n *\n * @param account Immutable Owner Account\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeImmutableOwnerInstruction(\n account: PublicKey,\n programId: PublicKey\n): TransactionInstruction {\n const keys = [{ pubkey: account, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(initializeImmutableOwnerInstructionData.span);\n initializeImmutableOwnerInstructionData.encode(\n {\n instruction: TokenInstruction.InitializeImmutableOwner,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeImmutableOwner instruction */\nexport interface DecodedInitializeImmutableOwnerInstruction {\n programId: PublicKey;\n keys: {\n account: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeImmutableOwner;\n };\n}\n\n/**\n * Decode an InitializeImmutableOwner instruction and validate it\n *\n * @param instruction InitializeImmutableOwner instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeImmutableOwnerInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedInitializeImmutableOwnerInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeImmutableOwnerInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { account },\n data,\n } = decodeInitializeImmutableOwnerInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeImmutableOwner) throw new TokenInvalidInstructionTypeError();\n if (!account) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n account,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeImmutableOwner instruction */\nexport interface DecodedInitializeImmutableOwnerInstructionUnchecked {\n programId: PublicKey;\n keys: {\n account: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n };\n}\n\n/**\n * Decode an InitializeImmutableOwner instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeImmutableOwnerInstructionUnchecked({\n programId,\n keys: [account],\n data,\n}: TransactionInstruction): DecodedInitializeImmutableOwnerInstructionUnchecked {\n const { instruction } = initializeImmutableOwnerInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n account: account,\n },\n data: {\n instruction,\n },\n };\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport type { AccountMeta } from '@solana/web3.js';\nimport { PublicKey, TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions } from '../constants.js';\nimport {\n TokenInvalidInstructionDataError,\n TokenInvalidInstructionKeysError,\n TokenInvalidInstructionProgramError,\n TokenInvalidInstructionTypeError,\n TokenUnsupportedInstructionError,\n} from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface InitializeMintCloseAuthorityInstructionData {\n instruction: TokenInstruction.InitializeMintCloseAuthority;\n closeAuthorityOption: 1 | 0;\n closeAuthority: PublicKey;\n}\n\n/** TODO: docs */\nexport const initializeMintCloseAuthorityInstructionData = struct([\n u8('instruction'),\n u8('closeAuthorityOption'),\n publicKey('closeAuthority'),\n]);\n\n/**\n * Construct an InitializeMintCloseAuthority instruction\n *\n * @param mint Token mint account\n * @param closeAuthority Optional authority that can close the mint\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeMintCloseAuthorityInstruction(\n mint: PublicKey,\n closeAuthority: PublicKey | null,\n programId: PublicKey\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(initializeMintCloseAuthorityInstructionData.span);\n initializeMintCloseAuthorityInstructionData.encode(\n {\n instruction: TokenInstruction.InitializeMintCloseAuthority,\n closeAuthorityOption: closeAuthority ? 1 : 0,\n closeAuthority: closeAuthority || new PublicKey(0),\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n\n/** A decoded, valid InitializeMintCloseAuthority instruction */\nexport interface DecodedInitializeMintCloseAuthorityInstruction {\n programId: PublicKey;\n keys: {\n mint: AccountMeta;\n };\n data: {\n instruction: TokenInstruction.InitializeMintCloseAuthority;\n closeAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializeMintCloseAuthority instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeMintCloseAuthorityInstruction(\n instruction: TransactionInstruction,\n programId: PublicKey\n): DecodedInitializeMintCloseAuthorityInstruction {\n if (!instruction.programId.equals(programId)) throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeMintCloseAuthorityInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n\n const {\n keys: { mint },\n data,\n } = decodeInitializeMintCloseAuthorityInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeMintCloseAuthority)\n throw new TokenInvalidInstructionTypeError();\n if (!mint) throw new TokenInvalidInstructionKeysError();\n\n return {\n programId,\n keys: {\n mint,\n },\n data,\n };\n}\n\n/** A decoded, non-validated InitializeMintCloseAuthority instruction */\nexport interface DecodedInitializeMintCloseAuthorityInstructionUnchecked {\n programId: PublicKey;\n keys: {\n mint: AccountMeta | undefined;\n };\n data: {\n instruction: number;\n closeAuthority: PublicKey | null;\n };\n}\n\n/**\n * Decode an InitializeMintCloseAuthority instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeMintCloseAuthorityInstructionUnchecked({\n programId,\n keys: [mint],\n data,\n}: TransactionInstruction): DecodedInitializeMintCloseAuthorityInstructionUnchecked {\n const { instruction, closeAuthorityOption, closeAuthority } =\n initializeMintCloseAuthorityInstructionData.decode(data);\n\n return {\n programId,\n keys: {\n mint,\n },\n data: {\n instruction,\n closeAuthority: closeAuthorityOption ? closeAuthority : null,\n },\n };\n}\n", "import { seq, struct, u16, u8 } from '@solana/buffer-layout';\nimport type { PublicKey, Signer } from '@solana/web3.js';\nimport { SystemProgram, TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions, TOKEN_2022_PROGRAM_ID } from '../constants.js';\nimport { TokenUnsupportedInstructionError } from '../errors.js';\nimport type { ExtensionType } from '../extensions/extensionType.js';\nimport { addSigners } from './internal.js';\nimport { TokenInstruction } from './types.js';\n\n/** TODO: docs */\nexport interface ReallocateInstructionData {\n instruction: TokenInstruction.Reallocate;\n extensionTypes: ExtensionType[];\n}\n\n/**\n * Construct a Reallocate instruction\n *\n * @param account Address of the token account\n * @param payer Address paying for the reallocation\n * @param extensionTypes Extensions to reallocate for\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createReallocateInstruction(\n account: PublicKey,\n payer: PublicKey,\n extensionTypes: ExtensionType[],\n owner: PublicKey,\n multiSigners: Signer[] = [],\n programId = TOKEN_2022_PROGRAM_ID\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const baseKeys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n ];\n const keys = addSigners(baseKeys, owner, multiSigners);\n\n const reallocateInstructionData = struct([\n u8('instruction'),\n seq(u16(), extensionTypes.length, 'extensionTypes'),\n ]);\n const data = Buffer.alloc(reallocateInstructionData.span);\n reallocateInstructionData.encode({ instruction: TokenInstruction.Reallocate, extensionTypes }, data);\n\n return new TransactionInstruction({ keys, programId, data });\n}\n", "import { struct, u8 } from '@solana/buffer-layout';\nimport type { PublicKey } from '@solana/web3.js';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { programSupportsExtensions } from '../constants.js';\nimport { TokenUnsupportedInstructionError } from '../errors.js';\nimport { TokenInstruction } from './types.js';\n\n/** Deserialized instruction for the initiation of an immutable owner account */\nexport interface InitializeNonTransferableMintInstructionData {\n instruction: TokenInstruction.InitializeNonTransferableMint;\n}\n\n/** The struct that represents the instruction data as it is read by the program */\nexport const initializeNonTransferableMintInstructionData = struct([\n u8('instruction'),\n]);\n\n/**\n * Construct an InitializeNonTransferableMint instruction\n *\n * @param mint Mint Account to make non-transferable\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeNonTransferableMintInstruction(\n mint: PublicKey,\n programId: PublicKey\n): TransactionInstruction {\n if (!programSupportsExtensions(programId)) {\n throw new TokenUnsupportedInstructionError();\n }\n const keys = [{ pubkey: mint, isSigner: false, isWritable: true }];\n\n const data = Buffer.alloc(initializeNonTransferableMintInstructionData.span);\n initializeNonTransferableMintInstructionData.encode(\n {\n instruction: TokenInstruction.InitializeNonTransferableMint,\n },\n data\n );\n\n return new TransactionInstruction({ keys, programId, data });\n}\n"], + "mappings": "+7BAAA,IAAAA,GAAAC,GAAA,QCAA,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAAC,SAASC,EAAM,CAChB,aAQA,IAAIC,EAAK,SAASC,EAAM,CACtB,IAAIC,EAAGC,EAAI,IAAI,aAAa,EAAE,EAC9B,GAAIF,EAAM,IAAKC,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAAKC,EAAED,GAAKD,EAAKC,GACxD,OAAOC,CACT,EAGIC,EAAc,UAAqB,CAAE,MAAM,IAAI,MAAM,SAAS,CAAG,EAEjEC,EAAK,IAAI,WAAW,EAAE,EACtBC,EAAK,IAAI,WAAW,EAAE,EAAGA,EAAG,GAAK,EAErC,IAAIC,EAAMP,EAAG,EACTQ,EAAMR,EAAG,CAAC,CAAC,CAAC,EACZS,EAAUT,EAAG,CAAC,MAAQ,CAAC,CAAC,EACxBU,EAAIV,EAAG,CAAC,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,IAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAM,CAAC,EACvIW,EAAKX,EAAG,CAAC,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAQ,IAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,IAAM,CAAC,EACxIY,EAAIZ,EAAG,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,IAAM,CAAC,EACvIa,EAAIb,EAAG,CAAC,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAAM,CAAC,EACvIc,EAAId,EAAG,CAAC,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,KAAQ,MAAQ,MAAQ,MAAQ,IAAQ,MAAQ,MAAQ,MAAQ,KAAQ,KAAM,CAAC,EAE3I,SAASe,EAAKC,EAAGd,EAAGe,EAAGC,EAAG,CACxBF,EAAEd,GAAQe,GAAK,GAAM,IACrBD,EAAEd,EAAE,GAAMe,GAAK,GAAM,IACrBD,EAAEd,EAAE,GAAMe,GAAM,EAAK,IACrBD,EAAEd,EAAE,GAAKe,EAAI,IACbD,EAAEd,EAAE,GAAMgB,GAAK,GAAO,IACtBF,EAAEd,EAAE,GAAMgB,GAAK,GAAO,IACtBF,EAAEd,EAAE,GAAMgB,GAAM,EAAM,IACtBF,EAAEd,EAAE,GAAKgB,EAAI,GACf,CAEA,SAASC,EAAGH,EAAGI,EAAIC,EAAGC,EAAIC,EAAG,CAC3B,IAAIrB,EAAEsB,EAAI,EACV,IAAKtB,EAAI,EAAGA,EAAIqB,EAAGrB,IAAKsB,GAAKR,EAAEI,EAAGlB,GAAGmB,EAAEC,EAAGpB,GAC1C,OAAQ,EAAMsB,EAAI,IAAO,GAAM,CACjC,CAEA,SAASC,EAAiBT,EAAGI,EAAIC,EAAGC,EAAI,CACtC,OAAOH,EAAGH,EAAEI,EAAGC,EAAEC,EAAG,EAAE,CACxB,CAEA,SAASI,GAAiBV,EAAGI,EAAIC,EAAGC,EAAI,CACtC,OAAOH,EAAGH,EAAEI,EAAGC,EAAEC,EAAG,EAAE,CACxB,CAEA,SAASK,GAAaC,EAAGC,EAAGC,EAAGC,EAAG,CAsBhC,QArBIC,EAAMD,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAG,GAAK,MAAO,IAAMA,EAAG,GAAK,MAAO,GAC9EE,EAAMH,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAG,GAAK,MAAO,IAAMA,EAAG,GAAK,MAAO,GAC9EI,EAAMJ,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAG,GAAK,MAAO,IAAMA,EAAG,GAAK,MAAO,GAC9EK,EAAML,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9EM,EAAMN,EAAE,IAAM,KAAQA,EAAE,IAAM,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9EO,GAAMN,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAG,GAAK,MAAO,IAAMA,EAAG,GAAK,MAAO,GAC9EO,GAAMT,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAG,GAAK,MAAO,IAAMA,EAAG,GAAK,MAAO,GAC9EU,GAAMV,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAG,GAAK,MAAO,IAAMA,EAAG,GAAK,MAAO,GAC9EW,GAAMX,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9EY,GAAMZ,EAAE,IAAM,KAAQA,EAAE,IAAM,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9Ea,GAAMX,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9EY,GAAMb,EAAE,IAAM,KAAQA,EAAE,IAAM,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9Ec,GAAMd,EAAE,IAAM,KAAQA,EAAE,IAAM,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9Ee,GAAMf,EAAE,IAAM,KAAQA,EAAE,IAAM,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9EgB,GAAMhB,EAAE,IAAM,KAAQA,EAAE,IAAM,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9EiB,GAAMhB,EAAE,IAAM,KAAQA,EAAE,IAAM,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAE9EiB,GAAKhB,EAAIiB,GAAKhB,EAAIiB,GAAKhB,EAAIiB,GAAKhB,EAAIiB,GAAKhB,EAAIiB,GAAKhB,GAAIiB,EAAKhB,GAAIiB,EAAKhB,GACpEiB,GAAKhB,GAAIiB,GAAKhB,GAAIiB,GAAMhB,GAAKiB,GAAMhB,GAAKiB,GAAMhB,GAAKiB,GAAMhB,GAAKiB,GAAMhB,GACpEiB,GAAMhB,GAAKiB,EAEN9D,GAAI,EAAGA,GAAI,GAAIA,IAAK,EAC3B8D,EAAIhB,GAAKY,GAAM,EACfR,IAAMY,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIZ,GAAKJ,GAAK,EACdQ,IAAMQ,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIR,GAAKJ,GAAK,EACdQ,IAAOI,GAAG,GAAKA,IAAK,GAAG,GACvBA,EAAIJ,GAAMJ,GAAK,EACfR,IAAMgB,GAAG,GAAKA,IAAK,GAAG,GAEtBA,EAAIX,GAAKJ,GAAK,EACdQ,IAAMO,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIP,GAAKJ,GAAK,EACdQ,IAAOG,GAAG,EAAIA,IAAK,GAAG,EACtBA,EAAIH,GAAMJ,GAAK,EACfR,IAAMe,GAAG,GAAKA,IAAK,GAAG,GACtBA,EAAIf,GAAKY,GAAM,EACfR,IAAMW,GAAG,GAAKA,IAAK,GAAG,GAEtBA,EAAIN,GAAMJ,EAAK,EACfQ,IAAOE,GAAG,EAAIA,IAAK,GAAG,EACtBA,EAAIF,GAAMJ,GAAM,EAChBR,IAAMc,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAId,GAAKY,GAAM,EACfR,GAAMU,GAAG,GAAKA,IAAK,GAAG,GACtBA,EAAIV,EAAKJ,GAAK,EACdQ,IAAOM,GAAG,GAAKA,IAAK,GAAG,GAEvBA,EAAID,GAAMJ,GAAM,EAChBR,IAAMa,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIb,GAAKY,GAAM,EACfR,GAAMS,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIT,EAAKJ,GAAK,EACdQ,IAAOK,GAAG,GAAKA,IAAK,GAAG,GACvBA,EAAIL,GAAMJ,EAAK,EACfQ,IAAOC,GAAG,GAAKA,IAAK,GAAG,GAEvBA,EAAIhB,GAAKG,GAAK,EACdF,IAAMe,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIf,GAAKD,GAAK,EACdE,IAAMc,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAId,GAAKD,GAAK,EACdE,IAAMa,GAAG,GAAKA,IAAK,GAAG,GACtBA,EAAIb,GAAKD,GAAK,EACdF,IAAMgB,GAAG,GAAKA,IAAK,GAAG,GAEtBA,EAAIX,GAAKD,GAAK,EACdE,GAAMU,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIV,EAAKD,GAAK,EACdE,GAAMS,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIT,EAAKD,EAAK,EACdF,IAAMY,GAAG,GAAKA,IAAK,GAAG,GACtBA,EAAIZ,GAAKG,EAAK,EACdF,IAAMW,GAAG,GAAKA,IAAK,GAAG,GAEtBA,EAAIN,GAAMD,GAAK,EACfE,IAAOK,GAAG,EAAIA,IAAK,GAAG,EACtBA,EAAIL,GAAMD,GAAM,EAChBF,IAAMQ,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIR,GAAKG,GAAM,EACfF,IAAMO,GAAG,GAAKA,IAAK,GAAG,GACtBA,EAAIP,GAAKD,GAAK,EACdE,IAAOM,GAAG,GAAKA,IAAK,GAAG,GAEvBA,EAAID,GAAMD,GAAM,EAChBF,IAAOI,GAAG,EAAIA,IAAK,GAAG,EACtBA,EAAIJ,GAAMG,GAAM,EAChBF,IAAOG,GAAG,EAAIA,IAAK,GAAG,EACtBA,EAAIH,GAAMD,GAAM,EAChBE,IAAOE,GAAG,GAAKA,IAAK,GAAG,GACvBA,EAAIF,GAAMD,GAAM,EAChBE,IAAOC,GAAG,GAAKA,IAAK,GAAG,GAExBhB,GAAMA,GAAMhB,EAAK,EACjBiB,GAAMA,GAAMhB,EAAK,EACjBiB,GAAMA,GAAMhB,EAAK,EACjBiB,GAAMA,GAAMhB,EAAK,EACjBiB,GAAMA,GAAMhB,EAAK,EACjBiB,GAAMA,GAAMhB,GAAK,EACjBiB,EAAMA,EAAMhB,GAAK,EACjBiB,EAAMA,EAAMhB,GAAK,EACjBiB,GAAMA,GAAMhB,GAAK,EACjBiB,GAAMA,GAAMhB,GAAK,EAClBiB,GAAMA,GAAMhB,GAAM,EAClBiB,GAAMA,GAAMhB,GAAM,EAClBiB,GAAMA,GAAMhB,GAAM,EAClBiB,GAAMA,GAAMhB,GAAM,EAClBiB,GAAMA,GAAMhB,GAAM,EAClBiB,GAAMA,GAAMhB,GAAM,EAElBnB,EAAG,GAAKoB,KAAQ,EAAI,IACpBpB,EAAG,GAAKoB,KAAQ,EAAI,IACpBpB,EAAG,GAAKoB,KAAO,GAAK,IACpBpB,EAAG,GAAKoB,KAAO,GAAK,IAEpBpB,EAAG,GAAKqB,KAAQ,EAAI,IACpBrB,EAAG,GAAKqB,KAAQ,EAAI,IACpBrB,EAAG,GAAKqB,KAAO,GAAK,IACpBrB,EAAG,GAAKqB,KAAO,GAAK,IAEpBrB,EAAG,GAAKsB,KAAQ,EAAI,IACpBtB,EAAG,GAAKsB,KAAQ,EAAI,IACpBtB,EAAE,IAAMsB,KAAO,GAAK,IACpBtB,EAAE,IAAMsB,KAAO,GAAK,IAEpBtB,EAAE,IAAMuB,KAAQ,EAAI,IACpBvB,EAAE,IAAMuB,KAAQ,EAAI,IACpBvB,EAAE,IAAMuB,KAAO,GAAK,IACpBvB,EAAE,IAAMuB,KAAO,GAAK,IAEpBvB,EAAE,IAAMwB,KAAQ,EAAI,IACpBxB,EAAE,IAAMwB,KAAQ,EAAI,IACpBxB,EAAE,IAAMwB,KAAO,GAAK,IACpBxB,EAAE,IAAMwB,KAAO,GAAK,IAEpBxB,EAAE,IAAMyB,KAAQ,EAAI,IACpBzB,EAAE,IAAMyB,KAAQ,EAAI,IACpBzB,EAAE,IAAMyB,KAAO,GAAK,IACpBzB,EAAE,IAAMyB,KAAO,GAAK,IAEpBzB,EAAE,IAAM0B,IAAQ,EAAI,IACpB1B,EAAE,IAAM0B,IAAQ,EAAI,IACpB1B,EAAE,IAAM0B,IAAO,GAAK,IACpB1B,EAAE,IAAM0B,IAAO,GAAK,IAEpB1B,EAAE,IAAM2B,IAAQ,EAAI,IACpB3B,EAAE,IAAM2B,IAAQ,EAAI,IACpB3B,EAAE,IAAM2B,IAAO,GAAK,IACpB3B,EAAE,IAAM2B,IAAO,GAAK,IAEpB3B,EAAE,IAAM4B,KAAQ,EAAI,IACpB5B,EAAE,IAAM4B,KAAQ,EAAI,IACpB5B,EAAE,IAAM4B,KAAO,GAAK,IACpB5B,EAAE,IAAM4B,KAAO,GAAK,IAEpB5B,EAAE,IAAM6B,KAAQ,EAAI,IACpB7B,EAAE,IAAM6B,KAAQ,EAAI,IACpB7B,EAAE,IAAM6B,KAAO,GAAK,IACpB7B,EAAE,IAAM6B,KAAO,GAAK,IAEpB7B,EAAE,IAAM8B,KAAS,EAAI,IACrB9B,EAAE,IAAM8B,KAAS,EAAI,IACrB9B,EAAE,IAAM8B,KAAQ,GAAK,IACrB9B,EAAE,IAAM8B,KAAQ,GAAK,IAErB9B,EAAE,IAAM+B,KAAS,EAAI,IACrB/B,EAAE,IAAM+B,KAAS,EAAI,IACrB/B,EAAE,IAAM+B,KAAQ,GAAK,IACrB/B,EAAE,IAAM+B,KAAQ,GAAK,IAErB/B,EAAE,IAAMgC,KAAS,EAAI,IACrBhC,EAAE,IAAMgC,KAAS,EAAI,IACrBhC,EAAE,IAAMgC,KAAQ,GAAK,IACrBhC,EAAE,IAAMgC,KAAQ,GAAK,IAErBhC,EAAE,IAAMiC,KAAS,EAAI,IACrBjC,EAAE,IAAMiC,KAAS,EAAI,IACrBjC,EAAE,IAAMiC,KAAQ,GAAK,IACrBjC,EAAE,IAAMiC,KAAQ,GAAK,IAErBjC,EAAE,IAAMkC,KAAS,EAAI,IACrBlC,EAAE,IAAMkC,KAAS,EAAI,IACrBlC,EAAE,IAAMkC,KAAQ,GAAK,IACrBlC,EAAE,IAAMkC,KAAQ,GAAK,IAErBlC,EAAE,IAAMmC,KAAS,EAAI,IACrBnC,EAAE,IAAMmC,KAAS,EAAI,IACrBnC,EAAE,IAAMmC,KAAQ,GAAK,IACrBnC,EAAE,IAAMmC,KAAQ,GAAK,GACvB,CAEA,SAASE,EAAcrC,EAAEC,EAAEC,EAAEC,EAAG,CAsB9B,QArBIC,EAAMD,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAG,GAAK,MAAO,IAAMA,EAAG,GAAK,MAAO,GAC9EE,EAAMH,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAG,GAAK,MAAO,IAAMA,EAAG,GAAK,MAAO,GAC9EI,EAAMJ,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAG,GAAK,MAAO,IAAMA,EAAG,GAAK,MAAO,GAC9EK,EAAML,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9EM,EAAMN,EAAE,IAAM,KAAQA,EAAE,IAAM,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9EO,GAAMN,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAG,GAAK,MAAO,IAAMA,EAAG,GAAK,MAAO,GAC9EO,GAAMT,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAG,GAAK,MAAO,IAAMA,EAAG,GAAK,MAAO,GAC9EU,GAAMV,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAG,GAAK,MAAO,IAAMA,EAAG,GAAK,MAAO,GAC9EW,GAAMX,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9EY,GAAMZ,EAAE,IAAM,KAAQA,EAAE,IAAM,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9Ea,GAAMX,EAAG,GAAK,KAAQA,EAAG,GAAK,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9EY,GAAMb,EAAE,IAAM,KAAQA,EAAE,IAAM,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9Ec,GAAMd,EAAE,IAAM,KAAQA,EAAE,IAAM,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9Ee,GAAMf,EAAE,IAAM,KAAQA,EAAE,IAAM,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9EgB,GAAMhB,EAAE,IAAM,KAAQA,EAAE,IAAM,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAC9EiB,GAAMhB,EAAE,IAAM,KAAQA,EAAE,IAAM,MAAO,GAAKA,EAAE,IAAM,MAAO,IAAMA,EAAE,IAAM,MAAO,GAE9EiB,GAAKhB,EAAIiB,GAAKhB,EAAIiB,GAAKhB,EAAIiB,GAAKhB,EAAIiB,GAAKhB,EAAIiB,GAAKhB,GAAIiB,EAAKhB,GAAIiB,EAAKhB,GACpEiB,GAAKhB,GAAIiB,GAAKhB,GAAIiB,GAAMhB,GAAKiB,GAAMhB,GAAKiB,GAAMhB,GAAKiB,GAAMhB,GAAKiB,GAAMhB,GACpEiB,GAAMhB,GAAKiB,EAEN9D,GAAI,EAAGA,GAAI,GAAIA,IAAK,EAC3B8D,EAAIhB,GAAKY,GAAM,EACfR,IAAMY,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIZ,GAAKJ,GAAK,EACdQ,IAAMQ,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIR,GAAKJ,GAAK,EACdQ,IAAOI,GAAG,GAAKA,IAAK,GAAG,GACvBA,EAAIJ,GAAMJ,GAAK,EACfR,IAAMgB,GAAG,GAAKA,IAAK,GAAG,GAEtBA,EAAIX,GAAKJ,GAAK,EACdQ,IAAMO,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIP,GAAKJ,GAAK,EACdQ,IAAOG,GAAG,EAAIA,IAAK,GAAG,EACtBA,EAAIH,GAAMJ,GAAK,EACfR,IAAMe,GAAG,GAAKA,IAAK,GAAG,GACtBA,EAAIf,GAAKY,GAAM,EACfR,IAAMW,GAAG,GAAKA,IAAK,GAAG,GAEtBA,EAAIN,GAAMJ,EAAK,EACfQ,IAAOE,GAAG,EAAIA,IAAK,GAAG,EACtBA,EAAIF,GAAMJ,GAAM,EAChBR,IAAMc,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAId,GAAKY,GAAM,EACfR,GAAMU,GAAG,GAAKA,IAAK,GAAG,GACtBA,EAAIV,EAAKJ,GAAK,EACdQ,IAAOM,GAAG,GAAKA,IAAK,GAAG,GAEvBA,EAAID,GAAMJ,GAAM,EAChBR,IAAMa,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIb,GAAKY,GAAM,EACfR,GAAMS,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIT,EAAKJ,GAAK,EACdQ,IAAOK,GAAG,GAAKA,IAAK,GAAG,GACvBA,EAAIL,GAAMJ,EAAK,EACfQ,IAAOC,GAAG,GAAKA,IAAK,GAAG,GAEvBA,EAAIhB,GAAKG,GAAK,EACdF,IAAMe,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIf,GAAKD,GAAK,EACdE,IAAMc,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAId,GAAKD,GAAK,EACdE,IAAMa,GAAG,GAAKA,IAAK,GAAG,GACtBA,EAAIb,GAAKD,GAAK,EACdF,IAAMgB,GAAG,GAAKA,IAAK,GAAG,GAEtBA,EAAIX,GAAKD,GAAK,EACdE,GAAMU,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIV,EAAKD,GAAK,EACdE,GAAMS,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIT,EAAKD,EAAK,EACdF,IAAMY,GAAG,GAAKA,IAAK,GAAG,GACtBA,EAAIZ,GAAKG,EAAK,EACdF,IAAMW,GAAG,GAAKA,IAAK,GAAG,GAEtBA,EAAIN,GAAMD,GAAK,EACfE,IAAOK,GAAG,EAAIA,IAAK,GAAG,EACtBA,EAAIL,GAAMD,GAAM,EAChBF,IAAMQ,GAAG,EAAIA,IAAK,GAAG,EACrBA,EAAIR,GAAKG,GAAM,EACfF,IAAMO,GAAG,GAAKA,IAAK,GAAG,GACtBA,EAAIP,GAAKD,GAAK,EACdE,IAAOM,GAAG,GAAKA,IAAK,GAAG,GAEvBA,EAAID,GAAMD,GAAM,EAChBF,IAAOI,GAAG,EAAIA,IAAK,GAAG,EACtBA,EAAIJ,GAAMG,GAAM,EAChBF,IAAOG,GAAG,EAAIA,IAAK,GAAG,EACtBA,EAAIH,GAAMD,GAAM,EAChBE,IAAOE,GAAG,GAAKA,IAAK,GAAG,GACvBA,EAAIF,GAAMD,GAAM,EAChBE,IAAOC,GAAG,GAAKA,IAAK,GAAG,GAGzBpC,EAAG,GAAKoB,KAAQ,EAAI,IACpBpB,EAAG,GAAKoB,KAAQ,EAAI,IACpBpB,EAAG,GAAKoB,KAAO,GAAK,IACpBpB,EAAG,GAAKoB,KAAO,GAAK,IAEpBpB,EAAG,GAAKyB,KAAQ,EAAI,IACpBzB,EAAG,GAAKyB,KAAQ,EAAI,IACpBzB,EAAG,GAAKyB,KAAO,GAAK,IACpBzB,EAAG,GAAKyB,KAAO,GAAK,IAEpBzB,EAAG,GAAK8B,KAAS,EAAI,IACrB9B,EAAG,GAAK8B,KAAS,EAAI,IACrB9B,EAAE,IAAM8B,KAAQ,GAAK,IACrB9B,EAAE,IAAM8B,KAAQ,GAAK,IAErB9B,EAAE,IAAMmC,KAAS,EAAI,IACrBnC,EAAE,IAAMmC,KAAS,EAAI,IACrBnC,EAAE,IAAMmC,KAAQ,GAAK,IACrBnC,EAAE,IAAMmC,KAAQ,GAAK,IAErBnC,EAAE,IAAM0B,IAAQ,EAAI,IACpB1B,EAAE,IAAM0B,IAAQ,EAAI,IACpB1B,EAAE,IAAM0B,IAAO,GAAK,IACpB1B,EAAE,IAAM0B,IAAO,GAAK,IAEpB1B,EAAE,IAAM2B,IAAQ,EAAI,IACpB3B,EAAE,IAAM2B,IAAQ,EAAI,IACpB3B,EAAE,IAAM2B,IAAO,GAAK,IACpB3B,EAAE,IAAM2B,IAAO,GAAK,IAEpB3B,EAAE,IAAM4B,KAAQ,EAAI,IACpB5B,EAAE,IAAM4B,KAAQ,EAAI,IACpB5B,EAAE,IAAM4B,KAAO,GAAK,IACpB5B,EAAE,IAAM4B,KAAO,GAAK,IAEpB5B,EAAE,IAAM6B,KAAQ,EAAI,IACpB7B,EAAE,IAAM6B,KAAQ,EAAI,IACpB7B,EAAE,IAAM6B,KAAO,GAAK,IACpB7B,EAAE,IAAM6B,KAAO,GAAK,GACtB,CAEA,SAASS,GAAoBC,EAAIC,EAAItC,EAAEC,EAAG,CACxCJ,GAAawC,EAAIC,EAAItC,EAAEC,CAAC,CAC1B,CAEA,SAASsC,GAAqBF,EAAIC,EAAItC,EAAEC,EAAG,CACzCkC,EAAcE,EAAIC,EAAItC,EAAEC,CAAC,CAC3B,CAEA,IAAIuC,GAAQ,IAAI,WAAW,CAAC,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAG,CAAC,EAGpG,SAASC,GAA0BxC,EAAEyC,EAAKC,EAAEC,EAAKC,EAAEpD,EAAEO,EAAG,CACtD,IAAI8C,EAAI,IAAI,WAAW,EAAE,EAAG5D,EAAI,IAAI,WAAW,EAAE,EAC7CgD,GAAG9D,GACP,IAAKA,GAAI,EAAGA,GAAI,GAAIA,KAAK0E,EAAE1E,IAAK,EAChC,IAAKA,GAAI,EAAGA,GAAI,EAAGA,KAAK0E,EAAE1E,IAAKqB,EAAErB,IACjC,KAAOyE,GAAK,IAAI,CAEd,IADAT,GAAoBlD,EAAE4D,EAAE9C,EAAEwC,EAAK,EAC1BpE,GAAI,EAAGA,GAAI,GAAIA,KAAK6B,EAAEyC,EAAKtE,IAAKuE,EAAEC,EAAKxE,IAAKc,EAAEd,IAEnD,IADA8D,GAAI,EACC9D,GAAI,EAAGA,GAAI,GAAIA,KAClB8D,GAAIA,IAAKY,EAAE1E,IAAK,KAAQ,EACxB0E,EAAE1E,IAAK8D,GAAI,IACXA,MAAO,EAETW,GAAK,GACLH,GAAQ,GACRE,GAAQ,EACV,CACA,GAAIC,EAAI,EAEN,IADAT,GAAoBlD,EAAE4D,EAAE9C,EAAEwC,EAAK,EAC1BpE,GAAI,EAAGA,GAAIyE,EAAGzE,KAAK6B,EAAEyC,EAAKtE,IAAKuE,EAAEC,EAAKxE,IAAKc,EAAEd,IAEpD,MAAO,EACT,CAEA,SAAS2E,GAAsB9C,EAAEyC,EAAKG,EAAEpD,EAAEO,EAAG,CAC3C,IAAI8C,EAAI,IAAI,WAAW,EAAE,EAAG5D,EAAI,IAAI,WAAW,EAAE,EAC7CgD,EAAG9D,EACP,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAK0E,EAAE1E,GAAK,EAChC,IAAKA,EAAI,EAAGA,EAAI,EAAGA,IAAK0E,EAAE1E,GAAKqB,EAAErB,GACjC,KAAOyE,GAAK,IAAI,CAEd,IADAT,GAAoBlD,EAAE4D,EAAE9C,EAAEwC,EAAK,EAC1BpE,EAAI,EAAGA,EAAI,GAAIA,IAAK6B,EAAEyC,EAAKtE,GAAKc,EAAEd,GAEvC,IADA8D,EAAI,EACC9D,EAAI,EAAGA,EAAI,GAAIA,IAClB8D,EAAIA,GAAKY,EAAE1E,GAAK,KAAQ,EACxB0E,EAAE1E,GAAK8D,EAAI,IACXA,KAAO,EAETW,GAAK,GACLH,GAAQ,EACV,CACA,GAAIG,EAAI,EAEN,IADAT,GAAoBlD,EAAE4D,EAAE9C,EAAEwC,EAAK,EAC1BpE,EAAI,EAAGA,EAAIyE,EAAGzE,IAAK6B,EAAEyC,EAAKtE,GAAKc,EAAEd,GAExC,MAAO,EACT,CAEA,SAAS4E,EAAc/C,EAAEyC,EAAKhD,EAAED,EAAEO,EAAG,CACnC,IAAIiD,EAAI,IAAI,WAAW,EAAE,EACzBV,GAAqBU,EAAExD,EAAEO,EAAEwC,EAAK,EAEhC,QADIU,EAAK,IAAI,WAAW,CAAC,EAChB9E,EAAI,EAAGA,EAAI,EAAGA,IAAK8E,EAAG9E,GAAKqB,EAAErB,EAAE,IACxC,OAAO2E,GAAsB9C,EAAEyC,EAAKhD,EAAEwD,EAAGD,CAAC,CAC5C,CAEA,SAASE,EAAkBlD,EAAEyC,EAAKC,EAAEC,EAAKlD,EAAED,EAAEO,EAAG,CAC9C,IAAIiD,EAAI,IAAI,WAAW,EAAE,EACzBV,GAAqBU,EAAExD,EAAEO,EAAEwC,EAAK,EAEhC,QADIU,EAAK,IAAI,WAAW,CAAC,EAChB9E,GAAI,EAAGA,GAAI,EAAGA,KAAK8E,EAAG9E,IAAKqB,EAAErB,GAAE,IACxC,OAAOqE,GAA0BxC,EAAEyC,EAAKC,EAAEC,EAAKlD,EAAEwD,EAAGD,CAAC,CACvD,CAOA,IAAIG,EAAW,SAASC,EAAK,CAC3B,KAAK,OAAS,IAAI,WAAW,EAAE,EAC/B,KAAK,EAAI,IAAI,YAAY,EAAE,EAC3B,KAAK,EAAI,IAAI,YAAY,EAAE,EAC3B,KAAK,IAAM,IAAI,YAAY,CAAC,EAC5B,KAAK,SAAW,EAChB,KAAK,IAAM,EAEX,IAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAEhCP,EAAKD,EAAK,GAAK,KAAQA,EAAK,GAAK,MAAS,EAAG,KAAK,EAAE,GAAOC,EAA2B,KACtFC,EAAKF,EAAK,GAAK,KAAQA,EAAK,GAAK,MAAS,EAAG,KAAK,EAAE,IAAOC,IAAO,GAAOC,GAAO,GAAM,KACtFC,EAAKH,EAAK,GAAK,KAAQA,EAAK,GAAK,MAAS,EAAG,KAAK,EAAE,IAAOE,IAAO,GAAOC,GAAO,GAAM,KACtFC,EAAKJ,EAAK,GAAK,KAAQA,EAAK,GAAK,MAAS,EAAG,KAAK,EAAE,IAAOG,IAAQ,EAAMC,GAAO,GAAM,KACtFC,EAAKL,EAAK,GAAK,KAAQA,EAAK,GAAK,MAAS,EAAG,KAAK,EAAE,IAAOI,IAAQ,EAAMC,GAAM,IAAO,IACtF,KAAK,EAAE,GAAOA,IAAQ,EAAM,KAC5BC,EAAKN,EAAI,IAAM,KAAQA,EAAI,IAAM,MAAS,EAAG,KAAK,EAAE,IAAOK,IAAO,GAAOC,GAAO,GAAM,KACtFC,EAAKP,EAAI,IAAM,KAAQA,EAAI,IAAM,MAAS,EAAG,KAAK,EAAE,IAAOM,IAAO,GAAOC,GAAO,GAAM,KACtFC,EAAKR,EAAI,IAAM,KAAQA,EAAI,IAAM,MAAS,EAAG,KAAK,EAAE,IAAOO,IAAQ,EAAMC,GAAO,GAAM,KACtF,KAAK,EAAE,GAAOA,IAAQ,EAAM,IAE5B,KAAK,IAAI,GAAKR,EAAI,IAAM,KAAQA,EAAI,IAAM,MAAS,EACnD,KAAK,IAAI,GAAKA,EAAI,IAAM,KAAQA,EAAI,IAAM,MAAS,EACnD,KAAK,IAAI,GAAKA,EAAI,IAAM,KAAQA,EAAI,IAAM,MAAS,EACnD,KAAK,IAAI,GAAKA,EAAI,IAAM,KAAQA,EAAI,IAAM,MAAS,EACnD,KAAK,IAAI,GAAKA,EAAI,IAAM,KAAQA,EAAI,IAAM,MAAS,EACnD,KAAK,IAAI,GAAKA,EAAI,IAAM,KAAQA,EAAI,IAAM,MAAS,EACnD,KAAK,IAAI,GAAKA,EAAI,IAAM,KAAQA,EAAI,IAAM,MAAS,EACnD,KAAK,IAAI,GAAKA,EAAI,IAAM,KAAQA,EAAI,IAAM,MAAS,CACrD,EAEAD,EAAS,UAAU,OAAS,SAAST,EAAGC,EAAMkB,EAAO,CA2BnD,QA1BIC,EAAQ,KAAK,IAAM,EAAK,KACxBT,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAAIC,GAAIC,GAAI5D,GAChC+D,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAAIC,GAEpCC,GAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GAEZC,GAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GACZC,GAAK,KAAK,EAAE,GAET/B,GAAS,IACdR,EAAKX,EAAEC,EAAM,GAAK,KAAQD,EAAEC,EAAM,GAAK,MAAS,EAAG8B,IAAQpB,EAA2B,KACtFC,EAAKZ,EAAEC,EAAM,GAAK,KAAQD,EAAEC,EAAM,GAAK,MAAS,EAAG+B,KAAQrB,IAAO,GAAOC,GAAO,GAAM,KACtFC,EAAKb,EAAEC,EAAM,GAAK,KAAQD,EAAEC,EAAM,GAAK,MAAS,EAAGgC,KAAQrB,IAAO,GAAOC,GAAO,GAAM,KACtFC,EAAKd,EAAEC,EAAM,GAAK,KAAQD,EAAEC,EAAM,GAAK,MAAS,EAAGiC,IAAQrB,IAAQ,EAAMC,GAAO,GAAM,KACtFC,EAAKf,EAAEC,EAAM,GAAK,KAAQD,EAAEC,EAAM,GAAK,MAAS,EAAGkC,IAAQrB,IAAQ,EAAMC,GAAM,IAAO,KACtFqB,IAAQrB,IAAQ,EAAM,KACtBC,GAAKhB,EAAEC,EAAK,IAAM,KAAQD,EAAEC,EAAK,IAAM,MAAS,EAAGoC,KAAQtB,IAAO,GAAOC,IAAO,GAAM,KACtFC,GAAKjB,EAAEC,EAAK,IAAM,KAAQD,EAAEC,EAAK,IAAM,MAAS,EAAGqC,KAAQtB,KAAO,GAAOC,IAAO,GAAM,KACtFC,GAAKlB,EAAEC,EAAK,IAAM,KAAQD,EAAEC,EAAK,IAAM,MAAS,EAAGsC,KAAQtB,KAAQ,EAAMC,IAAO,GAAM,KACtFsB,IAAQtB,KAAO,EAAME,EAErB9D,GAAI,EAEJ+D,GAAK/D,GACL+D,IAAMU,GAAKU,GACXpB,IAAMW,IAAM,EAAIkB,IAChB7B,IAAMY,IAAM,EAAIgB,IAChB5B,IAAMa,GAAM,EAAIc,IAChB3B,IAAMc,GAAM,EAAIY,IAChBzF,GAAK+D,KAAO,GAAKA,IAAM,KACvBA,IAAMe,IAAM,EAAIU,IAChBzB,IAAMgB,IAAM,EAAIQ,IAChBxB,IAAMiB,IAAM,EAAIM,GAChBvB,IAAMkB,IAAM,EAAII,IAChBtB,IAAMmB,IAAM,EAAIE,IAChBpF,IAAM+D,KAAO,GAAKA,IAAM,KAExBC,GAAKhE,GACLgE,IAAMS,GAAKW,GACXpB,IAAMU,GAAKS,GACXnB,IAAMW,IAAM,EAAIiB,IAChB5B,IAAMY,GAAM,EAAIe,IAChB3B,IAAMa,GAAM,EAAIa,IAChB1F,GAAKgE,KAAO,GAAKA,IAAM,KACvBA,IAAMc,IAAM,EAAIW,IAChBzB,IAAMe,IAAM,EAAIS,IAChBxB,IAAMgB,IAAM,EAAIO,IAChBvB,IAAMiB,IAAM,EAAIK,GAChBtB,IAAMkB,IAAM,EAAIG,IAChBrF,IAAMgE,KAAO,GAAKA,IAAM,KAExBC,GAAKjE,GACLiE,IAAMQ,GAAKY,GACXpB,IAAMS,GAAKU,GACXnB,IAAMU,GAAKQ,GACXlB,IAAMW,GAAM,EAAIgB,IAChB3B,IAAMY,GAAM,EAAIc,IAChB3F,GAAKiE,KAAO,GAAKA,IAAM,KACvBA,IAAMa,IAAM,EAAIY,IAChBzB,IAAMc,IAAM,EAAIU,IAChBxB,IAAMe,IAAM,EAAIQ,IAChBvB,IAAMgB,IAAM,EAAIM,IAChBtB,IAAMiB,IAAM,EAAII,GAChBtF,IAAMiE,KAAO,GAAKA,IAAM,KAExBC,GAAKlE,GACLkE,IAAMO,GAAKa,EACXpB,IAAMQ,GAAKW,GACXnB,IAAMS,GAAKS,GACXlB,IAAMU,EAAKO,GACXjB,IAAMW,GAAM,EAAIe,IAChB5F,GAAKkE,KAAO,GAAKA,IAAM,KACvBA,IAAMY,IAAM,EAAIa,IAChBzB,IAAMa,IAAM,EAAIW,IAChBxB,IAAMc,IAAM,EAAIS,IAChBvB,IAAMe,IAAM,EAAIO,IAChBtB,IAAMgB,IAAM,EAAIK,IAChBvF,IAAMkE,KAAO,GAAKA,IAAM,KAExBC,GAAKnE,GACLmE,IAAMM,GAAKc,GACXpB,IAAMO,GAAKY,EACXnB,IAAMQ,GAAKU,GACXlB,IAAMS,EAAKQ,GACXjB,IAAMU,EAAKM,GACXnF,GAAKmE,KAAO,GAAKA,IAAM,KACvBA,IAAMW,IAAM,EAAIc,IAChBzB,IAAMY,IAAM,EAAIY,IAChBxB,IAAMa,IAAM,EAAIU,IAChBvB,IAAMc,IAAM,EAAIQ,IAChBtB,IAAMe,IAAM,EAAIM,IAChBxF,IAAMmE,KAAO,GAAKA,IAAM,KAExBC,GAAKpE,GACLoE,IAAMK,GAAKe,GACXpB,IAAMM,GAAKa,GACXnB,IAAMO,GAAKW,EACXlB,IAAMQ,EAAKS,GACXjB,IAAMS,EAAKO,GACXpF,GAAKoE,KAAO,GAAKA,IAAM,KACvBA,IAAMU,GAAKK,GACXf,IAAMW,IAAM,EAAIa,IAChBxB,IAAMY,IAAM,EAAIW,IAChBvB,IAAMa,IAAM,EAAIS,IAChBtB,IAAMc,IAAM,EAAIO,IAChBzF,IAAMoE,KAAO,GAAKA,IAAM,KAExBC,GAAKrE,GACLqE,IAAMI,GAAKgB,GACXpB,IAAMK,GAAKc,GACXnB,IAAMM,GAAKY,GACXlB,IAAMO,EAAKU,EACXjB,IAAMQ,EAAKQ,GACXrF,GAAKqE,KAAO,GAAKA,IAAM,KACvBA,IAAMS,GAAKM,GACXf,IAAMU,GAAKI,GACXd,IAAMW,IAAM,EAAIY,IAChBvB,IAAMY,IAAM,EAAIU,IAChBtB,IAAMa,IAAM,EAAIQ,IAChB1F,IAAMqE,KAAO,GAAKA,IAAM,KAExBC,GAAKtE,GACLsE,IAAMG,GAAKiB,GACXpB,IAAMI,GAAKe,GACXnB,IAAMK,GAAKa,GACXlB,IAAMM,EAAKW,GACXjB,IAAMO,EAAKS,EACXtF,GAAKsE,KAAO,GAAKA,IAAM,KACvBA,IAAMQ,GAAKO,GACXf,IAAMS,GAAKK,GACXd,IAAMU,GAAKG,GACXb,IAAMW,IAAM,EAAIW,IAChBtB,IAAMY,IAAM,EAAIS,IAChB3F,IAAMsE,KAAO,GAAKA,IAAM,KAExBC,GAAKvE,GACLuE,IAAME,GAAKkB,GACXpB,IAAMG,GAAKgB,GACXnB,IAAMI,GAAKc,GACXlB,IAAMK,EAAKY,GACXjB,IAAMM,EAAKU,GACXvF,GAAKuE,KAAO,GAAKA,IAAM,KACvBA,IAAMO,GAAKQ,EACXf,IAAMQ,GAAKM,GACXd,IAAMS,GAAKI,GACXb,IAAMU,GAAKE,GACXZ,IAAMW,IAAM,EAAIU,IAChB5F,IAAMuE,KAAO,GAAKA,IAAM,KAExBC,GAAKxE,GACLwE,IAAMC,GAAKmB,GACXpB,IAAME,GAAKiB,GACXnB,IAAMG,GAAKe,GACXlB,IAAMI,EAAKa,GACXjB,IAAMK,EAAKW,GACXxF,GAAKwE,KAAO,GAAKA,IAAM,KACvBA,IAAMM,GAAKS,GACXf,IAAMO,GAAKO,EACXd,IAAMQ,GAAKK,GACXb,IAAMS,GAAKG,GACXZ,IAAMU,GAAKC,GACXnF,IAAMwE,KAAO,GAAKA,IAAM,KAExBxE,IAAOA,IAAK,GAAKA,GAAM,EACvBA,GAAKA,GAAI+D,GAAM,EACfA,GAAK/D,GAAI,KACTA,GAAKA,KAAM,GACXgE,IAAMhE,GAENyE,GAAKV,GACLW,GAAKV,GACLW,GAAKV,GACLW,EAAKV,GACLW,EAAKV,GACLW,GAAKV,GACLW,GAAKV,GACLW,GAAKV,GACLW,GAAKV,GACLW,GAAKV,GAEL7B,GAAQ,GACRkB,GAAS,GAEX,KAAK,EAAE,GAAKY,GACZ,KAAK,EAAE,GAAKC,GACZ,KAAK,EAAE,GAAKC,GACZ,KAAK,EAAE,GAAKC,EACZ,KAAK,EAAE,GAAKC,EACZ,KAAK,EAAE,GAAKC,GACZ,KAAK,EAAE,GAAKC,GACZ,KAAK,EAAE,GAAKC,GACZ,KAAK,EAAE,GAAKC,GACZ,KAAK,EAAE,GAAKC,EACd,EAEA/B,EAAS,UAAU,OAAS,SAAS0C,EAAKC,EAAQ,CAChD,IAAIC,EAAI,IAAI,YAAY,EAAE,EACtB/F,EAAGgG,EAAMC,EAAG9H,EAEhB,GAAI,KAAK,SAAU,CAGjB,IAFAA,EAAI,KAAK,SACT,KAAK,OAAOA,KAAO,EACZA,EAAI,GAAIA,IAAK,KAAK,OAAOA,GAAK,EACrC,KAAK,IAAM,EACX,KAAK,OAAO,KAAK,OAAQ,EAAG,EAAE,CAChC,CAIA,IAFA6B,EAAI,KAAK,EAAE,KAAO,GAClB,KAAK,EAAE,IAAM,KACR7B,EAAI,EAAGA,EAAI,GAAIA,IAClB,KAAK,EAAEA,IAAM6B,EACbA,EAAI,KAAK,EAAE7B,KAAO,GAClB,KAAK,EAAEA,IAAM,KAaf,IAXA,KAAK,EAAE,IAAO6B,EAAI,EAClBA,EAAI,KAAK,EAAE,KAAO,GAClB,KAAK,EAAE,IAAM,KACb,KAAK,EAAE,IAAMA,EACbA,EAAI,KAAK,EAAE,KAAO,GAClB,KAAK,EAAE,IAAM,KACb,KAAK,EAAE,IAAMA,EAEb+F,EAAE,GAAK,KAAK,EAAE,GAAK,EACnB/F,EAAI+F,EAAE,KAAO,GACbA,EAAE,IAAM,KACH5H,EAAI,EAAGA,EAAI,GAAIA,IAClB4H,EAAE5H,GAAK,KAAK,EAAEA,GAAK6B,EACnBA,EAAI+F,EAAE5H,KAAO,GACb4H,EAAE5H,IAAM,KAKV,IAHA4H,EAAE,IAAO,GAAK,GAEdC,GAAQhG,EAAI,GAAK,EACZ7B,EAAI,EAAGA,EAAI,GAAIA,IAAK4H,EAAE5H,IAAM6H,EAEjC,IADAA,EAAO,CAACA,EACH7H,EAAI,EAAGA,EAAI,GAAIA,IAAK,KAAK,EAAEA,GAAM,KAAK,EAAEA,GAAK6H,EAAQD,EAAE5H,GAa5D,IAXA,KAAK,EAAE,IAAO,KAAK,EAAE,GAAc,KAAK,EAAE,IAAM,IAA2B,MAC3E,KAAK,EAAE,IAAO,KAAK,EAAE,KAAQ,EAAM,KAAK,EAAE,IAAM,IAA2B,MAC3E,KAAK,EAAE,IAAO,KAAK,EAAE,KAAQ,EAAM,KAAK,EAAE,IAAO,GAA0B,MAC3E,KAAK,EAAE,IAAO,KAAK,EAAE,KAAQ,EAAM,KAAK,EAAE,IAAO,GAA0B,MAC3E,KAAK,EAAE,IAAO,KAAK,EAAE,KAAO,GAAO,KAAK,EAAE,IAAO,EAAM,KAAK,EAAE,IAAM,IAAO,MAC3E,KAAK,EAAE,IAAO,KAAK,EAAE,KAAQ,EAAM,KAAK,EAAE,IAAM,IAA2B,MAC3E,KAAK,EAAE,IAAO,KAAK,EAAE,KAAQ,EAAM,KAAK,EAAE,IAAO,GAA0B,MAC3E,KAAK,EAAE,IAAO,KAAK,EAAE,KAAQ,EAAM,KAAK,EAAE,IAAO,GAA0B,MAE3E8H,EAAI,KAAK,EAAE,GAAK,KAAK,IAAI,GACzB,KAAK,EAAE,GAAKA,EAAI,MACX9H,EAAI,EAAGA,EAAI,EAAGA,IACjB8H,GAAO,KAAK,EAAE9H,GAAK,KAAK,IAAIA,GAAM,IAAM8H,IAAM,IAAO,EACrD,KAAK,EAAE9H,GAAK8H,EAAI,MAGlBJ,EAAIC,EAAQ,GAAM,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAQ,GAAM,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAQ,GAAM,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAQ,GAAM,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAQ,GAAM,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAQ,GAAM,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAQ,GAAM,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAQ,GAAM,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAQ,GAAM,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAQ,GAAM,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAO,IAAO,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAO,IAAO,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAO,IAAO,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAO,IAAO,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAO,IAAO,KAAK,EAAE,KAAO,EAAK,IACrCD,EAAIC,EAAO,IAAO,KAAK,EAAE,KAAO,EAAK,GACvC,EAEA3C,EAAS,UAAU,OAAS,SAAST,EAAGC,EAAMkB,EAAO,CACnD,IAAI1F,EAAG+H,EAEP,GAAI,KAAK,SAAU,CAIjB,IAHAA,EAAQ,GAAK,KAAK,SACdA,EAAOrC,IACTqC,EAAOrC,GACJ1F,EAAI,EAAGA,EAAI+H,EAAM/H,IACpB,KAAK,OAAO,KAAK,SAAWA,GAAKuE,EAAEC,EAAKxE,GAI1C,GAHA0F,GAASqC,EACTvD,GAAQuD,EACR,KAAK,UAAYA,EACb,KAAK,SAAW,GAClB,OACF,KAAK,OAAO,KAAK,OAAQ,EAAG,EAAE,EAC9B,KAAK,SAAW,CAClB,CASA,GAPIrC,GAAS,KACXqC,EAAOrC,EAASA,EAAQ,GACxB,KAAK,OAAOnB,EAAGC,EAAMuD,CAAI,EACzBvD,GAAQuD,EACRrC,GAASqC,GAGPrC,EAAO,CACT,IAAK1F,EAAI,EAAGA,EAAI0F,EAAO1F,IACrB,KAAK,OAAO,KAAK,SAAWA,GAAKuE,EAAEC,EAAKxE,GAC1C,KAAK,UAAY0F,CACnB,CACF,EAEA,SAASsC,EAAmB/D,EAAKgE,EAAQ1D,EAAGC,EAAMnD,EAAGO,EAAG,CACtD,IAAIiD,EAAI,IAAIG,EAASpD,CAAC,EACtB,OAAAiD,EAAE,OAAON,EAAGC,EAAMnD,CAAC,EACnBwD,EAAE,OAAOZ,EAAKgE,CAAM,EACb,CACT,CAEA,SAASC,EAA0BnH,EAAGoH,EAAM5D,EAAGC,EAAMnD,EAAGO,EAAG,CACzD,IAAId,EAAI,IAAI,WAAW,EAAE,EACzB,OAAAkH,EAAmBlH,EAAE,EAAEyD,EAAEC,EAAKnD,EAAEO,CAAC,EAC1BL,EAAiBR,EAAEoH,EAAKrH,EAAE,CAAC,CACpC,CAEA,SAASsH,EAAiBvG,EAAE0C,EAAEjD,EAAED,EAAEO,EAAG,CACnC,IAAI5B,EACJ,GAAIsB,EAAI,GAAI,MAAO,GAGnB,IAFAyD,EAAkBlD,EAAE,EAAE0C,EAAE,EAAEjD,EAAED,EAAEO,CAAC,EAC/BoG,EAAmBnG,EAAG,GAAIA,EAAG,GAAIP,EAAI,GAAIO,CAAC,EACrC7B,EAAI,EAAGA,EAAI,GAAIA,IAAK6B,EAAE7B,GAAK,EAChC,MAAO,EACT,CAEA,SAASqI,EAAsB9D,EAAE1C,EAAEP,EAAED,EAAEO,EAAG,CACxC,IAAI5B,EACAc,EAAI,IAAI,WAAW,EAAE,EAGzB,GAFIQ,EAAI,KACRsD,EAAc9D,EAAE,EAAE,GAAGO,EAAEO,CAAC,EACpBsG,EAA0BrG,EAAG,GAAGA,EAAG,GAAGP,EAAI,GAAGR,CAAC,IAAM,GAAG,MAAO,GAElE,IADAiE,EAAkBR,EAAE,EAAE1C,EAAE,EAAEP,EAAED,EAAEO,CAAC,EAC1B5B,EAAI,EAAGA,EAAI,GAAIA,IAAKuE,EAAEvE,GAAK,EAChC,MAAO,EACT,CAEA,SAASsI,EAASrI,EAAGsI,EAAG,CACtB,IAAIvI,EACJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAKC,EAAED,GAAKuI,EAAEvI,GAAG,CACvC,CAEA,SAASwI,EAAS9G,EAAG,CACnB,IAAI1B,EAAGyI,EAAG5G,EAAI,EACd,IAAK7B,EAAI,EAAGA,EAAI,GAAIA,IAClByI,EAAI/G,EAAE1B,GAAK6B,EAAI,MACfA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EACxB/G,EAAE1B,GAAKyI,EAAI5G,EAAI,MAEjBH,EAAE,IAAMG,EAAE,EAAI,IAAMA,EAAE,EACxB,CAEA,SAAS6G,EAAS/G,EAAGgH,EAAGlE,EAAG,CAEzB,QADImE,EAAG/G,EAAI,EAAE4C,EAAE,GACNzE,EAAI,EAAGA,EAAI,GAAIA,IACtB4I,EAAI/G,GAAKF,EAAE3B,GAAK2I,EAAE3I,IAClB2B,EAAE3B,IAAM4I,EACRD,EAAE3I,IAAM4I,CAEZ,CAEA,SAASC,EAAUnH,EAAGL,EAAG,CACvB,IAAIrB,EAAG8I,EAAGrE,EACNF,EAAIzE,EAAG,EAAG8I,EAAI9I,EAAG,EACrB,IAAKE,EAAI,EAAGA,EAAI,GAAIA,IAAK4I,EAAE5I,GAAKqB,EAAErB,GAIlC,IAHAwI,EAASI,CAAC,EACVJ,EAASI,CAAC,EACVJ,EAASI,CAAC,EACLE,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAEtB,IADAvE,EAAE,GAAKqE,EAAE,GAAK,MACT5I,EAAI,EAAGA,EAAI,GAAIA,IAClBuE,EAAEvE,GAAK4I,EAAE5I,GAAK,OAAWuE,EAAEvE,EAAE,IAAI,GAAM,GACvCuE,EAAEvE,EAAE,IAAM,MAEZuE,EAAE,IAAMqE,EAAE,IAAM,OAAWrE,EAAE,KAAK,GAAM,GACxCE,EAAKF,EAAE,KAAK,GAAM,EAClBA,EAAE,KAAO,MACTmE,EAASE,EAAGrE,EAAG,EAAEE,CAAC,CACpB,CACA,IAAKzE,EAAI,EAAGA,EAAI,GAAIA,IAClB0B,EAAE,EAAE1B,GAAK4I,EAAE5I,GAAK,IAChB0B,EAAE,EAAE1B,EAAE,GAAK4I,EAAE5I,IAAI,CAErB,CAEA,SAAS+I,EAASR,EAAG9D,EAAG,CACtB,IAAI5C,EAAI,IAAI,WAAW,EAAE,EAAGP,EAAI,IAAI,WAAW,EAAE,EACjD,OAAAuH,EAAUhH,EAAG0G,CAAC,EACdM,EAAUvH,EAAGmD,CAAC,EACPjD,GAAiBK,EAAG,EAAGP,EAAG,CAAC,CACpC,CAEA,SAAS0H,EAAST,EAAG,CACnB,IAAIjH,EAAI,IAAI,WAAW,EAAE,EACzB,OAAAuH,EAAUvH,EAAGiH,CAAC,EACPjH,EAAE,GAAK,CAChB,CAEA,SAAS2H,EAAYvH,EAAGL,EAAG,CACzB,IAAIrB,EACJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAK0B,EAAE1B,GAAKqB,EAAE,EAAErB,IAAMqB,EAAE,EAAErB,EAAE,IAAM,GACtD0B,EAAE,KAAO,KACX,CAEA,SAASwH,EAAExH,EAAG6G,EAAG9D,EAAG,CAClB,QAASzE,EAAI,EAAGA,EAAI,GAAIA,IAAK0B,EAAE1B,GAAKuI,EAAEvI,GAAKyE,EAAEzE,EAC/C,CAEA,SAASmJ,EAAEzH,EAAG6G,EAAG9D,EAAG,CAClB,QAASzE,EAAI,EAAGA,EAAI,GAAIA,IAAK0B,EAAE1B,GAAKuI,EAAEvI,GAAKyE,EAAEzE,EAC/C,CAEA,SAASoJ,EAAE1H,EAAG6G,EAAG9D,EAAG,CAClB,IAAIgE,EAAG5G,EACJqD,EAAK,EAAIC,EAAK,EAAIC,EAAK,EAAIC,EAAK,EAAIC,GAAK,EAAIC,GAAK,EAAIC,GAAK,EAAIC,GAAK,EACpE4D,GAAK,EAAIC,GAAK,EAAGC,GAAM,EAAGC,GAAM,EAAGC,GAAM,EAAGC,GAAM,EAAGC,GAAM,EAAGC,GAAM,EACrEC,GAAM,EAAGC,GAAM,EAAGC,GAAM,EAAGC,GAAM,EAAGC,GAAM,EAAGC,EAAM,EAAGC,EAAM,EAAGC,GAAM,EACrEC,GAAM,EAAGC,GAAM,EAAGC,GAAM,EAAGC,GAAM,EAAGC,GAAM,EAAGC,GAAM,EAAGC,GAAM,EAC5DC,EAAKnG,EAAE,GACPoG,GAAKpG,EAAE,GACPqG,GAAKrG,EAAE,GACPsG,GAAKtG,EAAE,GACPuG,GAAKvG,EAAE,GACPwG,GAAKxG,EAAE,GACPyG,GAAKzG,EAAE,GACP0G,GAAK1G,EAAE,GACP2G,GAAK3G,EAAE,GACP4G,GAAK5G,EAAE,GACP6G,GAAM7G,EAAE,IACR8G,GAAM9G,EAAE,IACR+G,GAAM/G,EAAE,IACRgH,GAAMhH,EAAE,IACRiH,GAAMjH,EAAE,IACRkH,GAAMlH,EAAE,IAEVgE,EAAIF,EAAE,GACNrD,GAAMuD,EAAImC,EACVzF,GAAMsD,EAAIoC,GACVzF,GAAMqD,EAAIqC,GACVzF,GAAMoD,EAAIsC,GACVzF,IAAMmD,EAAIuC,GACVzF,IAAMkD,EAAIwC,GACVzF,IAAMiD,EAAIyC,GACVzF,IAAMgD,EAAI0C,GACV9B,IAAMZ,EAAI2C,GACV9B,IAAMb,EAAI4C,GACV9B,IAAOd,EAAI6C,GACX9B,IAAOf,EAAI8C,GACX9B,IAAOhB,EAAI+C,GACX9B,IAAOjB,EAAIgD,GACX9B,IAAOlB,EAAIiD,GACX9B,IAAOnB,EAAIkD,GACXlD,EAAIF,EAAE,GACNpD,GAAMsD,EAAImC,EACVxF,GAAMqD,EAAIoC,GACVxF,GAAMoD,EAAIqC,GACVxF,IAAMmD,EAAIsC,GACVxF,IAAMkD,EAAIuC,GACVxF,IAAMiD,EAAIwC,GACVxF,IAAMgD,EAAIyC,GACV7B,IAAMZ,EAAI0C,GACV7B,IAAMb,EAAI2C,GACV7B,IAAOd,EAAI4C,GACX7B,IAAOf,EAAI6C,GACX7B,IAAOhB,EAAI8C,GACX7B,IAAOjB,EAAI+C,GACX7B,IAAOlB,EAAIgD,GACX7B,IAAOnB,EAAIiD,GACX7B,IAAOpB,EAAIkD,GACXlD,EAAIF,EAAE,GACNnD,GAAMqD,EAAImC,EACVvF,GAAMoD,EAAIoC,GACVvF,IAAMmD,EAAIqC,GACVvF,IAAMkD,EAAIsC,GACVvF,IAAMiD,EAAIuC,GACVvF,IAAMgD,EAAIwC,GACV5B,IAAMZ,EAAIyC,GACV5B,IAAMb,EAAI0C,GACV5B,IAAOd,EAAI2C,GACX5B,IAAOf,EAAI4C,GACX5B,IAAOhB,EAAI6C,GACX5B,IAAOjB,EAAI8C,GACX5B,IAAOlB,EAAI+C,GACX5B,IAAOnB,EAAIgD,GACX5B,IAAOpB,EAAIiD,GACX5B,IAAOrB,EAAIkD,GACXlD,EAAIF,EAAE,GACNlD,GAAMoD,EAAImC,EACVtF,IAAMmD,EAAIoC,GACVtF,IAAMkD,EAAIqC,GACVtF,IAAMiD,EAAIsC,GACVtF,IAAMgD,EAAIuC,GACV3B,IAAMZ,EAAIwC,GACV3B,IAAMb,EAAIyC,GACV3B,IAAOd,EAAI0C,GACX3B,IAAOf,EAAI2C,GACX3B,IAAOhB,EAAI4C,GACX3B,IAAOjB,EAAI6C,GACX3B,IAAOlB,EAAI8C,GACX3B,IAAOnB,EAAI+C,GACX3B,IAAOpB,EAAIgD,GACX3B,IAAOrB,EAAIiD,GACX3B,IAAOtB,EAAIkD,GACXlD,EAAIF,EAAE,GACNjD,IAAMmD,EAAImC,EACVrF,IAAMkD,EAAIoC,GACVrF,IAAMiD,EAAIqC,GACVrF,IAAMgD,EAAIsC,GACV1B,IAAMZ,EAAIuC,GACV1B,IAAMb,EAAIwC,GACV1B,IAAOd,EAAIyC,GACX1B,IAAOf,EAAI0C,GACX1B,IAAOhB,EAAI2C,GACX1B,IAAOjB,EAAI4C,GACX1B,IAAOlB,EAAI6C,GACX1B,IAAOnB,EAAI8C,GACX1B,IAAOpB,EAAI+C,GACX1B,IAAOrB,EAAIgD,GACX1B,IAAOtB,EAAIiD,GACX1B,IAAOvB,EAAIkD,GACXlD,EAAIF,EAAE,GACNhD,IAAMkD,EAAImC,EACVpF,IAAMiD,EAAIoC,GACVpF,IAAMgD,EAAIqC,GACVzB,IAAMZ,EAAIsC,GACVzB,IAAMb,EAAIuC,GACVzB,IAAOd,EAAIwC,GACXzB,IAAOf,EAAIyC,GACXzB,IAAOhB,EAAI0C,GACXzB,IAAOjB,EAAI2C,GACXzB,IAAOlB,EAAI4C,GACXzB,IAAOnB,EAAI6C,GACXzB,IAAOpB,EAAI8C,GACXzB,IAAOrB,EAAI+C,GACXzB,IAAOtB,EAAIgD,GACXzB,IAAOvB,EAAIiD,GACXzB,IAAOxB,EAAIkD,GACXlD,EAAIF,EAAE,GACN/C,IAAMiD,EAAImC,EACVnF,IAAMgD,EAAIoC,GACVxB,IAAMZ,EAAIqC,GACVxB,IAAMb,EAAIsC,GACVxB,IAAOd,EAAIuC,GACXxB,IAAOf,EAAIwC,GACXxB,IAAOhB,EAAIyC,GACXxB,IAAOjB,EAAI0C,GACXxB,IAAOlB,EAAI2C,GACXxB,IAAOnB,EAAI4C,GACXxB,IAAOpB,EAAI6C,GACXxB,IAAOrB,EAAI8C,GACXxB,IAAOtB,EAAI+C,GACXxB,IAAOvB,EAAIgD,GACXxB,IAAOxB,EAAIiD,GACXxB,GAAOzB,EAAIkD,GACXlD,EAAIF,EAAE,GACN9C,IAAMgD,EAAImC,EACVvB,IAAMZ,EAAIoC,GACVvB,IAAMb,EAAIqC,GACVvB,IAAOd,EAAIsC,GACXvB,IAAOf,EAAIuC,GACXvB,IAAOhB,EAAIwC,GACXvB,IAAOjB,EAAIyC,GACXvB,IAAOlB,EAAI0C,GACXvB,IAAOnB,EAAI2C,GACXvB,IAAOpB,EAAI4C,GACXvB,IAAOrB,EAAI6C,GACXvB,IAAOtB,EAAI8C,GACXvB,IAAOvB,EAAI+C,GACXvB,IAAOxB,EAAIgD,GACXvB,GAAOzB,EAAIiD,GACXvB,GAAO1B,EAAIkD,GACXlD,EAAIF,EAAE,GACNc,IAAMZ,EAAImC,EACVtB,IAAMb,EAAIoC,GACVtB,IAAOd,EAAIqC,GACXtB,IAAOf,EAAIsC,GACXtB,IAAOhB,EAAIuC,GACXtB,IAAOjB,EAAIwC,GACXtB,IAAOlB,EAAIyC,GACXtB,IAAOnB,EAAI0C,GACXtB,IAAOpB,EAAI2C,GACXtB,IAAOrB,EAAI4C,GACXtB,IAAOtB,EAAI6C,GACXtB,IAAOvB,EAAI8C,GACXtB,IAAOxB,EAAI+C,GACXtB,GAAOzB,EAAIgD,GACXtB,GAAO1B,EAAIiD,GACXtB,IAAO3B,EAAIkD,GACXlD,EAAIF,EAAE,GACNe,IAAMb,EAAImC,EACVrB,IAAOd,EAAIoC,GACXrB,IAAOf,EAAIqC,GACXrB,IAAOhB,EAAIsC,GACXrB,IAAOjB,EAAIuC,GACXrB,IAAOlB,EAAIwC,GACXrB,IAAOnB,EAAIyC,GACXrB,IAAOpB,EAAI0C,GACXrB,IAAOrB,EAAI2C,GACXrB,IAAOtB,EAAI4C,GACXrB,IAAOvB,EAAI6C,GACXrB,IAAOxB,EAAI8C,GACXrB,GAAOzB,EAAI+C,GACXrB,GAAO1B,EAAIgD,GACXrB,IAAO3B,EAAIiD,GACXrB,IAAO5B,EAAIkD,GACXlD,EAAIF,EAAE,IACNgB,IAAOd,EAAImC,EACXpB,IAAOf,EAAIoC,GACXpB,IAAOhB,EAAIqC,GACXpB,IAAOjB,EAAIsC,GACXpB,IAAOlB,EAAIuC,GACXpB,IAAOnB,EAAIwC,GACXpB,IAAOpB,EAAIyC,GACXpB,IAAOrB,EAAI0C,GACXpB,IAAOtB,EAAI2C,GACXpB,IAAOvB,EAAI4C,GACXpB,IAAOxB,EAAI6C,GACXpB,GAAOzB,EAAI8C,GACXpB,GAAO1B,EAAI+C,GACXpB,IAAO3B,EAAIgD,GACXpB,IAAO5B,EAAIiD,GACXpB,IAAO7B,EAAIkD,GACXlD,EAAIF,EAAE,IACNiB,IAAOf,EAAImC,EACXnB,IAAOhB,EAAIoC,GACXnB,IAAOjB,EAAIqC,GACXnB,IAAOlB,EAAIsC,GACXnB,IAAOnB,EAAIuC,GACXnB,IAAOpB,EAAIwC,GACXnB,IAAOrB,EAAIyC,GACXnB,IAAOtB,EAAI0C,GACXnB,IAAOvB,EAAI2C,GACXnB,IAAOxB,EAAI4C,GACXnB,GAAOzB,EAAI6C,GACXnB,GAAO1B,EAAI8C,GACXnB,IAAO3B,EAAI+C,GACXnB,IAAO5B,EAAIgD,GACXnB,IAAO7B,EAAIiD,GACXnB,IAAO9B,EAAIkD,GACXlD,EAAIF,EAAE,IACNkB,IAAOhB,EAAImC,EACXlB,IAAOjB,EAAIoC,GACXlB,IAAOlB,EAAIqC,GACXlB,IAAOnB,EAAIsC,GACXlB,IAAOpB,EAAIuC,GACXlB,IAAOrB,EAAIwC,GACXlB,IAAOtB,EAAIyC,GACXlB,IAAOvB,EAAI0C,GACXlB,IAAOxB,EAAI2C,GACXlB,GAAOzB,EAAI4C,GACXlB,GAAO1B,EAAI6C,GACXlB,IAAO3B,EAAI8C,GACXlB,IAAO5B,EAAI+C,GACXlB,IAAO7B,EAAIgD,GACXlB,IAAO9B,EAAIiD,GACXlB,IAAO/B,EAAIkD,GACXlD,EAAIF,EAAE,IACNmB,IAAOjB,EAAImC,EACXjB,IAAOlB,EAAIoC,GACXjB,IAAOnB,EAAIqC,GACXjB,IAAOpB,EAAIsC,GACXjB,IAAOrB,EAAIuC,GACXjB,IAAOtB,EAAIwC,GACXjB,IAAOvB,EAAIyC,GACXjB,IAAOxB,EAAI0C,GACXjB,GAAOzB,EAAI2C,GACXjB,GAAO1B,EAAI4C,GACXjB,IAAO3B,EAAI6C,GACXjB,IAAO5B,EAAI8C,GACXjB,IAAO7B,EAAI+C,GACXjB,IAAO9B,EAAIgD,GACXjB,IAAO/B,EAAIiD,GACXjB,IAAOhC,EAAIkD,GACXlD,EAAIF,EAAE,IACNoB,IAAOlB,EAAImC,EACXhB,IAAOnB,EAAIoC,GACXhB,IAAOpB,EAAIqC,GACXhB,IAAOrB,EAAIsC,GACXhB,IAAOtB,EAAIuC,GACXhB,IAAOvB,EAAIwC,GACXhB,IAAOxB,EAAIyC,GACXhB,GAAOzB,EAAI0C,GACXhB,GAAO1B,EAAI2C,GACXhB,IAAO3B,EAAI4C,GACXhB,IAAO5B,EAAI6C,GACXhB,IAAO7B,EAAI8C,GACXhB,IAAO9B,EAAI+C,GACXhB,IAAO/B,EAAIgD,GACXhB,IAAOhC,EAAIiD,GACXhB,IAAOjC,EAAIkD,GACXlD,EAAIF,EAAE,IACNqB,IAAOnB,EAAImC,EACXf,IAAOpB,EAAIoC,GACXf,IAAOrB,EAAIqC,GACXf,IAAOtB,EAAIsC,GACXf,IAAOvB,EAAIuC,GACXf,IAAOxB,EAAIwC,GACXf,GAAOzB,EAAIyC,GACXf,GAAO1B,EAAI0C,GACXf,IAAO3B,EAAI2C,GACXf,IAAO5B,EAAI4C,GACXf,IAAO7B,EAAI6C,GACXf,IAAO9B,EAAI8C,GACXf,IAAO/B,EAAI+C,GACXf,IAAOhC,EAAIgD,GACXf,IAAOjC,EAAIiD,GACXf,IAAOlC,EAAIkD,GAEXzG,GAAO,GAAK2E,GACZ1E,GAAO,GAAK2E,GACZ1E,GAAO,GAAK2E,GACZ1E,GAAO,GAAK2E,GACZ1E,IAAO,GAAK2E,GACZ1E,IAAO,GAAK2E,EACZ1E,IAAO,GAAK2E,EACZ1E,IAAO,GAAK2E,GACZf,IAAO,GAAKgB,GACZf,IAAO,GAAKgB,GACZf,IAAO,GAAKgB,GACZf,IAAO,GAAKgB,GACZf,IAAO,GAAKgB,GACZf,IAAO,GAAKgB,GACZf,IAAO,GAAKgB,GAIZ9I,EAAI,EACJ4G,EAAKvD,EAAKrD,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIvD,EAAKuD,EAAI5G,EAAI,MAC9D4G,EAAKtD,EAAKtD,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAItD,EAAKsD,EAAI5G,EAAI,MAC9D4G,EAAKrD,EAAKvD,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIrD,EAAKqD,EAAI5G,EAAI,MAC9D4G,EAAKpD,EAAKxD,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIpD,EAAKoD,EAAI5G,EAAI,MAC9D4G,EAAKnD,GAAKzD,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAInD,GAAKmD,EAAI5G,EAAI,MAC9D4G,EAAKlD,GAAK1D,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIlD,GAAKkD,EAAI5G,EAAI,MAC9D4G,EAAKjD,GAAK3D,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIjD,GAAKiD,EAAI5G,EAAI,MAC9D4G,EAAKhD,GAAK5D,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIhD,GAAKgD,EAAI5G,EAAI,MAC9D4G,EAAKY,GAAKxH,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIY,GAAKZ,EAAI5G,EAAI,MAC9D4G,EAAKa,GAAKzH,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIa,GAAKb,EAAI5G,EAAI,MAC9D4G,EAAIc,GAAM1H,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAGc,GAAMd,EAAI5G,EAAI,MAC9D4G,EAAIe,GAAM3H,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAGe,GAAMf,EAAI5G,EAAI,MAC9D4G,EAAIgB,GAAM5H,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAGgB,GAAMhB,EAAI5G,EAAI,MAC9D4G,EAAIiB,GAAM7H,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAGiB,GAAMjB,EAAI5G,EAAI,MAC9D4G,EAAIkB,GAAM9H,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAGkB,GAAMlB,EAAI5G,EAAI,MAC9D4G,EAAImB,GAAM/H,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAGmB,GAAMnB,EAAI5G,EAAI,MAC9DqD,GAAMrD,EAAE,EAAI,IAAMA,EAAE,GAGpBA,EAAI,EACJ4G,EAAKvD,EAAKrD,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIvD,EAAKuD,EAAI5G,EAAI,MAC9D4G,EAAKtD,EAAKtD,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAItD,EAAKsD,EAAI5G,EAAI,MAC9D4G,EAAKrD,EAAKvD,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIrD,EAAKqD,EAAI5G,EAAI,MAC9D4G,EAAKpD,EAAKxD,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIpD,EAAKoD,EAAI5G,EAAI,MAC9D4G,EAAKnD,GAAKzD,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAInD,GAAKmD,EAAI5G,EAAI,MAC9D4G,EAAKlD,GAAK1D,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIlD,GAAKkD,EAAI5G,EAAI,MAC9D4G,EAAKjD,GAAK3D,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIjD,GAAKiD,EAAI5G,EAAI,MAC9D4G,EAAKhD,GAAK5D,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIhD,GAAKgD,EAAI5G,EAAI,MAC9D4G,EAAKY,GAAKxH,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIY,GAAKZ,EAAI5G,EAAI,MAC9D4G,EAAKa,GAAKzH,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAIa,GAAKb,EAAI5G,EAAI,MAC9D4G,EAAIc,GAAM1H,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAGc,GAAMd,EAAI5G,EAAI,MAC9D4G,EAAIe,GAAM3H,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAGe,GAAMf,EAAI5G,EAAI,MAC9D4G,EAAIgB,GAAM5H,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAGgB,GAAMhB,EAAI5G,EAAI,MAC9D4G,EAAIiB,GAAM7H,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAGiB,GAAMjB,EAAI5G,EAAI,MAC9D4G,EAAIkB,GAAM9H,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAGkB,GAAMlB,EAAI5G,EAAI,MAC9D4G,EAAImB,GAAM/H,EAAI,MAAOA,EAAI,KAAK,MAAM4G,EAAI,KAAK,EAAGmB,GAAMnB,EAAI5G,EAAI,MAC9DqD,GAAMrD,EAAE,EAAI,IAAMA,EAAE,GAEpBH,EAAG,GAAKwD,EACRxD,EAAG,GAAKyD,EACRzD,EAAG,GAAK0D,EACR1D,EAAG,GAAK2D,EACR3D,EAAG,GAAK4D,GACR5D,EAAG,GAAK6D,GACR7D,EAAG,GAAK8D,GACR9D,EAAG,GAAK+D,GACR/D,EAAG,GAAK2H,GACR3H,EAAG,GAAK4H,GACR5H,EAAE,IAAM6H,GACR7H,EAAE,IAAM8H,GACR9H,EAAE,IAAM+H,GACR/H,EAAE,IAAMgI,GACRhI,EAAE,IAAMiI,GACRjI,EAAE,IAAMkI,EACV,CAEA,SAASgC,EAAElK,EAAG6G,EAAG,CACfa,EAAE1H,EAAG6G,EAAGA,CAAC,CACX,CAEA,SAASsD,EAASnK,EAAG1B,EAAG,CACtB,IAAI6B,EAAI/B,EAAG,EACPyI,EACJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAK1G,EAAE0G,GAAKvI,EAAEuI,GAClC,IAAKA,EAAI,IAAKA,GAAK,EAAGA,IACpBqD,EAAE/J,EAAGA,CAAC,EACH0G,IAAM,GAAKA,IAAM,GAAGa,EAAEvH,EAAGA,EAAG7B,CAAC,EAElC,IAAKuI,EAAI,EAAGA,EAAI,GAAIA,IAAK7G,EAAE6G,GAAK1G,EAAE0G,EACpC,CAEA,SAASuD,EAAQpK,EAAG1B,EAAG,CACrB,IAAI6B,EAAI/B,EAAG,EACPyI,EACJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAK1G,EAAE0G,GAAKvI,EAAEuI,GAClC,IAAKA,EAAI,IAAKA,GAAK,EAAGA,IAClBqD,EAAE/J,EAAGA,CAAC,EACH0G,IAAM,GAAGa,EAAEvH,EAAGA,EAAG7B,CAAC,EAEzB,IAAKuI,EAAI,EAAGA,EAAI,GAAIA,IAAK7G,EAAE6G,GAAK1G,EAAE0G,EACpC,CAEA,SAASwD,EAAkBpD,EAAGtH,EAAGM,EAAG,CAClC,IAAI+C,EAAI,IAAI,WAAW,EAAE,EACrB5D,EAAI,IAAI,aAAa,EAAE,EAAGb,EAAGD,EAC7BuI,EAAIzI,EAAG,EAAG2E,EAAI3E,EAAG,EAAG+B,GAAI/B,EAAG,EAC3BwB,GAAIxB,EAAG,EAAGkM,GAAIlM,EAAG,EAAGgI,GAAIhI,EAAG,EAC/B,IAAKE,EAAI,EAAGA,EAAI,GAAIA,IAAK0E,EAAE1E,GAAKqB,EAAErB,GAIlC,IAHA0E,EAAE,IAAKrD,EAAE,IAAI,IAAK,GAClBqD,EAAE,IAAI,IACNuE,EAAYnI,EAAEa,CAAC,EACV3B,EAAI,EAAGA,EAAI,GAAIA,IAClByE,EAAEzE,GAAGc,EAAEd,GACPsB,GAAEtB,GAAGuI,EAAEvI,GAAG6B,GAAE7B,GAAG,EAGjB,IADAuI,EAAE,GAAGjH,GAAE,GAAG,EACLtB,EAAE,IAAKA,GAAG,EAAG,EAAEA,EAClBC,EAAGyE,EAAE1E,IAAI,MAAMA,EAAE,GAAI,EACrB0I,EAASH,EAAE9D,EAAExE,CAAC,EACdyI,EAAS7G,GAAEP,GAAErB,CAAC,EACdiJ,EAAE8C,GAAEzD,EAAE1G,EAAC,EACPsH,EAAEZ,EAAEA,EAAE1G,EAAC,EACPqH,EAAErH,GAAE4C,EAAEnD,EAAC,EACP6H,EAAE1E,EAAEA,EAAEnD,EAAC,EACPsK,EAAEtK,GAAE0K,EAAC,EACLJ,EAAE9D,GAAES,CAAC,EACLa,EAAEb,EAAE1G,GAAE0G,CAAC,EACPa,EAAEvH,GAAE4C,EAAEuH,EAAC,EACP9C,EAAE8C,GAAEzD,EAAE1G,EAAC,EACPsH,EAAEZ,EAAEA,EAAE1G,EAAC,EACP+J,EAAEnH,EAAE8D,CAAC,EACLY,EAAEtH,GAAEP,GAAEwG,EAAC,EACPsB,EAAEb,EAAE1G,GAAEtB,CAAO,EACb2I,EAAEX,EAAEA,EAAEjH,EAAC,EACP8H,EAAEvH,GAAEA,GAAE0G,CAAC,EACPa,EAAEb,EAAEjH,GAAEwG,EAAC,EACPsB,EAAE9H,GAAEmD,EAAE3D,CAAC,EACP8K,EAAEnH,EAAEuH,EAAC,EACLtD,EAASH,EAAE9D,EAAExE,CAAC,EACdyI,EAAS7G,GAAEP,GAAErB,CAAC,EAEhB,IAAKD,EAAI,EAAGA,EAAI,GAAIA,IAClBc,EAAEd,EAAE,IAAIuI,EAAEvI,GACVc,EAAEd,EAAE,IAAI6B,GAAE7B,GACVc,EAAEd,EAAE,IAAIyE,EAAEzE,GACVc,EAAEd,EAAE,IAAIsB,GAAEtB,GAEZ,IAAIiM,GAAMnL,EAAE,SAAS,EAAE,EACnBoL,GAAMpL,EAAE,SAAS,EAAE,EACvB,OAAA+K,EAASI,GAAIA,EAAG,EAChB7C,EAAE8C,GAAIA,GAAID,EAAG,EACbpD,EAAUF,EAAEuD,EAAG,EACR,CACT,CAEA,SAASC,GAAuBxD,EAAGtH,EAAG,CACpC,OAAO0K,EAAkBpD,EAAGtH,EAAGjB,CAAE,CACnC,CAEA,SAASgM,GAAmBjL,EAAGL,EAAG,CAChC,OAAAZ,EAAYY,EAAG,EAAE,EACVqL,GAAuBhL,EAAGL,CAAC,CACpC,CAEA,SAASuL,GAAoBzK,EAAGT,EAAGL,EAAG,CACpC,IAAI+D,EAAI,IAAI,WAAW,EAAE,EACzB,OAAAkH,EAAkBlH,EAAG/D,EAAGK,CAAC,EAClBgD,GAAqBvC,EAAGzB,EAAI0E,EAAGT,EAAK,CAC7C,CAEA,IAAIkI,GAAqBlE,EACrBmE,GAA0BlE,EAE9B,SAASmE,GAAW3K,EAAG0C,EAAGjD,EAAGD,EAAGF,EAAGL,EAAG,CACpC,IAAIc,EAAI,IAAI,WAAW,EAAE,EACzB,OAAAyK,GAAoBzK,EAAGT,EAAGL,CAAC,EACpBwL,GAAmBzK,EAAG0C,EAAGjD,EAAGD,EAAGO,CAAC,CACzC,CAEA,SAAS6K,GAAgBlI,EAAG1C,EAAGP,EAAGD,EAAGF,EAAGL,EAAG,CACzC,IAAIc,EAAI,IAAI,WAAW,EAAE,EACzB,OAAAyK,GAAoBzK,EAAGT,EAAGL,CAAC,EACpByL,GAAwBhI,EAAG1C,EAAGP,EAAGD,EAAGO,CAAC,CAC9C,CAEA,IAAI8K,GAAI,CACN,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,UAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACtC,EAEA,SAASC,GAAqBC,EAAIC,EAAItI,EAAGlD,EAAG,CAyB1C,QAxBIyL,EAAK,IAAI,WAAW,EAAE,EAAGC,EAAK,IAAI,WAAW,EAAE,EAC/CC,EAAKC,EAAKC,EAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GACnCC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GACnCC,GAAIC,GAAIjO,GAAG8I,GAAG/H,EAAGC,EAAGuH,GAAG9D,GAAG5C,GAAGP,GAE7B4M,GAAMtB,EAAG,GACTuB,GAAMvB,EAAG,GACTwB,GAAMxB,EAAG,GACTyB,GAAMzB,EAAG,GACT0B,EAAM1B,EAAG,GACT2B,GAAM3B,EAAG,GACT4B,GAAM5B,EAAG,GACT6B,GAAM7B,EAAG,GAET8B,GAAM7B,EAAG,GACT8B,GAAM9B,EAAG,GACT+B,GAAM/B,EAAG,GACTgC,GAAMhC,EAAG,GACTiC,GAAMjC,EAAG,GACTkC,GAAMlC,EAAG,GACTmC,GAAMnC,EAAG,GACToC,GAAMpC,EAAG,GAETqC,GAAM,EACH7N,GAAK,KAAK,CACf,IAAKrB,GAAI,EAAGA,GAAI,GAAIA,KAClB8I,GAAI,EAAI9I,GAAIkP,GACZpC,EAAG9M,IAAMuE,EAAEuE,GAAE,IAAM,GAAOvE,EAAEuE,GAAE,IAAM,GAAOvE,EAAEuE,GAAE,IAAM,EAAKvE,EAAEuE,GAAE,GAC9DiE,EAAG/M,IAAMuE,EAAEuE,GAAE,IAAM,GAAOvE,EAAEuE,GAAE,IAAM,GAAOvE,EAAEuE,GAAE,IAAM,EAAKvE,EAAEuE,GAAE,GAEhE,IAAK9I,GAAI,EAAGA,GAAI,GAAIA,KA+HlB,GA9HAgN,EAAMkB,GACNjB,EAAMkB,GACNjB,EAAMkB,GACNjB,GAAMkB,GACNjB,GAAMkB,EACNjB,GAAMkB,GACNjB,GAAMkB,GACNjB,GAAMkB,GAENjB,GAAMkB,GACNjB,GAAMkB,GACNjB,GAAMkB,GACNjB,GAAMkB,GACNjB,GAAMkB,GACNjB,GAAMkB,GACNjB,GAAMkB,GACNjB,GAAMkB,GAGNlO,EAAI0N,GACJzN,EAAIiO,GAEJ1G,GAAIvH,EAAI,MAAQyD,GAAIzD,IAAM,GAC1Ba,GAAId,EAAI,MAAQO,GAAIP,IAAM,GAG1BA,GAAMuN,IAAQ,GAAOQ,IAAQ,GAAG,KAAUR,IAAQ,GAAOQ,IAAQ,GAAG,KAAUA,KAAS,GAAG,GAAQR,GAAQ,IAAI,GAAG,KACjHtN,GAAM8N,KAAQ,GAAOR,GAAQ,GAAG,KAAUQ,KAAQ,GAAOR,GAAQ,GAAG,KAAUA,IAAS,GAAG,GAAQQ,IAAQ,IAAI,GAAG,KAEjHvG,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAG5BA,EAAKuN,EAAMC,GAAQ,CAACD,EAAME,GAC1BxN,EAAK8N,GAAMC,GAAQ,CAACD,GAAME,GAE1BzG,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAG5BA,EAAI2L,GAAE1M,GAAE,GACRgB,EAAI0L,GAAE1M,GAAE,EAAE,GAEVuI,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAG5BA,EAAI+L,EAAG9M,GAAE,IACTgB,EAAI+L,EAAG/M,GAAE,IAETuI,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAE5B0D,IAAK8D,KAAM,GACX1G,IAAK4C,KAAM,GACXnD,IAAKO,KAAM,GAEXmM,GAAKnM,GAAI,MAASP,IAAK,GACvB2M,GAAK1F,GAAI,MAAS9D,IAAK,GAGvB1D,EAAIiN,GACJhN,EAAIiN,GAEJ1F,GAAIvH,EAAI,MAAQyD,GAAIzD,IAAM,GAC1Ba,GAAId,EAAI,MAAQO,GAAIP,IAAM,GAG1BA,GAAMmN,KAAQ,GAAOQ,IAAQ,GAAG,KAAUA,KAAS,GAAG,GAAQR,IAAQ,IAAI,GAAG,MAAWQ,KAAS,GAAG,GAAQR,IAAQ,IAAI,GAAG,KAC3HlN,GAAM0N,KAAQ,GAAOR,IAAQ,GAAG,KAAUA,KAAS,GAAG,GAAQQ,IAAQ,IAAI,GAAG,MAAWR,KAAS,GAAG,GAAQQ,IAAQ,IAAI,GAAG,KAE3HnG,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAG5BA,EAAKmN,GAAMC,GAAQD,GAAME,GAAQD,GAAMC,GACvCpN,EAAK0N,GAAMC,GAAQD,GAAME,GAAQD,GAAMC,GAEvCrG,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAE5B0D,IAAK8D,KAAM,GACX1G,IAAK4C,KAAM,GACXnD,IAAKO,KAAM,GAEX0L,GAAO1L,GAAI,MAAWP,IAAK,GAC3ByM,GAAOxF,GAAI,MAAW9D,IAAK,GAG3B1D,EAAIoM,GACJnM,EAAI2M,GAEJpF,GAAIvH,EAAI,MAAQyD,GAAIzD,IAAM,GAC1Ba,GAAId,EAAI,MAAQO,GAAIP,IAAM,GAE1BA,EAAIiN,GACJhN,EAAIiN,GAEJ1F,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAE5B0D,IAAK8D,KAAM,GACX1G,IAAK4C,KAAM,GACXnD,IAAKO,KAAM,GAEXsL,GAAOtL,GAAI,MAAWP,IAAK,GAC3BqM,GAAOpF,GAAI,MAAW9D,IAAK,GAE3B0J,GAAMnB,EACNoB,GAAMnB,EACNoB,GAAMnB,EACNoB,EAAMnB,GACNoB,GAAMnB,GACNoB,GAAMnB,GACNoB,GAAMnB,GACNY,GAAMX,GAENoB,GAAMnB,GACNoB,GAAMnB,GACNoB,GAAMnB,GACNoB,GAAMnB,GACNoB,GAAMnB,GACNoB,GAAMnB,GACNoB,GAAMnB,GACNY,GAAMX,GAEF/N,GAAE,KAAO,GACX,IAAK8I,GAAI,EAAGA,GAAI,GAAIA,KAElB/H,EAAI+L,EAAGhE,IACP9H,EAAI+L,EAAGjE,IAEPP,GAAIvH,EAAI,MAAQyD,GAAIzD,IAAM,GAC1Ba,GAAId,EAAI,MAAQO,GAAIP,IAAM,GAE1BA,EAAI+L,GAAIhE,GAAE,GAAG,IACb9H,EAAI+L,GAAIjE,GAAE,GAAG,IAEbP,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAG5BiN,GAAKlB,GAAIhE,GAAE,GAAG,IACdmF,GAAKlB,GAAIjE,GAAE,GAAG,IACd/H,GAAMiN,KAAO,EAAMC,IAAO,GAAG,IAASD,KAAO,EAAMC,IAAO,GAAG,GAAQD,KAAO,EAC5EhN,GAAMiN,KAAO,EAAMD,IAAO,GAAG,IAASC,KAAO,EAAMD,IAAO,GAAG,IAASC,KAAO,EAAMD,IAAO,GAAG,GAE7FzF,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAG5BiN,GAAKlB,GAAIhE,GAAE,IAAI,IACfmF,GAAKlB,GAAIjE,GAAE,IAAI,IACf/H,GAAMiN,KAAO,GAAOC,IAAO,GAAG,KAAUA,KAAQ,GAAG,GAAQD,IAAO,IAAI,GAAG,KAAUA,KAAO,EAC1FhN,GAAMiN,KAAO,GAAOD,IAAO,GAAG,KAAUA,KAAQ,GAAG,GAAQC,IAAO,IAAI,GAAG,MAAWA,KAAO,EAAMD,IAAO,GAAG,GAE3GzF,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAE5B0D,IAAK8D,KAAM,GACX1G,IAAK4C,KAAM,GACXnD,IAAKO,KAAM,GAEXiL,EAAGhE,IAAMjH,GAAI,MAAWP,IAAK,GAC7ByL,EAAGjE,IAAMP,GAAI,MAAW9D,IAAK,GAMnC1D,EAAImN,GACJlN,EAAI0N,GAEJnG,GAAIvH,EAAI,MAAQyD,GAAIzD,IAAM,GAC1Ba,GAAId,EAAI,MAAQO,GAAIP,IAAM,GAE1BA,EAAI6L,EAAG,GACP5L,EAAI6L,EAAG,GAEPtE,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAE5B0D,IAAK8D,KAAM,GACX1G,IAAK4C,KAAM,GACXnD,IAAKO,KAAM,GAEX+K,EAAG,GAAKsB,GAAOrM,GAAI,MAAWP,IAAK,GACnCuL,EAAG,GAAK6B,GAAOnG,GAAI,MAAW9D,IAAK,GAEnC1D,EAAIoN,GACJnN,EAAI2N,GAEJpG,GAAIvH,EAAI,MAAQyD,GAAIzD,IAAM,GAC1Ba,GAAId,EAAI,MAAQO,GAAIP,IAAM,GAE1BA,EAAI6L,EAAG,GACP5L,EAAI6L,EAAG,GAEPtE,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAE5B0D,IAAK8D,KAAM,GACX1G,IAAK4C,KAAM,GACXnD,IAAKO,KAAM,GAEX+K,EAAG,GAAKuB,GAAOtM,GAAI,MAAWP,IAAK,GACnCuL,EAAG,GAAK8B,GAAOpG,GAAI,MAAW9D,IAAK,GAEnC1D,EAAIqN,GACJpN,EAAI4N,GAEJrG,GAAIvH,EAAI,MAAQyD,GAAIzD,IAAM,GAC1Ba,GAAId,EAAI,MAAQO,GAAIP,IAAM,GAE1BA,EAAI6L,EAAG,GACP5L,EAAI6L,EAAG,GAEPtE,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAE5B0D,IAAK8D,KAAM,GACX1G,IAAK4C,KAAM,GACXnD,IAAKO,KAAM,GAEX+K,EAAG,GAAKwB,GAAOvM,GAAI,MAAWP,IAAK,GACnCuL,EAAG,GAAK+B,GAAOrG,GAAI,MAAW9D,IAAK,GAEnC1D,EAAIsN,GACJrN,EAAI6N,GAEJtG,GAAIvH,EAAI,MAAQyD,GAAIzD,IAAM,GAC1Ba,GAAId,EAAI,MAAQO,GAAIP,IAAM,GAE1BA,EAAI6L,EAAG,GACP5L,EAAI6L,EAAG,GAEPtE,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAE5B0D,IAAK8D,KAAM,GACX1G,IAAK4C,KAAM,GACXnD,IAAKO,KAAM,GAEX+K,EAAG,GAAKyB,GAAOxM,GAAI,MAAWP,IAAK,GACnCuL,EAAG,GAAKgC,GAAOtG,GAAI,MAAW9D,IAAK,GAEnC1D,EAAIuN,EACJtN,EAAI8N,GAEJvG,GAAIvH,EAAI,MAAQyD,GAAIzD,IAAM,GAC1Ba,GAAId,EAAI,MAAQO,GAAIP,IAAM,GAE1BA,EAAI6L,EAAG,GACP5L,EAAI6L,EAAG,GAEPtE,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAE5B0D,IAAK8D,KAAM,GACX1G,IAAK4C,KAAM,GACXnD,IAAKO,KAAM,GAEX+K,EAAG,GAAK0B,EAAOzM,GAAI,MAAWP,IAAK,GACnCuL,EAAG,GAAKiC,GAAOvG,GAAI,MAAW9D,IAAK,GAEnC1D,EAAIwN,GACJvN,EAAI+N,GAEJxG,GAAIvH,EAAI,MAAQyD,GAAIzD,IAAM,GAC1Ba,GAAId,EAAI,MAAQO,GAAIP,IAAM,GAE1BA,EAAI6L,EAAG,GACP5L,EAAI6L,EAAG,GAEPtE,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAE5B0D,IAAK8D,KAAM,GACX1G,IAAK4C,KAAM,GACXnD,IAAKO,KAAM,GAEX+K,EAAG,GAAK2B,GAAO1M,GAAI,MAAWP,IAAK,GACnCuL,EAAG,GAAKkC,GAAOxG,GAAI,MAAW9D,IAAK,GAEnC1D,EAAIyN,GACJxN,EAAIgO,GAEJzG,GAAIvH,EAAI,MAAQyD,GAAIzD,IAAM,GAC1Ba,GAAId,EAAI,MAAQO,GAAIP,IAAM,GAE1BA,EAAI6L,EAAG,GACP5L,EAAI6L,EAAG,GAEPtE,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAE5B0D,IAAK8D,KAAM,GACX1G,IAAK4C,KAAM,GACXnD,IAAKO,KAAM,GAEX+K,EAAG,GAAK4B,GAAO3M,GAAI,MAAWP,IAAK,GACnCuL,EAAG,GAAKmC,GAAOzG,GAAI,MAAW9D,IAAK,GAEnC1D,EAAI0N,GACJzN,EAAIiO,GAEJ1G,GAAIvH,EAAI,MAAQyD,GAAIzD,IAAM,GAC1Ba,GAAId,EAAI,MAAQO,GAAIP,IAAM,GAE1BA,EAAI6L,EAAG,GACP5L,EAAI6L,EAAG,GAEPtE,IAAKvH,EAAI,MAAQyD,IAAKzD,IAAM,GAC5Ba,IAAKd,EAAI,MAAQO,IAAKP,IAAM,GAE5B0D,IAAK8D,KAAM,GACX1G,IAAK4C,KAAM,GACXnD,IAAKO,KAAM,GAEX+K,EAAG,GAAK6B,GAAO5M,GAAI,MAAWP,IAAK,GACnCuL,EAAG,GAAKoC,GAAO1G,GAAI,MAAW9D,IAAK,GAEnCyK,IAAO,IACP7N,GAAK,GACP,CAEA,OAAOA,CACT,CAEA,SAAS8N,GAAYlL,EAAKM,EAAGlD,EAAG,CAC9B,IAAIuL,EAAK,IAAI,WAAW,CAAC,EACrBC,EAAK,IAAI,WAAW,CAAC,EACrB/L,EAAI,IAAI,WAAW,GAAG,EACtBd,EAAGyE,EAAIpD,EAuBX,IArBAuL,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,UACRA,EAAG,GAAK,WAERC,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,WACRA,EAAG,GAAK,UACRA,EAAG,GAAK,WACRA,EAAG,GAAK,UAERF,GAAqBC,EAAIC,EAAItI,EAAGlD,CAAC,EACjCA,GAAK,IAEArB,EAAI,EAAGA,EAAIqB,EAAGrB,IAAKc,EAAEd,GAAKuE,EAAEE,EAAEpD,EAAErB,GAQrC,IAPAc,EAAEO,GAAK,IAEPA,EAAI,IAAI,KAAKA,EAAE,IAAI,EAAE,GACrBP,EAAEO,EAAE,GAAK,EACTR,EAAKC,EAAGO,EAAE,EAAKoD,EAAI,UAAc,EAAGA,GAAK,CAAC,EAC1CkI,GAAqBC,EAAIC,EAAI/L,EAAGO,CAAC,EAE5BrB,EAAI,EAAGA,EAAI,EAAGA,IAAKa,EAAKoD,EAAK,EAAEjE,EAAG4M,EAAG5M,GAAI6M,EAAG7M,EAAE,EAEnD,MAAO,EACT,CAEA,SAASoP,GAAIzN,EAAGgH,EAAG,CACjB,IAAIJ,EAAIzI,EAAG,EAAG2E,EAAI3E,EAAG,EAAG+B,EAAI/B,EAAG,EAC3BwB,EAAIxB,EAAG,EAAGkM,EAAIlM,EAAG,EAAGgI,EAAIhI,EAAG,EAC3B8H,EAAI9H,EAAG,EAAGiB,GAAIjB,EAAG,EAAG8I,GAAI9I,EAAG,EAE/BqJ,EAAEZ,EAAG5G,EAAE,GAAIA,EAAE,EAAE,EACfwH,EAAEP,GAAGD,EAAE,GAAIA,EAAE,EAAE,EACfS,EAAEb,EAAGA,EAAGK,EAAC,EACTM,EAAEzE,EAAG9C,EAAE,GAAIA,EAAE,EAAE,EACfuH,EAAEN,GAAGD,EAAE,GAAIA,EAAE,EAAE,EACfS,EAAE3E,EAAGA,EAAGmE,EAAC,EACTQ,EAAEvH,EAAGF,EAAE,GAAIgH,EAAE,EAAE,EACfS,EAAEvH,EAAGA,EAAGpB,CAAE,EACV2I,EAAE9H,EAAGK,EAAE,GAAIgH,EAAE,EAAE,EACfO,EAAE5H,EAAGA,EAAGA,CAAC,EACT6H,EAAE6C,EAAGvH,EAAG8D,CAAC,EACTY,EAAErB,EAAGxG,EAAGO,CAAC,EACTqH,EAAEtB,EAAGtG,EAAGO,CAAC,EACTqH,EAAEnI,GAAG0D,EAAG8D,CAAC,EAETa,EAAEzH,EAAE,GAAIqK,EAAGlE,CAAC,EACZsB,EAAEzH,EAAE,GAAIZ,GAAG6G,CAAC,EACZwB,EAAEzH,EAAE,GAAIiG,EAAGE,CAAC,EACZsB,EAAEzH,EAAE,GAAIqK,EAAGjL,EAAC,CACd,CAEA,SAASsO,GAAM1N,EAAGgH,EAAGlE,EAAG,CACtB,IAAIzE,EACJ,IAAKA,EAAI,EAAGA,EAAI,EAAGA,IACjB0I,EAAS/G,EAAE3B,GAAI2I,EAAE3I,GAAIyE,CAAC,CAE1B,CAEA,SAAS6K,GAAKrP,EAAG0B,EAAG,CAClB,IAAI4N,EAAKzP,EAAG,EAAG0P,EAAK1P,EAAG,EAAG2P,EAAK3P,EAAG,EAClC+L,EAAS4D,EAAI9N,EAAE,EAAE,EACjByH,EAAEmG,EAAI5N,EAAE,GAAI8N,CAAE,EACdrG,EAAEoG,EAAI7N,EAAE,GAAI8N,CAAE,EACd5G,EAAU5I,EAAGuP,CAAE,EACfvP,EAAE,KAAO+I,EAASuG,CAAE,GAAK,CAC3B,CAEA,SAASG,GAAW/N,EAAGgH,EAAG9D,EAAG,CAC3B,IAAIJ,EAAGzE,EAKP,IAJAsI,EAAS3G,EAAE,GAAItB,CAAG,EAClBiI,EAAS3G,EAAE,GAAIrB,CAAG,EAClBgI,EAAS3G,EAAE,GAAIrB,CAAG,EAClBgI,EAAS3G,EAAE,GAAItB,CAAG,EACbL,EAAI,IAAKA,GAAK,EAAG,EAAEA,EACtByE,EAAKI,EAAG7E,EAAE,EAAG,KAAOA,EAAE,GAAM,EAC5BqP,GAAM1N,EAAGgH,EAAGlE,CAAC,EACb2K,GAAIzG,EAAGhH,CAAC,EACRyN,GAAIzN,EAAGA,CAAC,EACR0N,GAAM1N,EAAGgH,EAAGlE,CAAC,CAEjB,CAEA,SAASkL,GAAWhO,EAAGkD,EAAG,CACxB,IAAI8D,EAAI,CAAC7I,EAAG,EAAGA,EAAG,EAAGA,EAAG,EAAGA,EAAG,CAAC,EAC/BwI,EAASK,EAAE,GAAIjI,CAAC,EAChB4H,EAASK,EAAE,GAAIhI,CAAC,EAChB2H,EAASK,EAAE,GAAIrI,CAAG,EAClB8I,EAAET,EAAE,GAAIjI,EAAGC,CAAC,EACZ+O,GAAW/N,EAAGgH,EAAG9D,CAAC,CACpB,CAEA,SAAS+K,GAAoBC,EAAIC,EAAIC,EAAQ,CAC3C,IAAIzO,EAAI,IAAI,WAAW,EAAE,EACrBK,EAAI,CAAC7B,EAAG,EAAGA,EAAG,EAAGA,EAAG,EAAGA,EAAG,CAAC,EAC3BE,EAWJ,IATK+P,GAAQ7P,EAAY4P,EAAI,EAAE,EAC/BX,GAAY7N,EAAGwO,EAAI,EAAE,EACrBxO,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,KAAO,GAETqO,GAAWhO,EAAGL,CAAC,EACfgO,GAAKO,EAAIlO,CAAC,EAEL3B,EAAI,EAAGA,EAAI,GAAIA,IAAK8P,EAAG9P,EAAE,IAAM6P,EAAG7P,GACvC,MAAO,EACT,CAEA,IAAIgQ,GAAI,IAAI,aAAa,CAAC,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAI,CAAC,EAE5K,SAASC,GAAKhQ,EAAGa,EAAG,CAClB,IAAIoP,EAAOlQ,EAAG8I,EAAGlH,EACjB,IAAK5B,EAAI,GAAIA,GAAK,GAAI,EAAEA,EAAG,CAEzB,IADAkQ,EAAQ,EACHpH,EAAI9I,EAAI,GAAI4B,EAAI5B,EAAI,GAAI8I,EAAIlH,EAAG,EAAEkH,EACpChI,EAAEgI,IAAMoH,EAAQ,GAAKpP,EAAEd,GAAKgQ,GAAElH,GAAK9I,EAAI,KACvCkQ,EAAQ,KAAK,OAAOpP,EAAEgI,GAAK,KAAO,GAAG,EACrChI,EAAEgI,IAAMoH,EAAQ,IAElBpP,EAAEgI,IAAMoH,EACRpP,EAAEd,GAAK,CACT,CAEA,IADAkQ,EAAQ,EACHpH,EAAI,EAAGA,EAAI,GAAIA,IAClBhI,EAAEgI,IAAMoH,GAASpP,EAAE,KAAO,GAAKkP,GAAElH,GACjCoH,EAAQpP,EAAEgI,IAAM,EAChBhI,EAAEgI,IAAM,IAEV,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAKhI,EAAEgI,IAAMoH,EAAQF,GAAElH,GAC3C,IAAK9I,EAAI,EAAGA,EAAI,GAAIA,IAClBc,EAAEd,EAAE,IAAMc,EAAEd,IAAM,EAClBC,EAAED,GAAKc,EAAEd,GAAK,GAElB,CAEA,SAASmQ,GAAOlQ,EAAG,CACjB,IAAIa,EAAI,IAAI,aAAa,EAAE,EAAGd,EAC9B,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAKc,EAAEd,GAAKC,EAAED,GAClC,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAKC,EAAED,GAAK,EAChCiQ,GAAKhQ,EAAGa,CAAC,CACX,CAGA,SAASsP,GAAYC,EAAI9L,EAAGlD,EAAGyO,EAAI,CACjC,IAAIxO,EAAI,IAAI,WAAW,EAAE,EAAGP,EAAI,IAAI,WAAW,EAAE,EAAGd,EAAI,IAAI,WAAW,EAAE,EACrED,EAAG8I,EAAGhI,GAAI,IAAI,aAAa,EAAE,EAC7Ba,GAAI,CAAC7B,EAAG,EAAGA,EAAG,EAAGA,EAAG,EAAGA,EAAG,CAAC,EAE/BqP,GAAY7N,EAAGwO,EAAI,EAAE,EACrBxO,EAAE,IAAM,IACRA,EAAE,KAAO,IACTA,EAAE,KAAO,GAET,IAAIgP,GAAQjP,EAAI,GAChB,IAAKrB,EAAI,EAAGA,EAAIqB,EAAGrB,IAAKqQ,EAAG,GAAKrQ,GAAKuE,EAAEvE,GACvC,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAKqQ,EAAG,GAAKrQ,GAAKsB,EAAE,GAAKtB,GAO7C,IALAmP,GAAYlP,EAAGoQ,EAAG,SAAS,EAAE,EAAGhP,EAAE,EAAE,EACpC8O,GAAOlQ,CAAC,EACR0P,GAAWhO,GAAG1B,CAAC,EACfqP,GAAKe,EAAI1O,EAAC,EAEL3B,EAAI,GAAIA,EAAI,GAAIA,IAAKqQ,EAAGrQ,GAAK8P,EAAG9P,GAIrC,IAHAmP,GAAYpO,EAAGsP,EAAIhP,EAAI,EAAE,EACzB8O,GAAOpP,CAAC,EAEHf,EAAI,EAAGA,EAAI,GAAIA,IAAKc,GAAEd,GAAK,EAChC,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAKc,GAAEd,GAAKC,EAAED,GAClC,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAClB,IAAK8I,EAAI,EAAGA,EAAI,GAAIA,IAClBhI,GAAEd,EAAE8I,IAAM/H,EAAEf,GAAKsB,EAAEwH,GAIvB,OAAAmH,GAAKI,EAAG,SAAS,EAAE,EAAGvP,EAAC,EAChBwP,EACT,CAEA,SAASC,GAAUtQ,EAAG0B,EAAG,CACvB,IAAIiH,EAAI9I,EAAG,EAAG0Q,EAAM1Q,EAAG,EAAG2Q,EAAM3Q,EAAG,EAC/B4Q,EAAM5Q,EAAG,EAAG6Q,EAAO7Q,EAAG,EAAG8Q,EAAO9Q,EAAG,EACnC+Q,EAAO/Q,EAAG,EA2Bd,OAzBAwI,EAASrI,EAAE,GAAIK,CAAG,EAClB2I,EAAYhJ,EAAE,GAAI0B,CAAC,EACnBiK,EAAE6E,EAAKxQ,EAAE,EAAE,EACXmJ,EAAEsH,EAAKD,EAAKjQ,CAAC,EACb2I,EAAEsH,EAAKA,EAAKxQ,EAAE,EAAE,EAChBiJ,EAAEwH,EAAKzQ,EAAE,GAAIyQ,CAAG,EAEhB9E,EAAE+E,EAAMD,CAAG,EACX9E,EAAEgF,EAAMD,CAAI,EACZvH,EAAEyH,EAAMD,EAAMD,CAAI,EAClBvH,EAAER,EAAGiI,EAAMJ,CAAG,EACdrH,EAAER,EAAGA,EAAG8H,CAAG,EAEX5E,EAAQlD,EAAGA,CAAC,EACZQ,EAAER,EAAGA,EAAG6H,CAAG,EACXrH,EAAER,EAAGA,EAAG8H,CAAG,EACXtH,EAAER,EAAGA,EAAG8H,CAAG,EACXtH,EAAEnJ,EAAE,GAAI2I,EAAG8H,CAAG,EAEd9E,EAAE4E,EAAKvQ,EAAE,EAAE,EACXmJ,EAAEoH,EAAKA,EAAKE,CAAG,EACX3H,EAASyH,EAAKC,CAAG,GAAGrH,EAAEnJ,EAAE,GAAIA,EAAE,GAAIW,CAAC,EAEvCgL,EAAE4E,EAAKvQ,EAAE,EAAE,EACXmJ,EAAEoH,EAAKA,EAAKE,CAAG,EACX3H,EAASyH,EAAKC,CAAG,EAAU,IAE3BzH,EAAS/I,EAAE,EAAE,IAAO0B,EAAE,KAAK,GAAIwH,EAAElJ,EAAE,GAAII,EAAKJ,EAAE,EAAE,EAEpDmJ,EAAEnJ,EAAE,GAAIA,EAAE,GAAIA,EAAE,EAAE,EACX,EACT,CAEA,SAAS6Q,GAAiBvM,EAAG8L,EAAIhP,EAAGwO,EAAI,CACtC,IAAI7P,EACA4I,EAAI,IAAI,WAAW,EAAE,EAAG7H,EAAI,IAAI,WAAW,EAAE,EAC7CY,EAAI,CAAC7B,EAAG,EAAGA,EAAG,EAAGA,EAAG,EAAGA,EAAG,CAAC,EAC3B6I,EAAI,CAAC7I,EAAG,EAAGA,EAAG,EAAGA,EAAG,EAAGA,EAAG,CAAC,EAI/B,GAFIuB,EAAI,IAEJkP,GAAU5H,EAAGkH,CAAE,EAAG,MAAO,GAE7B,IAAK7P,EAAI,EAAGA,EAAIqB,EAAGrB,IAAKuE,EAAEvE,GAAKqQ,EAAGrQ,GAClC,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAAKuE,EAAEvE,EAAE,IAAM6P,EAAG7P,GAUtC,GATAmP,GAAYpO,EAAGwD,EAAGlD,CAAC,EACnB8O,GAAOpP,CAAC,EACR2O,GAAW/N,EAAGgH,EAAG5H,CAAC,EAElB4O,GAAWhH,EAAG0H,EAAG,SAAS,EAAE,CAAC,EAC7BjB,GAAIzN,EAAGgH,CAAC,EACR2G,GAAK1G,EAAGjH,CAAC,EAETN,GAAK,GACDG,GAAiB6O,EAAI,EAAGzH,EAAG,CAAC,EAAG,CACjC,IAAK5I,EAAI,EAAGA,EAAIqB,EAAGrB,IAAKuE,EAAEvE,GAAK,EAC/B,MAAO,EACT,CAEA,IAAKA,EAAI,EAAGA,EAAIqB,EAAGrB,IAAKuE,EAAEvE,GAAKqQ,EAAGrQ,EAAI,IACtC,OAAOqB,CACT,CAEA,IAAI0P,GAA4B,GAC5BC,GAA8B,GAC9BC,GAA6B,GAC7BC,GAAgC,GAChCC,GAA0B,GAC1BC,GAAgC,GAChCC,GAA4B,GAC5BC,GAA4B,GAC5BC,GAA2B,GAC3BC,GAAwBR,GACxBS,GAAuBR,GACvBS,GAA0BR,GAC1BS,GAAoB,GACpBC,GAA6B,GAC7BC,GAA6B,GAC7BC,GAAwB,GACxBC,GAAoB,GAExBlS,EAAK,SAAW,CACd,qBAAsBsE,GACtB,kBAAmBY,EACnB,cAAeH,EACf,0BAA2BP,GAC3B,sBAAuBM,GACvB,mBAAoBqD,EACpB,0BAA2BE,EAC3B,iBAAkB3G,EAClB,iBAAkBC,GAClB,iBAAkB4G,EAClB,sBAAuBC,EACvB,kBAAmB0D,EACnB,uBAAwBI,GACxB,oBAAqBE,GACrB,mBAAoBC,GACpB,WAAYE,GACZ,gBAAiBC,GACjB,mBAAoBL,GACpB,YAAa+C,GACb,YAAaiB,GACb,oBAAqBR,GACrB,iBAAkBkB,GAElB,0BAA2BC,GAC3B,4BAA6BC,GAC7B,2BAA4BC,GAC5B,8BAA+BC,GAC/B,wBAAyBC,GACzB,8BAA+BC,GAC/B,0BAA2BC,GAC3B,0BAA2BC,GAC3B,yBAA0BC,GAC1B,sBAAuBC,GACvB,qBAAsBC,GACtB,wBAAyBC,GACzB,kBAAmBC,GACnB,2BAA4BC,GAC5B,2BAA4BC,GAC5B,sBAAuBC,GACvB,kBAAmBC,GAEnB,GAAIjS,EACJ,EAAGU,EACH,EAAGwP,GACH,UAAWnH,EACX,YAAaI,EACb,EAAGG,EACH,EAAGF,EACH,EAAG0C,EACH,EAAGzC,EACH,QAAS2C,EACT,IAAKsD,GACL,SAAU9G,EACV,KAAM2H,GACN,WAAYP,GACZ,WAAYC,EACd,EAIA,SAASqC,GAAapQ,EAAGP,EAAG,CAC1B,GAAIO,EAAE,SAAWmP,GAA2B,MAAM,IAAI,MAAM,cAAc,EAC1E,GAAI1P,EAAE,SAAW2P,GAA6B,MAAM,IAAI,MAAM,gBAAgB,CAChF,CAEA,SAASiB,GAAgBpC,EAAIC,EAAI,CAC/B,GAAID,EAAG,SAAWwB,GAA2B,MAAM,IAAI,MAAM,qBAAqB,EAClF,GAAIvB,EAAG,SAAWwB,GAA2B,MAAM,IAAI,MAAM,qBAAqB,CACpF,CAEA,SAASY,IAAkB,CACzB,QAASlS,EAAI,EAAGA,EAAI,UAAU,OAAQA,IACpC,GAAI,EAAE,UAAUA,aAAc,YAC5B,MAAM,IAAI,UAAU,iCAAiC,CAE3D,CAEA,SAASmS,GAAQC,EAAK,CACpB,QAASpS,EAAI,EAAGA,EAAIoS,EAAI,OAAQpS,IAAKoS,EAAIpS,GAAK,CAChD,CAEAH,EAAK,YAAc,SAASwB,EAAG,CAC7B,IAAIoD,EAAI,IAAI,WAAWpD,CAAC,EACxB,OAAAnB,EAAYuE,EAAGpD,CAAC,EACToD,CACT,EAEA5E,EAAK,UAAY,SAASwS,EAAKC,EAAOrN,EAAK,CACzCiN,GAAgBG,EAAKC,EAAOrN,CAAG,EAC/B+M,GAAa/M,EAAKqN,CAAK,EAGvB,QAFI,EAAI,IAAI,WAAWrB,GAA6BoB,EAAI,MAAM,EAC1DxQ,EAAI,IAAI,WAAW,EAAE,MAAM,EACtB7B,EAAI,EAAGA,EAAIqS,EAAI,OAAQrS,IAAK,EAAEA,EAAEiR,IAA8BoB,EAAIrS,GAC3E,OAAAoI,EAAiBvG,EAAG,EAAG,EAAE,OAAQyQ,EAAOrN,CAAG,EACpCpD,EAAE,SAASqP,EAA6B,CACjD,EAEArR,EAAK,UAAU,KAAO,SAAS0S,EAAKD,EAAOrN,EAAK,CAC9CiN,GAAgBK,EAAKD,EAAOrN,CAAG,EAC/B+M,GAAa/M,EAAKqN,CAAK,EAGvB,QAFIzQ,EAAI,IAAI,WAAWqP,GAAgCqB,EAAI,MAAM,EAC7DhO,EAAI,IAAI,WAAW1C,EAAE,MAAM,EACtB7B,EAAI,EAAGA,EAAIuS,EAAI,OAAQvS,IAAK6B,EAAE7B,EAAEkR,IAAiCqB,EAAIvS,GAE9E,OADI6B,EAAE,OAAS,IACXwG,EAAsB9D,EAAG1C,EAAGA,EAAE,OAAQyQ,EAAOrN,CAAG,IAAM,EAAU,KAC7DV,EAAE,SAAS0M,EAA0B,CAC9C,EAEApR,EAAK,UAAU,UAAYkR,GAC3BlR,EAAK,UAAU,YAAcmR,GAC7BnR,EAAK,UAAU,eAAiBqR,GAEhCrR,EAAK,WAAa,SAASwB,EAAGM,EAAG,CAE/B,GADAuQ,GAAgB7Q,EAAGM,CAAC,EAChBN,EAAE,SAAW+P,GAA+B,MAAM,IAAI,MAAM,YAAY,EAC5E,GAAIzP,EAAE,SAAWwP,GAAyB,MAAM,IAAI,MAAM,YAAY,EACtE,IAAIxI,EAAI,IAAI,WAAWwI,EAAuB,EAC9C,OAAApF,EAAkBpD,EAAGtH,EAAGM,CAAC,EAClBgH,CACT,EAEA9I,EAAK,WAAW,KAAO,SAASwB,EAAG,CAEjC,GADA6Q,GAAgB7Q,CAAC,EACbA,EAAE,SAAW+P,GAA+B,MAAM,IAAI,MAAM,YAAY,EAC5E,IAAIzI,EAAI,IAAI,WAAWwI,EAAuB,EAC9C,OAAAhF,GAAuBxD,EAAGtH,CAAC,EACpBsH,CACT,EAEA9I,EAAK,WAAW,aAAeuR,GAC/BvR,EAAK,WAAW,mBAAqBsR,GAErCtR,EAAK,IAAM,SAASwS,EAAKC,EAAOE,EAAWC,EAAW,CACpD,IAAI7Q,EAAI/B,EAAK,IAAI,OAAO2S,EAAWC,CAAS,EAC5C,OAAO5S,EAAK,UAAUwS,EAAKC,EAAO1Q,CAAC,CACrC,EAEA/B,EAAK,IAAI,OAAS,SAAS2S,EAAWC,EAAW,CAC/CP,GAAgBM,EAAWC,CAAS,EACpCR,GAAgBO,EAAWC,CAAS,EACpC,IAAI7Q,EAAI,IAAI,WAAW2P,EAAwB,EAC/C,OAAAlF,GAAoBzK,EAAG4Q,EAAWC,CAAS,EACpC7Q,CACT,EAEA/B,EAAK,IAAI,MAAQA,EAAK,UAEtBA,EAAK,IAAI,KAAO,SAASwS,EAAKC,EAAOE,EAAWC,EAAW,CACzD,IAAI7Q,EAAI/B,EAAK,IAAI,OAAO2S,EAAWC,CAAS,EAC5C,OAAO5S,EAAK,UAAU,KAAKwS,EAAKC,EAAO1Q,CAAC,CAC1C,EAEA/B,EAAK,IAAI,KAAK,MAAQA,EAAK,UAAU,KAErCA,EAAK,IAAI,QAAU,UAAW,CAC5B,IAAIgQ,EAAK,IAAI,WAAWwB,EAAyB,EAC7CvB,EAAK,IAAI,WAAWwB,EAAyB,EACjD,OAAAlF,GAAmByD,EAAIC,CAAE,EAClB,CAAC,UAAWD,EAAI,UAAWC,CAAE,CACtC,EAEAjQ,EAAK,IAAI,QAAQ,cAAgB,SAAS4S,EAAW,CAEnD,GADAP,GAAgBO,CAAS,EACrBA,EAAU,SAAWnB,GACvB,MAAM,IAAI,MAAM,qBAAqB,EACvC,IAAIzB,EAAK,IAAI,WAAWwB,EAAyB,EACjD,OAAAlF,GAAuB0D,EAAI4C,CAAS,EAC7B,CAAC,UAAW5C,EAAI,UAAW,IAAI,WAAW4C,CAAS,CAAC,CAC7D,EAEA5S,EAAK,IAAI,gBAAkBwR,GAC3BxR,EAAK,IAAI,gBAAkByR,GAC3BzR,EAAK,IAAI,gBAAkB0R,GAC3B1R,EAAK,IAAI,YAAc2R,GACvB3R,EAAK,IAAI,eAAiBA,EAAK,UAAU,eAEzCA,EAAK,KAAO,SAASwS,EAAKI,EAAW,CAEnC,GADAP,GAAgBG,EAAKI,CAAS,EAC1BA,EAAU,SAAWZ,GACvB,MAAM,IAAI,MAAM,qBAAqB,EACvC,IAAIa,EAAY,IAAI,WAAWf,GAAkBU,EAAI,MAAM,EAC3D,OAAAjC,GAAYsC,EAAWL,EAAKA,EAAI,OAAQI,CAAS,EAC1CC,CACT,EAEA7S,EAAK,KAAK,KAAO,SAAS6S,EAAWF,EAAW,CAE9C,GADAN,GAAgBQ,EAAWF,CAAS,EAChCA,EAAU,SAAWZ,GACvB,MAAM,IAAI,MAAM,qBAAqB,EACvC,IAAIe,EAAM,IAAI,WAAWD,EAAU,MAAM,EACrCE,EAAO9B,GAAiB6B,EAAKD,EAAWA,EAAU,OAAQF,CAAS,EACvE,GAAII,EAAO,EAAG,OAAO,KAErB,QADIrO,EAAI,IAAI,WAAWqO,CAAI,EAClB5S,EAAI,EAAGA,EAAIuE,EAAE,OAAQvE,IAAKuE,EAAEvE,GAAK2S,EAAI3S,GAC9C,OAAOuE,CACT,EAEA1E,EAAK,KAAK,SAAW,SAASwS,EAAKI,EAAW,CAG5C,QAFIC,EAAY7S,EAAK,KAAKwS,EAAKI,CAAS,EACpCI,EAAM,IAAI,WAAWlB,EAAiB,EACjC3R,EAAI,EAAGA,EAAI6S,EAAI,OAAQ7S,IAAK6S,EAAI7S,GAAK0S,EAAU1S,GACxD,OAAO6S,CACT,EAEAhT,EAAK,KAAK,SAAS,OAAS,SAASwS,EAAKQ,EAAKL,EAAW,CAExD,GADAN,GAAgBG,EAAKQ,EAAKL,CAAS,EAC/BK,EAAI,SAAWlB,GACjB,MAAM,IAAI,MAAM,oBAAoB,EACtC,GAAIa,EAAU,SAAWZ,GACvB,MAAM,IAAI,MAAM,qBAAqB,EACvC,IAAIvB,EAAK,IAAI,WAAWsB,GAAoBU,EAAI,MAAM,EAClD9N,EAAI,IAAI,WAAWoN,GAAoBU,EAAI,MAAM,EACjDrS,EACJ,IAAKA,EAAI,EAAGA,EAAI2R,GAAmB3R,IAAKqQ,EAAGrQ,GAAK6S,EAAI7S,GACpD,IAAKA,EAAI,EAAGA,EAAIqS,EAAI,OAAQrS,IAAKqQ,EAAGrQ,EAAE2R,IAAqBU,EAAIrS,GAC/D,OAAQ8Q,GAAiBvM,EAAG8L,EAAIA,EAAG,OAAQmC,CAAS,GAAK,CAC3D,EAEA3S,EAAK,KAAK,QAAU,UAAW,CAC7B,IAAIgQ,EAAK,IAAI,WAAW+B,EAA0B,EAC9C9B,EAAK,IAAI,WAAW+B,EAA0B,EAClD,OAAAjC,GAAoBC,EAAIC,CAAE,EACnB,CAAC,UAAWD,EAAI,UAAWC,CAAE,CACtC,EAEAjQ,EAAK,KAAK,QAAQ,cAAgB,SAAS4S,EAAW,CAEpD,GADAP,GAAgBO,CAAS,EACrBA,EAAU,SAAWZ,GACvB,MAAM,IAAI,MAAM,qBAAqB,EAEvC,QADIhC,EAAK,IAAI,WAAW+B,EAA0B,EACzC5R,EAAI,EAAGA,EAAI6P,EAAG,OAAQ7P,IAAK6P,EAAG7P,GAAKyS,EAAU,GAAGzS,GACzD,MAAO,CAAC,UAAW6P,EAAI,UAAW,IAAI,WAAW4C,CAAS,CAAC,CAC7D,EAEA5S,EAAK,KAAK,QAAQ,SAAW,SAASiT,EAAM,CAE1C,GADAZ,GAAgBY,CAAI,EAChBA,EAAK,SAAWhB,GAClB,MAAM,IAAI,MAAM,eAAe,EAGjC,QAFIjC,EAAK,IAAI,WAAW+B,EAA0B,EAC9C9B,EAAK,IAAI,WAAW+B,EAA0B,EACzC7R,EAAI,EAAGA,EAAI,GAAIA,IAAK8P,EAAG9P,GAAK8S,EAAK9S,GAC1C,OAAA4P,GAAoBC,EAAIC,EAAI,EAAI,EACzB,CAAC,UAAWD,EAAI,UAAWC,CAAE,CACtC,EAEAjQ,EAAK,KAAK,gBAAkB+R,GAC5B/R,EAAK,KAAK,gBAAkBgS,GAC5BhS,EAAK,KAAK,WAAaiS,GACvBjS,EAAK,KAAK,gBAAkB8R,GAE5B9R,EAAK,KAAO,SAASwS,EAAK,CACxBH,GAAgBG,CAAG,EACnB,IAAItR,EAAI,IAAI,WAAWgR,EAAiB,EACxC,OAAA5C,GAAYpO,EAAGsR,EAAKA,EAAI,MAAM,EACvBtR,CACT,EAEAlB,EAAK,KAAK,WAAakS,GAEvBlS,EAAK,OAAS,SAASiB,EAAGK,EAAG,CAI3B,OAHA+Q,GAAgBpR,EAAGK,CAAC,EAEhBL,EAAE,SAAW,GAAKK,EAAE,SAAW,GAC/BL,EAAE,SAAWK,EAAE,OAAe,GAC1BF,EAAGH,EAAG,EAAGK,EAAG,EAAGL,EAAE,MAAM,IAAM,CACvC,EAEAjB,EAAK,QAAU,SAASkT,EAAI,CAC1B7S,EAAc6S,CAChB,EAEC,UAAW,CAGV,IAAIC,EAAS,OAAO,KAAS,IAAe,KAAK,QAAU,KAAK,SAAY,KAC5E,GAAIA,GAAUA,EAAO,gBAAiB,CAEpC,IAAIC,EAAQ,MACZpT,EAAK,QAAQ,SAASiB,EAAGO,EAAG,CAC1B,IAAIrB,EAAGyI,EAAI,IAAI,WAAWpH,CAAC,EAC3B,IAAKrB,EAAI,EAAGA,EAAIqB,EAAGrB,GAAKiT,EACtBD,EAAO,gBAAgBvK,EAAE,SAASzI,EAAGA,EAAI,KAAK,IAAIqB,EAAIrB,EAAGiT,CAAK,CAAC,CAAC,EAElE,IAAKjT,EAAI,EAAGA,EAAIqB,EAAGrB,IAAKc,EAAEd,GAAKyI,EAAEzI,GACjCmS,GAAQ1J,CAAC,CACX,CAAC,CACH,MAAW,OAAOyK,GAAY,MAE5BF,EAAS,KACLA,GAAUA,EAAO,aACnBnT,EAAK,QAAQ,SAASiB,EAAGO,EAAG,CAC1B,IAAIrB,EAAGyI,EAAIuK,EAAO,YAAY3R,CAAC,EAC/B,IAAKrB,EAAI,EAAGA,EAAIqB,EAAGrB,IAAKc,EAAEd,GAAKyI,EAAEzI,GACjCmS,GAAQ1J,CAAC,CACX,CAAC,EAGP,EAAG,CAEH,GAAG,OAAO7I,GAAW,KAAeA,GAAO,QAAUA,GAAO,QAAW,KAAK,KAAO,KAAK,MAAQ,CAAC,CAAE,ICt1EnG,IAAAuT,GAAAC,GAAAC,IAAA,cAEAA,GAAQ,WAAaC,GACrBD,GAAQ,YAAcE,GACtBF,GAAQ,cAAgBG,GAExB,IAAIC,GAAS,CAAC,EACVC,GAAY,CAAC,EACbC,GAAM,OAAO,WAAe,IAAc,WAAa,MAEvDC,GAAO,mEACX,IAASC,GAAI,EAAGC,GAAMF,GAAK,OAAQC,GAAIC,GAAK,EAAED,GAC5CJ,GAAOI,IAAKD,GAAKC,IACjBH,GAAUE,GAAK,WAAWC,EAAC,GAAKA,GAFzB,IAAAA,GAAOC,GAOhBJ,GAAU,IAAI,WAAW,CAAC,GAAK,GAC/BA,GAAU,IAAI,WAAW,CAAC,GAAK,GAE/B,SAASK,GAASC,EAAK,CACrB,IAAIF,EAAME,EAAI,OAEd,GAAIF,EAAM,EAAI,EACZ,MAAM,IAAI,MAAM,gDAAgD,EAKlE,IAAIG,EAAWD,EAAI,QAAQ,GAAG,EAC1BC,IAAa,KAAIA,EAAWH,GAEhC,IAAII,EAAkBD,IAAaH,EAC/B,EACA,EAAKG,EAAW,EAEpB,MAAO,CAACA,EAAUC,CAAe,CACnC,CAGA,SAASZ,GAAYU,EAAK,CACxB,IAAIG,EAAOJ,GAAQC,CAAG,EAClBC,EAAWE,EAAK,GAChBD,EAAkBC,EAAK,GAC3B,OAASF,EAAWC,GAAmB,EAAI,EAAKA,CAClD,CAEA,SAASE,GAAaJ,EAAKC,EAAUC,EAAiB,CACpD,OAASD,EAAWC,GAAmB,EAAI,EAAKA,CAClD,CAEA,SAASX,GAAaS,EAAK,CACzB,IAAIK,EACAF,EAAOJ,GAAQC,CAAG,EAClBC,EAAWE,EAAK,GAChBD,EAAkBC,EAAK,GAEvBG,EAAM,IAAIX,GAAIS,GAAYJ,EAAKC,EAAUC,CAAe,CAAC,EAEzDK,EAAU,EAGVT,EAAMI,EAAkB,EACxBD,EAAW,EACXA,EAEAJ,EACJ,IAAKA,EAAI,EAAGA,EAAIC,EAAKD,GAAK,EACxBQ,EACGX,GAAUM,EAAI,WAAWH,CAAC,IAAM,GAChCH,GAAUM,EAAI,WAAWH,EAAI,CAAC,IAAM,GACpCH,GAAUM,EAAI,WAAWH,EAAI,CAAC,IAAM,EACrCH,GAAUM,EAAI,WAAWH,EAAI,CAAC,GAChCS,EAAIC,KAAcF,GAAO,GAAM,IAC/BC,EAAIC,KAAcF,GAAO,EAAK,IAC9BC,EAAIC,KAAaF,EAAM,IAGzB,OAAIH,IAAoB,IACtBG,EACGX,GAAUM,EAAI,WAAWH,CAAC,IAAM,EAChCH,GAAUM,EAAI,WAAWH,EAAI,CAAC,IAAM,EACvCS,EAAIC,KAAaF,EAAM,KAGrBH,IAAoB,IACtBG,EACGX,GAAUM,EAAI,WAAWH,CAAC,IAAM,GAChCH,GAAUM,EAAI,WAAWH,EAAI,CAAC,IAAM,EACpCH,GAAUM,EAAI,WAAWH,EAAI,CAAC,IAAM,EACvCS,EAAIC,KAAcF,GAAO,EAAK,IAC9BC,EAAIC,KAAaF,EAAM,KAGlBC,CACT,CAEA,SAASE,GAAiBC,EAAK,CAC7B,OAAOhB,GAAOgB,GAAO,GAAK,IACxBhB,GAAOgB,GAAO,GAAK,IACnBhB,GAAOgB,GAAO,EAAI,IAClBhB,GAAOgB,EAAM,GACjB,CAEA,SAASC,GAAaC,EAAOC,EAAOC,EAAK,CAGvC,QAFIR,EACAS,EAAS,CAAC,EACLjB,EAAIe,EAAOf,EAAIgB,EAAKhB,GAAK,EAChCQ,GACIM,EAAMd,IAAM,GAAM,WAClBc,EAAMd,EAAI,IAAM,EAAK,QACtBc,EAAMd,EAAI,GAAK,KAClBiB,EAAO,KAAKN,GAAgBH,CAAG,CAAC,EAElC,OAAOS,EAAO,KAAK,EAAE,CACvB,CAEA,SAAStB,GAAemB,EAAO,CAQ7B,QAPIN,EACAP,EAAMa,EAAM,OACZI,EAAajB,EAAM,EACnBkB,EAAQ,CAAC,EACTC,EAAiB,MAGZpB,EAAI,EAAGqB,EAAOpB,EAAMiB,EAAYlB,EAAIqB,EAAMrB,GAAKoB,EACtDD,EAAM,KAAKN,GAAYC,EAAOd,EAAIA,EAAIoB,EAAkBC,EAAOA,EAAQrB,EAAIoB,CAAe,CAAC,EAI7F,OAAIF,IAAe,GACjBV,EAAMM,EAAMb,EAAM,GAClBkB,EAAM,KACJvB,GAAOY,GAAO,GACdZ,GAAQY,GAAO,EAAK,IACpB,IACF,GACSU,IAAe,IACxBV,GAAOM,EAAMb,EAAM,IAAM,GAAKa,EAAMb,EAAM,GAC1CkB,EAAM,KACJvB,GAAOY,GAAO,IACdZ,GAAQY,GAAO,EAAK,IACpBZ,GAAQY,GAAO,EAAK,IACpB,GACF,GAGKW,EAAM,KAAK,EAAE,CACtB,ICrJA,IAAAG,GAAAC,GAAAC,IAAA,CACAA,GAAQ,KAAO,SAAUC,EAAQC,EAAQC,EAAMC,EAAMC,EAAQ,CAC3D,IAAIC,EAAGC,EACHC,EAAQH,EAAS,EAAKD,EAAO,EAC7BK,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,EAAQ,GACRC,EAAIT,EAAQE,EAAS,EAAK,EAC1BQ,EAAIV,EAAO,GAAK,EAChBW,EAAIb,EAAOC,EAASU,GAOxB,IALAA,GAAKC,EAELP,EAAIQ,GAAM,GAAM,CAACH,GAAU,EAC3BG,IAAO,CAACH,EACRA,GAASH,EACFG,EAAQ,EAAGL,EAAKA,EAAI,IAAOL,EAAOC,EAASU,GAAIA,GAAKC,EAAGF,GAAS,EAAG,CAK1E,IAHAJ,EAAID,GAAM,GAAM,CAACK,GAAU,EAC3BL,IAAO,CAACK,EACRA,GAASP,EACFO,EAAQ,EAAGJ,EAAKA,EAAI,IAAON,EAAOC,EAASU,GAAIA,GAAKC,EAAGF,GAAS,EAAG,CAE1E,GAAIL,IAAM,EACRA,EAAI,EAAII,MACH,IAAIJ,IAAMG,EACf,OAAOF,EAAI,KAAQO,EAAI,GAAK,GAAK,MAEjCP,EAAIA,EAAI,KAAK,IAAI,EAAGH,CAAI,EACxBE,EAAIA,EAAII,EAEV,OAAQI,EAAI,GAAK,GAAKP,EAAI,KAAK,IAAI,EAAGD,EAAIF,CAAI,CAChD,EAEAJ,GAAQ,MAAQ,SAAUC,EAAQc,EAAOb,EAAQC,EAAMC,EAAMC,EAAQ,CACnE,IAAIC,EAAGC,EAAGS,EACNR,EAAQH,EAAS,EAAKD,EAAO,EAC7BK,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBQ,EAAMb,IAAS,GAAK,KAAK,IAAI,EAAG,GAAG,EAAI,KAAK,IAAI,EAAG,GAAG,EAAI,EAC1DQ,EAAIT,EAAO,EAAKE,EAAS,EACzBQ,EAAIV,EAAO,EAAI,GACfW,EAAIC,EAAQ,GAAMA,IAAU,GAAK,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQ,KAAK,IAAIA,CAAK,EAElB,MAAMA,CAAK,GAAKA,IAAU,KAC5BR,EAAI,MAAMQ,CAAK,EAAI,EAAI,EACvBT,EAAIG,IAEJH,EAAI,KAAK,MAAM,KAAK,IAAIS,CAAK,EAAI,KAAK,GAAG,EACrCA,GAASC,EAAI,KAAK,IAAI,EAAG,CAACV,CAAC,GAAK,IAClCA,IACAU,GAAK,GAEHV,EAAII,GAAS,EACfK,GAASE,EAAKD,EAEdD,GAASE,EAAK,KAAK,IAAI,EAAG,EAAIP,CAAK,EAEjCK,EAAQC,GAAK,IACfV,IACAU,GAAK,GAGHV,EAAII,GAASD,GACfF,EAAI,EACJD,EAAIG,GACKH,EAAII,GAAS,GACtBH,GAAMQ,EAAQC,EAAK,GAAK,KAAK,IAAI,EAAGZ,CAAI,EACxCE,EAAIA,EAAII,IAERH,EAAIQ,EAAQ,KAAK,IAAI,EAAGL,EAAQ,CAAC,EAAI,KAAK,IAAI,EAAGN,CAAI,EACrDE,EAAI,IAIDF,GAAQ,EAAGH,EAAOC,EAASU,GAAKL,EAAI,IAAMK,GAAKC,EAAGN,GAAK,IAAKH,GAAQ,EAAG,CAI9E,IAFAE,EAAKA,GAAKF,EAAQG,EAClBC,GAAQJ,EACDI,EAAO,EAAGP,EAAOC,EAASU,GAAKN,EAAI,IAAMM,GAAKC,EAAGP,GAAK,IAAKE,GAAQ,EAAG,CAE7EP,EAAOC,EAASU,EAAIC,IAAMC,EAAI,GAChC,ICpFA,IAAAI,GAAAC,GAAAC,IAAA,cAUA,IAAMC,GAAS,KACTC,GAAU,KACVC,GACH,OAAO,QAAW,YAAc,OAAO,OAAO,KAAW,WACtD,OAAO,IAAO,4BAA4B,EAC1C,KAENH,GAAQ,OAASI,EACjBJ,GAAQ,WAAaK,GACrBL,GAAQ,kBAAoB,GAE5B,IAAMM,GAAe,WACrBN,GAAQ,WAAaM,GAgBrBF,EAAO,oBAAsBG,GAAkB,EAE3C,CAACH,EAAO,qBAAuB,OAAO,QAAY,KAClD,OAAO,QAAQ,OAAU,YAC3B,QAAQ,MACN,+IAEF,EAGF,SAASG,IAAqB,CAE5B,GAAI,CACF,IAAMC,EAAM,IAAI,WAAW,CAAC,EACtBC,EAAQ,CAAE,IAAK,UAAY,CAAE,MAAO,GAAG,CAAE,EAC/C,cAAO,eAAeA,EAAO,WAAW,SAAS,EACjD,OAAO,eAAeD,EAAKC,CAAK,EACzBD,EAAI,IAAI,IAAM,EACvB,MAAE,CACA,MAAO,EACT,CACF,CAEA,OAAO,eAAeJ,EAAO,UAAW,SAAU,CAChD,WAAY,GACZ,IAAK,UAAY,CACf,GAAI,EAACA,EAAO,SAAS,IAAI,EACzB,OAAO,KAAK,MACd,CACF,CAAC,EAED,OAAO,eAAeA,EAAO,UAAW,SAAU,CAChD,WAAY,GACZ,IAAK,UAAY,CACf,GAAI,EAACA,EAAO,SAAS,IAAI,EACzB,OAAO,KAAK,UACd,CACF,CAAC,EAED,SAASM,GAAcC,EAAQ,CAC7B,GAAIA,EAASL,GACX,MAAM,IAAI,WAAW,cAAgBK,EAAS,gCAAgC,EAGhF,IAAMC,EAAM,IAAI,WAAWD,CAAM,EACjC,cAAO,eAAeC,EAAKR,EAAO,SAAS,EACpCQ,CACT,CAYA,SAASR,EAAQS,EAAKC,EAAkBH,EAAQ,CAE9C,GAAI,OAAOE,GAAQ,SAAU,CAC3B,GAAI,OAAOC,GAAqB,SAC9B,MAAM,IAAI,UACR,oEACF,EAEF,OAAOC,GAAYF,CAAG,CACxB,CACA,OAAOG,GAAKH,EAAKC,EAAkBH,CAAM,CAC3C,CAEAP,EAAO,SAAW,KAElB,SAASY,GAAMC,EAAOH,EAAkBH,EAAQ,CAC9C,GAAI,OAAOM,GAAU,SACnB,OAAOC,GAAWD,EAAOH,CAAgB,EAG3C,GAAI,YAAY,OAAOG,CAAK,EAC1B,OAAOE,GAAcF,CAAK,EAG5B,GAAIA,GAAS,KACX,MAAM,IAAI,UACR,kHAC0C,OAAOA,CACnD,EAQF,GALIG,GAAWH,EAAO,WAAW,GAC5BA,GAASG,GAAWH,EAAM,OAAQ,WAAW,GAI9C,OAAO,kBAAsB,MAC5BG,GAAWH,EAAO,iBAAiB,GACnCA,GAASG,GAAWH,EAAM,OAAQ,iBAAiB,GACtD,OAAOI,GAAgBJ,EAAOH,EAAkBH,CAAM,EAGxD,GAAI,OAAOM,GAAU,SACnB,MAAM,IAAI,UACR,uEACF,EAGF,IAAMK,EAAUL,EAAM,SAAWA,EAAM,QAAQ,EAC/C,GAAIK,GAAW,MAAQA,IAAYL,EACjC,OAAOb,EAAO,KAAKkB,EAASR,EAAkBH,CAAM,EAGtD,IAAMY,EAAIC,GAAWP,CAAK,EAC1B,GAAIM,EAAG,OAAOA,EAEd,GAAI,OAAO,OAAW,KAAe,OAAO,aAAe,MACvD,OAAON,EAAM,OAAO,cAAiB,WACvC,OAAOb,EAAO,KAAKa,EAAM,OAAO,aAAa,QAAQ,EAAGH,EAAkBH,CAAM,EAGlF,MAAM,IAAI,UACR,kHAC0C,OAAOM,CACnD,CACF,CAUAb,EAAO,KAAO,SAAUa,EAAOH,EAAkBH,EAAQ,CACvD,OAAOK,GAAKC,EAAOH,EAAkBH,CAAM,CAC7C,EAIA,OAAO,eAAeP,EAAO,UAAW,WAAW,SAAS,EAC5D,OAAO,eAAeA,EAAQ,UAAU,EAExC,SAASqB,GAAYC,EAAM,CACzB,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UAAU,wCAAwC,EACvD,GAAIA,EAAO,EAChB,MAAM,IAAI,WAAW,cAAgBA,EAAO,gCAAgC,CAEhF,CAEA,SAASC,GAAOD,EAAME,EAAMC,EAAU,CAEpC,OADAJ,GAAWC,CAAI,EACXA,GAAQ,EACHhB,GAAagB,CAAI,EAEtBE,IAAS,OAIJ,OAAOC,GAAa,SACvBnB,GAAagB,CAAI,EAAE,KAAKE,EAAMC,CAAQ,EACtCnB,GAAagB,CAAI,EAAE,KAAKE,CAAI,EAE3BlB,GAAagB,CAAI,CAC1B,CAMAtB,EAAO,MAAQ,SAAUsB,EAAME,EAAMC,EAAU,CAC7C,OAAOF,GAAMD,EAAME,EAAMC,CAAQ,CACnC,EAEA,SAASd,GAAaW,EAAM,CAC1B,OAAAD,GAAWC,CAAI,EACRhB,GAAagB,EAAO,EAAI,EAAII,GAAQJ,CAAI,EAAI,CAAC,CACtD,CAKAtB,EAAO,YAAc,SAAUsB,EAAM,CACnC,OAAOX,GAAYW,CAAI,CACzB,EAIAtB,EAAO,gBAAkB,SAAUsB,EAAM,CACvC,OAAOX,GAAYW,CAAI,CACzB,EAEA,SAASR,GAAYa,EAAQF,EAAU,CAKrC,IAJI,OAAOA,GAAa,UAAYA,IAAa,MAC/CA,EAAW,QAGT,CAACzB,EAAO,WAAWyB,CAAQ,EAC7B,MAAM,IAAI,UAAU,qBAAuBA,CAAQ,EAGrD,IAAMlB,EAASqB,GAAWD,EAAQF,CAAQ,EAAI,EAC1CjB,EAAMF,GAAaC,CAAM,EAEvBsB,EAASrB,EAAI,MAAMmB,EAAQF,CAAQ,EAEzC,OAAII,IAAWtB,IAIbC,EAAMA,EAAI,MAAM,EAAGqB,CAAM,GAGpBrB,CACT,CAEA,SAASsB,GAAeC,EAAO,CAC7B,IAAMxB,EAASwB,EAAM,OAAS,EAAI,EAAIL,GAAQK,EAAM,MAAM,EAAI,EACxDvB,EAAMF,GAAaC,CAAM,EAC/B,QAASyB,EAAI,EAAGA,EAAIzB,EAAQyB,GAAK,EAC/BxB,EAAIwB,GAAKD,EAAMC,GAAK,IAEtB,OAAOxB,CACT,CAEA,SAASO,GAAekB,EAAW,CACjC,GAAIjB,GAAWiB,EAAW,UAAU,EAAG,CACrC,IAAMC,EAAO,IAAI,WAAWD,CAAS,EACrC,OAAOhB,GAAgBiB,EAAK,OAAQA,EAAK,WAAYA,EAAK,UAAU,CACtE,CACA,OAAOJ,GAAcG,CAAS,CAChC,CAEA,SAAShB,GAAiBc,EAAOI,EAAY5B,EAAQ,CACnD,GAAI4B,EAAa,GAAKJ,EAAM,WAAaI,EACvC,MAAM,IAAI,WAAW,sCAAsC,EAG7D,GAAIJ,EAAM,WAAaI,GAAc5B,GAAU,GAC7C,MAAM,IAAI,WAAW,sCAAsC,EAG7D,IAAIC,EACJ,OAAI2B,IAAe,QAAa5B,IAAW,OACzCC,EAAM,IAAI,WAAWuB,CAAK,EACjBxB,IAAW,OACpBC,EAAM,IAAI,WAAWuB,EAAOI,CAAU,EAEtC3B,EAAM,IAAI,WAAWuB,EAAOI,EAAY5B,CAAM,EAIhD,OAAO,eAAeC,EAAKR,EAAO,SAAS,EAEpCQ,CACT,CAEA,SAASY,GAAYgB,EAAK,CACxB,GAAIpC,EAAO,SAASoC,CAAG,EAAG,CACxB,IAAMC,EAAMX,GAAQU,EAAI,MAAM,EAAI,EAC5B5B,EAAMF,GAAa+B,CAAG,EAE5B,OAAI7B,EAAI,SAAW,GAInB4B,EAAI,KAAK5B,EAAK,EAAG,EAAG6B,CAAG,EAChB7B,CACT,CAEA,GAAI4B,EAAI,SAAW,OACjB,OAAI,OAAOA,EAAI,QAAW,UAAYE,GAAYF,EAAI,MAAM,EACnD9B,GAAa,CAAC,EAEhBwB,GAAcM,CAAG,EAG1B,GAAIA,EAAI,OAAS,UAAY,MAAM,QAAQA,EAAI,IAAI,EACjD,OAAON,GAAcM,EAAI,IAAI,CAEjC,CAEA,SAASV,GAASnB,EAAQ,CAGxB,GAAIA,GAAUL,GACZ,MAAM,IAAI,WAAW,0DACaA,GAAa,SAAS,EAAE,EAAI,QAAQ,EAExE,OAAOK,EAAS,CAClB,CAEA,SAASN,GAAYM,EAAQ,CAC3B,MAAI,CAACA,GAAUA,IACbA,EAAS,GAEJP,EAAO,MAAM,CAACO,CAAM,CAC7B,CAEAP,EAAO,SAAW,SAAmBmB,EAAG,CACtC,OAAOA,GAAK,MAAQA,EAAE,YAAc,IAClCA,IAAMnB,EAAO,SACjB,EAEAA,EAAO,QAAU,SAAkBuC,EAAGpB,EAAG,CAGvC,GAFIH,GAAWuB,EAAG,UAAU,IAAGA,EAAIvC,EAAO,KAAKuC,EAAGA,EAAE,OAAQA,EAAE,UAAU,GACpEvB,GAAWG,EAAG,UAAU,IAAGA,EAAInB,EAAO,KAAKmB,EAAGA,EAAE,OAAQA,EAAE,UAAU,GACpE,CAACnB,EAAO,SAASuC,CAAC,GAAK,CAACvC,EAAO,SAASmB,CAAC,EAC3C,MAAM,IAAI,UACR,uEACF,EAGF,GAAIoB,IAAMpB,EAAG,MAAO,GAEpB,IAAIqB,EAAID,EAAE,OACNE,EAAItB,EAAE,OAEV,QAASa,EAAI,EAAGK,EAAM,KAAK,IAAIG,EAAGC,CAAC,EAAGT,EAAIK,EAAK,EAAEL,EAC/C,GAAIO,EAAEP,KAAOb,EAAEa,GAAI,CACjBQ,EAAID,EAAEP,GACNS,EAAItB,EAAEa,GACN,KACF,CAGF,OAAIQ,EAAIC,EAAU,GACdA,EAAID,EAAU,EACX,CACT,EAEAxC,EAAO,WAAa,SAAqByB,EAAU,CACjD,OAAQ,OAAOA,CAAQ,EAAE,YAAY,EAAG,CACtC,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,MAAO,GACT,QACE,MAAO,EACX,CACF,EAEAzB,EAAO,OAAS,SAAiB0C,EAAMnC,EAAQ,CAC7C,GAAI,CAAC,MAAM,QAAQmC,CAAI,EACrB,MAAM,IAAI,UAAU,6CAA6C,EAGnE,GAAIA,EAAK,SAAW,EAClB,OAAO1C,EAAO,MAAM,CAAC,EAGvB,IAAIgC,EACJ,GAAIzB,IAAW,OAEb,IADAA,EAAS,EACJyB,EAAI,EAAGA,EAAIU,EAAK,OAAQ,EAAEV,EAC7BzB,GAAUmC,EAAKV,GAAG,OAItB,IAAMW,EAAS3C,EAAO,YAAYO,CAAM,EACpCqC,EAAM,EACV,IAAKZ,EAAI,EAAGA,EAAIU,EAAK,OAAQ,EAAEV,EAAG,CAChC,IAAIxB,EAAMkC,EAAKV,GACf,GAAIhB,GAAWR,EAAK,UAAU,EACxBoC,EAAMpC,EAAI,OAASmC,EAAO,QACvB3C,EAAO,SAASQ,CAAG,IAAGA,EAAMR,EAAO,KAAKQ,CAAG,GAChDA,EAAI,KAAKmC,EAAQC,CAAG,GAEpB,WAAW,UAAU,IAAI,KACvBD,EACAnC,EACAoC,CACF,UAEQ5C,EAAO,SAASQ,CAAG,EAG7BA,EAAI,KAAKmC,EAAQC,CAAG,MAFpB,OAAM,IAAI,UAAU,6CAA6C,EAInEA,GAAOpC,EAAI,MACb,CACA,OAAOmC,CACT,EAEA,SAASf,GAAYD,EAAQF,EAAU,CACrC,GAAIzB,EAAO,SAAS2B,CAAM,EACxB,OAAOA,EAAO,OAEhB,GAAI,YAAY,OAAOA,CAAM,GAAKX,GAAWW,EAAQ,WAAW,EAC9D,OAAOA,EAAO,WAEhB,GAAI,OAAOA,GAAW,SACpB,MAAM,IAAI,UACR,2FACmB,OAAOA,CAC5B,EAGF,IAAMU,EAAMV,EAAO,OACbkB,EAAa,UAAU,OAAS,GAAK,UAAU,KAAO,GAC5D,GAAI,CAACA,GAAaR,IAAQ,EAAG,MAAO,GAGpC,IAAIS,EAAc,GAClB,OACE,OAAQrB,EAAU,CAChB,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOY,EACT,IAAK,OACL,IAAK,QACH,OAAOU,GAAYpB,CAAM,EAAE,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOU,EAAM,EACf,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOW,GAAcrB,CAAM,EAAE,OAC/B,QACE,GAAImB,EACF,OAAOD,EAAY,GAAKE,GAAYpB,CAAM,EAAE,OAE9CF,GAAY,GAAKA,GAAU,YAAY,EACvCqB,EAAc,EAClB,CAEJ,CACA9C,EAAO,WAAa4B,GAEpB,SAASqB,GAAcxB,EAAUyB,EAAOC,EAAK,CAC3C,IAAIL,EAAc,GA8BlB,IArBII,IAAU,QAAaA,EAAQ,KACjCA,EAAQ,GAINA,EAAQ,KAAK,UAIbC,IAAQ,QAAaA,EAAM,KAAK,UAClCA,EAAM,KAAK,QAGTA,GAAO,KAKXA,KAAS,EACTD,KAAW,EAEPC,GAAOD,GACT,MAAO,GAKT,IAFKzB,IAAUA,EAAW,UAGxB,OAAQA,EAAU,CAChB,IAAK,MACH,OAAO2B,GAAS,KAAMF,EAAOC,CAAG,EAElC,IAAK,OACL,IAAK,QACH,OAAOE,GAAU,KAAMH,EAAOC,CAAG,EAEnC,IAAK,QACH,OAAOG,GAAW,KAAMJ,EAAOC,CAAG,EAEpC,IAAK,SACL,IAAK,SACH,OAAOI,GAAY,KAAML,EAAOC,CAAG,EAErC,IAAK,SACH,OAAOK,GAAY,KAAMN,EAAOC,CAAG,EAErC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOM,GAAa,KAAMP,EAAOC,CAAG,EAEtC,QACE,GAAIL,EAAa,MAAM,IAAI,UAAU,qBAAuBrB,CAAQ,EACpEA,GAAYA,EAAW,IAAI,YAAY,EACvCqB,EAAc,EAClB,CAEJ,CAQA9C,EAAO,UAAU,UAAY,GAE7B,SAAS0D,GAAMvC,EAAGwC,EAAGC,EAAG,CACtB,IAAM5B,EAAIb,EAAEwC,GACZxC,EAAEwC,GAAKxC,EAAEyC,GACTzC,EAAEyC,GAAK5B,CACT,CAEAhC,EAAO,UAAU,OAAS,UAAmB,CAC3C,IAAMqC,EAAM,KAAK,OACjB,GAAIA,EAAM,IAAM,EACd,MAAM,IAAI,WAAW,2CAA2C,EAElE,QAASL,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5B0B,GAAK,KAAM1B,EAAGA,EAAI,CAAC,EAErB,OAAO,IACT,EAEAhC,EAAO,UAAU,OAAS,UAAmB,CAC3C,IAAMqC,EAAM,KAAK,OACjB,GAAIA,EAAM,IAAM,EACd,MAAM,IAAI,WAAW,2CAA2C,EAElE,QAASL,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5B0B,GAAK,KAAM1B,EAAGA,EAAI,CAAC,EACnB0B,GAAK,KAAM1B,EAAI,EAAGA,EAAI,CAAC,EAEzB,OAAO,IACT,EAEAhC,EAAO,UAAU,OAAS,UAAmB,CAC3C,IAAMqC,EAAM,KAAK,OACjB,GAAIA,EAAM,IAAM,EACd,MAAM,IAAI,WAAW,2CAA2C,EAElE,QAASL,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5B0B,GAAK,KAAM1B,EAAGA,EAAI,CAAC,EACnB0B,GAAK,KAAM1B,EAAI,EAAGA,EAAI,CAAC,EACvB0B,GAAK,KAAM1B,EAAI,EAAGA,EAAI,CAAC,EACvB0B,GAAK,KAAM1B,EAAI,EAAGA,EAAI,CAAC,EAEzB,OAAO,IACT,EAEAhC,EAAO,UAAU,SAAW,UAAqB,CAC/C,IAAMO,EAAS,KAAK,OACpB,OAAIA,IAAW,EAAU,GACrB,UAAU,SAAW,EAAU8C,GAAU,KAAM,EAAG9C,CAAM,EACrD0C,GAAa,MAAM,KAAM,SAAS,CAC3C,EAEAjD,EAAO,UAAU,eAAiBA,EAAO,UAAU,SAEnDA,EAAO,UAAU,OAAS,SAAiBmB,EAAG,CAC5C,GAAI,CAACnB,EAAO,SAASmB,CAAC,EAAG,MAAM,IAAI,UAAU,2BAA2B,EACxE,OAAI,OAASA,EAAU,GAChBnB,EAAO,QAAQ,KAAMmB,CAAC,IAAM,CACrC,EAEAnB,EAAO,UAAU,QAAU,UAAoB,CAC7C,IAAI6D,EAAM,GACJC,EAAMlE,GAAQ,kBACpB,OAAAiE,EAAM,KAAK,SAAS,MAAO,EAAGC,CAAG,EAAE,QAAQ,UAAW,KAAK,EAAE,KAAK,EAC9D,KAAK,OAASA,IAAKD,GAAO,SACvB,WAAaA,EAAM,GAC5B,EACI9D,KACFC,EAAO,UAAUD,IAAuBC,EAAO,UAAU,SAG3DA,EAAO,UAAU,QAAU,SAAkB+D,EAAQb,EAAOC,EAAKa,EAAWC,EAAS,CAInF,GAHIjD,GAAW+C,EAAQ,UAAU,IAC/BA,EAAS/D,EAAO,KAAK+D,EAAQA,EAAO,OAAQA,EAAO,UAAU,GAE3D,CAAC/D,EAAO,SAAS+D,CAAM,EACzB,MAAM,IAAI,UACR,iFACoB,OAAOA,CAC7B,EAgBF,GAbIb,IAAU,SACZA,EAAQ,GAENC,IAAQ,SACVA,EAAMY,EAASA,EAAO,OAAS,GAE7BC,IAAc,SAChBA,EAAY,GAEVC,IAAY,SACdA,EAAU,KAAK,QAGbf,EAAQ,GAAKC,EAAMY,EAAO,QAAUC,EAAY,GAAKC,EAAU,KAAK,OACtE,MAAM,IAAI,WAAW,oBAAoB,EAG3C,GAAID,GAAaC,GAAWf,GAASC,EACnC,MAAO,GAET,GAAIa,GAAaC,EACf,MAAO,GAET,GAAIf,GAASC,EACX,MAAO,GAQT,GALAD,KAAW,EACXC,KAAS,EACTa,KAAe,EACfC,KAAa,EAET,OAASF,EAAQ,MAAO,GAE5B,IAAIvB,EAAIyB,EAAUD,EACdvB,EAAIU,EAAMD,EACRb,EAAM,KAAK,IAAIG,EAAGC,CAAC,EAEnByB,EAAW,KAAK,MAAMF,EAAWC,CAAO,EACxCE,EAAaJ,EAAO,MAAMb,EAAOC,CAAG,EAE1C,QAASnB,EAAI,EAAGA,EAAIK,EAAK,EAAEL,EACzB,GAAIkC,EAASlC,KAAOmC,EAAWnC,GAAI,CACjCQ,EAAI0B,EAASlC,GACbS,EAAI0B,EAAWnC,GACf,KACF,CAGF,OAAIQ,EAAIC,EAAU,GACdA,EAAID,EAAU,EACX,CACT,EAWA,SAAS4B,GAAsBzB,EAAQ0B,EAAKlC,EAAYV,EAAU6C,EAAK,CAErE,GAAI3B,EAAO,SAAW,EAAG,MAAO,GAmBhC,GAhBI,OAAOR,GAAe,UACxBV,EAAWU,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,EAAa,cACtBA,EAAa,aAEfA,EAAa,CAACA,EACVG,GAAYH,CAAU,IAExBA,EAAamC,EAAM,EAAK3B,EAAO,OAAS,GAItCR,EAAa,IAAGA,EAAaQ,EAAO,OAASR,GAC7CA,GAAcQ,EAAO,OAAQ,CAC/B,GAAI2B,EAAK,MAAO,GACXnC,EAAaQ,EAAO,OAAS,CACpC,SAAWR,EAAa,EACtB,GAAImC,EAAKnC,EAAa,MACjB,OAAO,GASd,GALI,OAAOkC,GAAQ,WACjBA,EAAMrE,EAAO,KAAKqE,EAAK5C,CAAQ,GAI7BzB,EAAO,SAASqE,CAAG,EAErB,OAAIA,EAAI,SAAW,EACV,GAEFE,GAAa5B,EAAQ0B,EAAKlC,EAAYV,EAAU6C,CAAG,EACrD,GAAI,OAAOD,GAAQ,SAExB,OADAA,EAAMA,EAAM,IACR,OAAO,WAAW,UAAU,SAAY,WACtCC,EACK,WAAW,UAAU,QAAQ,KAAK3B,EAAQ0B,EAAKlC,CAAU,EAEzD,WAAW,UAAU,YAAY,KAAKQ,EAAQ0B,EAAKlC,CAAU,EAGjEoC,GAAa5B,EAAQ,CAAC0B,CAAG,EAAGlC,EAAYV,EAAU6C,CAAG,EAG9D,MAAM,IAAI,UAAU,sCAAsC,CAC5D,CAEA,SAASC,GAAcnE,EAAKiE,EAAKlC,EAAYV,EAAU6C,EAAK,CAC1D,IAAIE,EAAY,EACZC,EAAYrE,EAAI,OAChBsE,EAAYL,EAAI,OAEpB,GAAI5C,IAAa,SACfA,EAAW,OAAOA,CAAQ,EAAE,YAAY,EACpCA,IAAa,QAAUA,IAAa,SACpCA,IAAa,WAAaA,IAAa,YAAY,CACrD,GAAIrB,EAAI,OAAS,GAAKiE,EAAI,OAAS,EACjC,MAAO,GAETG,EAAY,EACZC,GAAa,EACbC,GAAa,EACbvC,GAAc,CAChB,CAGF,SAASwC,EAAMnE,EAAKwB,EAAG,CACrB,OAAIwC,IAAc,EACThE,EAAIwB,GAEJxB,EAAI,aAAawB,EAAIwC,CAAS,CAEzC,CAEA,IAAIxC,EACJ,GAAIsC,EAAK,CACP,IAAIM,EAAa,GACjB,IAAK5C,EAAIG,EAAYH,EAAIyC,EAAWzC,IAClC,GAAI2C,EAAKvE,EAAK4B,CAAC,IAAM2C,EAAKN,EAAKO,IAAe,GAAK,EAAI5C,EAAI4C,CAAU,GAEnE,GADIA,IAAe,KAAIA,EAAa5C,GAChCA,EAAI4C,EAAa,IAAMF,EAAW,OAAOE,EAAaJ,OAEtDI,IAAe,KAAI5C,GAAKA,EAAI4C,GAChCA,EAAa,EAGnB,KAEE,KADIzC,EAAauC,EAAYD,IAAWtC,EAAasC,EAAYC,GAC5D1C,EAAIG,EAAYH,GAAK,EAAGA,IAAK,CAChC,IAAI6C,EAAQ,GACZ,QAASC,EAAI,EAAGA,EAAIJ,EAAWI,IAC7B,GAAIH,EAAKvE,EAAK4B,EAAI8C,CAAC,IAAMH,EAAKN,EAAKS,CAAC,EAAG,CACrCD,EAAQ,GACR,KACF,CAEF,GAAIA,EAAO,OAAO7C,CACpB,CAGF,MAAO,EACT,CAEAhC,EAAO,UAAU,SAAW,SAAmBqE,EAAKlC,EAAYV,EAAU,CACxE,OAAO,KAAK,QAAQ4C,EAAKlC,EAAYV,CAAQ,IAAM,EACrD,EAEAzB,EAAO,UAAU,QAAU,SAAkBqE,EAAKlC,EAAYV,EAAU,CACtE,OAAO2C,GAAqB,KAAMC,EAAKlC,EAAYV,EAAU,EAAI,CACnE,EAEAzB,EAAO,UAAU,YAAc,SAAsBqE,EAAKlC,EAAYV,EAAU,CAC9E,OAAO2C,GAAqB,KAAMC,EAAKlC,EAAYV,EAAU,EAAK,CACpE,EAEA,SAASsD,GAAUvE,EAAKmB,EAAQqD,EAAQzE,EAAQ,CAC9CyE,EAAS,OAAOA,CAAM,GAAK,EAC3B,IAAMC,EAAYzE,EAAI,OAASwE,EAC1BzE,GAGHA,EAAS,OAAOA,CAAM,EAClBA,EAAS0E,IACX1E,EAAS0E,IAJX1E,EAAS0E,EAQX,IAAMC,EAASvD,EAAO,OAElBpB,EAAS2E,EAAS,IACpB3E,EAAS2E,EAAS,GAEpB,IAAIlD,EACJ,IAAKA,EAAI,EAAGA,EAAIzB,EAAQ,EAAEyB,EAAG,CAC3B,IAAMmD,EAAS,SAASxD,EAAO,OAAOK,EAAI,EAAG,CAAC,EAAG,EAAE,EACnD,GAAIM,GAAY6C,CAAM,EAAG,OAAOnD,EAChCxB,EAAIwE,EAAShD,GAAKmD,CACpB,CACA,OAAOnD,CACT,CAEA,SAASoD,GAAW5E,EAAKmB,EAAQqD,EAAQzE,EAAQ,CAC/C,OAAO8E,GAAWtC,GAAYpB,EAAQnB,EAAI,OAASwE,CAAM,EAAGxE,EAAKwE,EAAQzE,CAAM,CACjF,CAEA,SAAS+E,GAAY9E,EAAKmB,EAAQqD,EAAQzE,EAAQ,CAChD,OAAO8E,GAAWE,GAAa5D,CAAM,EAAGnB,EAAKwE,EAAQzE,CAAM,CAC7D,CAEA,SAASiF,GAAahF,EAAKmB,EAAQqD,EAAQzE,EAAQ,CACjD,OAAO8E,GAAWrC,GAAcrB,CAAM,EAAGnB,EAAKwE,EAAQzE,CAAM,CAC9D,CAEA,SAASkF,GAAWjF,EAAKmB,EAAQqD,EAAQzE,EAAQ,CAC/C,OAAO8E,GAAWK,GAAe/D,EAAQnB,EAAI,OAASwE,CAAM,EAAGxE,EAAKwE,EAAQzE,CAAM,CACpF,CAEAP,EAAO,UAAU,MAAQ,SAAgB2B,EAAQqD,EAAQzE,EAAQkB,EAAU,CAEzE,GAAIuD,IAAW,OACbvD,EAAW,OACXlB,EAAS,KAAK,OACdyE,EAAS,UAEAzE,IAAW,QAAa,OAAOyE,GAAW,SACnDvD,EAAWuD,EACXzE,EAAS,KAAK,OACdyE,EAAS,UAEA,SAASA,CAAM,EACxBA,EAASA,IAAW,EAChB,SAASzE,CAAM,GACjBA,EAASA,IAAW,EAChBkB,IAAa,SAAWA,EAAW,UAEvCA,EAAWlB,EACXA,EAAS,YAGX,OAAM,IAAI,MACR,yEACF,EAGF,IAAM0E,EAAY,KAAK,OAASD,EAGhC,IAFIzE,IAAW,QAAaA,EAAS0E,KAAW1E,EAAS0E,GAEpDtD,EAAO,OAAS,IAAMpB,EAAS,GAAKyE,EAAS,IAAOA,EAAS,KAAK,OACrE,MAAM,IAAI,WAAW,wCAAwC,EAG1DvD,IAAUA,EAAW,QAE1B,IAAIqB,EAAc,GAClB,OACE,OAAQrB,EAAU,CAChB,IAAK,MACH,OAAOsD,GAAS,KAAMpD,EAAQqD,EAAQzE,CAAM,EAE9C,IAAK,OACL,IAAK,QACH,OAAO6E,GAAU,KAAMzD,EAAQqD,EAAQzE,CAAM,EAE/C,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAO+E,GAAW,KAAM3D,EAAQqD,EAAQzE,CAAM,EAEhD,IAAK,SAEH,OAAOiF,GAAY,KAAM7D,EAAQqD,EAAQzE,CAAM,EAEjD,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOkF,GAAU,KAAM9D,EAAQqD,EAAQzE,CAAM,EAE/C,QACE,GAAIuC,EAAa,MAAM,IAAI,UAAU,qBAAuBrB,CAAQ,EACpEA,GAAY,GAAKA,GAAU,YAAY,EACvCqB,EAAc,EAClB,CAEJ,EAEA9C,EAAO,UAAU,OAAS,UAAmB,CAC3C,MAAO,CACL,KAAM,SACN,KAAM,MAAM,UAAU,MAAM,KAAK,KAAK,MAAQ,KAAM,CAAC,CACvD,CACF,EAEA,SAASwD,GAAahD,EAAK0C,EAAOC,EAAK,CACrC,OAAID,IAAU,GAAKC,IAAQ3C,EAAI,OACtBX,GAAO,cAAcW,CAAG,EAExBX,GAAO,cAAcW,EAAI,MAAM0C,EAAOC,CAAG,CAAC,CAErD,CAEA,SAASE,GAAW7C,EAAK0C,EAAOC,EAAK,CACnCA,EAAM,KAAK,IAAI3C,EAAI,OAAQ2C,CAAG,EAC9B,IAAMwC,EAAM,CAAC,EAET,EAAIzC,EACR,KAAO,EAAIC,GAAK,CACd,IAAMyC,EAAYpF,EAAI,GAClBqF,EAAY,KACZC,EAAoBF,EAAY,IAChC,EACCA,EAAY,IACT,EACCA,EAAY,IACT,EACA,EAEZ,GAAI,EAAIE,GAAoB3C,EAAK,CAC/B,IAAI4C,EAAYC,EAAWC,EAAYC,EAEvC,OAAQJ,EAAkB,CACxB,IAAK,GACCF,EAAY,MACdC,EAAYD,GAEd,MACF,IAAK,GACHG,EAAavF,EAAI,EAAI,IAChBuF,EAAa,OAAU,MAC1BG,GAAiBN,EAAY,KAAS,EAAOG,EAAa,GACtDG,EAAgB,MAClBL,EAAYK,IAGhB,MACF,IAAK,GACHH,EAAavF,EAAI,EAAI,GACrBwF,EAAYxF,EAAI,EAAI,IACfuF,EAAa,OAAU,MAASC,EAAY,OAAU,MACzDE,GAAiBN,EAAY,KAAQ,IAAOG,EAAa,KAAS,EAAOC,EAAY,GACjFE,EAAgB,OAAUA,EAAgB,OAAUA,EAAgB,SACtEL,EAAYK,IAGhB,MACF,IAAK,GACHH,EAAavF,EAAI,EAAI,GACrBwF,EAAYxF,EAAI,EAAI,GACpByF,EAAazF,EAAI,EAAI,IAChBuF,EAAa,OAAU,MAASC,EAAY,OAAU,MAASC,EAAa,OAAU,MACzFC,GAAiBN,EAAY,KAAQ,IAAQG,EAAa,KAAS,IAAOC,EAAY,KAAS,EAAOC,EAAa,GAC/GC,EAAgB,OAAUA,EAAgB,UAC5CL,EAAYK,GAGpB,CACF,CAEIL,IAAc,MAGhBA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbF,EAAI,KAAKE,IAAc,GAAK,KAAQ,KAAM,EAC1CA,EAAY,MAASA,EAAY,MAGnCF,EAAI,KAAKE,CAAS,EAClB,GAAKC,CACP,CAEA,OAAOK,GAAsBR,CAAG,CAClC,CAKA,IAAMS,GAAuB,KAE7B,SAASD,GAAuBE,EAAY,CAC1C,IAAMhE,EAAMgE,EAAW,OACvB,GAAIhE,GAAO+D,GACT,OAAO,OAAO,aAAa,MAAM,OAAQC,CAAU,EAIrD,IAAIV,EAAM,GACN3D,EAAI,EACR,KAAOA,EAAIK,GACTsD,GAAO,OAAO,aAAa,MACzB,OACAU,EAAW,MAAMrE,EAAGA,GAAKoE,EAAoB,CAC/C,EAEF,OAAOT,CACT,CAEA,SAASrC,GAAY9C,EAAK0C,EAAOC,EAAK,CACpC,IAAImD,EAAM,GACVnD,EAAM,KAAK,IAAI3C,EAAI,OAAQ2C,CAAG,EAE9B,QAAS,EAAID,EAAO,EAAIC,EAAK,EAAE,EAC7BmD,GAAO,OAAO,aAAa9F,EAAI,GAAK,GAAI,EAE1C,OAAO8F,CACT,CAEA,SAAS/C,GAAa/C,EAAK0C,EAAOC,EAAK,CACrC,IAAImD,EAAM,GACVnD,EAAM,KAAK,IAAI3C,EAAI,OAAQ2C,CAAG,EAE9B,QAAS,EAAID,EAAO,EAAIC,EAAK,EAAE,EAC7BmD,GAAO,OAAO,aAAa9F,EAAI,EAAE,EAEnC,OAAO8F,CACT,CAEA,SAASlD,GAAU5C,EAAK0C,EAAOC,EAAK,CAClC,IAAMd,EAAM7B,EAAI,QAEZ,CAAC0C,GAASA,EAAQ,KAAGA,EAAQ,IAC7B,CAACC,GAAOA,EAAM,GAAKA,EAAMd,KAAKc,EAAMd,GAExC,IAAIkE,EAAM,GACV,QAASvE,EAAIkB,EAAOlB,EAAImB,EAAK,EAAEnB,EAC7BuE,GAAOC,GAAoBhG,EAAIwB,IAEjC,OAAOuE,CACT,CAEA,SAAS9C,GAAcjD,EAAK0C,EAAOC,EAAK,CACtC,IAAMsD,EAAQjG,EAAI,MAAM0C,EAAOC,CAAG,EAC9BwC,EAAM,GAEV,QAAS3D,EAAI,EAAGA,EAAIyE,EAAM,OAAS,EAAGzE,GAAK,EACzC2D,GAAO,OAAO,aAAac,EAAMzE,GAAMyE,EAAMzE,EAAI,GAAK,GAAI,EAE5D,OAAO2D,CACT,CAEA3F,EAAO,UAAU,MAAQ,SAAgBkD,EAAOC,EAAK,CACnD,IAAMd,EAAM,KAAK,OACjBa,EAAQ,CAAC,CAACA,EACVC,EAAMA,IAAQ,OAAYd,EAAM,CAAC,CAACc,EAE9BD,EAAQ,GACVA,GAASb,EACLa,EAAQ,IAAGA,EAAQ,IACdA,EAAQb,IACjBa,EAAQb,GAGNc,EAAM,GACRA,GAAOd,EACHc,EAAM,IAAGA,EAAM,IACVA,EAAMd,IACfc,EAAMd,GAGJc,EAAMD,IAAOC,EAAMD,GAEvB,IAAMwD,EAAS,KAAK,SAASxD,EAAOC,CAAG,EAEvC,cAAO,eAAeuD,EAAQ1G,EAAO,SAAS,EAEvC0G,CACT,EAKA,SAASC,GAAa3B,EAAQ4B,EAAKrG,EAAQ,CACzC,GAAKyE,EAAS,IAAO,GAAKA,EAAS,EAAG,MAAM,IAAI,WAAW,oBAAoB,EAC/E,GAAIA,EAAS4B,EAAMrG,EAAQ,MAAM,IAAI,WAAW,uCAAuC,CACzF,CAEAP,EAAO,UAAU,WACjBA,EAAO,UAAU,WAAa,SAAqBgF,EAAQpD,EAAYiF,EAAU,CAC/E7B,EAASA,IAAW,EACpBpD,EAAaA,IAAe,EACvBiF,GAAUF,GAAY3B,EAAQpD,EAAY,KAAK,MAAM,EAE1D,IAAIyC,EAAM,KAAKW,GACX8B,EAAM,EACN9E,EAAI,EACR,KAAO,EAAEA,EAAIJ,IAAekF,GAAO,MACjCzC,GAAO,KAAKW,EAAShD,GAAK8E,EAG5B,OAAOzC,CACT,EAEArE,EAAO,UAAU,WACjBA,EAAO,UAAU,WAAa,SAAqBgF,EAAQpD,EAAYiF,EAAU,CAC/E7B,EAASA,IAAW,EACpBpD,EAAaA,IAAe,EACvBiF,GACHF,GAAY3B,EAAQpD,EAAY,KAAK,MAAM,EAG7C,IAAIyC,EAAM,KAAKW,EAAS,EAAEpD,GACtBkF,EAAM,EACV,KAAOlF,EAAa,IAAMkF,GAAO,MAC/BzC,GAAO,KAAKW,EAAS,EAAEpD,GAAckF,EAGvC,OAAOzC,CACT,EAEArE,EAAO,UAAU,UACjBA,EAAO,UAAU,UAAY,SAAoBgF,EAAQ6B,EAAU,CACjE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAC1C,KAAKA,EACd,EAEAhF,EAAO,UAAU,aACjBA,EAAO,UAAU,aAAe,SAAuBgF,EAAQ6B,EAAU,CACvE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAC1C,KAAKA,GAAW,KAAKA,EAAS,IAAM,CAC7C,EAEAhF,EAAO,UAAU,aACjBA,EAAO,UAAU,aAAe,SAAuBgF,EAAQ6B,EAAU,CACvE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EACzC,KAAKA,IAAW,EAAK,KAAKA,EAAS,EAC7C,EAEAhF,EAAO,UAAU,aACjBA,EAAO,UAAU,aAAe,SAAuBgF,EAAQ6B,EAAU,CACvE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,GAExC,KAAKA,GACT,KAAKA,EAAS,IAAM,EACpB,KAAKA,EAAS,IAAM,IACpB,KAAKA,EAAS,GAAK,QAC1B,EAEAhF,EAAO,UAAU,aACjBA,EAAO,UAAU,aAAe,SAAuBgF,EAAQ6B,EAAU,CACvE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAEzC,KAAKA,GAAU,UACnB,KAAKA,EAAS,IAAM,GACrB,KAAKA,EAAS,IAAM,EACrB,KAAKA,EAAS,GAClB,EAEAhF,EAAO,UAAU,gBAAkB+G,GAAmB,SAA0B/B,EAAQ,CACtFA,EAASA,IAAW,EACpBgC,GAAehC,EAAQ,QAAQ,EAC/B,IAAMiC,EAAQ,KAAKjC,GACbkC,EAAO,KAAKlC,EAAS,IACvBiC,IAAU,QAAaC,IAAS,SAClCC,GAAYnC,EAAQ,KAAK,OAAS,CAAC,EAGrC,IAAMoC,EAAKH,EACT,KAAK,EAAEjC,GAAU,GAAK,EACtB,KAAK,EAAEA,GAAU,GAAK,GACtB,KAAK,EAAEA,GAAU,GAAK,GAElBqC,EAAK,KAAK,EAAErC,GAChB,KAAK,EAAEA,GAAU,GAAK,EACtB,KAAK,EAAEA,GAAU,GAAK,GACtBkC,EAAO,GAAK,GAEd,OAAO,OAAOE,CAAE,GAAK,OAAOC,CAAE,GAAK,OAAO,EAAE,EAC9C,CAAC,EAEDrH,EAAO,UAAU,gBAAkB+G,GAAmB,SAA0B/B,EAAQ,CACtFA,EAASA,IAAW,EACpBgC,GAAehC,EAAQ,QAAQ,EAC/B,IAAMiC,EAAQ,KAAKjC,GACbkC,EAAO,KAAKlC,EAAS,IACvBiC,IAAU,QAAaC,IAAS,SAClCC,GAAYnC,EAAQ,KAAK,OAAS,CAAC,EAGrC,IAAMqC,EAAKJ,EAAQ,GAAK,GACtB,KAAK,EAAEjC,GAAU,GAAK,GACtB,KAAK,EAAEA,GAAU,GAAK,EACtB,KAAK,EAAEA,GAEHoC,EAAK,KAAK,EAAEpC,GAAU,GAAK,GAC/B,KAAK,EAAEA,GAAU,GAAK,GACtB,KAAK,EAAEA,GAAU,GAAK,EACtBkC,EAEF,OAAQ,OAAOG,CAAE,GAAK,OAAO,EAAE,GAAK,OAAOD,CAAE,CAC/C,CAAC,EAEDpH,EAAO,UAAU,UAAY,SAAoBgF,EAAQpD,EAAYiF,EAAU,CAC7E7B,EAASA,IAAW,EACpBpD,EAAaA,IAAe,EACvBiF,GAAUF,GAAY3B,EAAQpD,EAAY,KAAK,MAAM,EAE1D,IAAIyC,EAAM,KAAKW,GACX8B,EAAM,EACN9E,EAAI,EACR,KAAO,EAAEA,EAAIJ,IAAekF,GAAO,MACjCzC,GAAO,KAAKW,EAAShD,GAAK8E,EAE5B,OAAAA,GAAO,IAEHzC,GAAOyC,IAAKzC,GAAO,KAAK,IAAI,EAAG,EAAIzC,CAAU,GAE1CyC,CACT,EAEArE,EAAO,UAAU,UAAY,SAAoBgF,EAAQpD,EAAYiF,EAAU,CAC7E7B,EAASA,IAAW,EACpBpD,EAAaA,IAAe,EACvBiF,GAAUF,GAAY3B,EAAQpD,EAAY,KAAK,MAAM,EAE1D,IAAI,EAAIA,EACJkF,EAAM,EACNzC,EAAM,KAAKW,EAAS,EAAE,GAC1B,KAAO,EAAI,IAAM8B,GAAO,MACtBzC,GAAO,KAAKW,EAAS,EAAE,GAAK8B,EAE9B,OAAAA,GAAO,IAEHzC,GAAOyC,IAAKzC,GAAO,KAAK,IAAI,EAAG,EAAIzC,CAAU,GAE1CyC,CACT,EAEArE,EAAO,UAAU,SAAW,SAAmBgF,EAAQ6B,EAAU,CAG/D,OAFA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAC3C,KAAKA,GAAU,KACZ,IAAO,KAAKA,GAAU,GAAK,GADA,KAAKA,EAE3C,EAEAhF,EAAO,UAAU,YAAc,SAAsBgF,EAAQ6B,EAAU,CACrE7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EACjD,IAAMX,EAAM,KAAKW,GAAW,KAAKA,EAAS,IAAM,EAChD,OAAQX,EAAM,MAAUA,EAAM,WAAaA,CAC7C,EAEArE,EAAO,UAAU,YAAc,SAAsBgF,EAAQ6B,EAAU,CACrE7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EACjD,IAAMX,EAAM,KAAKW,EAAS,GAAM,KAAKA,IAAW,EAChD,OAAQX,EAAM,MAAUA,EAAM,WAAaA,CAC7C,EAEArE,EAAO,UAAU,YAAc,SAAsBgF,EAAQ6B,EAAU,CACrE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAEzC,KAAKA,GACV,KAAKA,EAAS,IAAM,EACpB,KAAKA,EAAS,IAAM,GACpB,KAAKA,EAAS,IAAM,EACzB,EAEAhF,EAAO,UAAU,YAAc,SAAsBgF,EAAQ6B,EAAU,CACrE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAEzC,KAAKA,IAAW,GACrB,KAAKA,EAAS,IAAM,GACpB,KAAKA,EAAS,IAAM,EACpB,KAAKA,EAAS,EACnB,EAEAhF,EAAO,UAAU,eAAiB+G,GAAmB,SAAyB/B,EAAQ,CACpFA,EAASA,IAAW,EACpBgC,GAAehC,EAAQ,QAAQ,EAC/B,IAAMiC,EAAQ,KAAKjC,GACbkC,EAAO,KAAKlC,EAAS,IACvBiC,IAAU,QAAaC,IAAS,SAClCC,GAAYnC,EAAQ,KAAK,OAAS,CAAC,EAGrC,IAAMX,EAAM,KAAKW,EAAS,GACxB,KAAKA,EAAS,GAAK,GAAK,EACxB,KAAKA,EAAS,GAAK,GAAK,IACvBkC,GAAQ,IAEX,OAAQ,OAAO7C,CAAG,GAAK,OAAO,EAAE,GAC9B,OAAO4C,EACP,KAAK,EAAEjC,GAAU,GAAK,EACtB,KAAK,EAAEA,GAAU,GAAK,GACtB,KAAK,EAAEA,GAAU,GAAK,EAAE,CAC5B,CAAC,EAEDhF,EAAO,UAAU,eAAiB+G,GAAmB,SAAyB/B,EAAQ,CACpFA,EAASA,IAAW,EACpBgC,GAAehC,EAAQ,QAAQ,EAC/B,IAAMiC,EAAQ,KAAKjC,GACbkC,EAAO,KAAKlC,EAAS,IACvBiC,IAAU,QAAaC,IAAS,SAClCC,GAAYnC,EAAQ,KAAK,OAAS,CAAC,EAGrC,IAAMX,GAAO4C,GAAS,IACpB,KAAK,EAAEjC,GAAU,GAAK,GACtB,KAAK,EAAEA,GAAU,GAAK,EACtB,KAAK,EAAEA,GAET,OAAQ,OAAOX,CAAG,GAAK,OAAO,EAAE,GAC9B,OAAO,KAAK,EAAEW,GAAU,GAAK,GAC7B,KAAK,EAAEA,GAAU,GAAK,GACtB,KAAK,EAAEA,GAAU,GAAK,EACtBkC,CAAI,CACR,CAAC,EAEDlH,EAAO,UAAU,YAAc,SAAsBgF,EAAQ6B,EAAU,CACrE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAC1ClF,GAAQ,KAAK,KAAMkF,EAAQ,GAAM,GAAI,CAAC,CAC/C,EAEAhF,EAAO,UAAU,YAAc,SAAsBgF,EAAQ6B,EAAU,CACrE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAC1ClF,GAAQ,KAAK,KAAMkF,EAAQ,GAAO,GAAI,CAAC,CAChD,EAEAhF,EAAO,UAAU,aAAe,SAAuBgF,EAAQ6B,EAAU,CACvE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAC1ClF,GAAQ,KAAK,KAAMkF,EAAQ,GAAM,GAAI,CAAC,CAC/C,EAEAhF,EAAO,UAAU,aAAe,SAAuBgF,EAAQ6B,EAAU,CACvE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAC1ClF,GAAQ,KAAK,KAAMkF,EAAQ,GAAO,GAAI,CAAC,CAChD,EAEA,SAASsC,GAAU9G,EAAKK,EAAOmE,EAAQ4B,EAAK9C,EAAKyD,EAAK,CACpD,GAAI,CAACvH,EAAO,SAASQ,CAAG,EAAG,MAAM,IAAI,UAAU,6CAA6C,EAC5F,GAAIK,EAAQiD,GAAOjD,EAAQ0G,EAAK,MAAM,IAAI,WAAW,mCAAmC,EACxF,GAAIvC,EAAS4B,EAAMpG,EAAI,OAAQ,MAAM,IAAI,WAAW,oBAAoB,CAC1E,CAEAR,EAAO,UAAU,YACjBA,EAAO,UAAU,YAAc,SAAsBa,EAAOmE,EAAQpD,EAAYiF,EAAU,CAIxF,GAHAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACpBpD,EAAaA,IAAe,EACxB,CAACiF,EAAU,CACb,IAAMW,EAAW,KAAK,IAAI,EAAG,EAAI5F,CAAU,EAAI,EAC/C0F,GAAS,KAAMzG,EAAOmE,EAAQpD,EAAY4F,EAAU,CAAC,CACvD,CAEA,IAAIV,EAAM,EACN9E,EAAI,EAER,IADA,KAAKgD,GAAUnE,EAAQ,IAChB,EAAEmB,EAAIJ,IAAekF,GAAO,MACjC,KAAK9B,EAAShD,GAAMnB,EAAQiG,EAAO,IAGrC,OAAO9B,EAASpD,CAClB,EAEA5B,EAAO,UAAU,YACjBA,EAAO,UAAU,YAAc,SAAsBa,EAAOmE,EAAQpD,EAAYiF,EAAU,CAIxF,GAHAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACpBpD,EAAaA,IAAe,EACxB,CAACiF,EAAU,CACb,IAAMW,EAAW,KAAK,IAAI,EAAG,EAAI5F,CAAU,EAAI,EAC/C0F,GAAS,KAAMzG,EAAOmE,EAAQpD,EAAY4F,EAAU,CAAC,CACvD,CAEA,IAAIxF,EAAIJ,EAAa,EACjBkF,EAAM,EAEV,IADA,KAAK9B,EAAShD,GAAKnB,EAAQ,IACpB,EAAEmB,GAAK,IAAM8E,GAAO,MACzB,KAAK9B,EAAShD,GAAMnB,EAAQiG,EAAO,IAGrC,OAAO9B,EAASpD,CAClB,EAEA5B,EAAO,UAAU,WACjBA,EAAO,UAAU,WAAa,SAAqBa,EAAOmE,EAAQ6B,EAAU,CAC1E,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,IAAM,CAAC,EACvD,KAAKA,GAAWnE,EAAQ,IACjBmE,EAAS,CAClB,EAEAhF,EAAO,UAAU,cACjBA,EAAO,UAAU,cAAgB,SAAwBa,EAAOmE,EAAQ6B,EAAU,CAChF,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,MAAQ,CAAC,EACzD,KAAKA,GAAWnE,EAAQ,IACxB,KAAKmE,EAAS,GAAMnE,IAAU,EACvBmE,EAAS,CAClB,EAEAhF,EAAO,UAAU,cACjBA,EAAO,UAAU,cAAgB,SAAwBa,EAAOmE,EAAQ6B,EAAU,CAChF,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,MAAQ,CAAC,EACzD,KAAKA,GAAWnE,IAAU,EAC1B,KAAKmE,EAAS,GAAMnE,EAAQ,IACrBmE,EAAS,CAClB,EAEAhF,EAAO,UAAU,cACjBA,EAAO,UAAU,cAAgB,SAAwBa,EAAOmE,EAAQ6B,EAAU,CAChF,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,WAAY,CAAC,EAC7D,KAAKA,EAAS,GAAMnE,IAAU,GAC9B,KAAKmE,EAAS,GAAMnE,IAAU,GAC9B,KAAKmE,EAAS,GAAMnE,IAAU,EAC9B,KAAKmE,GAAWnE,EAAQ,IACjBmE,EAAS,CAClB,EAEAhF,EAAO,UAAU,cACjBA,EAAO,UAAU,cAAgB,SAAwBa,EAAOmE,EAAQ6B,EAAU,CAChF,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,WAAY,CAAC,EAC7D,KAAKA,GAAWnE,IAAU,GAC1B,KAAKmE,EAAS,GAAMnE,IAAU,GAC9B,KAAKmE,EAAS,GAAMnE,IAAU,EAC9B,KAAKmE,EAAS,GAAMnE,EAAQ,IACrBmE,EAAS,CAClB,EAEA,SAASyC,GAAgBjH,EAAKK,EAAOmE,EAAQuC,EAAKzD,EAAK,CACrD4D,GAAW7G,EAAO0G,EAAKzD,EAAKtD,EAAKwE,EAAQ,CAAC,EAE1C,IAAIoC,EAAK,OAAOvG,EAAQ,OAAO,UAAU,CAAC,EAC1CL,EAAIwE,KAAYoC,EAChBA,EAAKA,GAAM,EACX5G,EAAIwE,KAAYoC,EAChBA,EAAKA,GAAM,EACX5G,EAAIwE,KAAYoC,EAChBA,EAAKA,GAAM,EACX5G,EAAIwE,KAAYoC,EAChB,IAAIC,EAAK,OAAOxG,GAAS,OAAO,EAAE,EAAI,OAAO,UAAU,CAAC,EACxD,OAAAL,EAAIwE,KAAYqC,EAChBA,EAAKA,GAAM,EACX7G,EAAIwE,KAAYqC,EAChBA,EAAKA,GAAM,EACX7G,EAAIwE,KAAYqC,EAChBA,EAAKA,GAAM,EACX7G,EAAIwE,KAAYqC,EACTrC,CACT,CAEA,SAAS2C,GAAgBnH,EAAKK,EAAOmE,EAAQuC,EAAKzD,EAAK,CACrD4D,GAAW7G,EAAO0G,EAAKzD,EAAKtD,EAAKwE,EAAQ,CAAC,EAE1C,IAAIoC,EAAK,OAAOvG,EAAQ,OAAO,UAAU,CAAC,EAC1CL,EAAIwE,EAAS,GAAKoC,EAClBA,EAAKA,GAAM,EACX5G,EAAIwE,EAAS,GAAKoC,EAClBA,EAAKA,GAAM,EACX5G,EAAIwE,EAAS,GAAKoC,EAClBA,EAAKA,GAAM,EACX5G,EAAIwE,EAAS,GAAKoC,EAClB,IAAIC,EAAK,OAAOxG,GAAS,OAAO,EAAE,EAAI,OAAO,UAAU,CAAC,EACxD,OAAAL,EAAIwE,EAAS,GAAKqC,EAClBA,EAAKA,GAAM,EACX7G,EAAIwE,EAAS,GAAKqC,EAClBA,EAAKA,GAAM,EACX7G,EAAIwE,EAAS,GAAKqC,EAClBA,EAAKA,GAAM,EACX7G,EAAIwE,GAAUqC,EACPrC,EAAS,CAClB,CAEAhF,EAAO,UAAU,iBAAmB+G,GAAmB,SAA2BlG,EAAOmE,EAAS,EAAG,CACnG,OAAOyC,GAAe,KAAM5G,EAAOmE,EAAQ,OAAO,CAAC,EAAG,OAAO,oBAAoB,CAAC,CACpF,CAAC,EAEDhF,EAAO,UAAU,iBAAmB+G,GAAmB,SAA2BlG,EAAOmE,EAAS,EAAG,CACnG,OAAO2C,GAAe,KAAM9G,EAAOmE,EAAQ,OAAO,CAAC,EAAG,OAAO,oBAAoB,CAAC,CACpF,CAAC,EAEDhF,EAAO,UAAU,WAAa,SAAqBa,EAAOmE,EAAQpD,EAAYiF,EAAU,CAGtF,GAFAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EAChB,CAAC6B,EAAU,CACb,IAAMe,EAAQ,KAAK,IAAI,EAAI,EAAIhG,EAAc,CAAC,EAE9C0F,GAAS,KAAMzG,EAAOmE,EAAQpD,EAAYgG,EAAQ,EAAG,CAACA,CAAK,CAC7D,CAEA,IAAI5F,EAAI,EACJ8E,EAAM,EACNe,EAAM,EAEV,IADA,KAAK7C,GAAUnE,EAAQ,IAChB,EAAEmB,EAAIJ,IAAekF,GAAO,MAC7BjG,EAAQ,GAAKgH,IAAQ,GAAK,KAAK7C,EAAShD,EAAI,KAAO,IACrD6F,EAAM,GAER,KAAK7C,EAAShD,IAAOnB,EAAQiG,GAAQ,GAAKe,EAAM,IAGlD,OAAO7C,EAASpD,CAClB,EAEA5B,EAAO,UAAU,WAAa,SAAqBa,EAAOmE,EAAQpD,EAAYiF,EAAU,CAGtF,GAFAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EAChB,CAAC6B,EAAU,CACb,IAAMe,EAAQ,KAAK,IAAI,EAAI,EAAIhG,EAAc,CAAC,EAE9C0F,GAAS,KAAMzG,EAAOmE,EAAQpD,EAAYgG,EAAQ,EAAG,CAACA,CAAK,CAC7D,CAEA,IAAI5F,EAAIJ,EAAa,EACjBkF,EAAM,EACNe,EAAM,EAEV,IADA,KAAK7C,EAAShD,GAAKnB,EAAQ,IACpB,EAAEmB,GAAK,IAAM8E,GAAO,MACrBjG,EAAQ,GAAKgH,IAAQ,GAAK,KAAK7C,EAAShD,EAAI,KAAO,IACrD6F,EAAM,GAER,KAAK7C,EAAShD,IAAOnB,EAAQiG,GAAQ,GAAKe,EAAM,IAGlD,OAAO7C,EAASpD,CAClB,EAEA5B,EAAO,UAAU,UAAY,SAAoBa,EAAOmE,EAAQ6B,EAAU,CACxE,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,IAAM,IAAK,EACvDnE,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtC,KAAKmE,GAAWnE,EAAQ,IACjBmE,EAAS,CAClB,EAEAhF,EAAO,UAAU,aAAe,SAAuBa,EAAOmE,EAAQ6B,EAAU,CAC9E,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,MAAQ,MAAO,EAC/D,KAAKA,GAAWnE,EAAQ,IACxB,KAAKmE,EAAS,GAAMnE,IAAU,EACvBmE,EAAS,CAClB,EAEAhF,EAAO,UAAU,aAAe,SAAuBa,EAAOmE,EAAQ6B,EAAU,CAC9E,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,MAAQ,MAAO,EAC/D,KAAKA,GAAWnE,IAAU,EAC1B,KAAKmE,EAAS,GAAMnE,EAAQ,IACrBmE,EAAS,CAClB,EAEAhF,EAAO,UAAU,aAAe,SAAuBa,EAAOmE,EAAQ6B,EAAU,CAC9E,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,WAAY,WAAW,EACvE,KAAKA,GAAWnE,EAAQ,IACxB,KAAKmE,EAAS,GAAMnE,IAAU,EAC9B,KAAKmE,EAAS,GAAMnE,IAAU,GAC9B,KAAKmE,EAAS,GAAMnE,IAAU,GACvBmE,EAAS,CAClB,EAEAhF,EAAO,UAAU,aAAe,SAAuBa,EAAOmE,EAAQ6B,EAAU,CAC9E,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,WAAY,WAAW,EACnEnE,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C,KAAKmE,GAAWnE,IAAU,GAC1B,KAAKmE,EAAS,GAAMnE,IAAU,GAC9B,KAAKmE,EAAS,GAAMnE,IAAU,EAC9B,KAAKmE,EAAS,GAAMnE,EAAQ,IACrBmE,EAAS,CAClB,EAEAhF,EAAO,UAAU,gBAAkB+G,GAAmB,SAA0BlG,EAAOmE,EAAS,EAAG,CACjG,OAAOyC,GAAe,KAAM5G,EAAOmE,EAAQ,CAAC,OAAO,oBAAoB,EAAG,OAAO,oBAAoB,CAAC,CACxG,CAAC,EAEDhF,EAAO,UAAU,gBAAkB+G,GAAmB,SAA0BlG,EAAOmE,EAAS,EAAG,CACjG,OAAO2C,GAAe,KAAM9G,EAAOmE,EAAQ,CAAC,OAAO,oBAAoB,EAAG,OAAO,oBAAoB,CAAC,CACxG,CAAC,EAED,SAAS8C,GAActH,EAAKK,EAAOmE,EAAQ4B,EAAK9C,EAAKyD,EAAK,CACxD,GAAIvC,EAAS4B,EAAMpG,EAAI,OAAQ,MAAM,IAAI,WAAW,oBAAoB,EACxE,GAAIwE,EAAS,EAAG,MAAM,IAAI,WAAW,oBAAoB,CAC3D,CAEA,SAAS+C,GAAYvH,EAAKK,EAAOmE,EAAQgD,EAAcnB,EAAU,CAC/D,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GACHiB,GAAatH,EAAKK,EAAOmE,EAAQ,EAAG,qBAAwB,qBAAuB,EAErFlF,GAAQ,MAAMU,EAAKK,EAAOmE,EAAQgD,EAAc,GAAI,CAAC,EAC9ChD,EAAS,CAClB,CAEAhF,EAAO,UAAU,aAAe,SAAuBa,EAAOmE,EAAQ6B,EAAU,CAC9E,OAAOkB,GAAW,KAAMlH,EAAOmE,EAAQ,GAAM6B,CAAQ,CACvD,EAEA7G,EAAO,UAAU,aAAe,SAAuBa,EAAOmE,EAAQ6B,EAAU,CAC9E,OAAOkB,GAAW,KAAMlH,EAAOmE,EAAQ,GAAO6B,CAAQ,CACxD,EAEA,SAASoB,GAAazH,EAAKK,EAAOmE,EAAQgD,EAAcnB,EAAU,CAChE,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GACHiB,GAAatH,EAAKK,EAAOmE,EAAQ,EAAG,sBAAyB,sBAAwB,EAEvFlF,GAAQ,MAAMU,EAAKK,EAAOmE,EAAQgD,EAAc,GAAI,CAAC,EAC9ChD,EAAS,CAClB,CAEAhF,EAAO,UAAU,cAAgB,SAAwBa,EAAOmE,EAAQ6B,EAAU,CAChF,OAAOoB,GAAY,KAAMpH,EAAOmE,EAAQ,GAAM6B,CAAQ,CACxD,EAEA7G,EAAO,UAAU,cAAgB,SAAwBa,EAAOmE,EAAQ6B,EAAU,CAChF,OAAOoB,GAAY,KAAMpH,EAAOmE,EAAQ,GAAO6B,CAAQ,CACzD,EAGA7G,EAAO,UAAU,KAAO,SAAe+D,EAAQmE,EAAahF,EAAOC,EAAK,CACtE,GAAI,CAACnD,EAAO,SAAS+D,CAAM,EAAG,MAAM,IAAI,UAAU,6BAA6B,EAS/E,GARKb,IAAOA,EAAQ,GAChB,CAACC,GAAOA,IAAQ,IAAGA,EAAM,KAAK,QAC9B+E,GAAenE,EAAO,SAAQmE,EAAcnE,EAAO,QAClDmE,IAAaA,EAAc,GAC5B/E,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,GACRa,EAAO,SAAW,GAAK,KAAK,SAAW,EAAG,MAAO,GAGrD,GAAImE,EAAc,EAChB,MAAM,IAAI,WAAW,2BAA2B,EAElD,GAAIhF,EAAQ,GAAKA,GAAS,KAAK,OAAQ,MAAM,IAAI,WAAW,oBAAoB,EAChF,GAAIC,EAAM,EAAG,MAAM,IAAI,WAAW,yBAAyB,EAGvDA,EAAM,KAAK,SAAQA,EAAM,KAAK,QAC9BY,EAAO,OAASmE,EAAc/E,EAAMD,IACtCC,EAAMY,EAAO,OAASmE,EAAchF,GAGtC,IAAMb,EAAMc,EAAMD,EAElB,OAAI,OAASa,GAAU,OAAO,WAAW,UAAU,YAAe,WAEhE,KAAK,WAAWmE,EAAahF,EAAOC,CAAG,EAEvC,WAAW,UAAU,IAAI,KACvBY,EACA,KAAK,SAASb,EAAOC,CAAG,EACxB+E,CACF,EAGK7F,CACT,EAMArC,EAAO,UAAU,KAAO,SAAeqE,EAAKnB,EAAOC,EAAK1B,EAAU,CAEhE,GAAI,OAAO4C,GAAQ,SAAU,CAS3B,GARI,OAAOnB,GAAU,UACnBzB,EAAWyB,EACXA,EAAQ,EACRC,EAAM,KAAK,QACF,OAAOA,GAAQ,WACxB1B,EAAW0B,EACXA,EAAM,KAAK,QAET1B,IAAa,QAAa,OAAOA,GAAa,SAChD,MAAM,IAAI,UAAU,2BAA2B,EAEjD,GAAI,OAAOA,GAAa,UAAY,CAACzB,EAAO,WAAWyB,CAAQ,EAC7D,MAAM,IAAI,UAAU,qBAAuBA,CAAQ,EAErD,GAAI4C,EAAI,SAAW,EAAG,CACpB,IAAM8D,EAAO9D,EAAI,WAAW,CAAC,GACxB5C,IAAa,QAAU0G,EAAO,KAC/B1G,IAAa,YAEf4C,EAAM8D,EAEV,CACF,MAAW,OAAO9D,GAAQ,SACxBA,EAAMA,EAAM,IACH,OAAOA,GAAQ,YACxBA,EAAM,OAAOA,CAAG,GAIlB,GAAInB,EAAQ,GAAK,KAAK,OAASA,GAAS,KAAK,OAASC,EACpD,MAAM,IAAI,WAAW,oBAAoB,EAG3C,GAAIA,GAAOD,EACT,OAAO,KAGTA,EAAQA,IAAU,EAClBC,EAAMA,IAAQ,OAAY,KAAK,OAASA,IAAQ,EAE3CkB,IAAKA,EAAM,GAEhB,IAAIrC,EACJ,GAAI,OAAOqC,GAAQ,SACjB,IAAKrC,EAAIkB,EAAOlB,EAAImB,EAAK,EAAEnB,EACzB,KAAKA,GAAKqC,MAEP,CACL,IAAMoC,EAAQzG,EAAO,SAASqE,CAAG,EAC7BA,EACArE,EAAO,KAAKqE,EAAK5C,CAAQ,EACvBY,EAAMoE,EAAM,OAClB,GAAIpE,IAAQ,EACV,MAAM,IAAI,UAAU,cAAgBgC,EAClC,mCAAmC,EAEvC,IAAKrC,EAAI,EAAGA,EAAImB,EAAMD,EAAO,EAAElB,EAC7B,KAAKA,EAAIkB,GAASuD,EAAMzE,EAAIK,EAEhC,CAEA,OAAO,IACT,EAMA,IAAM+F,GAAS,CAAC,EAChB,SAASC,GAAGC,EAAKC,EAAYC,EAAM,CACjCJ,GAAOE,GAAO,cAAwBE,CAAK,CACzC,aAAe,CACb,MAAM,EAEN,OAAO,eAAe,KAAM,UAAW,CACrC,MAAOD,EAAW,MAAM,KAAM,SAAS,EACvC,SAAU,GACV,aAAc,EAChB,CAAC,EAGD,KAAK,KAAO,GAAG,KAAK,SAASD,KAG7B,KAAK,MAEL,OAAO,KAAK,IACd,CAEA,IAAI,MAAQ,CACV,OAAOA,CACT,CAEA,IAAI,KAAMzH,EAAO,CACf,OAAO,eAAe,KAAM,OAAQ,CAClC,aAAc,GACd,WAAY,GACZ,MAAAA,EACA,SAAU,EACZ,CAAC,CACH,CAEA,UAAY,CACV,MAAO,GAAG,KAAK,SAASyH,OAAS,KAAK,SACxC,CACF,CACF,CAEAD,GAAE,2BACA,SAAUI,EAAM,CACd,OAAIA,EACK,GAAGA,gCAGL,gDACT,EAAG,UAAU,EACfJ,GAAE,uBACA,SAAUI,EAAM5G,EAAQ,CACtB,MAAO,QAAQ4G,qDAAwD,OAAO5G,GAChF,EAAG,SAAS,EACdwG,GAAE,mBACA,SAAUxE,EAAK6E,EAAOC,EAAO,CAC3B,IAAIC,EAAM,iBAAiB/E,sBACvBgF,EAAWF,EACf,OAAI,OAAO,UAAUA,CAAK,GAAK,KAAK,IAAIA,CAAK,EAAI,GAAK,GACpDE,EAAWC,GAAsB,OAAOH,CAAK,CAAC,EACrC,OAAOA,GAAU,WAC1BE,EAAW,OAAOF,CAAK,GACnBA,EAAQ,OAAO,CAAC,GAAK,OAAO,EAAE,GAAKA,EAAQ,EAAE,OAAO,CAAC,GAAK,OAAO,EAAE,MACrEE,EAAWC,GAAsBD,CAAQ,GAE3CA,GAAY,KAEdD,GAAO,eAAeF,eAAmBG,IAClCD,CACT,EAAG,UAAU,EAEf,SAASE,GAAuBzE,EAAK,CACnC,IAAIsB,EAAM,GACN3D,EAAIqC,EAAI,OACNnB,EAAQmB,EAAI,KAAO,IAAM,EAAI,EACnC,KAAOrC,GAAKkB,EAAQ,EAAGlB,GAAK,EAC1B2D,EAAM,IAAItB,EAAI,MAAMrC,EAAI,EAAGA,CAAC,IAAI2D,IAElC,MAAO,GAAGtB,EAAI,MAAM,EAAGrC,CAAC,IAAI2D,GAC9B,CAKA,SAASoD,GAAavI,EAAKwE,EAAQpD,EAAY,CAC7CoF,GAAehC,EAAQ,QAAQ,GAC3BxE,EAAIwE,KAAY,QAAaxE,EAAIwE,EAASpD,KAAgB,SAC5DuF,GAAYnC,EAAQxE,EAAI,QAAUoB,EAAa,EAAE,CAErD,CAEA,SAAS8F,GAAY7G,EAAO0G,EAAKzD,EAAKtD,EAAKwE,EAAQpD,EAAY,CAC7D,GAAIf,EAAQiD,GAAOjD,EAAQ0G,EAAK,CAC9B,IAAM5D,EAAI,OAAO4D,GAAQ,SAAW,IAAM,GACtCmB,EACJ,MAAI9G,EAAa,EACX2F,IAAQ,GAAKA,IAAQ,OAAO,CAAC,EAC/BmB,EAAQ,OAAO/E,YAAYA,SAAS/B,EAAa,GAAK,IAAI+B,IAE1D+E,EAAQ,SAAS/E,SAAS/B,EAAa,GAAK,EAAI,IAAI+B,kBACxC/B,EAAa,GAAK,EAAI,IAAI+B,IAGxC+E,EAAQ,MAAMnB,IAAM5D,YAAYG,IAAMH,IAElC,IAAIyE,GAAO,iBAAiB,QAASM,EAAO7H,CAAK,CACzD,CACAkI,GAAYvI,EAAKwE,EAAQpD,CAAU,CACrC,CAEA,SAASoF,GAAgBnG,EAAO4H,EAAM,CACpC,GAAI,OAAO5H,GAAU,SACnB,MAAM,IAAIuH,GAAO,qBAAqBK,EAAM,SAAU5H,CAAK,CAE/D,CAEA,SAASsG,GAAatG,EAAON,EAAQyI,EAAM,CACzC,MAAI,KAAK,MAAMnI,CAAK,IAAMA,GACxBmG,GAAenG,EAAOmI,CAAI,EACpB,IAAIZ,GAAO,iBAAiBY,GAAQ,SAAU,aAAcnI,CAAK,GAGrEN,EAAS,EACL,IAAI6H,GAAO,yBAGb,IAAIA,GAAO,iBAAiBY,GAAQ,SACR,MAAMA,EAAO,EAAI,YAAYzI,IAC7BM,CAAK,CACzC,CAKA,IAAMoI,GAAoB,oBAE1B,SAASC,GAAarF,EAAK,CAMzB,GAJAA,EAAMA,EAAI,MAAM,GAAG,EAAE,GAErBA,EAAMA,EAAI,KAAK,EAAE,QAAQoF,GAAmB,EAAE,EAE1CpF,EAAI,OAAS,EAAG,MAAO,GAE3B,KAAOA,EAAI,OAAS,IAAM,GACxBA,EAAMA,EAAM,IAEd,OAAOA,CACT,CAEA,SAASd,GAAapB,EAAQwH,EAAO,CACnCA,EAAQA,GAAS,IACjB,IAAItD,EACEtF,EAASoB,EAAO,OAClByH,EAAgB,KACd3C,EAAQ,CAAC,EAEf,QAASzE,EAAI,EAAGA,EAAIzB,EAAQ,EAAEyB,EAAG,CAI/B,GAHA6D,EAAYlE,EAAO,WAAWK,CAAC,EAG3B6D,EAAY,OAAUA,EAAY,MAAQ,CAE5C,GAAI,CAACuD,EAAe,CAElB,GAAIvD,EAAY,MAAQ,EAEjBsD,GAAS,GAAK,IAAI1C,EAAM,KAAK,IAAM,IAAM,GAAI,EAClD,QACF,SAAWzE,EAAI,IAAMzB,EAAQ,EAEtB4I,GAAS,GAAK,IAAI1C,EAAM,KAAK,IAAM,IAAM,GAAI,EAClD,QACF,CAGA2C,EAAgBvD,EAEhB,QACF,CAGA,GAAIA,EAAY,MAAQ,EACjBsD,GAAS,GAAK,IAAI1C,EAAM,KAAK,IAAM,IAAM,GAAI,EAClD2C,EAAgBvD,EAChB,QACF,CAGAA,GAAauD,EAAgB,OAAU,GAAKvD,EAAY,OAAU,KACpE,MAAWuD,IAEJD,GAAS,GAAK,IAAI1C,EAAM,KAAK,IAAM,IAAM,GAAI,EAMpD,GAHA2C,EAAgB,KAGZvD,EAAY,IAAM,CACpB,IAAKsD,GAAS,GAAK,EAAG,MACtB1C,EAAM,KAAKZ,CAAS,CACtB,SAAWA,EAAY,KAAO,CAC5B,IAAKsD,GAAS,GAAK,EAAG,MACtB1C,EAAM,KACJZ,GAAa,EAAM,IACnBA,EAAY,GAAO,GACrB,CACF,SAAWA,EAAY,MAAS,CAC9B,IAAKsD,GAAS,GAAK,EAAG,MACtB1C,EAAM,KACJZ,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IAC1BA,EAAY,GAAO,GACrB,CACF,SAAWA,EAAY,QAAU,CAC/B,IAAKsD,GAAS,GAAK,EAAG,MACtB1C,EAAM,KACJZ,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IAC1BA,EAAY,GAAO,GACrB,CACF,KACE,OAAM,IAAI,MAAM,oBAAoB,CAExC,CAEA,OAAOY,CACT,CAEA,SAASlB,GAAc1B,EAAK,CAC1B,IAAMwF,EAAY,CAAC,EACnB,QAASrH,EAAI,EAAGA,EAAI6B,EAAI,OAAQ,EAAE7B,EAEhCqH,EAAU,KAAKxF,EAAI,WAAW7B,CAAC,EAAI,GAAI,EAEzC,OAAOqH,CACT,CAEA,SAAS3D,GAAgB7B,EAAKsF,EAAO,CACnC,IAAIG,EAAGjC,EAAID,EACLiC,EAAY,CAAC,EACnB,QAASrH,EAAI,EAAGA,EAAI6B,EAAI,QACjB,GAAAsF,GAAS,GAAK,GADW,EAAEnH,EAGhCsH,EAAIzF,EAAI,WAAW7B,CAAC,EACpBqF,EAAKiC,GAAK,EACVlC,EAAKkC,EAAI,IACTD,EAAU,KAAKjC,CAAE,EACjBiC,EAAU,KAAKhC,CAAE,EAGnB,OAAOgC,CACT,CAEA,SAASrG,GAAea,EAAK,CAC3B,OAAOhE,GAAO,YAAYqJ,GAAYrF,CAAG,CAAC,CAC5C,CAEA,SAASwB,GAAYkE,EAAKC,EAAKxE,EAAQzE,EAAQ,CAC7C,IAAI,EACJ,IAAK,EAAI,EAAG,EAAIA,GACT,IAAIyE,GAAUwE,EAAI,QAAY,GAAKD,EAAI,QADtB,EAAE,EAExBC,EAAI,EAAIxE,GAAUuE,EAAI,GAExB,OAAO,CACT,CAKA,SAASvI,GAAYoB,EAAK4G,EAAM,CAC9B,OAAO5G,aAAe4G,GACnB5G,GAAO,MAAQA,EAAI,aAAe,MAAQA,EAAI,YAAY,MAAQ,MACjEA,EAAI,YAAY,OAAS4G,EAAK,IACpC,CACA,SAAS1G,GAAaF,EAAK,CAEzB,OAAOA,IAAQA,CACjB,CAIA,IAAMoE,GAAuB,UAAY,CACvC,IAAMiD,EAAW,mBACXC,EAAQ,IAAI,MAAM,GAAG,EAC3B,QAAS1H,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAAG,CAC3B,IAAM2H,EAAM3H,EAAI,GAChB,QAAS8C,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACxB4E,EAAMC,EAAM7E,GAAK2E,EAASzH,GAAKyH,EAAS3E,EAE5C,CACA,OAAO4E,CACT,EAAG,EAGH,SAAS3C,GAAoB6C,EAAI,CAC/B,OAAO,OAAO,OAAW,IAAcC,GAAyBD,CAClE,CAEA,SAASC,IAA0B,CACjC,MAAM,IAAI,MAAM,sBAAsB,CACxC,ICzjEA,IAAAC,GAAAC,GAAA,QCAA,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAAC,SAAUA,EAAQD,EAAS,CAC1B,aAGA,SAASE,EAAQC,EAAKC,EAAK,CACzB,GAAI,CAACD,EAAK,MAAM,IAAI,MAAMC,GAAO,kBAAkB,CACrD,CAIA,SAASC,EAAUC,EAAMC,EAAW,CAClCD,EAAK,OAASC,EACd,IAAIC,EAAW,UAAY,CAAC,EAC5BA,EAAS,UAAYD,EAAU,UAC/BD,EAAK,UAAY,IAAIE,EACrBF,EAAK,UAAU,YAAcA,CAC/B,CAIA,SAASG,EAAIC,EAAQC,EAAMC,EAAQ,CACjC,GAAIH,EAAG,KAAKC,CAAM,EAChB,OAAOA,EAGT,KAAK,SAAW,EAChB,KAAK,MAAQ,KACb,KAAK,OAAS,EAGd,KAAK,IAAM,KAEPA,IAAW,QACTC,IAAS,MAAQA,IAAS,QAC5BC,EAASD,EACTA,EAAO,IAGT,KAAK,MAAMD,GAAU,EAAGC,GAAQ,GAAIC,GAAU,IAAI,EAEtD,CACI,OAAOX,GAAW,SACpBA,EAAO,QAAUQ,EAEjBT,EAAQ,GAAKS,EAGfA,EAAG,GAAKA,EACRA,EAAG,SAAW,GAEd,IAAII,EACJ,GAAI,CACE,OAAO,OAAW,KAAe,OAAO,OAAO,OAAW,IAC5DA,EAAS,OAAO,OAEhBA,EAAS,KAAkB,MAE/B,MAAE,CACF,CAEAJ,EAAG,KAAO,SAAeK,EAAK,CAC5B,OAAIA,aAAeL,EACV,GAGFK,IAAQ,MAAQ,OAAOA,GAAQ,UACpCA,EAAI,YAAY,WAAaL,EAAG,UAAY,MAAM,QAAQK,EAAI,KAAK,CACvE,EAEAL,EAAG,IAAM,SAAcM,EAAMC,EAAO,CAClC,OAAID,EAAK,IAAIC,CAAK,EAAI,EAAUD,EACzBC,CACT,EAEAP,EAAG,IAAM,SAAcM,EAAMC,EAAO,CAClC,OAAID,EAAK,IAAIC,CAAK,EAAI,EAAUD,EACzBC,CACT,EAEAP,EAAG,UAAU,MAAQ,SAAeC,EAAQC,EAAMC,EAAQ,CACxD,GAAI,OAAOF,GAAW,SACpB,OAAO,KAAK,YAAYA,EAAQC,EAAMC,CAAM,EAG9C,GAAI,OAAOF,GAAW,SACpB,OAAO,KAAK,WAAWA,EAAQC,EAAMC,CAAM,EAGzCD,IAAS,QACXA,EAAO,IAETT,EAAOS,KAAUA,EAAO,IAAMA,GAAQ,GAAKA,GAAQ,EAAE,EAErDD,EAASA,EAAO,SAAS,EAAE,QAAQ,OAAQ,EAAE,EAC7C,IAAIO,EAAQ,EACRP,EAAO,KAAO,MAChBO,IACA,KAAK,SAAW,GAGdA,EAAQP,EAAO,SACbC,IAAS,GACX,KAAK,UAAUD,EAAQO,EAAOL,CAAM,GAEpC,KAAK,WAAWF,EAAQC,EAAMM,CAAK,EAC/BL,IAAW,MACb,KAAK,WAAW,KAAK,QAAQ,EAAGD,EAAMC,CAAM,GAIpD,EAEAH,EAAG,UAAU,YAAc,SAAsBC,EAAQC,EAAMC,EAAQ,CACjEF,EAAS,IACX,KAAK,SAAW,EAChBA,EAAS,CAACA,GAERA,EAAS,UACX,KAAK,MAAQ,CAACA,EAAS,QAAS,EAChC,KAAK,OAAS,GACLA,EAAS,kBAClB,KAAK,MAAQ,CACXA,EAAS,SACRA,EAAS,SAAa,QACzB,EACA,KAAK,OAAS,IAEdR,EAAOQ,EAAS,gBAAgB,EAChC,KAAK,MAAQ,CACXA,EAAS,SACRA,EAAS,SAAa,SACvB,CACF,EACA,KAAK,OAAS,GAGZE,IAAW,MAGf,KAAK,WAAW,KAAK,QAAQ,EAAGD,EAAMC,CAAM,CAC9C,EAEAH,EAAG,UAAU,WAAa,SAAqBC,EAAQC,EAAMC,EAAQ,CAGnE,GADAV,EAAO,OAAOQ,EAAO,QAAW,QAAQ,EACpCA,EAAO,QAAU,EACnB,YAAK,MAAQ,CAAC,CAAC,EACf,KAAK,OAAS,EACP,KAGT,KAAK,OAAS,KAAK,KAAKA,EAAO,OAAS,CAAC,EACzC,KAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASQ,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/B,KAAK,MAAMA,GAAK,EAGlB,IAAIC,EAAGC,EACHC,EAAM,EACV,GAAIT,IAAW,KACb,IAAKM,EAAIR,EAAO,OAAS,EAAGS,EAAI,EAAGD,GAAK,EAAGA,GAAK,EAC9CE,EAAIV,EAAOQ,GAAMR,EAAOQ,EAAI,IAAM,EAAMR,EAAOQ,EAAI,IAAM,GACzD,KAAK,MAAMC,IAAOC,GAAKC,EAAO,SAC9B,KAAK,MAAMF,EAAI,GAAMC,IAAO,GAAKC,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPF,aAGKP,IAAW,KACpB,IAAKM,EAAI,EAAGC,EAAI,EAAGD,EAAIR,EAAO,OAAQQ,GAAK,EACzCE,EAAIV,EAAOQ,GAAMR,EAAOQ,EAAI,IAAM,EAAMR,EAAOQ,EAAI,IAAM,GACzD,KAAK,MAAMC,IAAOC,GAAKC,EAAO,SAC9B,KAAK,MAAMF,EAAI,GAAMC,IAAO,GAAKC,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPF,KAIN,OAAO,KAAK,OAAO,CACrB,EAEA,SAASG,EAAeC,EAAQC,EAAO,CACrC,IAAI,EAAID,EAAO,WAAWC,CAAK,EAE/B,GAAI,GAAK,IAAM,GAAK,GAClB,OAAO,EAAI,GAEN,GAAI,GAAK,IAAM,GAAK,GACzB,OAAO,EAAI,GAEN,GAAI,GAAK,IAAM,GAAK,IACzB,OAAO,EAAI,GAEXtB,EAAO,GAAO,wBAA0BqB,CAAM,CAElD,CAEA,SAASE,EAAcF,EAAQG,EAAYF,EAAO,CAChD,IAAIG,EAAIL,EAAcC,EAAQC,CAAK,EACnC,OAAIA,EAAQ,GAAKE,IACfC,GAAKL,EAAcC,EAAQC,EAAQ,CAAC,GAAK,GAEpCG,CACT,CAEAlB,EAAG,UAAU,UAAY,SAAoBC,EAAQO,EAAOL,EAAQ,CAElE,KAAK,OAAS,KAAK,MAAMF,EAAO,OAASO,GAAS,CAAC,EACnD,KAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASC,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/B,KAAK,MAAMA,GAAK,EAIlB,IAAIG,EAAM,EACNF,EAAI,EAEJ,EACJ,GAAIP,IAAW,KACb,IAAKM,EAAIR,EAAO,OAAS,EAAGQ,GAAKD,EAAOC,GAAK,EAC3C,EAAIO,EAAaf,EAAQO,EAAOC,CAAC,GAAKG,EACtC,KAAK,MAAMF,IAAM,EAAI,SACjBE,GAAO,IACTA,GAAO,GACPF,GAAK,EACL,KAAK,MAAMA,IAAM,IAAM,IAEvBE,GAAO,MAGN,CACL,IAAIO,EAAclB,EAAO,OAASO,EAClC,IAAKC,EAAIU,EAAc,IAAM,EAAIX,EAAQ,EAAIA,EAAOC,EAAIR,EAAO,OAAQQ,GAAK,EAC1E,EAAIO,EAAaf,EAAQO,EAAOC,CAAC,GAAKG,EACtC,KAAK,MAAMF,IAAM,EAAI,SACjBE,GAAO,IACTA,GAAO,GACPF,GAAK,EACL,KAAK,MAAMA,IAAM,IAAM,IAEvBE,GAAO,CAGb,CAEA,KAAK,OAAO,CACd,EAEA,SAASQ,EAAWC,EAAKb,EAAOc,EAAKC,EAAK,CAIxC,QAHIL,EAAI,EACJM,EAAI,EACJC,EAAM,KAAK,IAAIJ,EAAI,OAAQC,CAAG,EACzBb,EAAID,EAAOC,EAAIgB,EAAKhB,IAAK,CAChC,IAAIiB,EAAIL,EAAI,WAAWZ,CAAC,EAAI,GAE5BS,GAAKK,EAGDG,GAAK,GACPF,EAAIE,EAAI,GAAK,GAGJA,GAAK,GACdF,EAAIE,EAAI,GAAK,GAIbF,EAAIE,EAENjC,EAAOiC,GAAK,GAAKF,EAAID,EAAK,mBAAmB,EAC7CL,GAAKM,CACP,CACA,OAAON,CACT,CAEAlB,EAAG,UAAU,WAAa,SAAqBC,EAAQC,EAAMM,EAAO,CAElE,KAAK,MAAQ,CAAC,CAAC,EACf,KAAK,OAAS,EAGd,QAASmB,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAW1B,EAClEyB,IAEFA,IACAC,EAAWA,EAAU1B,EAAQ,EAO7B,QALI2B,EAAQ5B,EAAO,OAASO,EACxBsB,EAAMD,EAAQF,EACdL,EAAM,KAAK,IAAIO,EAAOA,EAAQC,CAAG,EAAItB,EAErCuB,EAAO,EACFtB,EAAID,EAAOC,EAAIa,EAAKb,GAAKkB,EAChCI,EAAOX,EAAUnB,EAAQQ,EAAGA,EAAIkB,EAASzB,CAAI,EAE7C,KAAK,MAAM0B,CAAO,EACd,KAAK,MAAM,GAAKG,EAAO,SACzB,KAAK,MAAM,IAAMA,EAEjB,KAAK,OAAOA,CAAI,EAIpB,GAAID,IAAQ,EAAG,CACb,IAAIE,EAAM,EAGV,IAFAD,EAAOX,EAAUnB,EAAQQ,EAAGR,EAAO,OAAQC,CAAI,EAE1CO,EAAI,EAAGA,EAAIqB,EAAKrB,IACnBuB,GAAO9B,EAGT,KAAK,MAAM8B,CAAG,EACV,KAAK,MAAM,GAAKD,EAAO,SACzB,KAAK,MAAM,IAAMA,EAEjB,KAAK,OAAOA,CAAI,CAEpB,CAEA,KAAK,OAAO,CACd,EAEA/B,EAAG,UAAU,KAAO,SAAeiC,EAAM,CACvCA,EAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASxB,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/BwB,EAAK,MAAMxB,GAAK,KAAK,MAAMA,GAE7BwB,EAAK,OAAS,KAAK,OACnBA,EAAK,SAAW,KAAK,SACrBA,EAAK,IAAM,KAAK,GAClB,EAEA,SAASC,EAAMD,EAAME,EAAK,CACxBF,EAAK,MAAQE,EAAI,MACjBF,EAAK,OAASE,EAAI,OAClBF,EAAK,SAAWE,EAAI,SACpBF,EAAK,IAAME,EAAI,GACjB,CAqCA,GAnCAnC,EAAG,UAAU,MAAQ,SAAgBiC,EAAM,CACzCC,EAAKD,EAAM,IAAI,CACjB,EAEAjC,EAAG,UAAU,MAAQ,UAAkB,CACrC,IAAIkB,EAAI,IAAIlB,EAAG,IAAI,EACnB,YAAK,KAAKkB,CAAC,EACJA,CACT,EAEAlB,EAAG,UAAU,QAAU,SAAkBoC,EAAM,CAC7C,KAAO,KAAK,OAASA,GACnB,KAAK,MAAM,KAAK,UAAY,EAE9B,OAAO,IACT,EAGApC,EAAG,UAAU,OAAS,UAAkB,CACtC,KAAO,KAAK,OAAS,GAAK,KAAK,MAAM,KAAK,OAAS,KAAO,GACxD,KAAK,SAEP,OAAO,KAAK,UAAU,CACxB,EAEAA,EAAG,UAAU,UAAY,UAAsB,CAE7C,OAAI,KAAK,SAAW,GAAK,KAAK,MAAM,KAAO,IACzC,KAAK,SAAW,GAEX,IACT,EAII,OAAO,OAAW,KAAe,OAAO,OAAO,KAAQ,WACzD,GAAI,CACFA,EAAG,UAAU,OAAO,IAAI,4BAA4B,GAAKqC,CAC3D,MAAE,CACArC,EAAG,UAAU,QAAUqC,CACzB,MAEArC,EAAG,UAAU,QAAUqC,EAGzB,SAASA,GAAW,CAClB,OAAQ,KAAK,IAAM,UAAY,SAAW,KAAK,SAAS,EAAE,EAAI,GAChE,CAgCA,IAAIC,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,2BACF,EAEIC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CACpB,EAEIC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAC9D,EAEAxC,EAAG,UAAU,SAAW,SAAmBE,EAAMuC,EAAS,CACxDvC,EAAOA,GAAQ,GACfuC,EAAUA,EAAU,GAAK,EAEzB,IAAIC,EACJ,GAAIxC,IAAS,IAAMA,IAAS,MAAO,CACjCwC,EAAM,GAGN,QAFI9B,EAAM,EACN+B,EAAQ,EACHlC,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAI,EAAI,KAAK,MAAMA,GACfsB,IAAU,GAAKnB,EAAO+B,GAAS,UAAU,SAAS,EAAE,EACxDA,EAAS,IAAO,GAAK/B,EAAQ,SAC7BA,GAAO,EACHA,GAAO,KACTA,GAAO,GACPH,KAEEkC,IAAU,GAAKlC,IAAM,KAAK,OAAS,EACrCiC,EAAMJ,EAAM,EAAIP,EAAK,QAAUA,EAAOW,EAEtCA,EAAMX,EAAOW,CAEjB,CAIA,IAHIC,IAAU,IACZD,EAAMC,EAAM,SAAS,EAAE,EAAID,GAEtBA,EAAI,OAASD,IAAY,GAC9BC,EAAM,IAAMA,EAEd,OAAI,KAAK,WAAa,IACpBA,EAAM,IAAMA,GAEPA,CACT,CAEA,GAAIxC,KAAUA,EAAO,IAAMA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAI0C,EAAYL,EAAWrC,GAEvB2C,EAAYL,EAAWtC,GAC3BwC,EAAM,GACN,IAAIhB,EAAI,KAAK,MAAM,EAEnB,IADAA,EAAE,SAAW,EACN,CAACA,EAAE,OAAO,GAAG,CAClB,IAAIR,EAAIQ,EAAE,MAAMmB,CAAS,EAAE,SAAS3C,CAAI,EACxCwB,EAAIA,EAAE,MAAMmB,CAAS,EAEhBnB,EAAE,OAAO,EAGZgB,EAAMxB,EAAIwB,EAFVA,EAAMJ,EAAMM,EAAY1B,EAAE,QAAUA,EAAIwB,CAI5C,CAIA,IAHI,KAAK,OAAO,IACdA,EAAM,IAAMA,GAEPA,EAAI,OAASD,IAAY,GAC9BC,EAAM,IAAMA,EAEd,OAAI,KAAK,WAAa,IACpBA,EAAM,IAAMA,GAEPA,CACT,CAEAjD,EAAO,GAAO,iCAAiC,CACjD,EAEAO,EAAG,UAAU,SAAW,UAAqB,CAC3C,IAAI8C,EAAM,KAAK,MAAM,GACrB,OAAI,KAAK,SAAW,EAClBA,GAAO,KAAK,MAAM,GAAK,SACd,KAAK,SAAW,GAAK,KAAK,MAAM,KAAO,EAEhDA,GAAO,iBAAoB,KAAK,MAAM,GAAK,SAClC,KAAK,OAAS,GACvBrD,EAAO,GAAO,4CAA4C,EAEpD,KAAK,WAAa,EAAK,CAACqD,EAAMA,CACxC,EAEA9C,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAO,KAAK,SAAS,GAAI,CAAC,CAC5B,EAEII,IACFJ,EAAG,UAAU,SAAW,SAAmBG,EAAQ4C,EAAQ,CACzD,OAAO,KAAK,YAAY3C,EAAQD,EAAQ4C,CAAM,CAChD,GAGF/C,EAAG,UAAU,QAAU,SAAkBG,EAAQ4C,EAAQ,CACvD,OAAO,KAAK,YAAY,MAAO5C,EAAQ4C,CAAM,CAC/C,EAEA,IAAIC,EAAW,SAAmBC,EAAWb,EAAM,CACjD,OAAIa,EAAU,YACLA,EAAU,YAAYb,CAAI,EAE5B,IAAIa,EAAUb,CAAI,CAC3B,EAEApC,EAAG,UAAU,YAAc,SAAsBiD,EAAW9C,EAAQ4C,EAAQ,CAC1E,KAAK,OAAO,EAEZ,IAAIG,EAAa,KAAK,WAAW,EAC7BC,EAAYJ,GAAU,KAAK,IAAI,EAAGG,CAAU,EAChDzD,EAAOyD,GAAcC,EAAW,uCAAuC,EACvE1D,EAAO0D,EAAY,EAAG,6BAA6B,EAEnD,IAAIC,EAAMJ,EAASC,EAAWE,CAAS,EACnCE,EAAUlD,IAAW,KAAO,KAAO,KACvC,YAAK,eAAiBkD,GAASD,EAAKF,CAAU,EACvCE,CACT,EAEApD,EAAG,UAAU,eAAiB,SAAyBoD,EAAKF,EAAY,CAItE,QAHII,EAAW,EACXX,EAAQ,EAEHlC,EAAI,EAAG8C,EAAQ,EAAG9C,EAAI,KAAK,OAAQA,IAAK,CAC/C,IAAIsB,EAAQ,KAAK,MAAMtB,IAAM8C,EAASZ,EAEtCS,EAAIE,KAAcvB,EAAO,IACrBuB,EAAWF,EAAI,SACjBA,EAAIE,KAAevB,GAAQ,EAAK,KAE9BuB,EAAWF,EAAI,SACjBA,EAAIE,KAAevB,GAAQ,GAAM,KAG/BwB,IAAU,GACRD,EAAWF,EAAI,SACjBA,EAAIE,KAAevB,GAAQ,GAAM,KAEnCY,EAAQ,EACRY,EAAQ,IAERZ,EAAQZ,IAAS,GACjBwB,GAAS,EAEb,CAEA,GAAID,EAAWF,EAAI,OAGjB,IAFAA,EAAIE,KAAcX,EAEXW,EAAWF,EAAI,QACpBA,EAAIE,KAAc,CAGxB,EAEAtD,EAAG,UAAU,eAAiB,SAAyBoD,EAAKF,EAAY,CAItE,QAHII,EAAWF,EAAI,OAAS,EACxBT,EAAQ,EAEHlC,EAAI,EAAG8C,EAAQ,EAAG9C,EAAI,KAAK,OAAQA,IAAK,CAC/C,IAAIsB,EAAQ,KAAK,MAAMtB,IAAM8C,EAASZ,EAEtCS,EAAIE,KAAcvB,EAAO,IACrBuB,GAAY,IACdF,EAAIE,KAAevB,GAAQ,EAAK,KAE9BuB,GAAY,IACdF,EAAIE,KAAevB,GAAQ,GAAM,KAG/BwB,IAAU,GACRD,GAAY,IACdF,EAAIE,KAAevB,GAAQ,GAAM,KAEnCY,EAAQ,EACRY,EAAQ,IAERZ,EAAQZ,IAAS,GACjBwB,GAAS,EAEb,CAEA,GAAID,GAAY,EAGd,IAFAF,EAAIE,KAAcX,EAEXW,GAAY,GACjBF,EAAIE,KAAc,CAGxB,EAEI,KAAK,MACPtD,EAAG,UAAU,WAAa,SAAqBW,EAAG,CAChD,MAAO,IAAK,KAAK,MAAMA,CAAC,CAC1B,EAEAX,EAAG,UAAU,WAAa,SAAqBW,EAAG,CAChD,IAAI6C,EAAI7C,EACJO,EAAI,EACR,OAAIsC,GAAK,OACPtC,GAAK,GACLsC,KAAO,IAELA,GAAK,KACPtC,GAAK,EACLsC,KAAO,GAELA,GAAK,IACPtC,GAAK,EACLsC,KAAO,GAELA,GAAK,IACPtC,GAAK,EACLsC,KAAO,GAEFtC,EAAIsC,CACb,EAGFxD,EAAG,UAAU,UAAY,SAAoBW,EAAG,CAE9C,GAAIA,IAAM,EAAG,MAAO,IAEpB,IAAI6C,EAAI7C,EACJO,EAAI,EACR,OAAKsC,EAAI,QAAY,IACnBtC,GAAK,GACLsC,KAAO,KAEJA,EAAI,OAAU,IACjBtC,GAAK,EACLsC,KAAO,IAEJA,EAAI,MAAS,IAChBtC,GAAK,EACLsC,KAAO,IAEJA,EAAI,KAAS,IAChBtC,GAAK,EACLsC,KAAO,IAEJA,EAAI,KAAS,GAChBtC,IAEKA,CACT,EAGAlB,EAAG,UAAU,UAAY,UAAsB,CAC7C,IAAIW,EAAI,KAAK,MAAM,KAAK,OAAS,GAC7B8C,EAAK,KAAK,WAAW9C,CAAC,EAC1B,OAAQ,KAAK,OAAS,GAAK,GAAK8C,CAClC,EAEA,SAASC,EAAYrD,EAAK,CAGxB,QAFIM,EAAI,IAAI,MAAMN,EAAI,UAAU,CAAC,EAExBsD,EAAM,EAAGA,EAAMhD,EAAE,OAAQgD,IAAO,CACvC,IAAI/C,EAAO+C,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBhD,EAAEgD,GAAQtD,EAAI,MAAMO,KAASgD,EAAQ,CACvC,CAEA,OAAOjD,CACT,CAGAX,EAAG,UAAU,SAAW,UAAqB,CAC3C,GAAI,KAAK,OAAO,EAAG,MAAO,GAG1B,QADIkB,EAAI,EACCT,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAIe,EAAI,KAAK,UAAU,KAAK,MAAMf,EAAE,EAEpC,GADAS,GAAKM,EACDA,IAAM,GAAI,KAChB,CACA,OAAON,CACT,EAEAlB,EAAG,UAAU,WAAa,UAAuB,CAC/C,OAAO,KAAK,KAAK,KAAK,UAAU,EAAI,CAAC,CACvC,EAEAA,EAAG,UAAU,OAAS,SAAiB6D,EAAO,CAC5C,OAAI,KAAK,WAAa,EACb,KAAK,IAAI,EAAE,MAAMA,CAAK,EAAE,MAAM,CAAC,EAEjC,KAAK,MAAM,CACpB,EAEA7D,EAAG,UAAU,SAAW,SAAmB6D,EAAO,CAChD,OAAI,KAAK,MAAMA,EAAQ,CAAC,EACf,KAAK,KAAKA,CAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAEjC,KAAK,MAAM,CACpB,EAEA7D,EAAG,UAAU,MAAQ,UAAkB,CACrC,OAAO,KAAK,WAAa,CAC3B,EAGAA,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,MAAM,EAAE,KAAK,CAC3B,EAEAA,EAAG,UAAU,KAAO,UAAiB,CACnC,OAAK,KAAK,OAAO,IACf,KAAK,UAAY,GAGZ,IACT,EAGAA,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,KAAO,KAAK,OAASA,EAAI,QACvB,KAAK,MAAM,KAAK,UAAY,EAG9B,QAASI,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAC9B,KAAK,MAAMA,GAAK,KAAK,MAAMA,GAAKJ,EAAI,MAAMI,GAG5C,OAAO,KAAK,OAAO,CACrB,EAEAT,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,KAAKA,CAAG,CACtB,EAGAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,IAAIA,CAAG,EAClDA,EAAI,MAAM,EAAE,IAAI,IAAI,CAC7B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAGAL,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAExC,IAAImB,EACA,KAAK,OAASnB,EAAI,OACpBmB,EAAInB,EAEJmB,EAAI,KAGN,QAASf,EAAI,EAAGA,EAAIe,EAAE,OAAQf,IAC5B,KAAK,MAAMA,GAAK,KAAK,MAAMA,GAAKJ,EAAI,MAAMI,GAG5C,YAAK,OAASe,EAAE,OAET,KAAK,OAAO,CACrB,EAEAxB,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,MAAMA,CAAG,CACvB,EAGAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,MAAMA,CAAG,EACpDA,EAAI,MAAM,EAAE,MAAM,IAAI,CAC/B,EAGAL,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAExC,IAAIyD,EACAtC,EACA,KAAK,OAASnB,EAAI,QACpByD,EAAI,KACJtC,EAAInB,IAEJyD,EAAIzD,EACJmB,EAAI,MAGN,QAASf,EAAI,EAAGA,EAAIe,EAAE,OAAQf,IAC5B,KAAK,MAAMA,GAAKqD,EAAE,MAAMrD,GAAKe,EAAE,MAAMf,GAGvC,GAAI,OAASqD,EACX,KAAOrD,EAAIqD,EAAE,OAAQrD,IACnB,KAAK,MAAMA,GAAKqD,EAAE,MAAMrD,GAI5B,YAAK,OAASqD,EAAE,OAET,KAAK,OAAO,CACrB,EAEA9D,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,MAAMA,CAAG,CACvB,EAGAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,MAAMA,CAAG,EACpDA,EAAI,MAAM,EAAE,MAAM,IAAI,CAC/B,EAGAL,EAAG,UAAU,MAAQ,SAAgB6D,EAAO,CAC1CpE,EAAO,OAAOoE,GAAU,UAAYA,GAAS,CAAC,EAE9C,IAAIE,EAAc,KAAK,KAAKF,EAAQ,EAAE,EAAI,EACtCG,EAAWH,EAAQ,GAGvB,KAAK,QAAQE,CAAW,EAEpBC,EAAW,GACbD,IAIF,QAAStD,EAAI,EAAGA,EAAIsD,EAAatD,IAC/B,KAAK,MAAMA,GAAK,CAAC,KAAK,MAAMA,GAAK,SAInC,OAAIuD,EAAW,IACb,KAAK,MAAMvD,GAAK,CAAC,KAAK,MAAMA,GAAM,UAAc,GAAKuD,GAIhD,KAAK,OAAO,CACrB,EAEAhE,EAAG,UAAU,KAAO,SAAe6D,EAAO,CACxC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAK,CACjC,EAGA7D,EAAG,UAAU,KAAO,SAAe2D,EAAKjE,EAAK,CAC3CD,EAAO,OAAOkE,GAAQ,UAAYA,GAAO,CAAC,EAE1C,IAAI/C,EAAO+C,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjB,YAAK,QAAQ/C,EAAM,CAAC,EAEhBlB,EACF,KAAK,MAAMkB,GAAO,KAAK,MAAMA,GAAQ,GAAKgD,EAE1C,KAAK,MAAMhD,GAAO,KAAK,MAAMA,GAAO,EAAE,GAAKgD,GAGtC,KAAK,OAAO,CACrB,EAGA5D,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,IAAIa,EAGJ,GAAI,KAAK,WAAa,GAAKb,EAAI,WAAa,EAC1C,YAAK,SAAW,EAChBa,EAAI,KAAK,KAAKb,CAAG,EACjB,KAAK,UAAY,EACV,KAAK,UAAU,EAGjB,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EACjD,OAAAA,EAAI,SAAW,EACfa,EAAI,KAAK,KAAKb,CAAG,EACjBA,EAAI,SAAW,EACRa,EAAE,UAAU,EAIrB,IAAI4C,EAAGtC,EACH,KAAK,OAASnB,EAAI,QACpByD,EAAI,KACJtC,EAAInB,IAEJyD,EAAIzD,EACJmB,EAAI,MAIN,QADImB,EAAQ,EACHlC,EAAI,EAAGA,EAAIe,EAAE,OAAQf,IAC5BS,GAAK4C,EAAE,MAAMrD,GAAK,IAAMe,EAAE,MAAMf,GAAK,GAAKkC,EAC1C,KAAK,MAAMlC,GAAKS,EAAI,SACpByB,EAAQzB,IAAM,GAEhB,KAAOyB,IAAU,GAAKlC,EAAIqD,EAAE,OAAQrD,IAClCS,GAAK4C,EAAE,MAAMrD,GAAK,GAAKkC,EACvB,KAAK,MAAMlC,GAAKS,EAAI,SACpByB,EAAQzB,IAAM,GAIhB,GADA,KAAK,OAAS4C,EAAE,OACZnB,IAAU,EACZ,KAAK,MAAM,KAAK,QAAUA,EAC1B,KAAK,iBAEImB,IAAM,KACf,KAAOrD,EAAIqD,EAAE,OAAQrD,IACnB,KAAK,MAAMA,GAAKqD,EAAE,MAAMrD,GAI5B,OAAO,IACT,EAGAT,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,IAAI+C,EACJ,OAAI/C,EAAI,WAAa,GAAK,KAAK,WAAa,GAC1CA,EAAI,SAAW,EACf+C,EAAM,KAAK,IAAI/C,CAAG,EAClBA,EAAI,UAAY,EACT+C,GACE/C,EAAI,WAAa,GAAK,KAAK,WAAa,GACjD,KAAK,SAAW,EAChB+C,EAAM/C,EAAI,IAAI,IAAI,EAClB,KAAK,SAAW,EACT+C,GAGL,KAAK,OAAS/C,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EAEnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAGAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CAEtC,GAAIA,EAAI,WAAa,EAAG,CACtBA,EAAI,SAAW,EACf,IAAIa,EAAI,KAAK,KAAKb,CAAG,EACrB,OAAAA,EAAI,SAAW,EACRa,EAAE,UAAU,CAGrB,SAAW,KAAK,WAAa,EAC3B,YAAK,SAAW,EAChB,KAAK,KAAKb,CAAG,EACb,KAAK,SAAW,EACT,KAAK,UAAU,EAIxB,IAAI4D,EAAM,KAAK,IAAI5D,CAAG,EAGtB,GAAI4D,IAAQ,EACV,YAAK,SAAW,EAChB,KAAK,OAAS,EACd,KAAK,MAAM,GAAK,EACT,KAIT,IAAIH,EAAGtC,EACHyC,EAAM,GACRH,EAAI,KACJtC,EAAInB,IAEJyD,EAAIzD,EACJmB,EAAI,MAIN,QADImB,EAAQ,EACHlC,EAAI,EAAGA,EAAIe,EAAE,OAAQf,IAC5BS,GAAK4C,EAAE,MAAMrD,GAAK,IAAMe,EAAE,MAAMf,GAAK,GAAKkC,EAC1CA,EAAQzB,GAAK,GACb,KAAK,MAAMT,GAAKS,EAAI,SAEtB,KAAOyB,IAAU,GAAKlC,EAAIqD,EAAE,OAAQrD,IAClCS,GAAK4C,EAAE,MAAMrD,GAAK,GAAKkC,EACvBA,EAAQzB,GAAK,GACb,KAAK,MAAMT,GAAKS,EAAI,SAItB,GAAIyB,IAAU,GAAKlC,EAAIqD,EAAE,QAAUA,IAAM,KACvC,KAAOrD,EAAIqD,EAAE,OAAQrD,IACnB,KAAK,MAAMA,GAAKqD,EAAE,MAAMrD,GAI5B,YAAK,OAAS,KAAK,IAAI,KAAK,OAAQA,CAAC,EAEjCqD,IAAM,OACR,KAAK,SAAW,GAGX,KAAK,OAAO,CACrB,EAGA9D,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,MAAM,EAAE,KAAKA,CAAG,CAC9B,EAEA,SAAS6D,GAAYC,EAAM9D,EAAKqC,EAAK,CACnCA,EAAI,SAAWrC,EAAI,SAAW8D,EAAK,SACnC,IAAI1C,EAAO0C,EAAK,OAAS9D,EAAI,OAAU,EACvCqC,EAAI,OAASjB,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIqC,EAAIK,EAAK,MAAM,GAAK,EACpB3C,EAAInB,EAAI,MAAM,GAAK,EACnBa,EAAI4C,EAAItC,EAER4C,EAAKlD,EAAI,SACTyB,EAASzB,EAAI,SAAa,EAC9BwB,EAAI,MAAM,GAAK0B,EAEf,QAASC,EAAI,EAAGA,EAAI5C,EAAK4C,IAAK,CAM5B,QAHIC,EAAS3B,IAAU,GACnB4B,EAAQ5B,EAAQ,SAChB6B,EAAO,KAAK,IAAIH,EAAGhE,EAAI,OAAS,CAAC,EAC5BK,EAAI,KAAK,IAAI,EAAG2D,EAAIF,EAAK,OAAS,CAAC,EAAGzD,GAAK8D,EAAM9D,IAAK,CAC7D,IAAID,EAAK4D,EAAI3D,EAAK,EAClBoD,EAAIK,EAAK,MAAM1D,GAAK,EACpBe,EAAInB,EAAI,MAAMK,GAAK,EACnBQ,EAAI4C,EAAItC,EAAI+C,EACZD,GAAWpD,EAAI,SAAa,EAC5BqD,EAAQrD,EAAI,QACd,CACAwB,EAAI,MAAM2B,GAAKE,EAAQ,EACvB5B,EAAQ2B,EAAS,CACnB,CACA,OAAI3B,IAAU,EACZD,EAAI,MAAM2B,GAAK1B,EAAQ,EAEvBD,EAAI,SAGCA,EAAI,OAAO,CACpB,CAKA,IAAI+B,GAAc,SAAsBN,EAAM9D,EAAKqC,EAAK,CACtD,IAAIoB,EAAIK,EAAK,MACT3C,EAAInB,EAAI,MACRqE,EAAIhC,EAAI,MACRhB,EAAI,EACJ0C,EACAO,EACAlB,EACAmB,EAAKd,EAAE,GAAK,EACZe,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,EAAKjB,EAAE,GAAK,EACZkB,EAAMD,EAAK,KACXE,GAAMF,IAAO,GACbG,GAAKpB,EAAE,GAAK,EACZqB,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKvB,EAAE,GAAK,EACZwB,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK1B,EAAE,GAAK,EACZ2B,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK7B,EAAE,GAAK,EACZ8B,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKhC,EAAE,GAAK,EACZiC,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKnC,EAAE,GAAK,EACZoC,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKtC,EAAE,GAAK,EACZuC,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKzC,EAAE,GAAK,EACZ0C,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKlF,EAAE,GAAK,EACZmF,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKrF,EAAE,GAAK,EACZsF,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKxF,EAAE,GAAK,EACZyF,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK3F,EAAE,GAAK,EACZ4F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK9F,EAAE,GAAK,EACZ+F,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKjG,EAAE,GAAK,EACZkG,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,EAAKpG,EAAE,GAAK,EACZqG,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,EAAKvG,EAAE,GAAK,EACZwG,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,EAAK1G,EAAE,GAAK,EACZ2G,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,GAAK7G,EAAE,GAAK,EACZ8G,GAAMD,GAAK,KACXE,GAAMF,KAAO,GAEjB3F,EAAI,SAAWyB,EAAK,SAAW9D,EAAI,SACnCqC,EAAI,OAAS,GAEb0B,EAAK,KAAK,KAAKS,EAAK8B,EAAG,EACvBhC,EAAM,KAAK,KAAKE,EAAK+B,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKG,EAAK6B,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKqB,EAAK8B,EAAG,EACvB,IAAI4B,IAAQ9G,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAM6D,KAAO,IAAO,EAChDA,IAAM,SAENpE,EAAK,KAAK,KAAKY,EAAK2B,EAAG,EACvBhC,EAAM,KAAK,KAAKK,EAAK4B,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKM,GAAK0B,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKwB,GAAK2B,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKS,EAAKiC,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKE,EAAKkC,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKG,EAAKgC,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKqB,EAAKiC,EAAG,EAAK,EAClC,IAAI0B,IAAQ/G,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAM8D,KAAO,IAAO,EAChDA,IAAM,SAENrE,EAAK,KAAK,KAAKe,GAAKwB,EAAG,EACvBhC,EAAM,KAAK,KAAKQ,GAAKyB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKS,GAAKuB,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK2B,GAAKwB,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKY,EAAK8B,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKK,EAAK+B,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKM,GAAK6B,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKwB,GAAK8B,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKS,EAAKoC,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKE,EAAKqC,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKG,EAAKmC,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKqB,EAAKoC,EAAG,EAAK,EAClC,IAAIwB,IAAQhH,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAENtE,EAAK,KAAK,KAAKkB,GAAKqB,EAAG,EACvBhC,EAAM,KAAK,KAAKW,GAAKsB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKY,GAAKoB,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK8B,GAAKqB,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKe,GAAK2B,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKQ,GAAK4B,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKS,GAAK0B,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK2B,GAAK2B,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKY,EAAKiC,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKK,EAAKkC,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKM,GAAKgC,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKwB,GAAKiC,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKS,EAAKuC,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKE,EAAKwC,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKG,EAAKsC,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKqB,EAAKuC,EAAG,EAAK,EAClC,IAAIsB,IAAQjH,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAENvE,EAAK,KAAK,KAAKqB,GAAKkB,EAAG,EACvBhC,EAAM,KAAK,KAAKc,GAAKmB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKe,GAAKiB,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKiC,GAAKkB,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKkB,GAAKwB,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKW,GAAKyB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKY,GAAKuB,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK8B,GAAKwB,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKe,GAAK8B,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKQ,GAAK+B,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKS,GAAK6B,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK2B,GAAK8B,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKY,EAAKoC,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKK,EAAKqC,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKM,GAAKmC,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKwB,GAAKoC,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKS,EAAK0C,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKE,EAAK2C,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKG,EAAKyC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKqB,EAAK0C,EAAG,EAAK,EAClC,IAAIoB,IAAQlH,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENxE,EAAK,KAAK,KAAKwB,GAAKe,EAAG,EACvBhC,EAAM,KAAK,KAAKiB,GAAKgB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKkB,GAAKc,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKoC,GAAKe,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKqB,GAAKqB,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKc,GAAKsB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKe,GAAKoB,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKiC,GAAKqB,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKkB,GAAK2B,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKW,GAAK4B,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKY,GAAK0B,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK8B,GAAK2B,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKe,GAAKiC,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKQ,GAAKkC,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKS,GAAKgC,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK2B,GAAKiC,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKY,EAAKuC,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKK,EAAKwC,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKM,GAAKsC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKwB,GAAKuC,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKS,EAAK6C,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKE,EAAK8C,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKG,EAAK4C,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKqB,EAAK6C,EAAG,EAAK,EAClC,IAAIkB,IAAQnH,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENzE,EAAK,KAAK,KAAK2B,GAAKY,EAAG,EACvBhC,EAAM,KAAK,KAAKoB,GAAKa,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKqB,GAAKW,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKuC,GAAKY,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKwB,GAAKkB,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKiB,GAAKmB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKkB,GAAKiB,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKoC,GAAKkB,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKqB,GAAKwB,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKc,GAAKyB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKe,GAAKuB,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKiC,GAAKwB,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKkB,GAAK8B,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKW,GAAK+B,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKY,GAAK6B,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK8B,GAAK8B,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKe,GAAKoC,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKQ,GAAKqC,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKS,GAAKmC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK2B,GAAKoC,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKY,EAAK0C,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKK,EAAK2C,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKM,GAAKyC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKwB,GAAK0C,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKS,EAAKgD,CAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKE,EAAKiD,CAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKG,EAAK+C,CAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKqB,EAAKgD,CAAG,EAAK,EAClC,IAAIgB,IAAQpH,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAEN1E,EAAK,KAAK,KAAK8B,GAAKS,EAAG,EACvBhC,EAAM,KAAK,KAAKuB,GAAKU,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKwB,GAAKQ,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK0C,GAAKS,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAK2B,GAAKe,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKoB,GAAKgB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKqB,GAAKc,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKuC,GAAKe,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKwB,GAAKqB,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKiB,GAAKsB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKkB,GAAKoB,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKoC,GAAKqB,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKqB,GAAK2B,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKc,GAAK4B,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKe,GAAK0B,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKiC,GAAK2B,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKkB,GAAKiC,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKW,GAAKkC,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKY,GAAKgC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK8B,GAAKiC,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKe,GAAKuC,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKQ,GAAKwC,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKS,GAAKsC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK2B,GAAKuC,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKY,EAAK6C,CAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKK,EAAK8C,CAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKM,GAAK4C,CAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKwB,GAAK6C,CAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKS,EAAKmD,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKE,EAAKoD,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKG,EAAKkD,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKqB,EAAKmD,CAAG,EAAK,EAClC,IAAIc,IAAQrH,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAEN3E,EAAK,KAAK,KAAKiC,GAAKM,EAAG,EACvBhC,EAAM,KAAK,KAAK0B,GAAKO,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAK2B,GAAKK,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK6C,GAAKM,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAK8B,GAAKY,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKuB,GAAKa,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKwB,GAAKW,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK0C,GAAKY,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAK2B,GAAKkB,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKoB,GAAKmB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKqB,GAAKiB,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKuC,GAAKkB,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKwB,GAAKwB,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKiB,GAAKyB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKkB,GAAKuB,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKoC,GAAKwB,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKqB,GAAK8B,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKc,GAAK+B,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKe,GAAK6B,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKiC,GAAK8B,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKkB,GAAKoC,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKW,GAAKqC,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKY,GAAKmC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK8B,GAAKoC,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKe,GAAK0C,CAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKQ,GAAK2C,CAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKS,GAAKyC,CAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK2B,GAAK0C,CAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKY,EAAKgD,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKK,EAAKiD,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKM,GAAK+C,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKwB,GAAKgD,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKS,EAAKsD,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKE,EAAKuD,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKG,EAAKqD,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKqB,EAAKsD,CAAG,EAAK,EAClC,IAAIY,IAAQtH,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAEN5E,EAAK,KAAK,KAAKoC,GAAKG,EAAG,EACvBhC,EAAM,KAAK,KAAK6B,GAAKI,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAK8B,GAAKE,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKgD,GAAKG,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKiC,GAAKS,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAK0B,GAAKU,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAK2B,GAAKQ,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK6C,GAAKS,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAK8B,GAAKe,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKuB,GAAKgB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKwB,GAAKc,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK0C,GAAKe,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAK2B,GAAKqB,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKoB,GAAKsB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKqB,GAAKoB,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKuC,GAAKqB,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKwB,GAAK2B,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKiB,GAAK4B,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKkB,GAAK0B,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKoC,GAAK2B,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKqB,GAAKiC,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKc,GAAKkC,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKe,GAAKgC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKiC,GAAKiC,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKkB,GAAKuC,CAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKW,GAAKwC,CAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKY,GAAKsC,CAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK8B,GAAKuC,CAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKe,GAAK6C,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKQ,GAAK8C,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKS,GAAK4C,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK2B,GAAK6C,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKY,EAAKmD,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKK,EAAKoD,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKM,GAAKkD,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKwB,GAAKmD,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKS,EAAKyD,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKE,EAAK0D,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKG,EAAKwD,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKqB,EAAKyD,EAAG,EAAK,EAClC,IAAIU,IAAQvH,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAEN7E,EAAK,KAAK,KAAKoC,GAAKM,EAAG,EACvBnC,EAAM,KAAK,KAAK6B,GAAKO,EAAG,EACxBpC,EAAOA,EAAM,KAAK,KAAK8B,GAAKK,EAAG,EAAK,EACpCrD,EAAK,KAAK,KAAKgD,GAAKM,EAAG,EACvB3C,EAAMA,EAAK,KAAK,KAAKiC,GAAKY,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAK0B,GAAKa,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAK2B,GAAKW,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK6C,GAAKY,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAK8B,GAAKkB,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKuB,GAAKmB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKwB,GAAKiB,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK0C,GAAKkB,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAK2B,GAAKwB,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKoB,GAAKyB,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKqB,GAAKuB,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKuC,GAAKwB,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKwB,GAAK8B,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKiB,GAAK+B,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKkB,GAAK6B,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKoC,GAAK8B,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKqB,GAAKoC,CAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKc,GAAKqC,CAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKe,GAAKmC,CAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKiC,GAAKoC,CAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKkB,GAAK0C,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKW,GAAK2C,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKY,GAAKyC,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK8B,GAAK0C,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKe,GAAKgD,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKQ,GAAKiD,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKS,GAAK+C,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK2B,GAAKgD,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKY,EAAKsD,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKK,EAAKuD,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKM,GAAKqD,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKwB,GAAKsD,EAAG,EAAK,EAClC,IAAIW,IAASxH,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAMuE,KAAQ,IAAO,EACjDA,IAAO,SAEP9E,EAAK,KAAK,KAAKoC,GAAKS,EAAG,EACvBtC,EAAM,KAAK,KAAK6B,GAAKU,EAAG,EACxBvC,EAAOA,EAAM,KAAK,KAAK8B,GAAKQ,EAAG,EAAK,EACpCxD,EAAK,KAAK,KAAKgD,GAAKS,EAAG,EACvB9C,EAAMA,EAAK,KAAK,KAAKiC,GAAKe,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAK0B,GAAKgB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAK2B,GAAKc,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK6C,GAAKe,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAK8B,GAAKqB,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKuB,GAAKsB,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKwB,GAAKoB,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK0C,GAAKqB,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAK2B,GAAK2B,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKoB,GAAK4B,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKqB,GAAK0B,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKuC,GAAK2B,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKwB,GAAKiC,CAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKiB,GAAKkC,CAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKkB,GAAKgC,CAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKoC,GAAKiC,CAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKqB,GAAKuC,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKc,GAAKwC,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKe,GAAKsC,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKiC,GAAKuC,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKkB,GAAK6C,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKW,GAAK8C,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKY,GAAK4C,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK8B,GAAK6C,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKe,GAAKmD,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKQ,GAAKoD,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKS,GAAKkD,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK2B,GAAKmD,EAAG,EAAK,EAClC,IAAIY,IAASzH,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEP/E,EAAK,KAAK,KAAKoC,GAAKY,EAAG,EACvBzC,EAAM,KAAK,KAAK6B,GAAKa,EAAG,EACxB1C,EAAOA,EAAM,KAAK,KAAK8B,GAAKW,EAAG,EAAK,EACpC3D,EAAK,KAAK,KAAKgD,GAAKY,EAAG,EACvBjD,EAAMA,EAAK,KAAK,KAAKiC,GAAKkB,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAK0B,GAAKmB,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAK2B,GAAKiB,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK6C,GAAKkB,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAK8B,GAAKwB,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKuB,GAAKyB,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKwB,GAAKuB,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK0C,GAAKwB,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAK2B,GAAK8B,CAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKoB,GAAK+B,CAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKqB,GAAK6B,CAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKuC,GAAK8B,CAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKwB,GAAKoC,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKiB,GAAKqC,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKkB,GAAKmC,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKoC,GAAKoC,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKqB,GAAK0C,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKc,GAAK2C,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKe,GAAKyC,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKiC,GAAK0C,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKkB,GAAKgD,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKW,GAAKiD,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKY,GAAK+C,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK8B,GAAKgD,EAAG,EAAK,EAClC,IAAIa,IAAS1H,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPhF,EAAK,KAAK,KAAKoC,GAAKe,EAAG,EACvB5C,EAAM,KAAK,KAAK6B,GAAKgB,EAAG,EACxB7C,EAAOA,EAAM,KAAK,KAAK8B,GAAKc,EAAG,EAAK,EACpC9D,EAAK,KAAK,KAAKgD,GAAKe,EAAG,EACvBpD,EAAMA,EAAK,KAAK,KAAKiC,GAAKqB,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAK0B,GAAKsB,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAK2B,GAAKoB,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK6C,GAAKqB,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAK8B,GAAK2B,CAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKuB,GAAK4B,CAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKwB,GAAK0B,CAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK0C,GAAK2B,CAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAK2B,GAAKiC,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKoB,GAAKkC,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKqB,GAAKgC,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKuC,GAAKiC,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKwB,GAAKuC,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKiB,GAAKwC,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKkB,GAAKsC,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKoC,GAAKuC,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKqB,GAAK6C,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKc,GAAK8C,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKe,GAAK4C,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKiC,GAAK6C,EAAG,EAAK,EAClC,IAAIc,IAAS3H,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPjF,EAAK,KAAK,KAAKoC,GAAKkB,EAAG,EACvB/C,EAAM,KAAK,KAAK6B,GAAKmB,EAAG,EACxBhD,EAAOA,EAAM,KAAK,KAAK8B,GAAKiB,EAAG,EAAK,EACpCjE,EAAK,KAAK,KAAKgD,GAAKkB,EAAG,EACvBvD,EAAMA,EAAK,KAAK,KAAKiC,GAAKwB,CAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAK0B,GAAKyB,CAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAK2B,GAAKuB,CAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK6C,GAAKwB,CAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAK8B,GAAK8B,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKuB,GAAK+B,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKwB,GAAK6B,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK0C,GAAK8B,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAK2B,GAAKoC,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKoB,GAAKqC,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKqB,GAAKmC,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKuC,GAAKoC,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKwB,GAAK0C,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKiB,GAAK2C,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKkB,GAAKyC,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKoC,GAAK0C,EAAG,EAAK,EAClC,IAAIe,GAAS5H,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAM2E,IAAQ,IAAO,EACjDA,GAAO,SAEPlF,EAAK,KAAK,KAAKoC,GAAKqB,CAAG,EACvBlD,EAAM,KAAK,KAAK6B,GAAKsB,CAAG,EACxBnD,EAAOA,EAAM,KAAK,KAAK8B,GAAKoB,CAAG,EAAK,EACpCpE,EAAK,KAAK,KAAKgD,GAAKqB,CAAG,EACvB1D,EAAMA,EAAK,KAAK,KAAKiC,GAAK2B,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAK0B,GAAK4B,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAK2B,GAAK0B,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK6C,GAAK2B,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAK8B,GAAKiC,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKuB,GAAKkC,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKwB,GAAKgC,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK0C,GAAKiC,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAK2B,GAAKuC,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKoB,GAAKwC,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKqB,GAAKsC,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKuC,GAAKuC,EAAG,EAAK,EAClC,IAAIgB,GAAS7H,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAM4E,IAAQ,IAAO,EACjDA,GAAO,SAEPnF,EAAK,KAAK,KAAKoC,GAAKwB,CAAG,EACvBrD,EAAM,KAAK,KAAK6B,GAAKyB,CAAG,EACxBtD,EAAOA,EAAM,KAAK,KAAK8B,GAAKuB,CAAG,EAAK,EACpCvE,EAAK,KAAK,KAAKgD,GAAKwB,CAAG,EACvB7D,EAAMA,EAAK,KAAK,KAAKiC,GAAK8B,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAK0B,GAAK+B,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAK2B,GAAK6B,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK6C,GAAK8B,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAK8B,GAAKoC,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKuB,GAAKqC,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKwB,GAAKmC,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK0C,GAAKoC,EAAG,EAAK,EAClC,IAAIiB,IAAS9H,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEPpF,EAAK,KAAK,KAAKoC,GAAK2B,CAAG,EACvBxD,EAAM,KAAK,KAAK6B,GAAK4B,CAAG,EACxBzD,EAAOA,EAAM,KAAK,KAAK8B,GAAK0B,CAAG,EAAK,EACpC1E,EAAK,KAAK,KAAKgD,GAAK2B,CAAG,EACvBhE,EAAMA,EAAK,KAAK,KAAKiC,GAAKiC,EAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAK0B,GAAKkC,EAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAK2B,GAAKgC,EAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK6C,GAAKiC,EAAG,EAAK,EAClC,IAAIkB,IAAS/H,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEPrF,EAAK,KAAK,KAAKoC,GAAK8B,EAAG,EACvB3D,EAAM,KAAK,KAAK6B,GAAK+B,EAAG,EACxB5D,EAAOA,EAAM,KAAK,KAAK8B,GAAK6B,EAAG,EAAK,EACpC7E,EAAK,KAAK,KAAKgD,GAAK8B,EAAG,EACvB,IAAImB,IAAShI,EAAI0C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtD,OAAAjD,GAAO+B,GAAMkB,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SACPhF,EAAE,GAAK8D,GACP9D,EAAE,GAAK+D,GACP/D,EAAE,GAAKgE,GACPhE,EAAE,GAAKiE,GACPjE,EAAE,GAAKkE,GACPlE,EAAE,GAAKmE,GACPnE,EAAE,GAAKoE,GACPpE,EAAE,GAAKqE,GACPrE,EAAE,GAAKsE,GACPtE,EAAE,GAAKuE,GACPvE,EAAE,IAAMwE,GACRxE,EAAE,IAAMyE,GACRzE,EAAE,IAAM0E,GACR1E,EAAE,IAAM2E,GACR3E,EAAE,IAAM4E,EACR5E,EAAE,IAAM6E,EACR7E,EAAE,IAAM8E,GACR9E,EAAE,IAAM+E,GACR/E,EAAE,IAAMgF,GACJhI,IAAM,IACRgD,EAAE,IAAMhD,EACRgB,EAAI,UAECA,CACT,EAGK,KAAK,OACR+B,GAAcP,IAGhB,SAASyF,EAAUxF,EAAM9D,EAAKqC,EAAK,CACjCA,EAAI,SAAWrC,EAAI,SAAW8D,EAAK,SACnCzB,EAAI,OAASyB,EAAK,OAAS9D,EAAI,OAI/B,QAFIsC,EAAQ,EACRiH,EAAU,EACLvF,EAAI,EAAGA,EAAI3B,EAAI,OAAS,EAAG2B,IAAK,CAGvC,IAAIC,EAASsF,EACbA,EAAU,EAGV,QAFIrF,EAAQ5B,EAAQ,SAChB6B,EAAO,KAAK,IAAIH,EAAGhE,EAAI,OAAS,CAAC,EAC5BK,EAAI,KAAK,IAAI,EAAG2D,EAAIF,EAAK,OAAS,CAAC,EAAGzD,GAAK8D,EAAM9D,IAAK,CAC7D,IAAID,EAAI4D,EAAI3D,EACRoD,EAAIK,EAAK,MAAM1D,GAAK,EACpBe,EAAInB,EAAI,MAAMK,GAAK,EACnBQ,EAAI4C,EAAItC,EAER4C,EAAKlD,EAAI,SACboD,EAAUA,GAAWpD,EAAI,SAAa,GAAM,EAC5CkD,EAAMA,EAAKG,EAAS,EACpBA,EAAQH,EAAK,SACbE,EAAUA,GAAUF,IAAO,IAAO,EAElCwF,GAAWtF,IAAW,GACtBA,GAAU,QACZ,CACA5B,EAAI,MAAM2B,GAAKE,EACf5B,EAAQ2B,EACRA,EAASsF,CACX,CACA,OAAIjH,IAAU,EACZD,EAAI,MAAM2B,GAAK1B,EAEfD,EAAI,SAGCA,EAAI,OAAO,CACpB,CAEA,SAASmH,GAAY1F,EAAM9D,EAAKqC,EAAK,CAInC,OAAOiH,EAASxF,EAAM9D,EAAKqC,CAAG,CAChC,CAEA1C,EAAG,UAAU,MAAQ,SAAgBK,EAAKqC,EAAK,CAC7C,IAAIU,EACA3B,EAAM,KAAK,OAASpB,EAAI,OAC5B,OAAI,KAAK,SAAW,IAAMA,EAAI,SAAW,GACvC+C,EAAMqB,GAAY,KAAMpE,EAAKqC,CAAG,EACvBjB,EAAM,GACf2B,EAAMc,GAAW,KAAM7D,EAAKqC,CAAG,EACtBjB,EAAM,KACf2B,EAAMuG,EAAS,KAAMtJ,EAAKqC,CAAG,EAE7BU,EAAMyG,GAAW,KAAMxJ,EAAKqC,CAAG,EAG1BU,CACT,EAKA,SAAS0G,GAAMC,EAAGC,EAAG,CACnB,KAAK,EAAID,EACT,KAAK,EAAIC,CACX,CAEAF,GAAK,UAAU,QAAU,SAAkBG,EAAG,CAG5C,QAFIzG,EAAI,IAAI,MAAMyG,CAAC,EACfC,EAAIlK,EAAG,UAAU,WAAWiK,CAAC,EAAI,EAC5BxJ,EAAI,EAAGA,EAAIwJ,EAAGxJ,IACrB+C,EAAE/C,GAAK,KAAK,OAAOA,EAAGyJ,EAAGD,CAAC,EAG5B,OAAOzG,CACT,EAGAsG,GAAK,UAAU,OAAS,SAAiBC,EAAGG,EAAGD,EAAG,CAChD,GAAIF,IAAM,GAAKA,IAAME,EAAI,EAAG,OAAOF,EAGnC,QADII,EAAK,EACA1J,EAAI,EAAGA,EAAIyJ,EAAGzJ,IACrB0J,IAAOJ,EAAI,IAAOG,EAAIzJ,EAAI,EAC1BsJ,IAAM,EAGR,OAAOI,CACT,EAIAL,GAAK,UAAU,QAAU,SAAkBM,EAAKC,EAAKC,EAAKC,EAAMC,EAAMP,EAAG,CACvE,QAASxJ,EAAI,EAAGA,EAAIwJ,EAAGxJ,IACrB8J,EAAK9J,GAAK4J,EAAID,EAAI3J,IAClB+J,EAAK/J,GAAK6J,EAAIF,EAAI3J,GAEtB,EAEAqJ,GAAK,UAAU,UAAY,SAAoBO,EAAKC,EAAKC,EAAMC,EAAMP,EAAGG,EAAK,CAC3E,KAAK,QAAQA,EAAKC,EAAKC,EAAKC,EAAMC,EAAMP,CAAC,EAEzC,QAASQ,EAAI,EAAGA,EAAIR,EAAGQ,IAAM,EAM3B,QALIP,EAAIO,GAAK,EAETC,EAAQ,KAAK,IAAI,EAAI,KAAK,GAAKR,CAAC,EAChCS,EAAQ,KAAK,IAAI,EAAI,KAAK,GAAKT,CAAC,EAE3BU,EAAI,EAAGA,EAAIX,EAAGW,GAAKV,EAI1B,QAHIW,EAASH,EACTI,EAASH,EAEJjK,EAAI,EAAGA,EAAI+J,EAAG/J,IAAK,CAC1B,IAAIqK,EAAKR,EAAKK,EAAIlK,GACdsK,GAAKR,EAAKI,EAAIlK,GAEduK,GAAKV,EAAKK,EAAIlK,EAAI+J,GAClBS,GAAKV,EAAKI,EAAIlK,EAAI+J,GAElBU,GAAKN,EAASI,GAAKH,EAASI,GAEhCA,GAAKL,EAASK,GAAKJ,EAASG,GAC5BA,GAAKE,GAELZ,EAAKK,EAAIlK,GAAKqK,EAAKE,GACnBT,EAAKI,EAAIlK,GAAKsK,GAAKE,GAEnBX,EAAKK,EAAIlK,EAAI+J,GAAKM,EAAKE,GACvBT,EAAKI,EAAIlK,EAAI+J,GAAKO,GAAKE,GAGnBxK,IAAMwJ,IACRiB,GAAKT,EAAQG,EAASF,EAAQG,EAE9BA,EAASJ,EAAQI,EAASH,EAAQE,EAClCA,EAASM,GAEb,CAGN,EAEArB,GAAK,UAAU,YAAc,SAAsBsB,EAAGC,EAAG,CACvD,IAAIpB,EAAI,KAAK,IAAIoB,EAAGD,CAAC,EAAI,EACrBE,EAAMrB,EAAI,EACVxJ,EAAI,EACR,IAAKwJ,EAAIA,EAAI,EAAI,EAAGA,EAAGA,EAAIA,IAAM,EAC/BxJ,IAGF,MAAO,IAAKA,EAAI,EAAI6K,CACtB,EAEAxB,GAAK,UAAU,UAAY,SAAoBO,EAAKC,EAAKL,EAAG,CAC1D,GAAI,EAAAA,GAAK,GAET,QAASxJ,EAAI,EAAGA,EAAIwJ,EAAI,EAAGxJ,IAAK,CAC9B,IAAI+C,EAAI6G,EAAI5J,GAEZ4J,EAAI5J,GAAK4J,EAAIJ,EAAIxJ,EAAI,GACrB4J,EAAIJ,EAAIxJ,EAAI,GAAK+C,EAEjBA,EAAI8G,EAAI7J,GAER6J,EAAI7J,GAAK,CAAC6J,EAAIL,EAAIxJ,EAAI,GACtB6J,EAAIL,EAAIxJ,EAAI,GAAK,CAAC+C,CACpB,CACF,EAEAsG,GAAK,UAAU,aAAe,SAAuByB,EAAItB,EAAG,CAE1D,QADItH,EAAQ,EACHlC,EAAI,EAAGA,EAAIwJ,EAAI,EAAGxJ,IAAK,CAC9B,IAAIE,EAAI,KAAK,MAAM4K,EAAG,EAAI9K,EAAI,GAAKwJ,CAAC,EAAI,KACtC,KAAK,MAAMsB,EAAG,EAAI9K,GAAKwJ,CAAC,EACxBtH,EAEF4I,EAAG9K,GAAKE,EAAI,SAERA,EAAI,SACNgC,EAAQ,EAERA,EAAQhC,EAAI,SAAY,CAE5B,CAEA,OAAO4K,CACT,EAEAzB,GAAK,UAAU,WAAa,SAAqByB,EAAI9J,EAAK4I,EAAKJ,EAAG,CAEhE,QADItH,EAAQ,EACHlC,EAAI,EAAGA,EAAIgB,EAAKhB,IACvBkC,EAAQA,GAAS4I,EAAG9K,GAAK,GAEzB4J,EAAI,EAAI5J,GAAKkC,EAAQ,KAAQA,EAAQA,IAAU,GAC/C0H,EAAI,EAAI5J,EAAI,GAAKkC,EAAQ,KAAQA,EAAQA,IAAU,GAIrD,IAAKlC,EAAI,EAAIgB,EAAKhB,EAAIwJ,EAAG,EAAExJ,EACzB4J,EAAI5J,GAAK,EAGXhB,EAAOkD,IAAU,CAAC,EAClBlD,GAAQkD,EAAQ,SAAa,CAAC,CAChC,EAEAmH,GAAK,UAAU,KAAO,SAAeG,EAAG,CAEtC,QADIuB,EAAK,IAAI,MAAMvB,CAAC,EACXxJ,EAAI,EAAGA,EAAIwJ,EAAGxJ,IACrB+K,EAAG/K,GAAK,EAGV,OAAO+K,CACT,EAEA1B,GAAK,UAAU,KAAO,SAAeC,EAAGC,EAAGtH,EAAK,CAC9C,IAAIuH,EAAI,EAAI,KAAK,YAAYF,EAAE,OAAQC,EAAE,MAAM,EAE3CI,EAAM,KAAK,QAAQH,CAAC,EAEpBwB,EAAI,KAAK,KAAKxB,CAAC,EAEfI,EAAM,IAAI,MAAMJ,CAAC,EACjByB,EAAO,IAAI,MAAMzB,CAAC,EAClB0B,EAAO,IAAI,MAAM1B,CAAC,EAElB2B,EAAO,IAAI,MAAM3B,CAAC,EAClB4B,EAAQ,IAAI,MAAM5B,CAAC,EACnB6B,EAAQ,IAAI,MAAM7B,CAAC,EAEnB8B,EAAOrJ,EAAI,MACfqJ,EAAK,OAAS9B,EAEd,KAAK,WAAWF,EAAE,MAAOA,EAAE,OAAQM,EAAKJ,CAAC,EACzC,KAAK,WAAWD,EAAE,MAAOA,EAAE,OAAQ4B,EAAM3B,CAAC,EAE1C,KAAK,UAAUI,EAAKoB,EAAGC,EAAMC,EAAM1B,EAAGG,CAAG,EACzC,KAAK,UAAUwB,EAAMH,EAAGI,EAAOC,EAAO7B,EAAGG,CAAG,EAE5C,QAAS3J,EAAI,EAAGA,EAAIwJ,EAAGxJ,IAAK,CAC1B,IAAI0K,EAAKO,EAAKjL,GAAKoL,EAAMpL,GAAKkL,EAAKlL,GAAKqL,EAAMrL,GAC9CkL,EAAKlL,GAAKiL,EAAKjL,GAAKqL,EAAMrL,GAAKkL,EAAKlL,GAAKoL,EAAMpL,GAC/CiL,EAAKjL,GAAK0K,CACZ,CAEA,YAAK,UAAUO,EAAMC,EAAM1B,CAAC,EAC5B,KAAK,UAAUyB,EAAMC,EAAMI,EAAMN,EAAGxB,EAAGG,CAAG,EAC1C,KAAK,UAAU2B,EAAMN,EAAGxB,CAAC,EACzB,KAAK,aAAa8B,EAAM9B,CAAC,EAEzBvH,EAAI,SAAWqH,EAAE,SAAWC,EAAE,SAC9BtH,EAAI,OAASqH,EAAE,OAASC,EAAE,OACnBtH,EAAI,OAAO,CACpB,EAGA1C,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,IAAIqC,EAAM,IAAI1C,EAAG,IAAI,EACrB,OAAA0C,EAAI,MAAQ,IAAI,MAAM,KAAK,OAASrC,EAAI,MAAM,EACvC,KAAK,MAAMA,EAAKqC,CAAG,CAC5B,EAGA1C,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,IAAIqC,EAAM,IAAI1C,EAAG,IAAI,EACrB,OAAA0C,EAAI,MAAQ,IAAI,MAAM,KAAK,OAASrC,EAAI,MAAM,EACvCwJ,GAAW,KAAMxJ,EAAKqC,CAAG,CAClC,EAGA1C,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,EAAK,IAAI,CACrC,EAEAL,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CACxC,IAAI2L,EAAW3L,EAAM,EACjB2L,IAAU3L,EAAM,CAACA,GAErBZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAItB,QADIsC,EAAQ,EACHlC,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAIE,GAAK,KAAK,MAAMF,GAAK,GAAKJ,EAC1B+D,GAAMzD,EAAI,WAAcgC,EAAQ,UACpCA,IAAU,GACVA,GAAUhC,EAAI,SAAa,EAE3BgC,GAASyB,IAAO,GAChB,KAAK,MAAM3D,GAAK2D,EAAK,QACvB,CAEA,OAAIzB,IAAU,IACZ,KAAK,MAAMlC,GAAKkC,EAChB,KAAK,UAGAqJ,EAAW,KAAK,KAAK,EAAI,IAClC,EAEAhM,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAGAL,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,IAAI,IAAI,CACtB,EAGAA,EAAG,UAAU,KAAO,UAAiB,CACnC,OAAO,KAAK,KAAK,KAAK,MAAM,CAAC,CAC/B,EAGAA,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,IAAIM,EAAI+C,EAAWrD,CAAG,EACtB,GAAIM,EAAE,SAAW,EAAG,OAAO,IAAIX,EAAG,CAAC,EAInC,QADIoD,EAAM,KACD3C,EAAI,EAAGA,EAAIE,EAAE,QAChBA,EAAEF,KAAO,EADeA,IAAK2C,EAAMA,EAAI,IAAI,EAC/C,CAGF,GAAI,EAAE3C,EAAIE,EAAE,OACV,QAASsL,EAAI7I,EAAI,IAAI,EAAG3C,EAAIE,EAAE,OAAQF,IAAKwL,EAAIA,EAAE,IAAI,EAC/CtL,EAAEF,KAAO,IAEb2C,EAAMA,EAAI,IAAI6I,CAAC,GAInB,OAAO7I,CACT,EAGApD,EAAG,UAAU,OAAS,SAAiBkM,EAAM,CAC3CzM,EAAO,OAAOyM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAIhL,EAAIgL,EAAO,GACXzB,GAAKyB,EAAOhL,GAAK,GACjBiL,EAAa,WAAe,GAAKjL,GAAQ,GAAKA,EAC9CT,EAEJ,GAAIS,IAAM,EAAG,CACX,IAAIyB,EAAQ,EAEZ,IAAKlC,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CAChC,IAAI2L,EAAW,KAAK,MAAM3L,GAAK0L,EAC3BzK,GAAM,KAAK,MAAMjB,GAAK,GAAK2L,GAAalL,EAC5C,KAAK,MAAMT,GAAKiB,EAAIiB,EACpBA,EAAQyJ,IAAc,GAAKlL,CAC7B,CAEIyB,IACF,KAAK,MAAMlC,GAAKkC,EAChB,KAAK,SAET,CAEA,GAAI8H,IAAM,EAAG,CACX,IAAKhK,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAChC,KAAK,MAAMA,EAAIgK,GAAK,KAAK,MAAMhK,GAGjC,IAAKA,EAAI,EAAGA,EAAIgK,EAAGhK,IACjB,KAAK,MAAMA,GAAK,EAGlB,KAAK,QAAUgK,CACjB,CAEA,OAAO,KAAK,OAAO,CACrB,EAEAzK,EAAG,UAAU,MAAQ,SAAgBkM,EAAM,CAEzC,OAAAzM,EAAO,KAAK,WAAa,CAAC,EACnB,KAAK,OAAOyM,CAAI,CACzB,EAKAlM,EAAG,UAAU,OAAS,SAAiBkM,EAAMG,EAAMC,EAAU,CAC3D7M,EAAO,OAAOyM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAIK,EACAF,EACFE,GAAKF,EAAQA,EAAO,IAAO,GAE3BE,EAAI,EAGN,IAAIrL,EAAIgL,EAAO,GACXzB,EAAI,KAAK,KAAKyB,EAAOhL,GAAK,GAAI,KAAK,MAAM,EACzCsL,EAAO,SAAc,WAActL,GAAMA,EACzCuL,EAAcH,EAMlB,GAJAC,GAAK9B,EACL8B,EAAI,KAAK,IAAI,EAAGA,CAAC,EAGbE,EAAa,CACf,QAAShM,EAAI,EAAGA,EAAIgK,EAAGhK,IACrBgM,EAAY,MAAMhM,GAAK,KAAK,MAAMA,GAEpCgM,EAAY,OAAShC,CACvB,CAEA,GAAIA,IAAM,EAEH,GAAI,KAAK,OAASA,EAEvB,IADA,KAAK,QAAUA,EACVhK,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC3B,KAAK,MAAMA,GAAK,KAAK,MAAMA,EAAIgK,QAGjC,KAAK,MAAM,GAAK,EAChB,KAAK,OAAS,EAGhB,IAAI9H,EAAQ,EACZ,IAAKlC,EAAI,KAAK,OAAS,EAAGA,GAAK,IAAMkC,IAAU,GAAKlC,GAAK8L,GAAI9L,IAAK,CAChE,IAAIsB,EAAO,KAAK,MAAMtB,GAAK,EAC3B,KAAK,MAAMA,GAAMkC,GAAU,GAAKzB,EAAOa,IAASb,EAChDyB,EAAQZ,EAAOyK,CACjB,CAGA,OAAIC,GAAe9J,IAAU,IAC3B8J,EAAY,MAAMA,EAAY,UAAY9J,GAGxC,KAAK,SAAW,IAClB,KAAK,MAAM,GAAK,EAChB,KAAK,OAAS,GAGT,KAAK,OAAO,CACrB,EAEA3C,EAAG,UAAU,MAAQ,SAAgBkM,EAAMG,EAAMC,EAAU,CAEzD,OAAA7M,EAAO,KAAK,WAAa,CAAC,EACnB,KAAK,OAAOyM,EAAMG,EAAMC,CAAQ,CACzC,EAGAtM,EAAG,UAAU,KAAO,SAAekM,EAAM,CACvC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAI,CAChC,EAEAlM,EAAG,UAAU,MAAQ,SAAgBkM,EAAM,CACzC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGAlM,EAAG,UAAU,KAAO,SAAekM,EAAM,CACvC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAI,CAChC,EAEAlM,EAAG,UAAU,MAAQ,SAAgBkM,EAAM,CACzC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGAlM,EAAG,UAAU,MAAQ,SAAgB2D,EAAK,CACxClE,EAAO,OAAOkE,GAAQ,UAAYA,GAAO,CAAC,EAC1C,IAAIzC,EAAIyC,EAAM,GACV8G,GAAK9G,EAAMzC,GAAK,GAChB+K,EAAI,GAAK/K,EAGb,GAAI,KAAK,QAAUuJ,EAAG,MAAO,GAG7B,IAAI9J,EAAI,KAAK,MAAM8J,GAEnB,MAAO,CAAC,EAAE9J,EAAIsL,EAChB,EAGAjM,EAAG,UAAU,OAAS,SAAiBkM,EAAM,CAC3CzM,EAAO,OAAOyM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAIhL,EAAIgL,EAAO,GACXzB,GAAKyB,EAAOhL,GAAK,GAIrB,GAFAzB,EAAO,KAAK,WAAa,EAAG,yCAAyC,EAEjE,KAAK,QAAUgL,EACjB,OAAO,KAQT,GALIvJ,IAAM,GACRuJ,IAEF,KAAK,OAAS,KAAK,IAAIA,EAAG,KAAK,MAAM,EAEjCvJ,IAAM,EAAG,CACX,IAAIsL,EAAO,SAAc,WAActL,GAAMA,EAC7C,KAAK,MAAM,KAAK,OAAS,IAAMsL,CACjC,CAEA,OAAO,KAAK,OAAO,CACrB,EAGAxM,EAAG,UAAU,MAAQ,SAAgBkM,EAAM,CACzC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGAlM,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAGxC,OAFAZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAClBA,EAAM,EAAU,KAAK,MAAM,CAACA,CAAG,EAG/B,KAAK,WAAa,EAChB,KAAK,SAAW,IAAM,KAAK,MAAM,GAAK,IAAMA,GAC9C,KAAK,MAAM,GAAKA,GAAO,KAAK,MAAM,GAAK,GACvC,KAAK,SAAW,EACT,OAGT,KAAK,SAAW,EAChB,KAAK,MAAMA,CAAG,EACd,KAAK,SAAW,EACT,MAIF,KAAK,OAAOA,CAAG,CACxB,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,KAAK,MAAM,IAAMA,EAGjB,QAASI,EAAI,EAAGA,EAAI,KAAK,QAAU,KAAK,MAAMA,IAAM,SAAWA,IAC7D,KAAK,MAAMA,IAAM,SACbA,IAAM,KAAK,OAAS,EACtB,KAAK,MAAMA,EAAI,GAAK,EAEpB,KAAK,MAAMA,EAAI,KAGnB,YAAK,OAAS,KAAK,IAAI,KAAK,OAAQA,EAAI,CAAC,EAElC,IACT,EAGAT,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAGxC,GAFAZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAClBA,EAAM,EAAG,OAAO,KAAK,MAAM,CAACA,CAAG,EAEnC,GAAI,KAAK,WAAa,EACpB,YAAK,SAAW,EAChB,KAAK,MAAMA,CAAG,EACd,KAAK,SAAW,EACT,KAKT,GAFA,KAAK,MAAM,IAAMA,EAEb,KAAK,SAAW,GAAK,KAAK,MAAM,GAAK,EACvC,KAAK,MAAM,GAAK,CAAC,KAAK,MAAM,GAC5B,KAAK,SAAW,MAGhB,SAASI,EAAI,EAAGA,EAAI,KAAK,QAAU,KAAK,MAAMA,GAAK,EAAGA,IACpD,KAAK,MAAMA,IAAM,SACjB,KAAK,MAAMA,EAAI,IAAM,EAIzB,OAAO,KAAK,OAAO,CACrB,EAEAT,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,KAAO,UAAiB,CACnC,YAAK,SAAW,EAET,IACT,EAEAA,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,MAAM,EAAE,KAAK,CAC3B,EAEAA,EAAG,UAAU,aAAe,SAAuBK,EAAKkB,EAAKgC,EAAO,CAClE,IAAI9B,EAAMpB,EAAI,OAASkD,EACnB9C,EAEJ,KAAK,QAAQgB,CAAG,EAEhB,IAAId,EACAgC,EAAQ,EACZ,IAAKlC,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CAC/BE,GAAK,KAAK,MAAMF,EAAI8C,GAAS,GAAKZ,EAClC,IAAIpC,GAASF,EAAI,MAAMI,GAAK,GAAKc,EACjCZ,GAAKJ,EAAQ,SACboC,GAAShC,GAAK,KAAQJ,EAAQ,SAAa,GAC3C,KAAK,MAAME,EAAI8C,GAAS5C,EAAI,QAC9B,CACA,KAAOF,EAAI,KAAK,OAAS8C,EAAO9C,IAC9BE,GAAK,KAAK,MAAMF,EAAI8C,GAAS,GAAKZ,EAClCA,EAAQhC,GAAK,GACb,KAAK,MAAMF,EAAI8C,GAAS5C,EAAI,SAG9B,GAAIgC,IAAU,EAAG,OAAO,KAAK,OAAO,EAKpC,IAFAlD,EAAOkD,IAAU,EAAE,EACnBA,EAAQ,EACHlC,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC3BE,EAAI,EAAE,KAAK,MAAMF,GAAK,GAAKkC,EAC3BA,EAAQhC,GAAK,GACb,KAAK,MAAMF,GAAKE,EAAI,SAEtB,YAAK,SAAW,EAET,KAAK,OAAO,CACrB,EAEAX,EAAG,UAAU,SAAW,SAAmBK,EAAKqM,EAAM,CACpD,IAAInJ,EAAQ,KAAK,OAASlD,EAAI,OAE1ByD,EAAI,KAAK,MAAM,EACftC,EAAInB,EAGJsM,EAAMnL,EAAE,MAAMA,EAAE,OAAS,GAAK,EAC9BoL,EAAU,KAAK,WAAWD,CAAG,EACjCpJ,EAAQ,GAAKqJ,EACTrJ,IAAU,IACZ/B,EAAIA,EAAE,MAAM+B,CAAK,EACjBO,EAAE,OAAOP,CAAK,EACdoJ,EAAMnL,EAAE,MAAMA,EAAE,OAAS,GAAK,GAIhC,IAAI6J,EAAIvH,EAAE,OAAStC,EAAE,OACjByK,EAEJ,GAAIS,IAAS,MAAO,CAClBT,EAAI,IAAIjM,EAAG,IAAI,EACfiM,EAAE,OAASZ,EAAI,EACfY,EAAE,MAAQ,IAAI,MAAMA,EAAE,MAAM,EAC5B,QAASxL,EAAI,EAAGA,EAAIwL,EAAE,OAAQxL,IAC5BwL,EAAE,MAAMxL,GAAK,CAEjB,CAEA,IAAIoM,EAAO/I,EAAE,MAAM,EAAE,aAAatC,EAAG,EAAG6J,CAAC,EACrCwB,EAAK,WAAa,IACpB/I,EAAI+I,EACAZ,IACFA,EAAE,MAAMZ,GAAK,IAIjB,QAAS3K,EAAI2K,EAAI,EAAG3K,GAAK,EAAGA,IAAK,CAC/B,IAAIoM,GAAMhJ,EAAE,MAAMtC,EAAE,OAASd,GAAK,GAAK,UACpCoD,EAAE,MAAMtC,EAAE,OAASd,EAAI,GAAK,GAO/B,IAHAoM,EAAK,KAAK,IAAKA,EAAKH,EAAO,EAAG,QAAS,EAEvC7I,EAAE,aAAatC,EAAGsL,EAAIpM,CAAC,EAChBoD,EAAE,WAAa,GACpBgJ,IACAhJ,EAAE,SAAW,EACbA,EAAE,aAAatC,EAAG,EAAGd,CAAC,EACjBoD,EAAE,OAAO,IACZA,EAAE,UAAY,GAGdmI,IACFA,EAAE,MAAMvL,GAAKoM,EAEjB,CACA,OAAIb,GACFA,EAAE,OAAO,EAEXnI,EAAE,OAAO,EAGL4I,IAAS,OAASnJ,IAAU,GAC9BO,EAAE,OAAOP,CAAK,EAGT,CACL,IAAK0I,GAAK,KACV,IAAKnI,CACP,CACF,EAMA9D,EAAG,UAAU,OAAS,SAAiBK,EAAKqM,EAAMK,EAAU,CAG1D,GAFAtN,EAAO,CAACY,EAAI,OAAO,CAAC,EAEhB,KAAK,OAAO,EACd,MAAO,CACL,IAAK,IAAIL,EAAG,CAAC,EACb,IAAK,IAAIA,EAAG,CAAC,CACf,EAGF,IAAIgN,EAAKlL,EAAKsB,EACd,OAAI,KAAK,WAAa,GAAK/C,EAAI,WAAa,GAC1C+C,EAAM,KAAK,IAAI,EAAE,OAAO/C,EAAKqM,CAAI,EAE7BA,IAAS,QACXM,EAAM5J,EAAI,IAAI,IAAI,GAGhBsJ,IAAS,QACX5K,EAAMsB,EAAI,IAAI,IAAI,EACd2J,GAAYjL,EAAI,WAAa,GAC/BA,EAAI,KAAKzB,CAAG,GAIT,CACL,IAAK2M,EACL,IAAKlL,CACP,GAGE,KAAK,WAAa,GAAKzB,EAAI,WAAa,GAC1C+C,EAAM,KAAK,OAAO/C,EAAI,IAAI,EAAGqM,CAAI,EAE7BA,IAAS,QACXM,EAAM5J,EAAI,IAAI,IAAI,GAGb,CACL,IAAK4J,EACL,IAAK5J,EAAI,GACX,IAGG,KAAK,SAAW/C,EAAI,YAAc,GACrC+C,EAAM,KAAK,IAAI,EAAE,OAAO/C,EAAI,IAAI,EAAGqM,CAAI,EAEnCA,IAAS,QACX5K,EAAMsB,EAAI,IAAI,IAAI,EACd2J,GAAYjL,EAAI,WAAa,GAC/BA,EAAI,KAAKzB,CAAG,GAIT,CACL,IAAK+C,EAAI,IACT,IAAKtB,CACP,GAMEzB,EAAI,OAAS,KAAK,QAAU,KAAK,IAAIA,CAAG,EAAI,EACvC,CACL,IAAK,IAAIL,EAAG,CAAC,EACb,IAAK,IACP,EAIEK,EAAI,SAAW,EACbqM,IAAS,MACJ,CACL,IAAK,KAAK,KAAKrM,EAAI,MAAM,EAAE,EAC3B,IAAK,IACP,EAGEqM,IAAS,MACJ,CACL,IAAK,KACL,IAAK,IAAI1M,EAAG,KAAK,MAAMK,EAAI,MAAM,EAAE,CAAC,CACtC,EAGK,CACL,IAAK,KAAK,KAAKA,EAAI,MAAM,EAAE,EAC3B,IAAK,IAAIL,EAAG,KAAK,MAAMK,EAAI,MAAM,EAAE,CAAC,CACtC,EAGK,KAAK,SAASA,EAAKqM,CAAI,CAChC,EAGA1M,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAK,EAAE,GACxC,EAGAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAK,EAAE,GACxC,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAI,EAAE,GACvC,EAGAL,EAAG,UAAU,SAAW,SAAmBK,EAAK,CAC9C,IAAI4M,EAAK,KAAK,OAAO5M,CAAG,EAGxB,GAAI4M,EAAG,IAAI,OAAO,EAAG,OAAOA,EAAG,IAE/B,IAAInL,EAAMmL,EAAG,IAAI,WAAa,EAAIA,EAAG,IAAI,KAAK5M,CAAG,EAAI4M,EAAG,IAEpDC,EAAO7M,EAAI,MAAM,CAAC,EAClB8M,EAAK9M,EAAI,MAAM,CAAC,EAChB4D,EAAMnC,EAAI,IAAIoL,CAAI,EAGtB,OAAIjJ,EAAM,GAAMkJ,IAAO,GAAKlJ,IAAQ,EAAWgJ,EAAG,IAG3CA,EAAG,IAAI,WAAa,EAAIA,EAAG,IAAI,MAAM,CAAC,EAAIA,EAAG,IAAI,MAAM,CAAC,CACjE,EAEAjN,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CACxC,IAAI2L,EAAW3L,EAAM,EACjB2L,IAAU3L,EAAM,CAACA,GAErBZ,EAAOY,GAAO,QAAS,EAIvB,QAHI,GAAK,GAAK,IAAMA,EAEhB+M,EAAM,EACD3M,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IACpC2M,GAAO,EAAIA,GAAO,KAAK,MAAM3M,GAAK,IAAMJ,EAG1C,OAAO2L,EAAW,CAACoB,EAAMA,CAC3B,EAGApN,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAMA,CAAG,CACvB,EAGAL,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CACxC,IAAI2L,EAAW3L,EAAM,EACjB2L,IAAU3L,EAAM,CAACA,GAErBZ,EAAOY,GAAO,QAAS,EAGvB,QADIsC,EAAQ,EACHlC,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAAK,CACzC,IAAIE,GAAK,KAAK,MAAMF,GAAK,GAAKkC,EAAQ,SACtC,KAAK,MAAMlC,GAAME,EAAIN,EAAO,EAC5BsC,EAAQhC,EAAIN,CACd,CAEA,YAAK,OAAO,EACL2L,EAAW,KAAK,KAAK,EAAI,IAClC,EAEAhM,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,KAAO,SAAe4K,EAAG,CACpCnL,EAAOmL,EAAE,WAAa,CAAC,EACvBnL,EAAO,CAACmL,EAAE,OAAO,CAAC,EAElB,IAAIb,EAAI,KACJC,EAAIY,EAAE,MAAM,EAEZb,EAAE,WAAa,EACjBA,EAAIA,EAAE,KAAKa,CAAC,EAEZb,EAAIA,EAAE,MAAM,EAad,QATIsD,EAAI,IAAIrN,EAAG,CAAC,EACZsN,EAAI,IAAItN,EAAG,CAAC,EAGZuN,EAAI,IAAIvN,EAAG,CAAC,EACZwN,EAAI,IAAIxN,EAAG,CAAC,EAEZyN,EAAI,EAED1D,EAAE,OAAO,GAAKC,EAAE,OAAO,GAC5BD,EAAE,OAAO,CAAC,EACVC,EAAE,OAAO,CAAC,EACV,EAAEyD,EAMJ,QAHIC,EAAK1D,EAAE,MAAM,EACb2D,EAAK5D,EAAE,MAAM,EAEV,CAACA,EAAE,OAAO,GAAG,CAClB,QAAStJ,EAAI,EAAGmN,EAAK,GAAI7D,EAAE,MAAM,GAAK6D,KAAQ,GAAKnN,EAAI,GAAI,EAAEA,EAAGmN,IAAO,EAAE,CACzE,GAAInN,EAAI,EAEN,IADAsJ,EAAE,OAAOtJ,CAAC,EACHA,KAAM,IACP4M,EAAE,MAAM,GAAKC,EAAE,MAAM,KACvBD,EAAE,KAAKK,CAAE,EACTJ,EAAE,KAAKK,CAAE,GAGXN,EAAE,OAAO,CAAC,EACVC,EAAE,OAAO,CAAC,EAId,QAAS5M,EAAI,EAAGmN,EAAK,GAAI7D,EAAE,MAAM,GAAK6D,KAAQ,GAAKnN,EAAI,GAAI,EAAEA,EAAGmN,IAAO,EAAE,CACzE,GAAInN,EAAI,EAEN,IADAsJ,EAAE,OAAOtJ,CAAC,EACHA,KAAM,IACP6M,EAAE,MAAM,GAAKC,EAAE,MAAM,KACvBD,EAAE,KAAKG,CAAE,EACTF,EAAE,KAAKG,CAAE,GAGXJ,EAAE,OAAO,CAAC,EACVC,EAAE,OAAO,CAAC,EAIVzD,EAAE,IAAIC,CAAC,GAAK,GACdD,EAAE,KAAKC,CAAC,EACRqD,EAAE,KAAKE,CAAC,EACRD,EAAE,KAAKE,CAAC,IAERxD,EAAE,KAAKD,CAAC,EACRwD,EAAE,KAAKF,CAAC,EACRG,EAAE,KAAKF,CAAC,EAEZ,CAEA,MAAO,CACL,EAAGC,EACH,EAAGC,EACH,IAAKxD,EAAE,OAAOyD,CAAC,CACjB,CACF,EAKAzN,EAAG,UAAU,OAAS,SAAiB4K,EAAG,CACxCnL,EAAOmL,EAAE,WAAa,CAAC,EACvBnL,EAAO,CAACmL,EAAE,OAAO,CAAC,EAElB,IAAI9G,EAAI,KACJtC,EAAIoJ,EAAE,MAAM,EAEZ9G,EAAE,WAAa,EACjBA,EAAIA,EAAE,KAAK8G,CAAC,EAEZ9G,EAAIA,EAAE,MAAM,EAQd,QALIgK,EAAK,IAAI9N,EAAG,CAAC,EACb+N,EAAK,IAAI/N,EAAG,CAAC,EAEbgO,EAAQxM,EAAE,MAAM,EAEbsC,EAAE,KAAK,CAAC,EAAI,GAAKtC,EAAE,KAAK,CAAC,EAAI,GAAG,CACrC,QAASf,EAAI,EAAGmN,EAAK,GAAI9J,EAAE,MAAM,GAAK8J,KAAQ,GAAKnN,EAAI,GAAI,EAAEA,EAAGmN,IAAO,EAAE,CACzE,GAAInN,EAAI,EAEN,IADAqD,EAAE,OAAOrD,CAAC,EACHA,KAAM,GACPqN,EAAG,MAAM,GACXA,EAAG,KAAKE,CAAK,EAGfF,EAAG,OAAO,CAAC,EAIf,QAASpN,EAAI,EAAGmN,EAAK,GAAIrM,EAAE,MAAM,GAAKqM,KAAQ,GAAKnN,EAAI,GAAI,EAAEA,EAAGmN,IAAO,EAAE,CACzE,GAAInN,EAAI,EAEN,IADAc,EAAE,OAAOd,CAAC,EACHA,KAAM,GACPqN,EAAG,MAAM,GACXA,EAAG,KAAKC,CAAK,EAGfD,EAAG,OAAO,CAAC,EAIXjK,EAAE,IAAItC,CAAC,GAAK,GACdsC,EAAE,KAAKtC,CAAC,EACRsM,EAAG,KAAKC,CAAE,IAEVvM,EAAE,KAAKsC,CAAC,EACRiK,EAAG,KAAKD,CAAE,EAEd,CAEA,IAAI1K,EACJ,OAAIU,EAAE,KAAK,CAAC,IAAM,EAChBV,EAAM0K,EAEN1K,EAAM2K,EAGJ3K,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAKwH,CAAC,EAGLxH,CACT,EAEApD,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,GAAI,KAAK,OAAO,EAAG,OAAOA,EAAI,IAAI,EAClC,GAAIA,EAAI,OAAO,EAAG,OAAO,KAAK,IAAI,EAElC,IAAIyD,EAAI,KAAK,MAAM,EACftC,EAAInB,EAAI,MAAM,EAClByD,EAAE,SAAW,EACbtC,EAAE,SAAW,EAGb,QAAS+B,EAAQ,EAAGO,EAAE,OAAO,GAAKtC,EAAE,OAAO,EAAG+B,IAC5CO,EAAE,OAAO,CAAC,EACVtC,EAAE,OAAO,CAAC,EAGZ,EAAG,CACD,KAAOsC,EAAE,OAAO,GACdA,EAAE,OAAO,CAAC,EAEZ,KAAOtC,EAAE,OAAO,GACdA,EAAE,OAAO,CAAC,EAGZ,IAAIN,EAAI4C,EAAE,IAAItC,CAAC,EACf,GAAIN,EAAI,EAAG,CAET,IAAIsC,EAAIM,EACRA,EAAItC,EACJA,EAAIgC,CACN,SAAWtC,IAAM,GAAKM,EAAE,KAAK,CAAC,IAAM,EAClC,MAGFsC,EAAE,KAAKtC,CAAC,CACV,OAAS,IAET,OAAOA,EAAE,OAAO+B,CAAK,CACvB,EAGAvD,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,EAAE,EAAE,KAAKA,CAAG,CAClC,EAEAL,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAQ,KAAK,MAAM,GAAK,KAAO,CACjC,EAEAA,EAAG,UAAU,MAAQ,UAAkB,CACrC,OAAQ,KAAK,MAAM,GAAK,KAAO,CACjC,EAGAA,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CACxC,OAAO,KAAK,MAAM,GAAKA,CACzB,EAGAL,EAAG,UAAU,MAAQ,SAAgB2D,EAAK,CACxClE,EAAO,OAAOkE,GAAQ,QAAQ,EAC9B,IAAIzC,EAAIyC,EAAM,GACV8G,GAAK9G,EAAMzC,GAAK,GAChB+K,EAAI,GAAK/K,EAGb,GAAI,KAAK,QAAUuJ,EACjB,YAAK,QAAQA,EAAI,CAAC,EAClB,KAAK,MAAMA,IAAMwB,EACV,KAKT,QADItJ,EAAQsJ,EACHxL,EAAIgK,EAAG9H,IAAU,GAAKlC,EAAI,KAAK,OAAQA,IAAK,CACnD,IAAI,EAAI,KAAK,MAAMA,GAAK,EACxB,GAAKkC,EACLA,EAAQ,IAAM,GACd,GAAK,SACL,KAAK,MAAMlC,GAAK,CAClB,CACA,OAAIkC,IAAU,IACZ,KAAK,MAAMlC,GAAKkC,EAChB,KAAK,UAEA,IACT,EAEA3C,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAO,KAAK,SAAW,GAAK,KAAK,MAAM,KAAO,CAChD,EAEAA,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,IAAI4N,EAAW5N,EAAM,EAErB,GAAI,KAAK,WAAa,GAAK,CAAC4N,EAAU,MAAO,GAC7C,GAAI,KAAK,WAAa,GAAKA,EAAU,MAAO,GAE5C,KAAK,OAAO,EAEZ,IAAI7K,EACJ,GAAI,KAAK,OAAS,EAChBA,EAAM,MACD,CACD6K,IACF5N,EAAM,CAACA,GAGTZ,EAAOY,GAAO,SAAW,mBAAmB,EAE5C,IAAIM,EAAI,KAAK,MAAM,GAAK,EACxByC,EAAMzC,IAAMN,EAAM,EAAIM,EAAIN,EAAM,GAAK,CACvC,CACA,OAAI,KAAK,WAAa,EAAU,CAAC+C,EAAM,EAChCA,CACT,EAMApD,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EAAG,MAAO,GACtD,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EAAG,MAAO,GAEtD,IAAI+C,EAAM,KAAK,KAAK/C,CAAG,EACvB,OAAI,KAAK,WAAa,EAAU,CAAC+C,EAAM,EAChCA,CACT,EAGApD,EAAG,UAAU,KAAO,SAAeK,EAAK,CAEtC,GAAI,KAAK,OAASA,EAAI,OAAQ,MAAO,GACrC,GAAI,KAAK,OAASA,EAAI,OAAQ,MAAO,GAGrC,QADI+C,EAAM,EACD3C,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAAK,CACzC,IAAIqD,EAAI,KAAK,MAAMrD,GAAK,EACpBe,EAAInB,EAAI,MAAMI,GAAK,EAEvB,GAAIqD,IAAMtC,EACV,CAAIsC,EAAItC,EACN4B,EAAM,GACGU,EAAItC,IACb4B,EAAM,GAER,MACF,CACA,OAAOA,CACT,EAEApD,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,CAC5B,EAEAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,CAC3B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,GAAK,CAC3B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,IAAIA,CAAG,GAAK,CAC1B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,EAC5B,EAEAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,EAC3B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,GAAK,CAC3B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,IAAIA,CAAG,GAAK,CAC1B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,CAC5B,EAEAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,CAC3B,EAMAL,EAAG,IAAM,SAAcK,EAAK,CAC1B,OAAO,IAAI6N,EAAI7N,CAAG,CACpB,EAEAL,EAAG,UAAU,MAAQ,SAAgBmO,EAAK,CACxC,OAAA1O,EAAO,CAAC,KAAK,IAAK,uCAAuC,EACzDA,EAAO,KAAK,WAAa,EAAG,+BAA+B,EACpD0O,EAAI,UAAU,IAAI,EAAE,UAAUA,CAAG,CAC1C,EAEAnO,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,sDAAsD,EAChE,KAAK,IAAI,YAAY,IAAI,CAClC,EAEAO,EAAG,UAAU,UAAY,SAAoBmO,EAAK,CAChD,YAAK,IAAMA,EACJ,IACT,EAEAnO,EAAG,UAAU,SAAW,SAAmBmO,EAAK,CAC9C,OAAA1O,EAAO,CAAC,KAAK,IAAK,uCAAuC,EAClD,KAAK,UAAU0O,CAAG,CAC3B,EAEAnO,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EAEAL,EAAG,UAAU,QAAU,SAAkBK,EAAK,CAC5C,OAAAZ,EAAO,KAAK,IAAK,qCAAqC,EAC/C,KAAK,IAAI,KAAK,KAAMY,CAAG,CAChC,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EAEAL,EAAG,UAAU,QAAU,SAAkBK,EAAK,CAC5C,OAAAZ,EAAO,KAAK,IAAK,qCAAqC,EAC/C,KAAK,IAAI,KAAK,KAAMY,CAAG,CAChC,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,KAAMY,CAAG,EACpB,KAAK,IAAI,IAAI,KAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,QAAU,SAAkBK,EAAK,CAC5C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,KAAMY,CAAG,EACpB,KAAK,IAAI,KAAK,KAAMA,CAAG,CAChC,EAEAL,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAAP,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,IAAI,CAC1B,EAEAO,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAGAO,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAEAO,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAGAO,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAAP,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,IAAI,CAC1B,EAEAO,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,KAAO,CAACY,EAAI,IAAK,mBAAmB,EAChD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,KAAMA,CAAG,CAC/B,EAGA,IAAI+N,GAAS,CACX,KAAM,KACN,KAAM,KACN,KAAM,KACN,OAAQ,IACV,EAGA,SAASC,GAAQC,EAAM1D,EAAG,CAExB,KAAK,KAAO0D,EACZ,KAAK,EAAI,IAAItO,EAAG4K,EAAG,EAAE,EACrB,KAAK,EAAI,KAAK,EAAE,UAAU,EAC1B,KAAK,EAAI,IAAI5K,EAAG,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAE7C,KAAK,IAAM,KAAK,KAAK,CACvB,CAEAqO,GAAO,UAAU,KAAO,UAAiB,CACvC,IAAIE,EAAM,IAAIvO,EAAG,IAAI,EACrB,OAAAuO,EAAI,MAAQ,IAAI,MAAM,KAAK,KAAK,KAAK,EAAI,EAAE,CAAC,EACrCA,CACT,EAEAF,GAAO,UAAU,QAAU,SAAkBhO,EAAK,CAGhD,IAAIa,EAAIb,EACJmO,EAEJ,GACE,KAAK,MAAMtN,EAAG,KAAK,GAAG,EACtBA,EAAI,KAAK,MAAMA,CAAC,EAChBA,EAAIA,EAAE,KAAK,KAAK,GAAG,EACnBsN,EAAOtN,EAAE,UAAU,QACZsN,EAAO,KAAK,GAErB,IAAIvK,EAAMuK,EAAO,KAAK,EAAI,GAAKtN,EAAE,KAAK,KAAK,CAAC,EAC5C,OAAI+C,IAAQ,GACV/C,EAAE,MAAM,GAAK,EACbA,EAAE,OAAS,GACF+C,EAAM,EACf/C,EAAE,KAAK,KAAK,CAAC,EAETA,EAAE,QAAU,OAEdA,EAAE,MAAM,EAGRA,EAAE,OAAO,EAINA,CACT,EAEAmN,GAAO,UAAU,MAAQ,SAAgBI,EAAO/L,EAAK,CACnD+L,EAAM,OAAO,KAAK,EAAG,EAAG/L,CAAG,CAC7B,EAEA2L,GAAO,UAAU,MAAQ,SAAgBhO,EAAK,CAC5C,OAAOA,EAAI,KAAK,KAAK,CAAC,CACxB,EAEA,SAASqO,IAAQ,CACfL,GAAO,KACL,KACA,OACA,yEAAyE,CAC7E,CACAzO,EAAS8O,GAAML,EAAM,EAErBK,GAAK,UAAU,MAAQ,SAAgBD,EAAOE,EAAQ,CAKpD,QAHInC,EAAO,QAEPoC,EAAS,KAAK,IAAIH,EAAM,OAAQ,CAAC,EAC5BhO,EAAI,EAAGA,EAAImO,EAAQnO,IAC1BkO,EAAO,MAAMlO,GAAKgO,EAAM,MAAMhO,GAIhC,GAFAkO,EAAO,OAASC,EAEZH,EAAM,QAAU,EAAG,CACrBA,EAAM,MAAM,GAAK,EACjBA,EAAM,OAAS,EACf,MACF,CAGA,IAAII,EAAOJ,EAAM,MAAM,GAGvB,IAFAE,EAAO,MAAMA,EAAO,UAAYE,EAAOrC,EAElC/L,EAAI,GAAIA,EAAIgO,EAAM,OAAQhO,IAAK,CAClC,IAAIqO,EAAOL,EAAM,MAAMhO,GAAK,EAC5BgO,EAAM,MAAMhO,EAAI,KAAQqO,EAAOtC,IAAS,EAAMqC,IAAS,GACvDA,EAAOC,CACT,CACAD,KAAU,GACVJ,EAAM,MAAMhO,EAAI,IAAMoO,EAClBA,IAAS,GAAKJ,EAAM,OAAS,GAC/BA,EAAM,QAAU,GAEhBA,EAAM,QAAU,CAEpB,EAEAC,GAAK,UAAU,MAAQ,SAAgBrO,EAAK,CAE1CA,EAAI,MAAMA,EAAI,QAAU,EACxBA,EAAI,MAAMA,EAAI,OAAS,GAAK,EAC5BA,EAAI,QAAU,EAId,QADI+D,EAAK,EACA3D,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CACnC,IAAIE,EAAIN,EAAI,MAAMI,GAAK,EACvB2D,GAAMzD,EAAI,IACVN,EAAI,MAAMI,GAAK2D,EAAK,SACpBA,EAAKzD,EAAI,IAASyD,EAAK,SAAa,EACtC,CAGA,OAAI/D,EAAI,MAAMA,EAAI,OAAS,KAAO,IAChCA,EAAI,SACAA,EAAI,MAAMA,EAAI,OAAS,KAAO,GAChCA,EAAI,UAGDA,CACT,EAEA,SAAS0O,GAAQ,CACfV,GAAO,KACL,KACA,OACA,gEAAgE,CACpE,CACAzO,EAASmP,EAAMV,EAAM,EAErB,SAASW,GAAQ,CACfX,GAAO,KACL,KACA,OACA,uDAAuD,CAC3D,CACAzO,EAASoP,EAAMX,EAAM,EAErB,SAASY,GAAU,CAEjBZ,GAAO,KACL,KACA,QACA,qEAAqE,CACzE,CACAzO,EAASqP,EAAQZ,EAAM,EAEvBY,EAAO,UAAU,MAAQ,SAAgB5O,EAAK,CAG5C,QADIsC,EAAQ,EACHlC,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CACnC,IAAIgD,GAAMpD,EAAI,MAAMI,GAAK,GAAK,GAAOkC,EACjCyB,EAAKX,EAAK,SACdA,KAAQ,GAERpD,EAAI,MAAMI,GAAK2D,EACfzB,EAAQc,CACV,CACA,OAAId,IAAU,IACZtC,EAAI,MAAMA,EAAI,UAAYsC,GAErBtC,CACT,EAGAL,EAAG,OAAS,SAAgBsO,EAAM,CAEhC,GAAIF,GAAOE,GAAO,OAAOF,GAAOE,GAEhC,IAAIY,EACJ,GAAIZ,IAAS,OACXY,EAAQ,IAAIR,WACHJ,IAAS,OAClBY,EAAQ,IAAIH,UACHT,IAAS,OAClBY,EAAQ,IAAIF,UACHV,IAAS,SAClBY,EAAQ,IAAID,MAEZ,OAAM,IAAI,MAAM,iBAAmBX,CAAI,EAEzC,OAAAF,GAAOE,GAAQY,EAERA,CACT,EAKA,SAAShB,EAAK7C,EAAG,CACf,GAAI,OAAOA,GAAM,SAAU,CACzB,IAAI6D,EAAQlP,EAAG,OAAOqL,CAAC,EACvB,KAAK,EAAI6D,EAAM,EACf,KAAK,MAAQA,CACf,MACEzP,EAAO4L,EAAE,IAAI,CAAC,EAAG,gCAAgC,EACjD,KAAK,EAAIA,EACT,KAAK,MAAQ,IAEjB,CAEA6C,EAAI,UAAU,SAAW,SAAmBpK,EAAG,CAC7CrE,EAAOqE,EAAE,WAAa,EAAG,+BAA+B,EACxDrE,EAAOqE,EAAE,IAAK,iCAAiC,CACjD,EAEAoK,EAAI,UAAU,SAAW,SAAmBpK,EAAGtC,EAAG,CAChD/B,GAAQqE,EAAE,SAAWtC,EAAE,YAAc,EAAG,+BAA+B,EACvE/B,EAAOqE,EAAE,KAAOA,EAAE,MAAQtC,EAAE,IAC1B,iCAAiC,CACrC,EAEA0M,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,OAAI,KAAK,MAAc,KAAK,MAAM,QAAQA,CAAC,EAAE,UAAU,IAAI,GAE3D5B,EAAK4B,EAAGA,EAAE,KAAK,KAAK,CAAC,EAAE,UAAU,IAAI,CAAC,EAC/BA,EACT,EAEAoK,EAAI,UAAU,IAAM,SAAcpK,EAAG,CACnC,OAAIA,EAAE,OAAO,EACJA,EAAE,MAAM,EAGV,KAAK,EAAE,IAAIA,CAAC,EAAE,UAAU,IAAI,CACrC,EAEAoK,EAAI,UAAU,IAAM,SAAcpK,EAAGtC,EAAG,CACtC,KAAK,SAASsC,EAAGtC,CAAC,EAElB,IAAI4B,EAAMU,EAAE,IAAItC,CAAC,EACjB,OAAI4B,EAAI,IAAI,KAAK,CAAC,GAAK,GACrBA,EAAI,KAAK,KAAK,CAAC,EAEVA,EAAI,UAAU,IAAI,CAC3B,EAEA8K,EAAI,UAAU,KAAO,SAAepK,EAAGtC,EAAG,CACxC,KAAK,SAASsC,EAAGtC,CAAC,EAElB,IAAI4B,EAAMU,EAAE,KAAKtC,CAAC,EAClB,OAAI4B,EAAI,IAAI,KAAK,CAAC,GAAK,GACrBA,EAAI,KAAK,KAAK,CAAC,EAEVA,CACT,EAEA8K,EAAI,UAAU,IAAM,SAAcpK,EAAGtC,EAAG,CACtC,KAAK,SAASsC,EAAGtC,CAAC,EAElB,IAAI4B,EAAMU,EAAE,IAAItC,CAAC,EACjB,OAAI4B,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAK,KAAK,CAAC,EAEVA,EAAI,UAAU,IAAI,CAC3B,EAEA8K,EAAI,UAAU,KAAO,SAAepK,EAAGtC,EAAG,CACxC,KAAK,SAASsC,EAAGtC,CAAC,EAElB,IAAI4B,EAAMU,EAAE,KAAKtC,CAAC,EAClB,OAAI4B,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAK,KAAK,CAAC,EAEVA,CACT,EAEA8K,EAAI,UAAU,IAAM,SAAcpK,EAAGzD,EAAK,CACxC,YAAK,SAASyD,CAAC,EACR,KAAK,KAAKA,EAAE,MAAMzD,CAAG,CAAC,CAC/B,EAEA6N,EAAI,UAAU,KAAO,SAAepK,EAAGtC,EAAG,CACxC,YAAK,SAASsC,EAAGtC,CAAC,EACX,KAAK,KAAKsC,EAAE,KAAKtC,CAAC,CAAC,CAC5B,EAEA0M,EAAI,UAAU,IAAM,SAAcpK,EAAGtC,EAAG,CACtC,YAAK,SAASsC,EAAGtC,CAAC,EACX,KAAK,KAAKsC,EAAE,IAAItC,CAAC,CAAC,CAC3B,EAEA0M,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,OAAO,KAAK,KAAKA,EAAGA,EAAE,MAAM,CAAC,CAC/B,EAEAoK,EAAI,UAAU,IAAM,SAAcpK,EAAG,CACnC,OAAO,KAAK,IAAIA,EAAGA,CAAC,CACtB,EAEAoK,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,GAAIA,EAAE,OAAO,EAAG,OAAOA,EAAE,MAAM,EAE/B,IAAIqL,EAAO,KAAK,EAAE,MAAM,CAAC,EAIzB,GAHA1P,EAAO0P,EAAO,IAAM,CAAC,EAGjBA,IAAS,EAAG,CACd,IAAInN,EAAM,KAAK,EAAE,IAAI,IAAIhC,EAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EACxC,OAAO,KAAK,IAAI8D,EAAG9B,CAAG,CACxB,CAOA,QAFIiK,EAAI,KAAK,EAAE,KAAK,CAAC,EACjBxB,EAAI,EACD,CAACwB,EAAE,OAAO,GAAKA,EAAE,MAAM,CAAC,IAAM,GACnCxB,IACAwB,EAAE,OAAO,CAAC,EAEZxM,EAAO,CAACwM,EAAE,OAAO,CAAC,EAElB,IAAImD,EAAM,IAAIpP,EAAG,CAAC,EAAE,MAAM,IAAI,EAC1BqP,EAAOD,EAAI,OAAO,EAIlBE,EAAO,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,EAC9BC,EAAI,KAAK,EAAE,UAAU,EAGzB,IAFAA,EAAI,IAAIvP,EAAG,EAAIuP,EAAIA,CAAC,EAAE,MAAM,IAAI,EAEzB,KAAK,IAAIA,EAAGD,CAAI,EAAE,IAAID,CAAI,IAAM,GACrCE,EAAE,QAAQF,CAAI,EAOhB,QAJI3N,EAAI,KAAK,IAAI6N,EAAGtD,CAAC,EACjB/K,EAAI,KAAK,IAAI4C,EAAGmI,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EACnCzI,EAAI,KAAK,IAAIM,EAAGmI,CAAC,EACjBZ,EAAIZ,EACDjH,EAAE,IAAI4L,CAAG,IAAM,GAAG,CAEvB,QADIb,EAAM/K,EACD/C,EAAI,EAAG8N,EAAI,IAAIa,CAAG,IAAM,EAAG3O,IAClC8N,EAAMA,EAAI,OAAO,EAEnB9O,EAAOgB,EAAI4K,CAAC,EACZ,IAAI7J,GAAI,KAAK,IAAIE,EAAG,IAAI1B,EAAG,CAAC,EAAE,OAAOqL,EAAI5K,EAAI,CAAC,CAAC,EAE/CS,EAAIA,EAAE,OAAOM,EAAC,EACdE,EAAIF,GAAE,OAAO,EACbgC,EAAIA,EAAE,OAAO9B,CAAC,EACd2J,EAAI5K,CACN,CAEA,OAAOS,CACT,EAEAgN,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,IAAI0L,EAAM1L,EAAE,OAAO,KAAK,CAAC,EACzB,OAAI0L,EAAI,WAAa,GACnBA,EAAI,SAAW,EACR,KAAK,KAAKA,CAAG,EAAE,OAAO,GAEtB,KAAK,KAAKA,CAAG,CAExB,EAEAtB,EAAI,UAAU,IAAM,SAAcpK,EAAGzD,EAAK,CACxC,GAAIA,EAAI,OAAO,EAAG,OAAO,IAAIL,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7C,GAAIK,EAAI,KAAK,CAAC,IAAM,EAAG,OAAOyD,EAAE,MAAM,EAEtC,IAAI2L,EAAa,EACbC,EAAM,IAAI,MAAM,GAAKD,CAAU,EACnCC,EAAI,GAAK,IAAI1P,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7B0P,EAAI,GAAK5L,EACT,QAASrD,EAAI,EAAGA,EAAIiP,EAAI,OAAQjP,IAC9BiP,EAAIjP,GAAK,KAAK,IAAIiP,EAAIjP,EAAI,GAAIqD,CAAC,EAGjC,IAAIV,EAAMsM,EAAI,GACVC,EAAU,EACVC,EAAa,EACbpP,EAAQH,EAAI,UAAU,EAAI,GAK9B,IAJIG,IAAU,IACZA,EAAQ,IAGLC,EAAIJ,EAAI,OAAS,EAAGI,GAAK,EAAGA,IAAK,CAEpC,QADIsB,EAAO1B,EAAI,MAAMI,GACZC,EAAIF,EAAQ,EAAGE,GAAK,EAAGA,IAAK,CACnC,IAAIiD,EAAO5B,GAAQrB,EAAK,EAKxB,GAJI0C,IAAQsM,EAAI,KACdtM,EAAM,KAAK,IAAIA,CAAG,GAGhBO,IAAQ,GAAKgM,IAAY,EAAG,CAC9BC,EAAa,EACb,QACF,CAEAD,IAAY,EACZA,GAAWhM,EACXiM,IACI,EAAAA,IAAeH,IAAehP,IAAM,GAAKC,IAAM,MAEnD0C,EAAM,KAAK,IAAIA,EAAKsM,EAAIC,EAAQ,EAChCC,EAAa,EACbD,EAAU,EACZ,CACAnP,EAAQ,EACV,CAEA,OAAO4C,CACT,EAEA8K,EAAI,UAAU,UAAY,SAAoB7N,EAAK,CACjD,IAAIa,EAAIb,EAAI,KAAK,KAAK,CAAC,EAEvB,OAAOa,IAAMb,EAAMa,EAAE,MAAM,EAAIA,CACjC,EAEAgN,EAAI,UAAU,YAAc,SAAsB7N,EAAK,CACrD,IAAI+C,EAAM/C,EAAI,MAAM,EACpB,OAAA+C,EAAI,IAAM,KACHA,CACT,EAMApD,EAAG,KAAO,SAAeK,EAAK,CAC5B,OAAO,IAAIwP,EAAKxP,CAAG,CACrB,EAEA,SAASwP,EAAMxE,EAAG,CAChB6C,EAAI,KAAK,KAAM7C,CAAC,EAEhB,KAAK,MAAQ,KAAK,EAAE,UAAU,EAC1B,KAAK,MAAQ,KAAO,IACtB,KAAK,OAAS,GAAM,KAAK,MAAQ,IAGnC,KAAK,EAAI,IAAIrL,EAAG,CAAC,EAAE,OAAO,KAAK,KAAK,EACpC,KAAK,GAAK,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC,EAChC,KAAK,KAAO,KAAK,EAAE,OAAO,KAAK,CAAC,EAEhC,KAAK,KAAO,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,EACrD,KAAK,KAAO,KAAK,KAAK,KAAK,KAAK,CAAC,EACjC,KAAK,KAAO,KAAK,EAAE,IAAI,KAAK,IAAI,CAClC,CACAJ,EAASiQ,EAAM3B,CAAG,EAElB2B,EAAK,UAAU,UAAY,SAAoBxP,EAAK,CAClD,OAAO,KAAK,KAAKA,EAAI,MAAM,KAAK,KAAK,CAAC,CACxC,EAEAwP,EAAK,UAAU,YAAc,SAAsBxP,EAAK,CACtD,IAAIa,EAAI,KAAK,KAAKb,EAAI,IAAI,KAAK,IAAI,CAAC,EACpC,OAAAa,EAAE,IAAM,KACDA,CACT,EAEA2O,EAAK,UAAU,KAAO,SAAe/L,EAAGtC,EAAG,CACzC,GAAIsC,EAAE,OAAO,GAAKtC,EAAE,OAAO,EACzB,OAAAsC,EAAE,MAAM,GAAK,EACbA,EAAE,OAAS,EACJA,EAGT,IAAIN,EAAIM,EAAE,KAAKtC,CAAC,EACZE,EAAI8B,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACpEsM,EAAItM,EAAE,KAAK9B,CAAC,EAAE,OAAO,KAAK,KAAK,EAC/B0B,EAAM0M,EAEV,OAAIA,EAAE,IAAI,KAAK,CAAC,GAAK,EACnB1M,EAAM0M,EAAE,KAAK,KAAK,CAAC,EACVA,EAAE,KAAK,CAAC,EAAI,IACrB1M,EAAM0M,EAAE,KAAK,KAAK,CAAC,GAGd1M,EAAI,UAAU,IAAI,CAC3B,EAEAyM,EAAK,UAAU,IAAM,SAAc/L,EAAGtC,EAAG,CACvC,GAAIsC,EAAE,OAAO,GAAKtC,EAAE,OAAO,EAAG,OAAO,IAAIxB,EAAG,CAAC,EAAE,UAAU,IAAI,EAE7D,IAAIwD,EAAIM,EAAE,IAAItC,CAAC,EACXE,EAAI8B,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACpEsM,EAAItM,EAAE,KAAK9B,CAAC,EAAE,OAAO,KAAK,KAAK,EAC/B0B,EAAM0M,EACV,OAAIA,EAAE,IAAI,KAAK,CAAC,GAAK,EACnB1M,EAAM0M,EAAE,KAAK,KAAK,CAAC,EACVA,EAAE,KAAK,CAAC,EAAI,IACrB1M,EAAM0M,EAAE,KAAK,KAAK,CAAC,GAGd1M,EAAI,UAAU,IAAI,CAC3B,EAEAyM,EAAK,UAAU,KAAO,SAAe/L,EAAG,CAEtC,IAAIV,EAAM,KAAK,KAAKU,EAAE,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC,EACjD,OAAOV,EAAI,UAAU,IAAI,CAC3B,CACF,GAAG,OAAO5D,GAAW,KAAeA,GAAQD,EAAI,IC19GhD,IAAAwQ,GAAAC,GAAAC,IAAA,cAUA,IAAMC,GAAS,KACTC,GAAU,KACVC,GACH,OAAO,QAAW,YAAc,OAAO,OAAO,KAAW,WACtD,OAAO,IAAO,4BAA4B,EAC1C,KAENH,GAAQ,OAASI,GACjBJ,GAAQ,WAAaK,GACrBL,GAAQ,kBAAoB,GAE5B,IAAMM,GAAe,WACrBN,GAAQ,WAAaM,GAgBrBF,GAAO,oBAAsBG,GAAkB,EAE3C,CAACH,GAAO,qBAAuB,OAAO,QAAY,KAClD,OAAO,QAAQ,OAAU,YAC3B,QAAQ,MACN,+IAEF,EAGF,SAASG,IAAqB,CAE5B,GAAI,CACF,IAAMC,EAAM,IAAI,WAAW,CAAC,EACtBC,EAAQ,CAAE,IAAK,UAAY,CAAE,MAAO,GAAG,CAAE,EAC/C,cAAO,eAAeA,EAAO,WAAW,SAAS,EACjD,OAAO,eAAeD,EAAKC,CAAK,EACzBD,EAAI,IAAI,IAAM,EACvB,MAAE,CACA,MAAO,EACT,CACF,CAEA,OAAO,eAAeJ,GAAO,UAAW,SAAU,CAChD,WAAY,GACZ,IAAK,UAAY,CACf,GAAI,EAACA,GAAO,SAAS,IAAI,EACzB,OAAO,KAAK,MACd,CACF,CAAC,EAED,OAAO,eAAeA,GAAO,UAAW,SAAU,CAChD,WAAY,GACZ,IAAK,UAAY,CACf,GAAI,EAACA,GAAO,SAAS,IAAI,EACzB,OAAO,KAAK,UACd,CACF,CAAC,EAED,SAASM,GAAcC,EAAQ,CAC7B,GAAIA,EAASL,GACX,MAAM,IAAI,WAAW,cAAgBK,EAAS,gCAAgC,EAGhF,IAAMC,EAAM,IAAI,WAAWD,CAAM,EACjC,cAAO,eAAeC,EAAKR,GAAO,SAAS,EACpCQ,CACT,CAYA,SAASR,GAAQS,EAAKC,EAAkBH,EAAQ,CAE9C,GAAI,OAAOE,GAAQ,SAAU,CAC3B,GAAI,OAAOC,GAAqB,SAC9B,MAAM,IAAI,UACR,oEACF,EAEF,OAAOC,GAAYF,CAAG,CACxB,CACA,OAAOG,GAAKH,EAAKC,EAAkBH,CAAM,CAC3C,CAEAP,GAAO,SAAW,KAElB,SAASY,GAAMC,EAAOH,EAAkBH,EAAQ,CAC9C,GAAI,OAAOM,GAAU,SACnB,OAAOC,GAAWD,EAAOH,CAAgB,EAG3C,GAAI,YAAY,OAAOG,CAAK,EAC1B,OAAOE,GAAcF,CAAK,EAG5B,GAAIA,GAAS,KACX,MAAM,IAAI,UACR,kHAC0C,OAAOA,CACnD,EAQF,GALIG,GAAWH,EAAO,WAAW,GAC5BA,GAASG,GAAWH,EAAM,OAAQ,WAAW,GAI9C,OAAO,kBAAsB,MAC5BG,GAAWH,EAAO,iBAAiB,GACnCA,GAASG,GAAWH,EAAM,OAAQ,iBAAiB,GACtD,OAAOI,GAAgBJ,EAAOH,EAAkBH,CAAM,EAGxD,GAAI,OAAOM,GAAU,SACnB,MAAM,IAAI,UACR,uEACF,EAGF,IAAMK,EAAUL,EAAM,SAAWA,EAAM,QAAQ,EAC/C,GAAIK,GAAW,MAAQA,IAAYL,EACjC,OAAOb,GAAO,KAAKkB,EAASR,EAAkBH,CAAM,EAGtD,IAAMY,EAAIC,GAAWP,CAAK,EAC1B,GAAIM,EAAG,OAAOA,EAEd,GAAI,OAAO,OAAW,KAAe,OAAO,aAAe,MACvD,OAAON,EAAM,OAAO,cAAiB,WACvC,OAAOb,GAAO,KAAKa,EAAM,OAAO,aAAa,QAAQ,EAAGH,EAAkBH,CAAM,EAGlF,MAAM,IAAI,UACR,kHAC0C,OAAOM,CACnD,CACF,CAUAb,GAAO,KAAO,SAAUa,EAAOH,EAAkBH,EAAQ,CACvD,OAAOK,GAAKC,EAAOH,EAAkBH,CAAM,CAC7C,EAIA,OAAO,eAAeP,GAAO,UAAW,WAAW,SAAS,EAC5D,OAAO,eAAeA,GAAQ,UAAU,EAExC,SAASqB,GAAYC,EAAM,CACzB,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UAAU,wCAAwC,EACvD,GAAIA,EAAO,EAChB,MAAM,IAAI,WAAW,cAAgBA,EAAO,gCAAgC,CAEhF,CAEA,SAASC,GAAOD,EAAME,EAAMC,EAAU,CAEpC,OADAJ,GAAWC,CAAI,EACXA,GAAQ,EACHhB,GAAagB,CAAI,EAEtBE,IAAS,OAIJ,OAAOC,GAAa,SACvBnB,GAAagB,CAAI,EAAE,KAAKE,EAAMC,CAAQ,EACtCnB,GAAagB,CAAI,EAAE,KAAKE,CAAI,EAE3BlB,GAAagB,CAAI,CAC1B,CAMAtB,GAAO,MAAQ,SAAUsB,EAAME,EAAMC,EAAU,CAC7C,OAAOF,GAAMD,EAAME,EAAMC,CAAQ,CACnC,EAEA,SAASd,GAAaW,EAAM,CAC1B,OAAAD,GAAWC,CAAI,EACRhB,GAAagB,EAAO,EAAI,EAAII,GAAQJ,CAAI,EAAI,CAAC,CACtD,CAKAtB,GAAO,YAAc,SAAUsB,EAAM,CACnC,OAAOX,GAAYW,CAAI,CACzB,EAIAtB,GAAO,gBAAkB,SAAUsB,EAAM,CACvC,OAAOX,GAAYW,CAAI,CACzB,EAEA,SAASR,GAAYa,EAAQF,EAAU,CAKrC,IAJI,OAAOA,GAAa,UAAYA,IAAa,MAC/CA,EAAW,QAGT,CAACzB,GAAO,WAAWyB,CAAQ,EAC7B,MAAM,IAAI,UAAU,qBAAuBA,CAAQ,EAGrD,IAAMlB,EAASqB,GAAWD,EAAQF,CAAQ,EAAI,EAC1CjB,EAAMF,GAAaC,CAAM,EAEvBsB,EAASrB,EAAI,MAAMmB,EAAQF,CAAQ,EAEzC,OAAII,IAAWtB,IAIbC,EAAMA,EAAI,MAAM,EAAGqB,CAAM,GAGpBrB,CACT,CAEA,SAASsB,GAAeC,EAAO,CAC7B,IAAMxB,EAASwB,EAAM,OAAS,EAAI,EAAIL,GAAQK,EAAM,MAAM,EAAI,EACxDvB,EAAMF,GAAaC,CAAM,EAC/B,QAASyB,EAAI,EAAGA,EAAIzB,EAAQyB,GAAK,EAC/BxB,EAAIwB,GAAKD,EAAMC,GAAK,IAEtB,OAAOxB,CACT,CAEA,SAASO,GAAekB,EAAW,CACjC,GAAIjB,GAAWiB,EAAW,UAAU,EAAG,CACrC,IAAMC,EAAO,IAAI,WAAWD,CAAS,EACrC,OAAOhB,GAAgBiB,EAAK,OAAQA,EAAK,WAAYA,EAAK,UAAU,CACtE,CACA,OAAOJ,GAAcG,CAAS,CAChC,CAEA,SAAShB,GAAiBc,EAAOI,EAAY5B,EAAQ,CACnD,GAAI4B,EAAa,GAAKJ,EAAM,WAAaI,EACvC,MAAM,IAAI,WAAW,sCAAsC,EAG7D,GAAIJ,EAAM,WAAaI,GAAc5B,GAAU,GAC7C,MAAM,IAAI,WAAW,sCAAsC,EAG7D,IAAIC,EACJ,OAAI2B,IAAe,QAAa5B,IAAW,OACzCC,EAAM,IAAI,WAAWuB,CAAK,EACjBxB,IAAW,OACpBC,EAAM,IAAI,WAAWuB,EAAOI,CAAU,EAEtC3B,EAAM,IAAI,WAAWuB,EAAOI,EAAY5B,CAAM,EAIhD,OAAO,eAAeC,EAAKR,GAAO,SAAS,EAEpCQ,CACT,CAEA,SAASY,GAAYgB,EAAK,CACxB,GAAIpC,GAAO,SAASoC,CAAG,EAAG,CACxB,IAAMC,EAAMX,GAAQU,EAAI,MAAM,EAAI,EAC5B5B,EAAMF,GAAa+B,CAAG,EAE5B,OAAI7B,EAAI,SAAW,GAInB4B,EAAI,KAAK5B,EAAK,EAAG,EAAG6B,CAAG,EAChB7B,CACT,CAEA,GAAI4B,EAAI,SAAW,OACjB,OAAI,OAAOA,EAAI,QAAW,UAAYE,GAAYF,EAAI,MAAM,EACnD9B,GAAa,CAAC,EAEhBwB,GAAcM,CAAG,EAG1B,GAAIA,EAAI,OAAS,UAAY,MAAM,QAAQA,EAAI,IAAI,EACjD,OAAON,GAAcM,EAAI,IAAI,CAEjC,CAEA,SAASV,GAASnB,EAAQ,CAGxB,GAAIA,GAAUL,GACZ,MAAM,IAAI,WAAW,0DACaA,GAAa,SAAS,EAAE,EAAI,QAAQ,EAExE,OAAOK,EAAS,CAClB,CAEA,SAASN,GAAYM,EAAQ,CAC3B,MAAI,CAACA,GAAUA,IACbA,EAAS,GAEJP,GAAO,MAAM,CAACO,CAAM,CAC7B,CAEAP,GAAO,SAAW,SAAmBmB,EAAG,CACtC,OAAOA,GAAK,MAAQA,EAAE,YAAc,IAClCA,IAAMnB,GAAO,SACjB,EAEAA,GAAO,QAAU,SAAkBuC,EAAGpB,EAAG,CAGvC,GAFIH,GAAWuB,EAAG,UAAU,IAAGA,EAAIvC,GAAO,KAAKuC,EAAGA,EAAE,OAAQA,EAAE,UAAU,GACpEvB,GAAWG,EAAG,UAAU,IAAGA,EAAInB,GAAO,KAAKmB,EAAGA,EAAE,OAAQA,EAAE,UAAU,GACpE,CAACnB,GAAO,SAASuC,CAAC,GAAK,CAACvC,GAAO,SAASmB,CAAC,EAC3C,MAAM,IAAI,UACR,uEACF,EAGF,GAAIoB,IAAMpB,EAAG,MAAO,GAEpB,IAAIqB,EAAID,EAAE,OACNE,EAAItB,EAAE,OAEV,QAASa,EAAI,EAAGK,EAAM,KAAK,IAAIG,EAAGC,CAAC,EAAGT,EAAIK,EAAK,EAAEL,EAC/C,GAAIO,EAAEP,KAAOb,EAAEa,GAAI,CACjBQ,EAAID,EAAEP,GACNS,EAAItB,EAAEa,GACN,KACF,CAGF,OAAIQ,EAAIC,EAAU,GACdA,EAAID,EAAU,EACX,CACT,EAEAxC,GAAO,WAAa,SAAqByB,EAAU,CACjD,OAAQ,OAAOA,CAAQ,EAAE,YAAY,EAAG,CACtC,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,MAAO,GACT,QACE,MAAO,EACX,CACF,EAEAzB,GAAO,OAAS,SAAiB0C,EAAMnC,EAAQ,CAC7C,GAAI,CAAC,MAAM,QAAQmC,CAAI,EACrB,MAAM,IAAI,UAAU,6CAA6C,EAGnE,GAAIA,EAAK,SAAW,EAClB,OAAO1C,GAAO,MAAM,CAAC,EAGvB,IAAIgC,EACJ,GAAIzB,IAAW,OAEb,IADAA,EAAS,EACJyB,EAAI,EAAGA,EAAIU,EAAK,OAAQ,EAAEV,EAC7BzB,GAAUmC,EAAKV,GAAG,OAItB,IAAMW,EAAS3C,GAAO,YAAYO,CAAM,EACpCqC,EAAM,EACV,IAAKZ,EAAI,EAAGA,EAAIU,EAAK,OAAQ,EAAEV,EAAG,CAChC,IAAIxB,EAAMkC,EAAKV,GACf,GAAIhB,GAAWR,EAAK,UAAU,EACxBoC,EAAMpC,EAAI,OAASmC,EAAO,QACvB3C,GAAO,SAASQ,CAAG,IAAGA,EAAMR,GAAO,KAAKQ,CAAG,GAChDA,EAAI,KAAKmC,EAAQC,CAAG,GAEpB,WAAW,UAAU,IAAI,KACvBD,EACAnC,EACAoC,CACF,UAEQ5C,GAAO,SAASQ,CAAG,EAG7BA,EAAI,KAAKmC,EAAQC,CAAG,MAFpB,OAAM,IAAI,UAAU,6CAA6C,EAInEA,GAAOpC,EAAI,MACb,CACA,OAAOmC,CACT,EAEA,SAASf,GAAYD,EAAQF,EAAU,CACrC,GAAIzB,GAAO,SAAS2B,CAAM,EACxB,OAAOA,EAAO,OAEhB,GAAI,YAAY,OAAOA,CAAM,GAAKX,GAAWW,EAAQ,WAAW,EAC9D,OAAOA,EAAO,WAEhB,GAAI,OAAOA,GAAW,SACpB,MAAM,IAAI,UACR,2FACmB,OAAOA,CAC5B,EAGF,IAAMU,EAAMV,EAAO,OACbkB,EAAa,UAAU,OAAS,GAAK,UAAU,KAAO,GAC5D,GAAI,CAACA,GAAaR,IAAQ,EAAG,MAAO,GAGpC,IAAIS,EAAc,GAClB,OACE,OAAQrB,EAAU,CAChB,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOY,EACT,IAAK,OACL,IAAK,QACH,OAAOU,GAAYpB,CAAM,EAAE,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOU,EAAM,EACf,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOW,GAAcrB,CAAM,EAAE,OAC/B,QACE,GAAImB,EACF,OAAOD,EAAY,GAAKE,GAAYpB,CAAM,EAAE,OAE9CF,GAAY,GAAKA,GAAU,YAAY,EACvCqB,EAAc,EAClB,CAEJ,CACA9C,GAAO,WAAa4B,GAEpB,SAASqB,GAAcxB,EAAUyB,EAAOC,EAAK,CAC3C,IAAIL,EAAc,GA8BlB,IArBII,IAAU,QAAaA,EAAQ,KACjCA,EAAQ,GAINA,EAAQ,KAAK,UAIbC,IAAQ,QAAaA,EAAM,KAAK,UAClCA,EAAM,KAAK,QAGTA,GAAO,KAKXA,KAAS,EACTD,KAAW,EAEPC,GAAOD,GACT,MAAO,GAKT,IAFKzB,IAAUA,EAAW,UAGxB,OAAQA,EAAU,CAChB,IAAK,MACH,OAAO2B,GAAS,KAAMF,EAAOC,CAAG,EAElC,IAAK,OACL,IAAK,QACH,OAAOE,GAAU,KAAMH,EAAOC,CAAG,EAEnC,IAAK,QACH,OAAOG,GAAW,KAAMJ,EAAOC,CAAG,EAEpC,IAAK,SACL,IAAK,SACH,OAAOI,GAAY,KAAML,EAAOC,CAAG,EAErC,IAAK,SACH,OAAOK,GAAY,KAAMN,EAAOC,CAAG,EAErC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOM,GAAa,KAAMP,EAAOC,CAAG,EAEtC,QACE,GAAIL,EAAa,MAAM,IAAI,UAAU,qBAAuBrB,CAAQ,EACpEA,GAAYA,EAAW,IAAI,YAAY,EACvCqB,EAAc,EAClB,CAEJ,CAQA9C,GAAO,UAAU,UAAY,GAE7B,SAAS0D,GAAMvC,EAAGwC,EAAGC,EAAG,CACtB,IAAM5B,EAAIb,EAAEwC,GACZxC,EAAEwC,GAAKxC,EAAEyC,GACTzC,EAAEyC,GAAK5B,CACT,CAEAhC,GAAO,UAAU,OAAS,UAAmB,CAC3C,IAAMqC,EAAM,KAAK,OACjB,GAAIA,EAAM,IAAM,EACd,MAAM,IAAI,WAAW,2CAA2C,EAElE,QAASL,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5B0B,GAAK,KAAM1B,EAAGA,EAAI,CAAC,EAErB,OAAO,IACT,EAEAhC,GAAO,UAAU,OAAS,UAAmB,CAC3C,IAAMqC,EAAM,KAAK,OACjB,GAAIA,EAAM,IAAM,EACd,MAAM,IAAI,WAAW,2CAA2C,EAElE,QAASL,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5B0B,GAAK,KAAM1B,EAAGA,EAAI,CAAC,EACnB0B,GAAK,KAAM1B,EAAI,EAAGA,EAAI,CAAC,EAEzB,OAAO,IACT,EAEAhC,GAAO,UAAU,OAAS,UAAmB,CAC3C,IAAMqC,EAAM,KAAK,OACjB,GAAIA,EAAM,IAAM,EACd,MAAM,IAAI,WAAW,2CAA2C,EAElE,QAASL,EAAI,EAAGA,EAAIK,EAAKL,GAAK,EAC5B0B,GAAK,KAAM1B,EAAGA,EAAI,CAAC,EACnB0B,GAAK,KAAM1B,EAAI,EAAGA,EAAI,CAAC,EACvB0B,GAAK,KAAM1B,EAAI,EAAGA,EAAI,CAAC,EACvB0B,GAAK,KAAM1B,EAAI,EAAGA,EAAI,CAAC,EAEzB,OAAO,IACT,EAEAhC,GAAO,UAAU,SAAW,UAAqB,CAC/C,IAAMO,EAAS,KAAK,OACpB,OAAIA,IAAW,EAAU,GACrB,UAAU,SAAW,EAAU8C,GAAU,KAAM,EAAG9C,CAAM,EACrD0C,GAAa,MAAM,KAAM,SAAS,CAC3C,EAEAjD,GAAO,UAAU,eAAiBA,GAAO,UAAU,SAEnDA,GAAO,UAAU,OAAS,SAAiBmB,EAAG,CAC5C,GAAI,CAACnB,GAAO,SAASmB,CAAC,EAAG,MAAM,IAAI,UAAU,2BAA2B,EACxE,OAAI,OAASA,EAAU,GAChBnB,GAAO,QAAQ,KAAMmB,CAAC,IAAM,CACrC,EAEAnB,GAAO,UAAU,QAAU,UAAoB,CAC7C,IAAI6D,EAAM,GACJC,EAAMlE,GAAQ,kBACpB,OAAAiE,EAAM,KAAK,SAAS,MAAO,EAAGC,CAAG,EAAE,QAAQ,UAAW,KAAK,EAAE,KAAK,EAC9D,KAAK,OAASA,IAAKD,GAAO,SACvB,WAAaA,EAAM,GAC5B,EACI9D,KACFC,GAAO,UAAUD,IAAuBC,GAAO,UAAU,SAG3DA,GAAO,UAAU,QAAU,SAAkB+D,EAAQb,EAAOC,EAAKa,EAAWC,EAAS,CAInF,GAHIjD,GAAW+C,EAAQ,UAAU,IAC/BA,EAAS/D,GAAO,KAAK+D,EAAQA,EAAO,OAAQA,EAAO,UAAU,GAE3D,CAAC/D,GAAO,SAAS+D,CAAM,EACzB,MAAM,IAAI,UACR,iFACoB,OAAOA,CAC7B,EAgBF,GAbIb,IAAU,SACZA,EAAQ,GAENC,IAAQ,SACVA,EAAMY,EAASA,EAAO,OAAS,GAE7BC,IAAc,SAChBA,EAAY,GAEVC,IAAY,SACdA,EAAU,KAAK,QAGbf,EAAQ,GAAKC,EAAMY,EAAO,QAAUC,EAAY,GAAKC,EAAU,KAAK,OACtE,MAAM,IAAI,WAAW,oBAAoB,EAG3C,GAAID,GAAaC,GAAWf,GAASC,EACnC,MAAO,GAET,GAAIa,GAAaC,EACf,MAAO,GAET,GAAIf,GAASC,EACX,MAAO,GAQT,GALAD,KAAW,EACXC,KAAS,EACTa,KAAe,EACfC,KAAa,EAET,OAASF,EAAQ,MAAO,GAE5B,IAAIvB,EAAIyB,EAAUD,EACdvB,EAAIU,EAAMD,EACRb,EAAM,KAAK,IAAIG,EAAGC,CAAC,EAEnByB,EAAW,KAAK,MAAMF,EAAWC,CAAO,EACxCE,EAAaJ,EAAO,MAAMb,EAAOC,CAAG,EAE1C,QAASnB,EAAI,EAAGA,EAAIK,EAAK,EAAEL,EACzB,GAAIkC,EAASlC,KAAOmC,EAAWnC,GAAI,CACjCQ,EAAI0B,EAASlC,GACbS,EAAI0B,EAAWnC,GACf,KACF,CAGF,OAAIQ,EAAIC,EAAU,GACdA,EAAID,EAAU,EACX,CACT,EAWA,SAAS4B,GAAsBzB,EAAQ0B,EAAKlC,EAAYV,EAAU6C,EAAK,CAErE,GAAI3B,EAAO,SAAW,EAAG,MAAO,GAmBhC,GAhBI,OAAOR,GAAe,UACxBV,EAAWU,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,EAAa,cACtBA,EAAa,aAEfA,EAAa,CAACA,EACVG,GAAYH,CAAU,IAExBA,EAAamC,EAAM,EAAK3B,EAAO,OAAS,GAItCR,EAAa,IAAGA,EAAaQ,EAAO,OAASR,GAC7CA,GAAcQ,EAAO,OAAQ,CAC/B,GAAI2B,EAAK,MAAO,GACXnC,EAAaQ,EAAO,OAAS,CACpC,SAAWR,EAAa,EACtB,GAAImC,EAAKnC,EAAa,MACjB,OAAO,GASd,GALI,OAAOkC,GAAQ,WACjBA,EAAMrE,GAAO,KAAKqE,EAAK5C,CAAQ,GAI7BzB,GAAO,SAASqE,CAAG,EAErB,OAAIA,EAAI,SAAW,EACV,GAEFE,GAAa5B,EAAQ0B,EAAKlC,EAAYV,EAAU6C,CAAG,EACrD,GAAI,OAAOD,GAAQ,SAExB,OADAA,EAAMA,EAAM,IACR,OAAO,WAAW,UAAU,SAAY,WACtCC,EACK,WAAW,UAAU,QAAQ,KAAK3B,EAAQ0B,EAAKlC,CAAU,EAEzD,WAAW,UAAU,YAAY,KAAKQ,EAAQ0B,EAAKlC,CAAU,EAGjEoC,GAAa5B,EAAQ,CAAC0B,CAAG,EAAGlC,EAAYV,EAAU6C,CAAG,EAG9D,MAAM,IAAI,UAAU,sCAAsC,CAC5D,CAEA,SAASC,GAAcnE,EAAKiE,EAAKlC,EAAYV,EAAU6C,EAAK,CAC1D,IAAIE,EAAY,EACZC,EAAYrE,EAAI,OAChBsE,EAAYL,EAAI,OAEpB,GAAI5C,IAAa,SACfA,EAAW,OAAOA,CAAQ,EAAE,YAAY,EACpCA,IAAa,QAAUA,IAAa,SACpCA,IAAa,WAAaA,IAAa,YAAY,CACrD,GAAIrB,EAAI,OAAS,GAAKiE,EAAI,OAAS,EACjC,MAAO,GAETG,EAAY,EACZC,GAAa,EACbC,GAAa,EACbvC,GAAc,CAChB,CAGF,SAASwC,EAAMnE,EAAKwB,EAAG,CACrB,OAAIwC,IAAc,EACThE,EAAIwB,GAEJxB,EAAI,aAAawB,EAAIwC,CAAS,CAEzC,CAEA,IAAIxC,EACJ,GAAIsC,EAAK,CACP,IAAIM,EAAa,GACjB,IAAK5C,EAAIG,EAAYH,EAAIyC,EAAWzC,IAClC,GAAI2C,EAAKvE,EAAK4B,CAAC,IAAM2C,EAAKN,EAAKO,IAAe,GAAK,EAAI5C,EAAI4C,CAAU,GAEnE,GADIA,IAAe,KAAIA,EAAa5C,GAChCA,EAAI4C,EAAa,IAAMF,EAAW,OAAOE,EAAaJ,OAEtDI,IAAe,KAAI5C,GAAKA,EAAI4C,GAChCA,EAAa,EAGnB,KAEE,KADIzC,EAAauC,EAAYD,IAAWtC,EAAasC,EAAYC,GAC5D1C,EAAIG,EAAYH,GAAK,EAAGA,IAAK,CAChC,IAAI6C,EAAQ,GACZ,QAASC,EAAI,EAAGA,EAAIJ,EAAWI,IAC7B,GAAIH,EAAKvE,EAAK4B,EAAI8C,CAAC,IAAMH,EAAKN,EAAKS,CAAC,EAAG,CACrCD,EAAQ,GACR,KACF,CAEF,GAAIA,EAAO,OAAO7C,CACpB,CAGF,MAAO,EACT,CAEAhC,GAAO,UAAU,SAAW,SAAmBqE,EAAKlC,EAAYV,EAAU,CACxE,OAAO,KAAK,QAAQ4C,EAAKlC,EAAYV,CAAQ,IAAM,EACrD,EAEAzB,GAAO,UAAU,QAAU,SAAkBqE,EAAKlC,EAAYV,EAAU,CACtE,OAAO2C,GAAqB,KAAMC,EAAKlC,EAAYV,EAAU,EAAI,CACnE,EAEAzB,GAAO,UAAU,YAAc,SAAsBqE,EAAKlC,EAAYV,EAAU,CAC9E,OAAO2C,GAAqB,KAAMC,EAAKlC,EAAYV,EAAU,EAAK,CACpE,EAEA,SAASsD,GAAUvE,EAAKmB,EAAQqD,EAAQzE,EAAQ,CAC9CyE,EAAS,OAAOA,CAAM,GAAK,EAC3B,IAAMC,EAAYzE,EAAI,OAASwE,EAC1BzE,GAGHA,EAAS,OAAOA,CAAM,EAClBA,EAAS0E,IACX1E,EAAS0E,IAJX1E,EAAS0E,EAQX,IAAMC,EAASvD,EAAO,OAElBpB,EAAS2E,EAAS,IACpB3E,EAAS2E,EAAS,GAEpB,IAAIlD,EACJ,IAAKA,EAAI,EAAGA,EAAIzB,EAAQ,EAAEyB,EAAG,CAC3B,IAAMmD,EAAS,SAASxD,EAAO,OAAOK,EAAI,EAAG,CAAC,EAAG,EAAE,EACnD,GAAIM,GAAY6C,CAAM,EAAG,OAAOnD,EAChCxB,EAAIwE,EAAShD,GAAKmD,CACpB,CACA,OAAOnD,CACT,CAEA,SAASoD,GAAW5E,EAAKmB,EAAQqD,EAAQzE,EAAQ,CAC/C,OAAO8E,GAAWtC,GAAYpB,EAAQnB,EAAI,OAASwE,CAAM,EAAGxE,EAAKwE,EAAQzE,CAAM,CACjF,CAEA,SAAS+E,GAAY9E,EAAKmB,EAAQqD,EAAQzE,EAAQ,CAChD,OAAO8E,GAAWE,GAAa5D,CAAM,EAAGnB,EAAKwE,EAAQzE,CAAM,CAC7D,CAEA,SAASiF,GAAahF,EAAKmB,EAAQqD,EAAQzE,EAAQ,CACjD,OAAO8E,GAAWrC,GAAcrB,CAAM,EAAGnB,EAAKwE,EAAQzE,CAAM,CAC9D,CAEA,SAASkF,GAAWjF,EAAKmB,EAAQqD,EAAQzE,EAAQ,CAC/C,OAAO8E,GAAWK,GAAe/D,EAAQnB,EAAI,OAASwE,CAAM,EAAGxE,EAAKwE,EAAQzE,CAAM,CACpF,CAEAP,GAAO,UAAU,MAAQ,SAAgB2B,EAAQqD,EAAQzE,EAAQkB,EAAU,CAEzE,GAAIuD,IAAW,OACbvD,EAAW,OACXlB,EAAS,KAAK,OACdyE,EAAS,UAEAzE,IAAW,QAAa,OAAOyE,GAAW,SACnDvD,EAAWuD,EACXzE,EAAS,KAAK,OACdyE,EAAS,UAEA,SAASA,CAAM,EACxBA,EAASA,IAAW,EAChB,SAASzE,CAAM,GACjBA,EAASA,IAAW,EAChBkB,IAAa,SAAWA,EAAW,UAEvCA,EAAWlB,EACXA,EAAS,YAGX,OAAM,IAAI,MACR,yEACF,EAGF,IAAM0E,EAAY,KAAK,OAASD,EAGhC,IAFIzE,IAAW,QAAaA,EAAS0E,KAAW1E,EAAS0E,GAEpDtD,EAAO,OAAS,IAAMpB,EAAS,GAAKyE,EAAS,IAAOA,EAAS,KAAK,OACrE,MAAM,IAAI,WAAW,wCAAwC,EAG1DvD,IAAUA,EAAW,QAE1B,IAAIqB,EAAc,GAClB,OACE,OAAQrB,EAAU,CAChB,IAAK,MACH,OAAOsD,GAAS,KAAMpD,EAAQqD,EAAQzE,CAAM,EAE9C,IAAK,OACL,IAAK,QACH,OAAO6E,GAAU,KAAMzD,EAAQqD,EAAQzE,CAAM,EAE/C,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAO+E,GAAW,KAAM3D,EAAQqD,EAAQzE,CAAM,EAEhD,IAAK,SAEH,OAAOiF,GAAY,KAAM7D,EAAQqD,EAAQzE,CAAM,EAEjD,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOkF,GAAU,KAAM9D,EAAQqD,EAAQzE,CAAM,EAE/C,QACE,GAAIuC,EAAa,MAAM,IAAI,UAAU,qBAAuBrB,CAAQ,EACpEA,GAAY,GAAKA,GAAU,YAAY,EACvCqB,EAAc,EAClB,CAEJ,EAEA9C,GAAO,UAAU,OAAS,UAAmB,CAC3C,MAAO,CACL,KAAM,SACN,KAAM,MAAM,UAAU,MAAM,KAAK,KAAK,MAAQ,KAAM,CAAC,CACvD,CACF,EAEA,SAASwD,GAAahD,EAAK0C,EAAOC,EAAK,CACrC,OAAID,IAAU,GAAKC,IAAQ3C,EAAI,OACtBX,GAAO,cAAcW,CAAG,EAExBX,GAAO,cAAcW,EAAI,MAAM0C,EAAOC,CAAG,CAAC,CAErD,CAEA,SAASE,GAAW7C,EAAK0C,EAAOC,EAAK,CACnCA,EAAM,KAAK,IAAI3C,EAAI,OAAQ2C,CAAG,EAC9B,IAAMwC,EAAM,CAAC,EAET,EAAIzC,EACR,KAAO,EAAIC,GAAK,CACd,IAAMyC,EAAYpF,EAAI,GAClBqF,EAAY,KACZC,EAAoBF,EAAY,IAChC,EACCA,EAAY,IACT,EACCA,EAAY,IACT,EACA,EAEZ,GAAI,EAAIE,GAAoB3C,EAAK,CAC/B,IAAI4C,EAAYC,EAAWC,EAAYC,EAEvC,OAAQJ,EAAkB,CACxB,IAAK,GACCF,EAAY,MACdC,EAAYD,GAEd,MACF,IAAK,GACHG,EAAavF,EAAI,EAAI,IAChBuF,EAAa,OAAU,MAC1BG,GAAiBN,EAAY,KAAS,EAAOG,EAAa,GACtDG,EAAgB,MAClBL,EAAYK,IAGhB,MACF,IAAK,GACHH,EAAavF,EAAI,EAAI,GACrBwF,EAAYxF,EAAI,EAAI,IACfuF,EAAa,OAAU,MAASC,EAAY,OAAU,MACzDE,GAAiBN,EAAY,KAAQ,IAAOG,EAAa,KAAS,EAAOC,EAAY,GACjFE,EAAgB,OAAUA,EAAgB,OAAUA,EAAgB,SACtEL,EAAYK,IAGhB,MACF,IAAK,GACHH,EAAavF,EAAI,EAAI,GACrBwF,EAAYxF,EAAI,EAAI,GACpByF,EAAazF,EAAI,EAAI,IAChBuF,EAAa,OAAU,MAASC,EAAY,OAAU,MAASC,EAAa,OAAU,MACzFC,GAAiBN,EAAY,KAAQ,IAAQG,EAAa,KAAS,IAAOC,EAAY,KAAS,EAAOC,EAAa,GAC/GC,EAAgB,OAAUA,EAAgB,UAC5CL,EAAYK,GAGpB,CACF,CAEIL,IAAc,MAGhBA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbF,EAAI,KAAKE,IAAc,GAAK,KAAQ,KAAM,EAC1CA,EAAY,MAASA,EAAY,MAGnCF,EAAI,KAAKE,CAAS,EAClB,GAAKC,CACP,CAEA,OAAOK,GAAsBR,CAAG,CAClC,CAKA,IAAMS,GAAuB,KAE7B,SAASD,GAAuBE,EAAY,CAC1C,IAAMhE,EAAMgE,EAAW,OACvB,GAAIhE,GAAO+D,GACT,OAAO,OAAO,aAAa,MAAM,OAAQC,CAAU,EAIrD,IAAIV,EAAM,GACN3D,EAAI,EACR,KAAOA,EAAIK,GACTsD,GAAO,OAAO,aAAa,MACzB,OACAU,EAAW,MAAMrE,EAAGA,GAAKoE,EAAoB,CAC/C,EAEF,OAAOT,CACT,CAEA,SAASrC,GAAY9C,EAAK0C,EAAOC,EAAK,CACpC,IAAImD,EAAM,GACVnD,EAAM,KAAK,IAAI3C,EAAI,OAAQ2C,CAAG,EAE9B,QAAS,EAAID,EAAO,EAAIC,EAAK,EAAE,EAC7BmD,GAAO,OAAO,aAAa9F,EAAI,GAAK,GAAI,EAE1C,OAAO8F,CACT,CAEA,SAAS/C,GAAa/C,EAAK0C,EAAOC,EAAK,CACrC,IAAImD,EAAM,GACVnD,EAAM,KAAK,IAAI3C,EAAI,OAAQ2C,CAAG,EAE9B,QAAS,EAAID,EAAO,EAAIC,EAAK,EAAE,EAC7BmD,GAAO,OAAO,aAAa9F,EAAI,EAAE,EAEnC,OAAO8F,CACT,CAEA,SAASlD,GAAU5C,EAAK0C,EAAOC,EAAK,CAClC,IAAMd,EAAM7B,EAAI,QAEZ,CAAC0C,GAASA,EAAQ,KAAGA,EAAQ,IAC7B,CAACC,GAAOA,EAAM,GAAKA,EAAMd,KAAKc,EAAMd,GAExC,IAAIkE,EAAM,GACV,QAASvE,EAAIkB,EAAOlB,EAAImB,EAAK,EAAEnB,EAC7BuE,GAAOC,GAAoBhG,EAAIwB,IAEjC,OAAOuE,CACT,CAEA,SAAS9C,GAAcjD,EAAK0C,EAAOC,EAAK,CACtC,IAAMsD,EAAQjG,EAAI,MAAM0C,EAAOC,CAAG,EAC9BwC,EAAM,GAEV,QAAS3D,EAAI,EAAGA,EAAIyE,EAAM,OAAS,EAAGzE,GAAK,EACzC2D,GAAO,OAAO,aAAac,EAAMzE,GAAMyE,EAAMzE,EAAI,GAAK,GAAI,EAE5D,OAAO2D,CACT,CAEA3F,GAAO,UAAU,MAAQ,SAAgBkD,EAAOC,EAAK,CACnD,IAAMd,EAAM,KAAK,OACjBa,EAAQ,CAAC,CAACA,EACVC,EAAMA,IAAQ,OAAYd,EAAM,CAAC,CAACc,EAE9BD,EAAQ,GACVA,GAASb,EACLa,EAAQ,IAAGA,EAAQ,IACdA,EAAQb,IACjBa,EAAQb,GAGNc,EAAM,GACRA,GAAOd,EACHc,EAAM,IAAGA,EAAM,IACVA,EAAMd,IACfc,EAAMd,GAGJc,EAAMD,IAAOC,EAAMD,GAEvB,IAAMwD,EAAS,KAAK,SAASxD,EAAOC,CAAG,EAEvC,cAAO,eAAeuD,EAAQ1G,GAAO,SAAS,EAEvC0G,CACT,EAKA,SAASC,GAAa3B,EAAQ4B,EAAKrG,EAAQ,CACzC,GAAKyE,EAAS,IAAO,GAAKA,EAAS,EAAG,MAAM,IAAI,WAAW,oBAAoB,EAC/E,GAAIA,EAAS4B,EAAMrG,EAAQ,MAAM,IAAI,WAAW,uCAAuC,CACzF,CAEAP,GAAO,UAAU,WACjBA,GAAO,UAAU,WAAa,SAAqBgF,EAAQpD,EAAYiF,EAAU,CAC/E7B,EAASA,IAAW,EACpBpD,EAAaA,IAAe,EACvBiF,GAAUF,GAAY3B,EAAQpD,EAAY,KAAK,MAAM,EAE1D,IAAIyC,EAAM,KAAKW,GACX8B,EAAM,EACN9E,EAAI,EACR,KAAO,EAAEA,EAAIJ,IAAekF,GAAO,MACjCzC,GAAO,KAAKW,EAAShD,GAAK8E,EAG5B,OAAOzC,CACT,EAEArE,GAAO,UAAU,WACjBA,GAAO,UAAU,WAAa,SAAqBgF,EAAQpD,EAAYiF,EAAU,CAC/E7B,EAASA,IAAW,EACpBpD,EAAaA,IAAe,EACvBiF,GACHF,GAAY3B,EAAQpD,EAAY,KAAK,MAAM,EAG7C,IAAIyC,EAAM,KAAKW,EAAS,EAAEpD,GACtBkF,EAAM,EACV,KAAOlF,EAAa,IAAMkF,GAAO,MAC/BzC,GAAO,KAAKW,EAAS,EAAEpD,GAAckF,EAGvC,OAAOzC,CACT,EAEArE,GAAO,UAAU,UACjBA,GAAO,UAAU,UAAY,SAAoBgF,EAAQ6B,EAAU,CACjE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAC1C,KAAKA,EACd,EAEAhF,GAAO,UAAU,aACjBA,GAAO,UAAU,aAAe,SAAuBgF,EAAQ6B,EAAU,CACvE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAC1C,KAAKA,GAAW,KAAKA,EAAS,IAAM,CAC7C,EAEAhF,GAAO,UAAU,aACjBA,GAAO,UAAU,aAAe,SAAuBgF,EAAQ6B,EAAU,CACvE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EACzC,KAAKA,IAAW,EAAK,KAAKA,EAAS,EAC7C,EAEAhF,GAAO,UAAU,aACjBA,GAAO,UAAU,aAAe,SAAuBgF,EAAQ6B,EAAU,CACvE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,GAExC,KAAKA,GACT,KAAKA,EAAS,IAAM,EACpB,KAAKA,EAAS,IAAM,IACpB,KAAKA,EAAS,GAAK,QAC1B,EAEAhF,GAAO,UAAU,aACjBA,GAAO,UAAU,aAAe,SAAuBgF,EAAQ6B,EAAU,CACvE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAEzC,KAAKA,GAAU,UACnB,KAAKA,EAAS,IAAM,GACrB,KAAKA,EAAS,IAAM,EACrB,KAAKA,EAAS,GAClB,EAEAhF,GAAO,UAAU,gBAAkB+G,GAAmB,SAA0B/B,EAAQ,CACtFA,EAASA,IAAW,EACpBgC,GAAehC,EAAQ,QAAQ,EAC/B,IAAMiC,EAAQ,KAAKjC,GACbkC,EAAO,KAAKlC,EAAS,IACvBiC,IAAU,QAAaC,IAAS,SAClCC,GAAYnC,EAAQ,KAAK,OAAS,CAAC,EAGrC,IAAMoC,EAAKH,EACT,KAAK,EAAEjC,GAAU,GAAK,EACtB,KAAK,EAAEA,GAAU,GAAK,GACtB,KAAK,EAAEA,GAAU,GAAK,GAElBqC,EAAK,KAAK,EAAErC,GAChB,KAAK,EAAEA,GAAU,GAAK,EACtB,KAAK,EAAEA,GAAU,GAAK,GACtBkC,EAAO,GAAK,GAEd,OAAO,OAAOE,CAAE,GAAK,OAAOC,CAAE,GAAK,OAAO,EAAE,EAC9C,CAAC,EAEDrH,GAAO,UAAU,gBAAkB+G,GAAmB,SAA0B/B,EAAQ,CACtFA,EAASA,IAAW,EACpBgC,GAAehC,EAAQ,QAAQ,EAC/B,IAAMiC,EAAQ,KAAKjC,GACbkC,EAAO,KAAKlC,EAAS,IACvBiC,IAAU,QAAaC,IAAS,SAClCC,GAAYnC,EAAQ,KAAK,OAAS,CAAC,EAGrC,IAAMqC,EAAKJ,EAAQ,GAAK,GACtB,KAAK,EAAEjC,GAAU,GAAK,GACtB,KAAK,EAAEA,GAAU,GAAK,EACtB,KAAK,EAAEA,GAEHoC,EAAK,KAAK,EAAEpC,GAAU,GAAK,GAC/B,KAAK,EAAEA,GAAU,GAAK,GACtB,KAAK,EAAEA,GAAU,GAAK,EACtBkC,EAEF,OAAQ,OAAOG,CAAE,GAAK,OAAO,EAAE,GAAK,OAAOD,CAAE,CAC/C,CAAC,EAEDpH,GAAO,UAAU,UAAY,SAAoBgF,EAAQpD,EAAYiF,EAAU,CAC7E7B,EAASA,IAAW,EACpBpD,EAAaA,IAAe,EACvBiF,GAAUF,GAAY3B,EAAQpD,EAAY,KAAK,MAAM,EAE1D,IAAIyC,EAAM,KAAKW,GACX8B,EAAM,EACN9E,EAAI,EACR,KAAO,EAAEA,EAAIJ,IAAekF,GAAO,MACjCzC,GAAO,KAAKW,EAAShD,GAAK8E,EAE5B,OAAAA,GAAO,IAEHzC,GAAOyC,IAAKzC,GAAO,KAAK,IAAI,EAAG,EAAIzC,CAAU,GAE1CyC,CACT,EAEArE,GAAO,UAAU,UAAY,SAAoBgF,EAAQpD,EAAYiF,EAAU,CAC7E7B,EAASA,IAAW,EACpBpD,EAAaA,IAAe,EACvBiF,GAAUF,GAAY3B,EAAQpD,EAAY,KAAK,MAAM,EAE1D,IAAI,EAAIA,EACJkF,EAAM,EACNzC,EAAM,KAAKW,EAAS,EAAE,GAC1B,KAAO,EAAI,IAAM8B,GAAO,MACtBzC,GAAO,KAAKW,EAAS,EAAE,GAAK8B,EAE9B,OAAAA,GAAO,IAEHzC,GAAOyC,IAAKzC,GAAO,KAAK,IAAI,EAAG,EAAIzC,CAAU,GAE1CyC,CACT,EAEArE,GAAO,UAAU,SAAW,SAAmBgF,EAAQ6B,EAAU,CAG/D,OAFA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAC3C,KAAKA,GAAU,KACZ,IAAO,KAAKA,GAAU,GAAK,GADA,KAAKA,EAE3C,EAEAhF,GAAO,UAAU,YAAc,SAAsBgF,EAAQ6B,EAAU,CACrE7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EACjD,IAAMX,EAAM,KAAKW,GAAW,KAAKA,EAAS,IAAM,EAChD,OAAQX,EAAM,MAAUA,EAAM,WAAaA,CAC7C,EAEArE,GAAO,UAAU,YAAc,SAAsBgF,EAAQ6B,EAAU,CACrE7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EACjD,IAAMX,EAAM,KAAKW,EAAS,GAAM,KAAKA,IAAW,EAChD,OAAQX,EAAM,MAAUA,EAAM,WAAaA,CAC7C,EAEArE,GAAO,UAAU,YAAc,SAAsBgF,EAAQ6B,EAAU,CACrE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAEzC,KAAKA,GACV,KAAKA,EAAS,IAAM,EACpB,KAAKA,EAAS,IAAM,GACpB,KAAKA,EAAS,IAAM,EACzB,EAEAhF,GAAO,UAAU,YAAc,SAAsBgF,EAAQ6B,EAAU,CACrE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAEzC,KAAKA,IAAW,GACrB,KAAKA,EAAS,IAAM,GACpB,KAAKA,EAAS,IAAM,EACpB,KAAKA,EAAS,EACnB,EAEAhF,GAAO,UAAU,eAAiB+G,GAAmB,SAAyB/B,EAAQ,CACpFA,EAASA,IAAW,EACpBgC,GAAehC,EAAQ,QAAQ,EAC/B,IAAMiC,EAAQ,KAAKjC,GACbkC,EAAO,KAAKlC,EAAS,IACvBiC,IAAU,QAAaC,IAAS,SAClCC,GAAYnC,EAAQ,KAAK,OAAS,CAAC,EAGrC,IAAMX,EAAM,KAAKW,EAAS,GACxB,KAAKA,EAAS,GAAK,GAAK,EACxB,KAAKA,EAAS,GAAK,GAAK,IACvBkC,GAAQ,IAEX,OAAQ,OAAO7C,CAAG,GAAK,OAAO,EAAE,GAC9B,OAAO4C,EACP,KAAK,EAAEjC,GAAU,GAAK,EACtB,KAAK,EAAEA,GAAU,GAAK,GACtB,KAAK,EAAEA,GAAU,GAAK,EAAE,CAC5B,CAAC,EAEDhF,GAAO,UAAU,eAAiB+G,GAAmB,SAAyB/B,EAAQ,CACpFA,EAASA,IAAW,EACpBgC,GAAehC,EAAQ,QAAQ,EAC/B,IAAMiC,EAAQ,KAAKjC,GACbkC,EAAO,KAAKlC,EAAS,IACvBiC,IAAU,QAAaC,IAAS,SAClCC,GAAYnC,EAAQ,KAAK,OAAS,CAAC,EAGrC,IAAMX,GAAO4C,GAAS,IACpB,KAAK,EAAEjC,GAAU,GAAK,GACtB,KAAK,EAAEA,GAAU,GAAK,EACtB,KAAK,EAAEA,GAET,OAAQ,OAAOX,CAAG,GAAK,OAAO,EAAE,GAC9B,OAAO,KAAK,EAAEW,GAAU,GAAK,GAC7B,KAAK,EAAEA,GAAU,GAAK,GACtB,KAAK,EAAEA,GAAU,GAAK,EACtBkC,CAAI,CACR,CAAC,EAEDlH,GAAO,UAAU,YAAc,SAAsBgF,EAAQ6B,EAAU,CACrE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAC1ClF,GAAQ,KAAK,KAAMkF,EAAQ,GAAM,GAAI,CAAC,CAC/C,EAEAhF,GAAO,UAAU,YAAc,SAAsBgF,EAAQ6B,EAAU,CACrE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAC1ClF,GAAQ,KAAK,KAAMkF,EAAQ,GAAO,GAAI,CAAC,CAChD,EAEAhF,GAAO,UAAU,aAAe,SAAuBgF,EAAQ6B,EAAU,CACvE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAC1ClF,GAAQ,KAAK,KAAMkF,EAAQ,GAAM,GAAI,CAAC,CAC/C,EAEAhF,GAAO,UAAU,aAAe,SAAuBgF,EAAQ6B,EAAU,CACvE,OAAA7B,EAASA,IAAW,EACf6B,GAAUF,GAAY3B,EAAQ,EAAG,KAAK,MAAM,EAC1ClF,GAAQ,KAAK,KAAMkF,EAAQ,GAAO,GAAI,CAAC,CAChD,EAEA,SAASsC,GAAU9G,EAAKK,EAAOmE,EAAQ4B,EAAK9C,EAAKyD,EAAK,CACpD,GAAI,CAACvH,GAAO,SAASQ,CAAG,EAAG,MAAM,IAAI,UAAU,6CAA6C,EAC5F,GAAIK,EAAQiD,GAAOjD,EAAQ0G,EAAK,MAAM,IAAI,WAAW,mCAAmC,EACxF,GAAIvC,EAAS4B,EAAMpG,EAAI,OAAQ,MAAM,IAAI,WAAW,oBAAoB,CAC1E,CAEAR,GAAO,UAAU,YACjBA,GAAO,UAAU,YAAc,SAAsBa,EAAOmE,EAAQpD,EAAYiF,EAAU,CAIxF,GAHAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACpBpD,EAAaA,IAAe,EACxB,CAACiF,EAAU,CACb,IAAMW,EAAW,KAAK,IAAI,EAAG,EAAI5F,CAAU,EAAI,EAC/C0F,GAAS,KAAMzG,EAAOmE,EAAQpD,EAAY4F,EAAU,CAAC,CACvD,CAEA,IAAIV,EAAM,EACN9E,EAAI,EAER,IADA,KAAKgD,GAAUnE,EAAQ,IAChB,EAAEmB,EAAIJ,IAAekF,GAAO,MACjC,KAAK9B,EAAShD,GAAMnB,EAAQiG,EAAO,IAGrC,OAAO9B,EAASpD,CAClB,EAEA5B,GAAO,UAAU,YACjBA,GAAO,UAAU,YAAc,SAAsBa,EAAOmE,EAAQpD,EAAYiF,EAAU,CAIxF,GAHAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACpBpD,EAAaA,IAAe,EACxB,CAACiF,EAAU,CACb,IAAMW,EAAW,KAAK,IAAI,EAAG,EAAI5F,CAAU,EAAI,EAC/C0F,GAAS,KAAMzG,EAAOmE,EAAQpD,EAAY4F,EAAU,CAAC,CACvD,CAEA,IAAIxF,EAAIJ,EAAa,EACjBkF,EAAM,EAEV,IADA,KAAK9B,EAAShD,GAAKnB,EAAQ,IACpB,EAAEmB,GAAK,IAAM8E,GAAO,MACzB,KAAK9B,EAAShD,GAAMnB,EAAQiG,EAAO,IAGrC,OAAO9B,EAASpD,CAClB,EAEA5B,GAAO,UAAU,WACjBA,GAAO,UAAU,WAAa,SAAqBa,EAAOmE,EAAQ6B,EAAU,CAC1E,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,IAAM,CAAC,EACvD,KAAKA,GAAWnE,EAAQ,IACjBmE,EAAS,CAClB,EAEAhF,GAAO,UAAU,cACjBA,GAAO,UAAU,cAAgB,SAAwBa,EAAOmE,EAAQ6B,EAAU,CAChF,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,MAAQ,CAAC,EACzD,KAAKA,GAAWnE,EAAQ,IACxB,KAAKmE,EAAS,GAAMnE,IAAU,EACvBmE,EAAS,CAClB,EAEAhF,GAAO,UAAU,cACjBA,GAAO,UAAU,cAAgB,SAAwBa,EAAOmE,EAAQ6B,EAAU,CAChF,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,MAAQ,CAAC,EACzD,KAAKA,GAAWnE,IAAU,EAC1B,KAAKmE,EAAS,GAAMnE,EAAQ,IACrBmE,EAAS,CAClB,EAEAhF,GAAO,UAAU,cACjBA,GAAO,UAAU,cAAgB,SAAwBa,EAAOmE,EAAQ6B,EAAU,CAChF,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,WAAY,CAAC,EAC7D,KAAKA,EAAS,GAAMnE,IAAU,GAC9B,KAAKmE,EAAS,GAAMnE,IAAU,GAC9B,KAAKmE,EAAS,GAAMnE,IAAU,EAC9B,KAAKmE,GAAWnE,EAAQ,IACjBmE,EAAS,CAClB,EAEAhF,GAAO,UAAU,cACjBA,GAAO,UAAU,cAAgB,SAAwBa,EAAOmE,EAAQ6B,EAAU,CAChF,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,WAAY,CAAC,EAC7D,KAAKA,GAAWnE,IAAU,GAC1B,KAAKmE,EAAS,GAAMnE,IAAU,GAC9B,KAAKmE,EAAS,GAAMnE,IAAU,EAC9B,KAAKmE,EAAS,GAAMnE,EAAQ,IACrBmE,EAAS,CAClB,EAEA,SAASyC,GAAgBjH,EAAKK,EAAOmE,EAAQuC,EAAKzD,EAAK,CACrD4D,GAAW7G,EAAO0G,EAAKzD,EAAKtD,EAAKwE,EAAQ,CAAC,EAE1C,IAAIoC,EAAK,OAAOvG,EAAQ,OAAO,UAAU,CAAC,EAC1CL,EAAIwE,KAAYoC,EAChBA,EAAKA,GAAM,EACX5G,EAAIwE,KAAYoC,EAChBA,EAAKA,GAAM,EACX5G,EAAIwE,KAAYoC,EAChBA,EAAKA,GAAM,EACX5G,EAAIwE,KAAYoC,EAChB,IAAIC,EAAK,OAAOxG,GAAS,OAAO,EAAE,EAAI,OAAO,UAAU,CAAC,EACxD,OAAAL,EAAIwE,KAAYqC,EAChBA,EAAKA,GAAM,EACX7G,EAAIwE,KAAYqC,EAChBA,EAAKA,GAAM,EACX7G,EAAIwE,KAAYqC,EAChBA,EAAKA,GAAM,EACX7G,EAAIwE,KAAYqC,EACTrC,CACT,CAEA,SAAS2C,GAAgBnH,EAAKK,EAAOmE,EAAQuC,EAAKzD,EAAK,CACrD4D,GAAW7G,EAAO0G,EAAKzD,EAAKtD,EAAKwE,EAAQ,CAAC,EAE1C,IAAIoC,EAAK,OAAOvG,EAAQ,OAAO,UAAU,CAAC,EAC1CL,EAAIwE,EAAS,GAAKoC,EAClBA,EAAKA,GAAM,EACX5G,EAAIwE,EAAS,GAAKoC,EAClBA,EAAKA,GAAM,EACX5G,EAAIwE,EAAS,GAAKoC,EAClBA,EAAKA,GAAM,EACX5G,EAAIwE,EAAS,GAAKoC,EAClB,IAAIC,EAAK,OAAOxG,GAAS,OAAO,EAAE,EAAI,OAAO,UAAU,CAAC,EACxD,OAAAL,EAAIwE,EAAS,GAAKqC,EAClBA,EAAKA,GAAM,EACX7G,EAAIwE,EAAS,GAAKqC,EAClBA,EAAKA,GAAM,EACX7G,EAAIwE,EAAS,GAAKqC,EAClBA,EAAKA,GAAM,EACX7G,EAAIwE,GAAUqC,EACPrC,EAAS,CAClB,CAEAhF,GAAO,UAAU,iBAAmB+G,GAAmB,SAA2BlG,EAAOmE,EAAS,EAAG,CACnG,OAAOyC,GAAe,KAAM5G,EAAOmE,EAAQ,OAAO,CAAC,EAAG,OAAO,oBAAoB,CAAC,CACpF,CAAC,EAEDhF,GAAO,UAAU,iBAAmB+G,GAAmB,SAA2BlG,EAAOmE,EAAS,EAAG,CACnG,OAAO2C,GAAe,KAAM9G,EAAOmE,EAAQ,OAAO,CAAC,EAAG,OAAO,oBAAoB,CAAC,CACpF,CAAC,EAEDhF,GAAO,UAAU,WAAa,SAAqBa,EAAOmE,EAAQpD,EAAYiF,EAAU,CAGtF,GAFAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EAChB,CAAC6B,EAAU,CACb,IAAMe,EAAQ,KAAK,IAAI,EAAI,EAAIhG,EAAc,CAAC,EAE9C0F,GAAS,KAAMzG,EAAOmE,EAAQpD,EAAYgG,EAAQ,EAAG,CAACA,CAAK,CAC7D,CAEA,IAAI5F,EAAI,EACJ8E,EAAM,EACNe,EAAM,EAEV,IADA,KAAK7C,GAAUnE,EAAQ,IAChB,EAAEmB,EAAIJ,IAAekF,GAAO,MAC7BjG,EAAQ,GAAKgH,IAAQ,GAAK,KAAK7C,EAAShD,EAAI,KAAO,IACrD6F,EAAM,GAER,KAAK7C,EAAShD,IAAOnB,EAAQiG,GAAQ,GAAKe,EAAM,IAGlD,OAAO7C,EAASpD,CAClB,EAEA5B,GAAO,UAAU,WAAa,SAAqBa,EAAOmE,EAAQpD,EAAYiF,EAAU,CAGtF,GAFAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EAChB,CAAC6B,EAAU,CACb,IAAMe,EAAQ,KAAK,IAAI,EAAI,EAAIhG,EAAc,CAAC,EAE9C0F,GAAS,KAAMzG,EAAOmE,EAAQpD,EAAYgG,EAAQ,EAAG,CAACA,CAAK,CAC7D,CAEA,IAAI5F,EAAIJ,EAAa,EACjBkF,EAAM,EACNe,EAAM,EAEV,IADA,KAAK7C,EAAShD,GAAKnB,EAAQ,IACpB,EAAEmB,GAAK,IAAM8E,GAAO,MACrBjG,EAAQ,GAAKgH,IAAQ,GAAK,KAAK7C,EAAShD,EAAI,KAAO,IACrD6F,EAAM,GAER,KAAK7C,EAAShD,IAAOnB,EAAQiG,GAAQ,GAAKe,EAAM,IAGlD,OAAO7C,EAASpD,CAClB,EAEA5B,GAAO,UAAU,UAAY,SAAoBa,EAAOmE,EAAQ6B,EAAU,CACxE,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,IAAM,IAAK,EACvDnE,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtC,KAAKmE,GAAWnE,EAAQ,IACjBmE,EAAS,CAClB,EAEAhF,GAAO,UAAU,aAAe,SAAuBa,EAAOmE,EAAQ6B,EAAU,CAC9E,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,MAAQ,MAAO,EAC/D,KAAKA,GAAWnE,EAAQ,IACxB,KAAKmE,EAAS,GAAMnE,IAAU,EACvBmE,EAAS,CAClB,EAEAhF,GAAO,UAAU,aAAe,SAAuBa,EAAOmE,EAAQ6B,EAAU,CAC9E,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,MAAQ,MAAO,EAC/D,KAAKA,GAAWnE,IAAU,EAC1B,KAAKmE,EAAS,GAAMnE,EAAQ,IACrBmE,EAAS,CAClB,EAEAhF,GAAO,UAAU,aAAe,SAAuBa,EAAOmE,EAAQ6B,EAAU,CAC9E,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,WAAY,WAAW,EACvE,KAAKA,GAAWnE,EAAQ,IACxB,KAAKmE,EAAS,GAAMnE,IAAU,EAC9B,KAAKmE,EAAS,GAAMnE,IAAU,GAC9B,KAAKmE,EAAS,GAAMnE,IAAU,GACvBmE,EAAS,CAClB,EAEAhF,GAAO,UAAU,aAAe,SAAuBa,EAAOmE,EAAQ6B,EAAU,CAC9E,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GAAUS,GAAS,KAAMzG,EAAOmE,EAAQ,EAAG,WAAY,WAAW,EACnEnE,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C,KAAKmE,GAAWnE,IAAU,GAC1B,KAAKmE,EAAS,GAAMnE,IAAU,GAC9B,KAAKmE,EAAS,GAAMnE,IAAU,EAC9B,KAAKmE,EAAS,GAAMnE,EAAQ,IACrBmE,EAAS,CAClB,EAEAhF,GAAO,UAAU,gBAAkB+G,GAAmB,SAA0BlG,EAAOmE,EAAS,EAAG,CACjG,OAAOyC,GAAe,KAAM5G,EAAOmE,EAAQ,CAAC,OAAO,oBAAoB,EAAG,OAAO,oBAAoB,CAAC,CACxG,CAAC,EAEDhF,GAAO,UAAU,gBAAkB+G,GAAmB,SAA0BlG,EAAOmE,EAAS,EAAG,CACjG,OAAO2C,GAAe,KAAM9G,EAAOmE,EAAQ,CAAC,OAAO,oBAAoB,EAAG,OAAO,oBAAoB,CAAC,CACxG,CAAC,EAED,SAAS8C,GAActH,EAAKK,EAAOmE,EAAQ4B,EAAK9C,EAAKyD,EAAK,CACxD,GAAIvC,EAAS4B,EAAMpG,EAAI,OAAQ,MAAM,IAAI,WAAW,oBAAoB,EACxE,GAAIwE,EAAS,EAAG,MAAM,IAAI,WAAW,oBAAoB,CAC3D,CAEA,SAAS+C,GAAYvH,EAAKK,EAAOmE,EAAQgD,EAAcnB,EAAU,CAC/D,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GACHiB,GAAatH,EAAKK,EAAOmE,EAAQ,EAAG,qBAAwB,qBAAuB,EAErFlF,GAAQ,MAAMU,EAAKK,EAAOmE,EAAQgD,EAAc,GAAI,CAAC,EAC9ChD,EAAS,CAClB,CAEAhF,GAAO,UAAU,aAAe,SAAuBa,EAAOmE,EAAQ6B,EAAU,CAC9E,OAAOkB,GAAW,KAAMlH,EAAOmE,EAAQ,GAAM6B,CAAQ,CACvD,EAEA7G,GAAO,UAAU,aAAe,SAAuBa,EAAOmE,EAAQ6B,EAAU,CAC9E,OAAOkB,GAAW,KAAMlH,EAAOmE,EAAQ,GAAO6B,CAAQ,CACxD,EAEA,SAASoB,GAAazH,EAAKK,EAAOmE,EAAQgD,EAAcnB,EAAU,CAChE,OAAAhG,EAAQ,CAACA,EACTmE,EAASA,IAAW,EACf6B,GACHiB,GAAatH,EAAKK,EAAOmE,EAAQ,EAAG,sBAAyB,sBAAwB,EAEvFlF,GAAQ,MAAMU,EAAKK,EAAOmE,EAAQgD,EAAc,GAAI,CAAC,EAC9ChD,EAAS,CAClB,CAEAhF,GAAO,UAAU,cAAgB,SAAwBa,EAAOmE,EAAQ6B,EAAU,CAChF,OAAOoB,GAAY,KAAMpH,EAAOmE,EAAQ,GAAM6B,CAAQ,CACxD,EAEA7G,GAAO,UAAU,cAAgB,SAAwBa,EAAOmE,EAAQ6B,EAAU,CAChF,OAAOoB,GAAY,KAAMpH,EAAOmE,EAAQ,GAAO6B,CAAQ,CACzD,EAGA7G,GAAO,UAAU,KAAO,SAAe+D,EAAQmE,EAAahF,EAAOC,EAAK,CACtE,GAAI,CAACnD,GAAO,SAAS+D,CAAM,EAAG,MAAM,IAAI,UAAU,6BAA6B,EAS/E,GARKb,IAAOA,EAAQ,GAChB,CAACC,GAAOA,IAAQ,IAAGA,EAAM,KAAK,QAC9B+E,GAAenE,EAAO,SAAQmE,EAAcnE,EAAO,QAClDmE,IAAaA,EAAc,GAC5B/E,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,GACRa,EAAO,SAAW,GAAK,KAAK,SAAW,EAAG,MAAO,GAGrD,GAAImE,EAAc,EAChB,MAAM,IAAI,WAAW,2BAA2B,EAElD,GAAIhF,EAAQ,GAAKA,GAAS,KAAK,OAAQ,MAAM,IAAI,WAAW,oBAAoB,EAChF,GAAIC,EAAM,EAAG,MAAM,IAAI,WAAW,yBAAyB,EAGvDA,EAAM,KAAK,SAAQA,EAAM,KAAK,QAC9BY,EAAO,OAASmE,EAAc/E,EAAMD,IACtCC,EAAMY,EAAO,OAASmE,EAAchF,GAGtC,IAAMb,EAAMc,EAAMD,EAElB,OAAI,OAASa,GAAU,OAAO,WAAW,UAAU,YAAe,WAEhE,KAAK,WAAWmE,EAAahF,EAAOC,CAAG,EAEvC,WAAW,UAAU,IAAI,KACvBY,EACA,KAAK,SAASb,EAAOC,CAAG,EACxB+E,CACF,EAGK7F,CACT,EAMArC,GAAO,UAAU,KAAO,SAAeqE,EAAKnB,EAAOC,EAAK1B,EAAU,CAEhE,GAAI,OAAO4C,GAAQ,SAAU,CAS3B,GARI,OAAOnB,GAAU,UACnBzB,EAAWyB,EACXA,EAAQ,EACRC,EAAM,KAAK,QACF,OAAOA,GAAQ,WACxB1B,EAAW0B,EACXA,EAAM,KAAK,QAET1B,IAAa,QAAa,OAAOA,GAAa,SAChD,MAAM,IAAI,UAAU,2BAA2B,EAEjD,GAAI,OAAOA,GAAa,UAAY,CAACzB,GAAO,WAAWyB,CAAQ,EAC7D,MAAM,IAAI,UAAU,qBAAuBA,CAAQ,EAErD,GAAI4C,EAAI,SAAW,EAAG,CACpB,IAAM8D,EAAO9D,EAAI,WAAW,CAAC,GACxB5C,IAAa,QAAU0G,EAAO,KAC/B1G,IAAa,YAEf4C,EAAM8D,EAEV,CACF,MAAW,OAAO9D,GAAQ,SACxBA,EAAMA,EAAM,IACH,OAAOA,GAAQ,YACxBA,EAAM,OAAOA,CAAG,GAIlB,GAAInB,EAAQ,GAAK,KAAK,OAASA,GAAS,KAAK,OAASC,EACpD,MAAM,IAAI,WAAW,oBAAoB,EAG3C,GAAIA,GAAOD,EACT,OAAO,KAGTA,EAAQA,IAAU,EAClBC,EAAMA,IAAQ,OAAY,KAAK,OAASA,IAAQ,EAE3CkB,IAAKA,EAAM,GAEhB,IAAIrC,EACJ,GAAI,OAAOqC,GAAQ,SACjB,IAAKrC,EAAIkB,EAAOlB,EAAImB,EAAK,EAAEnB,EACzB,KAAKA,GAAKqC,MAEP,CACL,IAAMoC,EAAQzG,GAAO,SAASqE,CAAG,EAC7BA,EACArE,GAAO,KAAKqE,EAAK5C,CAAQ,EACvBY,EAAMoE,EAAM,OAClB,GAAIpE,IAAQ,EACV,MAAM,IAAI,UAAU,cAAgBgC,EAClC,mCAAmC,EAEvC,IAAKrC,EAAI,EAAGA,EAAImB,EAAMD,EAAO,EAAElB,EAC7B,KAAKA,EAAIkB,GAASuD,EAAMzE,EAAIK,EAEhC,CAEA,OAAO,IACT,EAMA,IAAM+F,GAAS,CAAC,EAChB,SAASC,GAAGC,EAAKC,EAAYC,EAAM,CACjCJ,GAAOE,GAAO,cAAwBE,CAAK,CACzC,aAAe,CACb,MAAM,EAEN,OAAO,eAAe,KAAM,UAAW,CACrC,MAAOD,EAAW,MAAM,KAAM,SAAS,EACvC,SAAU,GACV,aAAc,EAChB,CAAC,EAGD,KAAK,KAAO,GAAG,KAAK,SAASD,KAG7B,KAAK,MAEL,OAAO,KAAK,IACd,CAEA,IAAI,MAAQ,CACV,OAAOA,CACT,CAEA,IAAI,KAAMzH,EAAO,CACf,OAAO,eAAe,KAAM,OAAQ,CAClC,aAAc,GACd,WAAY,GACZ,MAAAA,EACA,SAAU,EACZ,CAAC,CACH,CAEA,UAAY,CACV,MAAO,GAAG,KAAK,SAASyH,OAAS,KAAK,SACxC,CACF,CACF,CAEAD,GAAE,2BACA,SAAUI,EAAM,CACd,OAAIA,EACK,GAAGA,gCAGL,gDACT,EAAG,UAAU,EACfJ,GAAE,uBACA,SAAUI,EAAM5G,EAAQ,CACtB,MAAO,QAAQ4G,qDAAwD,OAAO5G,GAChF,EAAG,SAAS,EACdwG,GAAE,mBACA,SAAUxE,EAAK6E,EAAOC,EAAO,CAC3B,IAAIC,EAAM,iBAAiB/E,sBACvBgF,EAAWF,EACf,OAAI,OAAO,UAAUA,CAAK,GAAK,KAAK,IAAIA,CAAK,EAAI,GAAK,GACpDE,EAAWC,GAAsB,OAAOH,CAAK,CAAC,EACrC,OAAOA,GAAU,WAC1BE,EAAW,OAAOF,CAAK,GACnBA,EAAQ,OAAO,CAAC,GAAK,OAAO,EAAE,GAAKA,EAAQ,EAAE,OAAO,CAAC,GAAK,OAAO,EAAE,MACrEE,EAAWC,GAAsBD,CAAQ,GAE3CA,GAAY,KAEdD,GAAO,eAAeF,eAAmBG,IAClCD,CACT,EAAG,UAAU,EAEf,SAASE,GAAuBzE,EAAK,CACnC,IAAIsB,EAAM,GACN3D,EAAIqC,EAAI,OACNnB,EAAQmB,EAAI,KAAO,IAAM,EAAI,EACnC,KAAOrC,GAAKkB,EAAQ,EAAGlB,GAAK,EAC1B2D,EAAM,IAAItB,EAAI,MAAMrC,EAAI,EAAGA,CAAC,IAAI2D,IAElC,MAAO,GAAGtB,EAAI,MAAM,EAAGrC,CAAC,IAAI2D,GAC9B,CAKA,SAASoD,GAAavI,EAAKwE,EAAQpD,EAAY,CAC7CoF,GAAehC,EAAQ,QAAQ,GAC3BxE,EAAIwE,KAAY,QAAaxE,EAAIwE,EAASpD,KAAgB,SAC5DuF,GAAYnC,EAAQxE,EAAI,QAAUoB,EAAa,EAAE,CAErD,CAEA,SAAS8F,GAAY7G,EAAO0G,EAAKzD,EAAKtD,EAAKwE,EAAQpD,EAAY,CAC7D,GAAIf,EAAQiD,GAAOjD,EAAQ0G,EAAK,CAC9B,IAAM5D,EAAI,OAAO4D,GAAQ,SAAW,IAAM,GACtCmB,EACJ,MAAI9G,EAAa,EACX2F,IAAQ,GAAKA,IAAQ,OAAO,CAAC,EAC/BmB,EAAQ,OAAO/E,YAAYA,SAAS/B,EAAa,GAAK,IAAI+B,IAE1D+E,EAAQ,SAAS/E,SAAS/B,EAAa,GAAK,EAAI,IAAI+B,kBACxC/B,EAAa,GAAK,EAAI,IAAI+B,IAGxC+E,EAAQ,MAAMnB,IAAM5D,YAAYG,IAAMH,IAElC,IAAIyE,GAAO,iBAAiB,QAASM,EAAO7H,CAAK,CACzD,CACAkI,GAAYvI,EAAKwE,EAAQpD,CAAU,CACrC,CAEA,SAASoF,GAAgBnG,EAAO4H,EAAM,CACpC,GAAI,OAAO5H,GAAU,SACnB,MAAM,IAAIuH,GAAO,qBAAqBK,EAAM,SAAU5H,CAAK,CAE/D,CAEA,SAASsG,GAAatG,EAAON,EAAQyI,EAAM,CACzC,MAAI,KAAK,MAAMnI,CAAK,IAAMA,GACxBmG,GAAenG,EAAOmI,CAAI,EACpB,IAAIZ,GAAO,iBAAiBY,GAAQ,SAAU,aAAcnI,CAAK,GAGrEN,EAAS,EACL,IAAI6H,GAAO,yBAGb,IAAIA,GAAO,iBAAiBY,GAAQ,SACR,MAAMA,EAAO,EAAI,YAAYzI,IAC7BM,CAAK,CACzC,CAKA,IAAMoI,GAAoB,oBAE1B,SAASC,GAAarF,EAAK,CAMzB,GAJAA,EAAMA,EAAI,MAAM,GAAG,EAAE,GAErBA,EAAMA,EAAI,KAAK,EAAE,QAAQoF,GAAmB,EAAE,EAE1CpF,EAAI,OAAS,EAAG,MAAO,GAE3B,KAAOA,EAAI,OAAS,IAAM,GACxBA,EAAMA,EAAM,IAEd,OAAOA,CACT,CAEA,SAASd,GAAapB,EAAQwH,EAAO,CACnCA,EAAQA,GAAS,IACjB,IAAItD,EACEtF,EAASoB,EAAO,OAClByH,EAAgB,KACd3C,EAAQ,CAAC,EAEf,QAASzE,EAAI,EAAGA,EAAIzB,EAAQ,EAAEyB,EAAG,CAI/B,GAHA6D,EAAYlE,EAAO,WAAWK,CAAC,EAG3B6D,EAAY,OAAUA,EAAY,MAAQ,CAE5C,GAAI,CAACuD,EAAe,CAElB,GAAIvD,EAAY,MAAQ,EAEjBsD,GAAS,GAAK,IAAI1C,EAAM,KAAK,IAAM,IAAM,GAAI,EAClD,QACF,SAAWzE,EAAI,IAAMzB,EAAQ,EAEtB4I,GAAS,GAAK,IAAI1C,EAAM,KAAK,IAAM,IAAM,GAAI,EAClD,QACF,CAGA2C,EAAgBvD,EAEhB,QACF,CAGA,GAAIA,EAAY,MAAQ,EACjBsD,GAAS,GAAK,IAAI1C,EAAM,KAAK,IAAM,IAAM,GAAI,EAClD2C,EAAgBvD,EAChB,QACF,CAGAA,GAAauD,EAAgB,OAAU,GAAKvD,EAAY,OAAU,KACpE,MAAWuD,IAEJD,GAAS,GAAK,IAAI1C,EAAM,KAAK,IAAM,IAAM,GAAI,EAMpD,GAHA2C,EAAgB,KAGZvD,EAAY,IAAM,CACpB,IAAKsD,GAAS,GAAK,EAAG,MACtB1C,EAAM,KAAKZ,CAAS,CACtB,SAAWA,EAAY,KAAO,CAC5B,IAAKsD,GAAS,GAAK,EAAG,MACtB1C,EAAM,KACJZ,GAAa,EAAM,IACnBA,EAAY,GAAO,GACrB,CACF,SAAWA,EAAY,MAAS,CAC9B,IAAKsD,GAAS,GAAK,EAAG,MACtB1C,EAAM,KACJZ,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IAC1BA,EAAY,GAAO,GACrB,CACF,SAAWA,EAAY,QAAU,CAC/B,IAAKsD,GAAS,GAAK,EAAG,MACtB1C,EAAM,KACJZ,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IAC1BA,EAAY,GAAO,GACrB,CACF,KACE,OAAM,IAAI,MAAM,oBAAoB,CAExC,CAEA,OAAOY,CACT,CAEA,SAASlB,GAAc1B,EAAK,CAC1B,IAAMwF,EAAY,CAAC,EACnB,QAASrH,EAAI,EAAGA,EAAI6B,EAAI,OAAQ,EAAE7B,EAEhCqH,EAAU,KAAKxF,EAAI,WAAW7B,CAAC,EAAI,GAAI,EAEzC,OAAOqH,CACT,CAEA,SAAS3D,GAAgB7B,EAAKsF,EAAO,CACnC,IAAIG,EAAGjC,EAAID,EACLiC,EAAY,CAAC,EACnB,QAASrH,EAAI,EAAGA,EAAI6B,EAAI,QACjB,GAAAsF,GAAS,GAAK,GADW,EAAEnH,EAGhCsH,EAAIzF,EAAI,WAAW7B,CAAC,EACpBqF,EAAKiC,GAAK,EACVlC,EAAKkC,EAAI,IACTD,EAAU,KAAKjC,CAAE,EACjBiC,EAAU,KAAKhC,CAAE,EAGnB,OAAOgC,CACT,CAEA,SAASrG,GAAea,EAAK,CAC3B,OAAOhE,GAAO,YAAYqJ,GAAYrF,CAAG,CAAC,CAC5C,CAEA,SAASwB,GAAYkE,EAAKC,EAAKxE,EAAQzE,EAAQ,CAC7C,IAAI,EACJ,IAAK,EAAI,EAAG,EAAIA,GACT,IAAIyE,GAAUwE,EAAI,QAAY,GAAKD,EAAI,QADtB,EAAE,EAExBC,EAAI,EAAIxE,GAAUuE,EAAI,GAExB,OAAO,CACT,CAKA,SAASvI,GAAYoB,EAAK4G,EAAM,CAC9B,OAAO5G,aAAe4G,GACnB5G,GAAO,MAAQA,EAAI,aAAe,MAAQA,EAAI,YAAY,MAAQ,MACjEA,EAAI,YAAY,OAAS4G,EAAK,IACpC,CACA,SAAS1G,GAAaF,EAAK,CAEzB,OAAOA,IAAQA,CACjB,CAIA,IAAMoE,GAAuB,UAAY,CACvC,IAAMiD,EAAW,mBACXC,EAAQ,IAAI,MAAM,GAAG,EAC3B,QAAS1H,EAAI,EAAGA,EAAI,GAAI,EAAEA,EAAG,CAC3B,IAAM2H,EAAM3H,EAAI,GAChB,QAAS8C,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACxB4E,EAAMC,EAAM7E,GAAK2E,EAASzH,GAAKyH,EAAS3E,EAE5C,CACA,OAAO4E,CACT,EAAG,EAGH,SAAS3C,GAAoB6C,EAAI,CAC/B,OAAO,OAAO,OAAW,IAAcC,GAAyBD,CAClE,CAEA,SAASC,IAA0B,CACjC,MAAM,IAAI,MAAM,sBAAsB,CACxC,ICzjEA,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,CAEA,IAAIC,GAAS,KACTC,GAASD,GAAO,OAGpB,SAASE,GAAWC,EAAKC,EAAK,CAC5B,QAASC,KAAOF,EACdC,EAAIC,GAAOF,EAAIE,EAEnB,CACIJ,GAAO,MAAQA,GAAO,OAASA,GAAO,aAAeA,GAAO,gBAC9DF,GAAO,QAAUC,IAGjBE,GAAUF,GAAQF,EAAO,EACzBA,GAAQ,OAASQ,IAGnB,SAASA,GAAYC,EAAKC,EAAkBC,EAAQ,CAClD,OAAOR,GAAOM,EAAKC,EAAkBC,CAAM,CAC7C,CAEAH,GAAW,UAAY,OAAO,OAAOL,GAAO,SAAS,EAGrDC,GAAUD,GAAQK,EAAU,EAE5BA,GAAW,KAAO,SAAUC,EAAKC,EAAkBC,EAAQ,CACzD,GAAI,OAAOF,GAAQ,SACjB,MAAM,IAAI,UAAU,+BAA+B,EAErD,OAAON,GAAOM,EAAKC,EAAkBC,CAAM,CAC7C,EAEAH,GAAW,MAAQ,SAAUI,EAAMC,EAAMC,EAAU,CACjD,GAAI,OAAOF,GAAS,SAClB,MAAM,IAAI,UAAU,2BAA2B,EAEjD,IAAIG,EAAMZ,GAAOS,CAAI,EACrB,OAAIC,IAAS,OACP,OAAOC,GAAa,SACtBC,EAAI,KAAKF,EAAMC,CAAQ,EAEvBC,EAAI,KAAKF,CAAI,EAGfE,EAAI,KAAK,CAAC,EAELA,CACT,EAEAP,GAAW,YAAc,SAAUI,EAAM,CACvC,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UAAU,2BAA2B,EAEjD,OAAOT,GAAOS,CAAI,CACpB,EAEAJ,GAAW,gBAAkB,SAAUI,EAAM,CAC3C,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UAAU,2BAA2B,EAEjD,OAAOV,GAAO,WAAWU,CAAI,CAC/B,IChEA,IAAAI,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAOA,IAAIC,GAAU,KAAuB,OACrC,SAASC,GAAMC,EAAU,CACvB,GAAIA,EAAS,QAAU,IAAO,MAAM,IAAI,UAAU,mBAAmB,EAErE,QADIC,EAAW,IAAI,WAAW,GAAG,EACxBC,EAAI,EAAGA,EAAID,EAAS,OAAQC,IACnCD,EAASC,GAAK,IAEhB,QAASC,EAAI,EAAGA,EAAIH,EAAS,OAAQG,IAAK,CACxC,IAAIC,EAAIJ,EAAS,OAAOG,CAAC,EACrBE,EAAKD,EAAE,WAAW,CAAC,EACvB,GAAIH,EAASI,KAAQ,IAAO,MAAM,IAAI,UAAUD,EAAI,eAAe,EACnEH,EAASI,GAAMF,CACjB,CACA,IAAIG,EAAON,EAAS,OAChBO,EAASP,EAAS,OAAO,CAAC,EAC1BQ,EAAS,KAAK,IAAIF,CAAI,EAAI,KAAK,IAAI,GAAG,EACtCG,EAAU,KAAK,IAAI,GAAG,EAAI,KAAK,IAAIH,CAAI,EAC3C,SAASI,EAAQC,EAAQ,CAEvB,IADI,MAAM,QAAQA,CAAM,GAAKA,aAAkB,cAAcA,EAASb,GAAQ,KAAKa,CAAM,GACrF,CAACb,GAAQ,SAASa,CAAM,EAAK,MAAM,IAAI,UAAU,iBAAiB,EACtE,GAAIA,EAAO,SAAW,EAAK,MAAO,GAMlC,QAJIC,EAAS,EACTC,EAAS,EACTC,GAAS,EACTC,GAAOJ,EAAO,OACXG,KAAWC,IAAQJ,EAAOG,MAAY,GAC3CA,KACAF,IAMF,QAHII,GAASD,GAAOD,IAAUL,EAAU,IAAO,EAC3CQ,GAAM,IAAI,WAAWD,CAAI,EAEtBF,KAAWC,IAAM,CAItB,QAHIG,GAAQP,EAAOG,IAEfX,GAAI,EACCgB,GAAMH,EAAO,GAAIE,KAAU,GAAKf,GAAIU,IAAYM,KAAQ,GAAKA,KAAOhB,KAC3Ee,IAAU,IAAMD,GAAIE,MAAU,EAC9BF,GAAIE,IAAQD,GAAQZ,IAAU,EAC9BY,GAASA,GAAQZ,IAAU,EAE7B,GAAIY,KAAU,EAAK,MAAM,IAAI,MAAM,gBAAgB,EACnDL,EAASV,GACTW,IACF,CAGA,QADIM,GAAMJ,EAAOH,EACVO,KAAQJ,GAAQC,GAAIG,MAAS,GAClCA,KAIF,QADIC,EAAMd,EAAO,OAAOK,CAAM,EACvBQ,GAAMJ,EAAM,EAAEI,GAAOC,GAAOrB,EAAS,OAAOiB,GAAIG,GAAI,EAC3D,OAAOC,CACT,CACA,SAASC,EAAcX,EAAQ,CAC7B,GAAI,OAAOA,GAAW,SAAY,MAAM,IAAI,UAAU,iBAAiB,EACvE,GAAIA,EAAO,SAAW,EAAK,OAAOb,GAAQ,MAAM,CAAC,EAKjD,QAJIyB,EAAM,EAENX,EAAS,EACTC,GAAS,EACNF,EAAOY,KAAShB,GACrBK,IACAW,IAMF,QAHIP,IAAUL,EAAO,OAASY,GAAOf,EAAU,IAAO,EAClDgB,EAAO,IAAI,WAAWR,EAAI,EAEvBL,EAAOY,IAAM,CAElB,IAAIL,GAAQjB,EAASU,EAAO,WAAWY,CAAG,GAE1C,GAAIL,KAAU,IAAO,OAErB,QADIf,GAAI,EACCsB,GAAMT,GAAO,GAAIE,KAAU,GAAKf,GAAIU,KAAYY,KAAQ,GAAKA,KAAOtB,KAC3Ee,IAAUZ,EAAOkB,EAAKC,MAAU,EAChCD,EAAKC,IAAQP,GAAQ,MAAS,EAC9BA,GAASA,GAAQ,MAAS,EAE5B,GAAIA,KAAU,EAAK,MAAM,IAAI,MAAM,gBAAgB,EACnDL,GAASV,GACToB,GACF,CAGA,QADIG,GAAMV,GAAOH,GACVa,KAAQV,IAAQQ,EAAKE,MAAS,GACnCA,KAEF,IAAIC,GAAM7B,GAAQ,YAAYc,GAAUI,GAAOU,GAAI,EACnDC,GAAI,KAAK,EAAM,EAAGf,CAAM,EAExB,QADIV,EAAIU,EACDc,KAAQV,IACbW,GAAIzB,KAAOsB,EAAKE,MAElB,OAAOC,EACT,CACA,SAASC,EAAQC,EAAQ,CACvB,IAAIC,EAASR,EAAaO,CAAM,EAChC,GAAIC,EAAU,OAAOA,EACrB,MAAM,IAAI,MAAM,WAAaxB,EAAO,YAAY,CAClD,CACA,MAAO,CACL,OAAQI,EACR,aAAcY,EACd,OAAQM,CACV,CACF,CACA/B,GAAO,QAAUE,KCtHjB,IAAAgC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,KAAIC,GAAQ,KACRC,GAAW,6DAEfF,GAAO,QAAUC,GAAMC,EAAQ,ICH/B,IAAAC,GAAAC,GAAAC,IAAA,cAeA,SAASC,GAAQC,EAAGC,EAAKC,EAAK,CAC5B,OAAOD,GAAOD,GAAKA,GAAKE,CAC1B,CAMA,SAASC,GAAaC,EAAG,CACvB,GAAIA,IAAM,OAAW,MAAO,CAAC,EAC7B,GAAIA,IAAM,OAAOA,CAAC,EAAG,OAAOA,EAC5B,MAAM,UAAU,0CAA0C,CAC5D,CAMA,SAASC,GAAmBC,EAAQ,CAgBlC,QAZIC,EAAI,OAAOD,CAAM,EAGjBE,EAAID,EAAE,OAGNE,EAAI,EAGJC,EAAI,CAAC,EAGFD,EAAID,GAAG,CAGZ,IAAIG,EAAIJ,EAAE,WAAWE,CAAC,EAKtB,GAAIE,EAAI,OAAUA,EAAI,MAEpBD,EAAE,KAAKC,CAAC,UAID,OAAUA,GAAKA,GAAK,MAE3BD,EAAE,KAAK,KAAM,UAIN,OAAUC,GAAKA,GAAK,MAG3B,GAAIF,IAAMD,EAAI,EACZE,EAAE,KAAK,KAAM,MAGV,CAEH,IAAIE,EAAIN,EAAO,WAAWG,EAAI,CAAC,EAG/B,GAAI,OAAUG,GAAKA,GAAK,MAAQ,CAE9B,IAAIZ,EAAIW,EAAI,KAGRE,EAAID,EAAI,KAIZF,EAAE,KAAK,OAAWV,GAAK,IAAMa,CAAC,EAG9BJ,GAAK,CACP,MAKEC,EAAE,KAAK,KAAM,CAEjB,CAIFD,GAAK,CACP,CAGA,OAAOC,CACT,CAMA,SAASI,GAAmBC,EAAa,CAEvC,QADIR,EAAI,GACCE,EAAI,EAAGA,EAAIM,EAAY,OAAQ,EAAEN,EAAG,CAC3C,IAAIO,EAAKD,EAAYN,GACjBO,GAAM,MACRT,GAAK,OAAO,aAAaS,CAAE,GAE3BA,GAAM,MACNT,GAAK,OAAO,cAAcS,GAAM,IAAM,OACZA,EAAK,MAAS,KAAM,EAElD,CACA,OAAOT,CACT,CAgBI,IAAIU,GAAgB,GASxB,SAASC,GAAOC,EAAQ,CAEtB,KAAK,OAAS,CAAC,EAAE,MAAM,KAAKA,CAAM,CACpC,CAEAD,GAAO,UAAY,CAIjB,YAAa,UAAW,CACtB,MAAO,CAAC,KAAK,OAAO,MACtB,EAUC,KAAM,UAAW,CAChB,OAAK,KAAK,OAAO,OAET,KAAK,OAAO,MAAM,EADjBD,EAEV,EASD,QAAS,SAASG,EAAO,CACvB,GAAI,MAAM,QAAQA,CAAK,EAErB,QADID,EAAsCC,EACnCD,EAAO,QACZ,KAAK,OAAO,QAAQA,EAAO,IAAI,CAAC,OAElC,KAAK,OAAO,QAAQC,CAAK,CAE7B,EASA,KAAM,SAASA,EAAO,CACpB,GAAI,MAAM,QAAQA,CAAK,EAErB,QADID,EAAsCC,EACnCD,EAAO,QACZ,KAAK,OAAO,KAAKA,EAAO,MAAM,CAAC,OAEjC,KAAK,OAAO,KAAKC,CAAK,CAE1B,CACF,EASA,IAAIC,GAAW,GAOf,SAASC,GAAaC,EAAOC,EAAgB,CAC3C,GAAID,EACF,MAAM,UAAU,eAAe,EACjC,OAAOC,GAAkB,KAC3B,CAMc,IAAIC,GAAmB,QAUrC,SAASC,GAAYC,EAAUC,EAAS,CACtC,GAAI,EAAE,gBAAgBF,IACpB,OAAO,IAAIA,GAAYC,EAAUC,CAAO,EAG1C,GADAD,EAAWA,IAAa,OAAY,OAAOA,CAAQ,EAAE,YAAY,EAAIF,GACjEE,IAAaF,GACf,MAAM,IAAI,MAAM,iDAAiD,EAEnEG,EAAUzB,GAAayB,CAAO,EAG9B,KAAK,WAAa,GAElB,KAAK,SAAW,GAEhB,KAAK,SAAW,KAEhB,KAAK,OAAS,QAAQA,EAAQ,KAAQ,EAEtC,KAAK,WAAa,QAAQA,EAAQ,SAAY,EAE9C,OAAO,eAAe,KAAM,WAAY,CAAC,MAAO,OAAO,CAAC,EACxD,OAAO,eAAe,KAAM,QAAS,CAAC,MAAO,KAAK,MAAM,CAAC,EACzD,OAAO,eAAe,KAAM,YAAa,CAAC,MAAO,KAAK,UAAU,CAAC,CACnE,CAEAF,GAAY,UAAY,CAMtB,OAAQ,SAAgBG,EAAOD,EAAS,CACtC,IAAIE,EACA,OAAOD,GAAU,UAAYA,aAAiB,YAChDC,EAAQ,IAAI,WAAWD,CAAK,EACnB,OAAOA,GAAU,UAAY,WAAYA,GACzCA,EAAM,kBAAkB,YACjCC,EAAQ,IAAI,WAAWD,EAAM,OACNA,EAAM,WACNA,EAAM,UAAU,EAEvCC,EAAQ,IAAI,WAAW,CAAC,EAG1BF,EAAUzB,GAAayB,CAAO,EAEzB,KAAK,aACR,KAAK,SAAW,IAAIG,GAAY,CAAC,MAAO,KAAK,MAAM,CAAC,EACpD,KAAK,SAAW,IAElB,KAAK,WAAa,QAAQH,EAAQ,MAAS,EAS3C,QAPII,EAAe,IAAId,GAAOY,CAAK,EAE/Bf,EAAc,CAAC,EAGfkB,EAEG,CAACD,EAAa,YAAY,IAC/BC,EAAS,KAAK,SAAS,QAAQD,EAAcA,EAAa,KAAK,CAAC,EAC5DC,IAAWZ,KAEXY,IAAW,OAEX,MAAM,QAAQA,CAAM,EACtBlB,EAAY,KAAK,MAAMA,EAA0CkB,CAAO,EAExElB,EAAY,KAAKkB,CAAM,GAE3B,GAAI,CAAC,KAAK,WAAY,CACpB,EAAG,CAED,GADAA,EAAS,KAAK,SAAS,QAAQD,EAAcA,EAAa,KAAK,CAAC,EAC5DC,IAAWZ,GACb,MACEY,IAAW,OAEX,MAAM,QAAQA,CAAM,EACtBlB,EAAY,KAAK,MAAMA,EAA0CkB,CAAO,EAExElB,EAAY,KAAKkB,CAAM,EAC3B,OAAS,CAACD,EAAa,YAAY,GACnC,KAAK,SAAW,IAClB,CAEA,OAAIjB,EAAY,QAIV,CAAC,OAAO,EAAE,QAAQ,KAAK,QAAQ,IAAM,IACrC,CAAC,KAAK,YAAc,CAAC,KAAK,WAExBA,EAAY,KAAO,OACrB,KAAK,SAAW,GAChBA,EAAY,MAAM,GAIlB,KAAK,SAAW,IAKfD,GAAmBC,CAAW,CACvC,CACF,EAUA,SAASmB,GAAYP,EAAUC,EAAS,CACtC,GAAI,EAAE,gBAAgBM,IACpB,OAAO,IAAIA,GAAYP,EAAUC,CAAO,EAE1C,GADAD,EAAWA,IAAa,OAAY,OAAOA,CAAQ,EAAE,YAAY,EAAIF,GACjEE,IAAaF,GACf,MAAM,IAAI,MAAM,iDAAiD,EAEnEG,EAAUzB,GAAayB,CAAO,EAG9B,KAAK,WAAa,GAElB,KAAK,SAAW,KAEhB,KAAK,SAAW,CAAC,MAAO,QAAQA,EAAQ,KAAQ,CAAC,EAEjD,OAAO,eAAe,KAAM,WAAY,CAAC,MAAO,OAAO,CAAC,CAC1D,CAEAM,GAAY,UAAY,CAMtB,OAAQ,SAAgBC,EAAYP,EAAS,CAC3CO,EAAaA,EAAa,OAAOA,CAAU,EAAI,GAC/CP,EAAUzB,GAAayB,CAAO,EAKzB,KAAK,aACR,KAAK,SAAW,IAAIQ,GAAY,KAAK,QAAQ,GAC/C,KAAK,WAAa,QAAQR,EAAQ,MAAS,EAM3C,QAJIE,EAAQ,CAAC,EACTE,EAAe,IAAId,GAAOb,GAAmB8B,CAAU,CAAC,EAExDF,EACG,CAACD,EAAa,YAAY,IAC/BC,EAAS,KAAK,SAAS,QAAQD,EAAcA,EAAa,KAAK,CAAC,EAC5DC,IAAWZ,KAEX,MAAM,QAAQY,CAAM,EACtBH,EAAM,KAAK,MAAMA,EAAoCG,CAAO,EAE5DH,EAAM,KAAKG,CAAM,EAErB,GAAI,CAAC,KAAK,WAAY,CACpB,KACEA,EAAS,KAAK,SAAS,QAAQD,EAAcA,EAAa,KAAK,CAAC,EAC5DC,IAAWZ,IAEX,MAAM,QAAQY,CAAM,EACtBH,EAAM,KAAK,MAAMA,EAAoCG,CAAO,EAE5DH,EAAM,KAAKG,CAAM,EAErB,KAAK,SAAW,IAClB,CACA,OAAO,IAAI,WAAWH,CAAK,CAC7B,CACF,EAaA,SAASC,GAAYH,EAAS,CAC5B,IAAIL,EAAQK,EAAQ,MAMMS,EAAkB,EAClBC,EAAkB,EAClBC,EAAoB,EACpBC,EAAsB,IACtBC,EAAsB,IAShD,KAAK,QAAU,SAASC,EAAQC,EAAM,CAGpC,GAAIA,IAAS1B,IAAiBsB,IAAsB,EAClD,OAAAA,EAAoB,EACbjB,GAAaC,CAAK,EAI3B,GAAIoB,IAAS1B,GACX,OAAOI,GAGT,GAAIkB,IAAsB,EAAG,CAG3B,GAAIxC,GAAQ4C,EAAM,EAAM,GAAI,EAE1B,OAAOA,EAIT,GAAI5C,GAAQ4C,EAAM,IAAM,GAAI,EAG1BJ,EAAoB,EACpBF,EAAkBM,EAAO,YAIlB5C,GAAQ4C,EAAM,IAAM,GAAI,EAE3BA,IAAS,MACXH,EAAsB,KAEpBG,IAAS,MACXF,EAAsB,KAGxBF,EAAoB,EACpBF,EAAkBM,EAAO,YAIlB5C,GAAQ4C,EAAM,IAAM,GAAI,EAE3BA,IAAS,MACXH,EAAsB,KAEpBG,IAAS,MACXF,EAAsB,KAGxBF,EAAoB,EACpBF,EAAkBM,EAAO,QAMzB,QAAOrB,GAAaC,CAAK,EAM3B,OAAAc,EAAkBA,GAAoB,EAAIE,EACnC,IACT,CAIA,GAAI,CAACxC,GAAQ4C,EAAMH,EAAqBC,CAAmB,EAKzD,OAAAJ,EAAkBE,EAAoBD,EAAkB,EACxDE,EAAsB,IACtBC,EAAsB,IAGtBC,EAAO,QAAQC,CAAI,EAGZrB,GAAaC,CAAK,EAgB3B,GAXAiB,EAAsB,IACtBC,EAAsB,IAKtBH,GAAmB,EACnBD,GAAoBM,EAAO,KAAU,GAAKJ,EAAoBD,GAI1DA,IAAoBC,EACtB,OAAO,KAGT,IAAIK,EAAaP,EAIjB,OAAAA,EAAkBE,EAAoBD,EAAkB,EAGjDM,CACT,CACF,CAOA,SAASR,GAAYR,EAAS,CAC5B,IAAIL,EAAQK,EAAQ,MAMpB,KAAK,QAAU,SAASc,EAAQE,EAAY,CAE1C,GAAIA,IAAe3B,GACjB,OAAOI,GAIT,GAAItB,GAAQ6C,EAAY,EAAQ,GAAM,EACpC,OAAOA,EAGT,IAAIC,EAAOC,EAEP/C,GAAQ6C,EAAY,IAAQ,IAAM,GACpCC,EAAQ,EACRC,EAAS,KAGF/C,GAAQ6C,EAAY,KAAQ,KAAM,GACzCC,EAAQ,EACRC,EAAS,KAGF/C,GAAQ6C,EAAY,MAAS,OAAQ,IAC5CC,EAAQ,EACRC,EAAS,KAQX,QAHIhB,EAAQ,EAAEc,GAAe,EAAIC,GAAUC,CAAM,EAG1CD,EAAQ,GAAG,CAGhB,IAAIE,EAAOH,GAAe,GAAKC,EAAQ,GAGvCf,EAAM,KAAK,IAAQiB,EAAO,EAAK,EAG/BF,GAAS,CACX,CAGA,OAAOf,CACT,CACF,CAEAhC,GAAQ,YAAcoC,GACtBpC,GAAQ,YAAc4B,KCjoBtB,IAAAsB,GAAAC,GAAAC,IAAA,cACA,IAAIC,GAAmBD,IAAQA,GAAK,kBAAqB,OAAO,OAAU,SAASE,EAAGC,EAAGC,EAAGC,EAAI,CACxFA,IAAO,SAAWA,EAAKD,GAC3B,OAAO,eAAeF,EAAGG,EAAI,CAAE,WAAY,GAAM,IAAK,UAAW,CAAE,OAAOF,EAAEC,EAAI,CAAE,CAAC,CACvF,EAAM,SAASF,EAAGC,EAAGC,EAAGC,EAAI,CACpBA,IAAO,SAAWA,EAAKD,GAC3BF,EAAEG,GAAMF,EAAEC,EACd,GACIE,GAAsBN,IAAQA,GAAK,qBAAwB,OAAO,OAAU,SAASE,EAAGK,EAAG,CAC3F,OAAO,eAAeL,EAAG,UAAW,CAAE,WAAY,GAAM,MAAOK,CAAE,CAAC,CACtE,EAAK,SAASL,EAAGK,EAAG,CAChBL,EAAE,QAAaK,CACnB,GACIC,GAAcR,IAAQA,GAAK,YAAe,SAAUS,EAAYC,EAAQC,EAAKC,EAAM,CACnF,IAAIC,EAAI,UAAU,OAAQC,EAAID,EAAI,EAAIH,EAASE,IAAS,KAAOA,EAAO,OAAO,yBAAyBF,EAAQC,CAAG,EAAIC,EAAMG,EAC3H,GAAI,OAAO,SAAY,UAAY,OAAO,QAAQ,UAAa,WAAYD,EAAI,QAAQ,SAASL,EAAYC,EAAQC,EAAKC,CAAI,MACxH,SAASI,EAAIP,EAAW,OAAS,EAAGO,GAAK,EAAGA,KAASD,EAAIN,EAAWO,MAAIF,GAAKD,EAAI,EAAIE,EAAED,CAAC,EAAID,EAAI,EAAIE,EAAEL,EAAQC,EAAKG,CAAC,EAAIC,EAAEL,EAAQC,CAAG,IAAMG,GAChJ,OAAOD,EAAI,GAAKC,GAAK,OAAO,eAAeJ,EAAQC,EAAKG,CAAC,EAAGA,CAChE,EACIG,GAAgBjB,IAAQA,GAAK,cAAiB,SAAUkB,EAAK,CAC7D,GAAIA,GAAOA,EAAI,WAAY,OAAOA,EAClC,IAAIC,EAAS,CAAC,EACd,GAAID,GAAO,KAAM,QAASd,KAAKc,EAASd,IAAM,WAAa,OAAO,eAAe,KAAKc,EAAKd,CAAC,GAAGH,GAAgBkB,EAAQD,EAAKd,CAAC,EAC7H,OAAAE,GAAmBa,EAAQD,CAAG,EACvBC,CACX,EACIC,GAAmBpB,IAAQA,GAAK,iBAAoB,SAAUkB,EAAK,CACnE,OAAQA,GAAOA,EAAI,WAAcA,EAAM,CAAE,QAAWA,CAAI,CAC5D,EACA,OAAO,eAAelB,GAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5DA,GAAQ,qBAAuBA,GAAQ,YAAcA,GAAQ,UAAYA,GAAQ,aAAeA,GAAQ,aAAeA,GAAQ,WAAaA,GAAQ,WAAaA,GAAQ,WAAa,OACtL,IAAMqB,GAAUD,GAAgB,IAAgB,EAC1CE,GAASF,GAAgB,IAAe,EAExCG,GAAWN,GAAa,IAA8B,EACtDO,GAAsB,OAAO,aAAgB,WAAaD,GAAS,YAAc,YACjFE,GAAc,IAAID,GAAoB,QAAS,CAAE,MAAO,EAAK,CAAC,EACpE,SAASE,GAAWC,EAAO,CACvB,OAAI,OAAOA,GAAU,WACjBA,EAAQ,OAAO,KAAKA,EAAO,MAAM,GAE9BL,GAAO,QAAQ,OAAO,OAAO,KAAKK,CAAK,CAAC,CACnD,CACA3B,GAAQ,WAAa0B,GACrB,SAASE,GAAWD,EAAO,CACvB,OAAO,OAAO,KAAKL,GAAO,QAAQ,OAAOK,CAAK,CAAC,CACnD,CACA3B,GAAQ,WAAa4B,GACrB,IAAMC,GAAiB,KACjBC,GAAN,cAAyB,KAAM,CAC3B,YAAYC,EAAS,CACjB,MAAMA,CAAO,EACb,KAAK,UAAY,CAAC,EAClB,KAAK,gBAAkBA,CAC3B,CACA,eAAeC,EAAW,CACtB,KAAK,UAAU,OAAO,EAAG,EAAGA,CAAS,EAErC,KAAK,QAAU,KAAK,gBAAkB,KAAO,KAAK,UAAU,KAAK,GAAG,CACxE,CACJ,EACAhC,GAAQ,WAAa8B,GAErB,IAAMG,GAAN,KAAmB,CACf,aAAc,CACV,KAAK,IAAM,OAAO,MAAMJ,EAAc,EACtC,KAAK,OAAS,CAClB,CACA,aAAc,CACN,KAAK,IAAI,OAAS,GAAK,KAAK,SAC5B,KAAK,IAAM,OAAO,OAAO,CAAC,KAAK,IAAK,OAAO,MAAMA,EAAc,CAAC,CAAC,EAEzE,CACA,QAAQF,EAAO,CACX,KAAK,YAAY,EACjB,KAAK,IAAI,WAAWA,EAAO,KAAK,MAAM,EACtC,KAAK,QAAU,CACnB,CACA,SAASA,EAAO,CACZ,KAAK,YAAY,EACjB,KAAK,IAAI,cAAcA,EAAO,KAAK,MAAM,EACzC,KAAK,QAAU,CACnB,CACA,SAASA,EAAO,CACZ,KAAK,YAAY,EACjB,KAAK,IAAI,cAAcA,EAAO,KAAK,MAAM,EACzC,KAAK,QAAU,CACnB,CACA,SAASA,EAAO,CACZ,KAAK,YAAY,EACjB,KAAK,YAAY,OAAO,KAAK,IAAIN,GAAQ,QAAQM,CAAK,EAAE,QAAQ,KAAM,CAAC,CAAC,CAAC,CAC7E,CACA,UAAUA,EAAO,CACb,KAAK,YAAY,EACjB,KAAK,YAAY,OAAO,KAAK,IAAIN,GAAQ,QAAQM,CAAK,EAAE,QAAQ,KAAM,EAAE,CAAC,CAAC,CAC9E,CACA,UAAUA,EAAO,CACb,KAAK,YAAY,EACjB,KAAK,YAAY,OAAO,KAAK,IAAIN,GAAQ,QAAQM,CAAK,EAAE,QAAQ,KAAM,EAAE,CAAC,CAAC,CAC9E,CACA,UAAUA,EAAO,CACb,KAAK,YAAY,EACjB,KAAK,YAAY,OAAO,KAAK,IAAIN,GAAQ,QAAQM,CAAK,EAAE,QAAQ,KAAM,EAAE,CAAC,CAAC,CAC9E,CACA,YAAYO,EAAQ,CAEhB,KAAK,IAAM,OAAO,OAAO,CACrB,OAAO,KAAK,KAAK,IAAI,SAAS,EAAG,KAAK,MAAM,CAAC,EAC7CA,EACA,OAAO,MAAML,EAAc,CAC/B,CAAC,EACD,KAAK,QAAUK,EAAO,MAC1B,CACA,YAAYC,EAAK,CACb,KAAK,YAAY,EACjB,IAAMC,EAAI,OAAO,KAAKD,EAAK,MAAM,EACjC,KAAK,SAASC,EAAE,MAAM,EACtB,KAAK,YAAYA,CAAC,CACtB,CACA,gBAAgBC,EAAO,CACnB,KAAK,YAAY,OAAO,KAAKA,CAAK,CAAC,CACvC,CACA,WAAWA,EAAOC,EAAI,CAClB,KAAK,YAAY,EACjB,KAAK,SAASD,EAAM,MAAM,EAC1B,QAAWE,KAAQF,EACf,KAAK,YAAY,EACjBC,EAAGC,CAAI,CAEf,CACA,SAAU,CACN,OAAO,KAAK,IAAI,SAAS,EAAG,KAAK,MAAM,CAC3C,CACJ,EACAvC,GAAQ,aAAeiC,GACvB,SAASO,GAAmB9B,EAAQ+B,EAAaC,EAAoB,CACjE,IAAMC,EAAiBD,EAAmB,MAC1CA,EAAmB,MAAQ,YAAaE,EAAM,CAC1C,GAAI,CACA,OAAOD,EAAe,MAAM,KAAMC,CAAI,CAC1C,OACOC,EAAP,CACI,GAAIA,aAAa,WAAY,CACzB,IAAMC,EAAOD,EAAE,KACf,GAAI,CAAC,2BAA4B,kBAAkB,EAAE,QAAQC,CAAI,GAAK,EAClE,MAAM,IAAIhB,GAAW,8CAA8C,CAE3E,CACA,MAAMe,CACV,CACJ,CACJ,CACA,IAAME,GAAN,KAAmB,CACf,YAAYC,EAAK,CACb,KAAK,IAAMA,EACX,KAAK,OAAS,CAClB,CACA,QAAS,CACL,IAAMrB,EAAQ,KAAK,IAAI,UAAU,KAAK,MAAM,EAC5C,YAAK,QAAU,EACRA,CACX,CACA,SAAU,CACN,IAAMA,EAAQ,KAAK,IAAI,aAAa,KAAK,MAAM,EAC/C,YAAK,QAAU,EACRA,CACX,CACA,SAAU,CACN,IAAMA,EAAQ,KAAK,IAAI,aAAa,KAAK,MAAM,EAC/C,YAAK,QAAU,EACRA,CACX,CACA,SAAU,CACN,IAAMqB,EAAM,KAAK,WAAW,CAAC,EAC7B,OAAO,IAAI3B,GAAQ,QAAQ2B,EAAK,IAAI,CACxC,CACA,UAAW,CACP,IAAMA,EAAM,KAAK,WAAW,EAAE,EAC9B,OAAO,IAAI3B,GAAQ,QAAQ2B,EAAK,IAAI,CACxC,CACA,UAAW,CACP,IAAMA,EAAM,KAAK,WAAW,EAAE,EAC9B,OAAO,IAAI3B,GAAQ,QAAQ2B,EAAK,IAAI,CACxC,CACA,UAAW,CACP,IAAMA,EAAM,KAAK,WAAW,EAAE,EAC9B,OAAO,IAAI3B,GAAQ,QAAQ2B,EAAK,IAAI,CACxC,CACA,WAAWC,EAAK,CACZ,GAAI,KAAK,OAASA,EAAM,KAAK,IAAI,OAC7B,MAAM,IAAInB,GAAW,0BAA0BmB,uBAAyB,EAE5E,IAAM9B,EAAS,KAAK,IAAI,MAAM,KAAK,OAAQ,KAAK,OAAS8B,CAAG,EAC5D,YAAK,QAAUA,EACR9B,CACX,CACA,YAAa,CACT,IAAM8B,EAAM,KAAK,QAAQ,EACnBD,EAAM,KAAK,WAAWC,CAAG,EAC/B,GAAI,CAEA,OAAOxB,GAAY,OAAOuB,CAAG,CACjC,OACOH,EAAP,CACI,MAAM,IAAIf,GAAW,gCAAgCe,GAAG,CAC5D,CACJ,CACA,eAAeI,EAAK,CAChB,OAAO,IAAI,WAAW,KAAK,WAAWA,CAAG,CAAC,CAC9C,CACA,UAAUX,EAAI,CACV,IAAMW,EAAM,KAAK,QAAQ,EACnB9B,EAAS,MAAM,EACrB,QAAS,EAAI,EAAG,EAAI8B,EAAK,EAAE,EACvB9B,EAAO,KAAKmB,EAAG,CAAC,EAEpB,OAAOnB,CACX,CACJ,EACAX,GAAW,CACPgC,EACJ,EAAGO,GAAa,UAAW,SAAU,IAAI,EACzCvC,GAAW,CACPgC,EACJ,EAAGO,GAAa,UAAW,UAAW,IAAI,EAC1CvC,GAAW,CACPgC,EACJ,EAAGO,GAAa,UAAW,UAAW,IAAI,EAC1CvC,GAAW,CACPgC,EACJ,EAAGO,GAAa,UAAW,UAAW,IAAI,EAC1CvC,GAAW,CACPgC,EACJ,EAAGO,GAAa,UAAW,WAAY,IAAI,EAC3CvC,GAAW,CACPgC,EACJ,EAAGO,GAAa,UAAW,WAAY,IAAI,EAC3CvC,GAAW,CACPgC,EACJ,EAAGO,GAAa,UAAW,WAAY,IAAI,EAC3CvC,GAAW,CACPgC,EACJ,EAAGO,GAAa,UAAW,aAAc,IAAI,EAC7CvC,GAAW,CACPgC,EACJ,EAAGO,GAAa,UAAW,iBAAkB,IAAI,EACjDvC,GAAW,CACPgC,EACJ,EAAGO,GAAa,UAAW,YAAa,IAAI,EAC5C/C,GAAQ,aAAe+C,GACvB,SAASG,GAAsBC,EAAQ,CACnC,OAAOA,EAAO,OAAO,CAAC,EAAE,YAAY,EAAIA,EAAO,MAAM,CAAC,CAC1D,CACA,SAASC,GAAeC,EAAQrB,EAAWL,EAAO2B,EAAWC,EAAQ,CACjE,GAAI,CAEA,GAAI,OAAOD,GAAc,SACrBC,EAAO,QAAQL,GAAsBI,CAAS,KAAK3B,CAAK,UAEnD2B,aAAqB,MAC1B,GAAI,OAAOA,EAAU,IAAO,SAAU,CAClC,GAAI3B,EAAM,SAAW2B,EAAU,GAC3B,MAAM,IAAIxB,GAAW,kCAAkCwB,EAAU,eAAe3B,EAAM,cAAc,EAExG4B,EAAO,gBAAgB5B,CAAK,CAChC,SACS2B,EAAU,SAAW,GAAK,OAAOA,EAAU,IAAO,SAAU,CACjE,GAAI3B,EAAM,SAAW2B,EAAU,GAC3B,MAAM,IAAIxB,GAAW,kCAAkCwB,EAAU,eAAe3B,EAAM,cAAc,EAExG,QAASX,EAAI,EAAGA,EAAIsC,EAAU,GAAItC,IAC9BoC,GAAeC,EAAQ,KAAM1B,EAAMX,GAAIsC,EAAU,GAAIC,CAAM,CAEnE,MAEIA,EAAO,WAAW5B,EAAQ6B,GAAS,CAC/BJ,GAAeC,EAAQrB,EAAWwB,EAAMF,EAAU,GAAIC,CAAM,CAChE,CAAC,UAGAD,EAAU,OAAS,OACxB,OAAQA,EAAU,KAAM,CACpB,IAAK,SAAU,CACP3B,GAAU,KACV4B,EAAO,QAAQ,CAAC,GAGhBA,EAAO,QAAQ,CAAC,EAChBH,GAAeC,EAAQrB,EAAWL,EAAO2B,EAAU,KAAMC,CAAM,GAEnE,KACJ,CACA,IAAK,MAAO,CACRA,EAAO,SAAS5B,EAAM,IAAI,EAC1BA,EAAM,QAAQ,CAAC8B,EAAK9C,IAAQ,CACxByC,GAAeC,EAAQrB,EAAWrB,EAAK2C,EAAU,IAAKC,CAAM,EAC5DH,GAAeC,EAAQrB,EAAWyB,EAAKH,EAAU,MAAOC,CAAM,CAClE,CAAC,EACD,KACJ,CACA,QACI,MAAM,IAAIzB,GAAW,aAAawB,gBAAwB,CAClE,MAGAI,GAAgBL,EAAQ1B,EAAO4B,CAAM,CAE7C,OACOI,EAAP,CACI,MAAIA,aAAiB7B,IACjB6B,EAAM,eAAe3B,CAAS,EAE5B2B,CACV,CACJ,CACA,SAASD,GAAgBL,EAAQO,EAAKL,EAAQ,CAC1C,GAAI,OAAOK,EAAI,gBAAmB,WAAY,CAC1CA,EAAI,eAAeL,CAAM,EACzB,MACJ,CACA,IAAMM,EAAeR,EAAO,IAAIO,EAAI,WAAW,EAC/C,GAAI,CAACC,EACD,MAAM,IAAI/B,GAAW,SAAS8B,EAAI,YAAY,2BAA2B,EAE7E,GAAIC,EAAa,OAAS,SACtBA,EAAa,OAAO,IAAI,CAAC,CAAC7B,EAAWsB,CAAS,IAAM,CAChDF,GAAeC,EAAQrB,EAAW4B,EAAI5B,GAAYsB,EAAWC,CAAM,CACvE,CAAC,UAEIM,EAAa,OAAS,OAAQ,CACnC,IAAMC,EAAOF,EAAIC,EAAa,OAC9B,QAASE,EAAM,EAAGA,EAAMF,EAAa,OAAO,OAAQ,EAAEE,EAAK,CACvD,GAAM,CAAC/B,EAAWsB,CAAS,EAAIO,EAAa,OAAOE,GACnD,GAAI/B,IAAc8B,EAAM,CACpBP,EAAO,QAAQQ,CAAG,EAClBX,GAAeC,EAAQrB,EAAW4B,EAAI5B,GAAYsB,EAAWC,CAAM,EACnE,KACJ,CACJ,CACJ,KAEI,OAAM,IAAIzB,GAAW,2BAA2B+B,EAAa,YAAYD,EAAI,YAAY,MAAM,CAEvG,CAGA,SAASI,GAAUX,EAAQO,EAAKK,EAAShC,GAAc,CACnD,IAAMsB,EAAS,IAAIU,EACnB,OAAAP,GAAgBL,EAAQO,EAAKL,CAAM,EAC5BA,EAAO,QAAQ,CAC1B,CACAvD,GAAQ,UAAYgE,GACpB,SAASE,GAAiBb,EAAQrB,EAAWsB,EAAWa,EAAQ,CAC5D,GAAI,CACA,GAAI,OAAOb,GAAc,SACrB,OAAOa,EAAO,OAAOjB,GAAsBI,CAAS,KAAK,EAE7D,GAAIA,aAAqB,MAAO,CAC5B,GAAI,OAAOA,EAAU,IAAO,SACxB,OAAOa,EAAO,eAAeb,EAAU,EAAE,EAExC,GAAI,OAAOA,EAAU,IAAO,SAAU,CACvC,IAAMc,EAAM,CAAC,EACb,QAASpD,EAAI,EAAGA,EAAIsC,EAAU,GAAItC,IAC9BoD,EAAI,KAAKF,GAAiBb,EAAQ,KAAMC,EAAU,GAAIa,CAAM,CAAC,EAEjE,OAAOC,CACX,KAEI,QAAOD,EAAO,UAAU,IAAMD,GAAiBb,EAAQrB,EAAWsB,EAAU,GAAIa,CAAM,CAAC,CAE/F,CACA,GAAIb,EAAU,OAAS,SAEnB,OADea,EAAO,OAAO,EAElBD,GAAiBb,EAAQrB,EAAWsB,EAAU,KAAMa,CAAM,EAErE,OAEJ,GAAIb,EAAU,OAAS,MAAO,CAC1B,IAAIe,EAAM,IAAI,IACRC,EAASH,EAAO,QAAQ,EAC9B,QAASnD,EAAI,EAAGA,EAAIsD,EAAQtD,IAAK,CAC7B,IAAML,EAAMuD,GAAiBb,EAAQrB,EAAWsB,EAAU,IAAKa,CAAM,EAC/DV,EAAMS,GAAiBb,EAAQrB,EAAWsB,EAAU,MAAOa,CAAM,EACvEE,EAAI,IAAI1D,EAAK8C,CAAG,CACpB,CACA,OAAOY,CACX,CACA,OAAOE,GAAkBlB,EAAQC,EAAWa,CAAM,CACtD,OACOR,EAAP,CACI,MAAIA,aAAiB7B,IACjB6B,EAAM,eAAe3B,CAAS,EAE5B2B,CACV,CACJ,CACA,SAASY,GAAkBlB,EAAQmB,EAAWL,EAAQ,CAClD,GAAI,OAAOK,EAAU,kBAAqB,WACtC,OAAOA,EAAU,iBAAiBL,CAAM,EAE5C,IAAMN,EAAeR,EAAO,IAAImB,CAAS,EACzC,GAAI,CAACX,EACD,MAAM,IAAI/B,GAAW,SAAS0C,EAAU,2BAA2B,EAEvE,GAAIX,EAAa,OAAS,SAAU,CAChC,IAAM1C,EAAS,CAAC,EAChB,OAAW,CAACa,EAAWsB,CAAS,IAAKD,EAAO,IAAImB,CAAS,EAAE,OACvDrD,EAAOa,GAAakC,GAAiBb,EAAQrB,EAAWsB,EAAWa,CAAM,EAE7E,OAAO,IAAIK,EAAUrD,CAAM,CAC/B,CACA,GAAI0C,EAAa,OAAS,OAAQ,CAC9B,IAAME,EAAMI,EAAO,OAAO,EAC1B,GAAIJ,GAAOF,EAAa,OAAO,OAC3B,MAAM,IAAI/B,GAAW,eAAeiC,mBAAqB,EAE7D,GAAM,CAAC/B,EAAWsB,CAAS,EAAIO,EAAa,OAAOE,GAC7CU,EAAaP,GAAiBb,EAAQrB,EAAWsB,EAAWa,CAAM,EACxE,OAAO,IAAIK,EAAU,CAAE,CAACxC,GAAYyC,CAAW,CAAC,CACpD,CACA,MAAM,IAAI3C,GAAW,2BAA2B+B,EAAa,YAAYW,EAAU,YAAY,MAAM,CACzG,CAEA,SAASE,GAAYrB,EAAQmB,EAAWtC,EAAQyC,EAAS5B,GAAc,CACnE,IAAMoB,EAAS,IAAIQ,EAAOzC,CAAM,EAC1Bf,EAASoD,GAAkBlB,EAAQmB,EAAWL,CAAM,EAC1D,GAAIA,EAAO,OAASjC,EAAO,OACvB,MAAM,IAAIJ,GAAW,cAAcI,EAAO,OAASiC,EAAO,sCAAsC,EAEpG,OAAOhD,CACX,CACAnB,GAAQ,YAAc0E,GAEtB,SAASE,GAAqBvB,EAAQmB,EAAWtC,EAAQyC,EAAS5B,GAAc,CAC5E,IAAMoB,EAAS,IAAIQ,EAAOzC,CAAM,EAChC,OAAOqC,GAAkBlB,EAAQmB,EAAWL,CAAM,CACtD,CACAnE,GAAQ,qBAAuB4E,KCvb/B,IAAAC,GAAAC,GAAAC,GAAA,mzBAsIA,IAAAC,GAAA,KAYA,SAAgBC,GAAgBC,EAAa,CAC3C,GAAI,EAAEA,aAAa,YACjB,MAAM,IAAI,UAAU,wBAAwB,CAEhD,CAJAH,EAAA,gBAAAE,GASA,SAAgBE,GAAmBD,EAAa,CAC9C,OAAAD,GAAgBC,CAAC,EACVF,GAAA,OAAO,KAAKE,EAAE,OAAQA,EAAE,WAAYA,EAAE,MAAM,CACrD,CAHAH,EAAA,mBAAAI,GAqBA,IAAsBC,GAAtB,KAA4B,CAK1B,YAAYC,EAAcC,EAAiB,CACzC,GAAI,CAAC,OAAO,UAAUD,CAAI,EACxB,MAAM,IAAI,UAAU,yBAAyB,EAY/C,KAAK,KAAOA,EAUZ,KAAK,SAAWC,CAClB,CAiBA,uBAAqB,CACnB,MAAO,CAAA,CACT,CAwDA,QAAQJ,EAAgBK,EAAe,CACrC,GAAI,EAAI,KAAK,KACX,MAAM,IAAI,WAAW,oBAAoB,EAE3C,OAAO,KAAK,IACd,CAkBA,UAAUD,EAAgB,CACxB,IAAME,EAAK,OAAO,OAAO,KAAK,YAAY,SAAS,EACnD,cAAO,OAAOA,EAAI,IAAI,EACtBA,EAAG,SAAWF,EACPE,CACT,CAsBA,UAAUC,EAAa,CAEvB,GA7JFV,EAAA,OAAAK,GAqKA,SAAgBM,GAAiBC,EAAcC,EAAyB,CACtE,OAAIA,EAAG,SACED,EAAO,IAAMC,EAAG,SAAW,IAE7BD,CACT,CALAZ,EAAA,iBAAAW,GAoCA,SAAgBG,GAAyBC,EAAYC,EAAiB,CACpE,GAAmB,OAAOD,GAAtB,WACF,MAAM,IAAI,UAAU,2BAA2B,EAEjD,GAAI,OAAO,UAAU,eAAe,KAAKA,EAAO,SAAS,EACvD,MAAM,IAAI,MAAM,oCAAoC,EAEtD,GAAI,EAAEC,GAAWA,aAAkBX,IACjC,MAAM,IAAI,UAAU,yBAAyB,EAE/C,GAAI,OAAO,UAAU,eAAe,KAAKW,EAAQ,mBAAmB,EAClE,MAAM,IAAI,MAAM,0CAA0C,EAE5DD,EAAM,QAAUC,EAChBA,EAAO,kBAAoBD,EAC3BC,EAAO,sBAAyB,IAAM,IAAID,EAC1C,OAAO,eAAeA,EAAM,UAAW,SAAU,CAC/C,MAAOZ,EAAeK,EAAe,CACnC,OAAOQ,EAAO,OAAO,KAAWb,EAAGK,CAAM,CAC3C,EACA,SAAU,GACX,EACD,OAAO,eAAeO,EAAO,SAAU,CACrC,MAAOZ,EAAeK,EAAe,CACnC,OAAOQ,EAAO,OAAOb,EAAGK,CAAM,CAChC,EACA,SAAU,GACX,CACH,CA5BAR,EAAA,sBAAAc,GAmDA,IAAsBG,GAAtB,cAA6CZ,EAAc,CAYzD,SAAO,CACL,MAAM,IAAI,MAAM,4BAA4B,CAC9C,GAdFL,EAAA,eAAAiB,GAgCA,IAAaC,GAAb,cAAiCD,EAAc,CAG7C,YAAYE,EAAc,EAAGZ,EAAiB,CAC5C,GAAK,CAAC,OAAO,UAAUY,CAAW,GAAO,GAAKA,EAC5C,MAAM,IAAI,UAAU,0CAA0C,EAEhE,MAAM,GAAIZ,CAAQ,EAKlB,KAAK,YAAcY,CACrB,CAGA,SAAO,CACL,MAAO,EACT,CAGA,OAAOhB,EAAeK,EAAS,EAAC,CAC9BN,GAAgBC,CAAC,EACjB,IAAMiB,EAAMjB,EAAE,OAASK,EACvB,OAAO,KAAK,MAAMY,EAAM,KAAK,WAAW,CAC1C,CAGA,OAAOC,EAAalB,EAAeK,EAAe,CAChD,MAAO,EACT,GA9BFR,EAAA,YAAAkB,GAqDA,IAAaI,GAAb,cAAkCL,EAAc,CAG9C,YAAYD,EAAwBR,EAAS,EAAGD,EAAiB,CAC/D,GAAI,EAAES,aAAkBX,IACtB,MAAM,IAAI,UAAU,yBAAyB,EAG/C,GAAI,CAAC,OAAO,UAAUG,CAAM,EAC1B,MAAM,IAAI,UAAU,qCAAqC,EAG3D,MAAMQ,EAAO,KAAMT,GAAYS,EAAO,QAAQ,EAG9C,KAAK,OAASA,EAQd,KAAK,OAASR,CAChB,CAGA,SAAO,CACL,OAAS,KAAK,kBAAkBe,IACpB,KAAK,kBAAkBC,EACrC,CAGA,OAAOrB,EAAeK,EAAS,EAAC,CAC9B,OAAO,KAAK,OAAO,OAAOL,EAAGK,EAAS,KAAK,MAAM,CACnD,CAGA,OAAOa,EAAalB,EAAeK,EAAS,EAAC,CAC3C,OAAO,KAAK,OAAO,OAAOa,EAAKlB,EAAGK,EAAS,KAAK,MAAM,CACxD,GAxCFR,EAAA,aAAAsB,GA2DA,IAAaC,GAAb,cAA0BlB,EAAc,CACtC,YAAYC,EAAcC,EAAiB,CAEzC,GADA,MAAMD,EAAMC,CAAQ,EAChB,EAAI,KAAK,KACX,MAAM,IAAI,WAAW,8BAA8B,CAEvD,CAGA,OAAOJ,EAAeK,EAAS,EAAC,CAC9B,OAAOJ,GAAmBD,CAAC,EAAE,WAAWK,EAAQ,KAAK,IAAI,CAC3D,CAGA,OAAOa,EAAalB,EAAeK,EAAS,EAAC,CAC3C,OAAAJ,GAAmBD,CAAC,EAAE,YAAYkB,EAAKb,EAAQ,KAAK,IAAI,EACjD,KAAK,IACd,GAjBFR,EAAA,KAAAuB,GAoCA,IAAaC,GAAb,cAA4BnB,EAAc,CACxC,YAAYC,EAAcC,EAAiB,CAEzC,GADA,MAAMD,EAAMC,CAAQ,EAChB,EAAI,KAAK,KACX,MAAM,IAAI,WAAW,8BAA8B,CAEvD,CAGA,OAAOJ,EAAeK,EAAS,EAAC,CAC9B,OAAOJ,GAAmBD,CAAC,EAAE,WAAWK,EAAQ,KAAK,IAAI,CAC3D,CAGA,OAAOa,EAAalB,EAAeK,EAAS,EAAC,CAC3C,OAAAJ,GAAmBD,CAAC,EAAE,YAAYkB,EAAKb,EAAQ,KAAK,IAAI,EACjD,KAAK,IACd,GAjBFR,EAAA,OAAAwB,GAoCA,IAAaC,GAAb,cAAyBpB,EAAc,CACrC,YAAYC,EAAcC,EAAiB,CAEzC,GADA,MAAMD,EAAMC,CAAQ,EAChB,EAAI,KAAK,KACX,MAAM,IAAI,WAAW,8BAA8B,CAEvD,CAGA,OAAOJ,EAAeK,EAAS,EAAC,CAC9B,OAAOJ,GAAmBD,CAAC,EAAE,UAAUK,EAAQ,KAAK,IAAI,CAC1D,CAGA,OAAOa,EAAalB,EAAeK,EAAS,EAAC,CAC3C,OAAAJ,GAAmBD,CAAC,EAAE,WAAWkB,EAAKb,EAAQ,KAAK,IAAI,EAChD,KAAK,IACd,GAjBFR,EAAA,IAAAyB,GAoCA,IAAaC,GAAb,cAA2BrB,EAAc,CACvC,YAAYC,EAAcC,EAAiB,CAEzC,GADA,MAAMD,EAAMC,CAAQ,EAChB,EAAI,KAAK,KACX,MAAM,IAAI,WAAW,8BAA8B,CAEvD,CAGA,OAAOJ,EAAeK,EAAS,EAAC,CAC9B,OAAOJ,GAAmBD,CAAC,EAAE,UAAUK,EAAQ,KAAK,IAAI,CAC1D,CAGA,OAAOa,EAAalB,EAAeK,EAAS,EAAC,CAC3C,OAAAJ,GAAmBD,CAAC,EAAE,WAAWkB,EAAKb,EAAQ,KAAK,IAAI,EAChD,KAAK,IACd,GAjBFR,EAAA,MAAA0B,GAoBA,IAAMC,GAAQ,KAAK,IAAI,EAAG,EAAE,EAI5B,SAASC,GAAYP,EAAW,CAC9B,IAAMQ,EAAO,KAAK,MAAMR,EAAMM,EAAK,EAC7BG,EAAOT,EAAOQ,EAAOF,GAC3B,MAAO,CAAC,KAAAE,EAAM,KAAAC,CAAI,CACpB,CAEA,SAASC,GAAaF,EAAcC,EAAY,CAC9C,OAAOD,EAAOF,GAAQG,CACxB,CAaA,IAAaE,GAAb,cAAgC3B,EAAc,CAC5C,YAAYE,EAAiB,CAC3B,MAAM,EAAGA,CAAQ,CACnB,CAGA,OAAOJ,EAAeK,EAAS,EAAC,CAC9B,IAAMyB,EAAS7B,GAAmBD,CAAC,EAC7B2B,EAAOG,EAAO,aAAazB,CAAM,EACjCqB,EAAOI,EAAO,aAAazB,EAAS,CAAC,EAC3C,OAAOuB,GAAaF,EAAMC,CAAI,CAChC,CAGA,OAAOT,EAAalB,EAAeK,EAAS,EAAC,CAC3C,IAAM0B,EAAQN,GAAYP,CAAG,EACvBY,EAAS7B,GAAmBD,CAAC,EACnC,OAAA8B,EAAO,cAAcC,EAAM,KAAM1B,CAAM,EACvCyB,EAAO,cAAcC,EAAM,KAAM1B,EAAS,CAAC,EACpC,CACT,GApBFR,EAAA,WAAAgC,GAkCA,IAAaG,GAAb,cAAkC9B,EAAc,CAC9C,YAAYE,EAAiB,CAC3B,MAAM,EAAGA,CAAQ,CACnB,CAGA,OAAOJ,EAAeK,EAAS,EAAC,CAC9B,IAAMyB,EAAS7B,GAAmBD,CAAC,EAC7B0B,EAAOI,EAAO,aAAazB,CAAM,EACjCsB,EAAOG,EAAO,aAAazB,EAAS,CAAC,EAC3C,OAAOuB,GAAaF,EAAMC,CAAI,CAChC,CAGA,OAAOT,EAAalB,EAAeK,EAAS,EAAC,CAC3C,IAAM0B,EAAQN,GAAYP,CAAG,EACvBY,EAAS7B,GAAmBD,CAAC,EACnC,OAAA8B,EAAO,cAAcC,EAAM,KAAM1B,CAAM,EACvCyB,EAAO,cAAcC,EAAM,KAAM1B,EAAS,CAAC,EACpC,CACT,GApBFR,EAAA,aAAAmC,GAkCA,IAAaC,GAAb,cAA+B/B,EAAc,CAC3C,YAAYE,EAAiB,CAC3B,MAAM,EAAGA,CAAQ,CACnB,CAGA,OAAOJ,EAAeK,EAAS,EAAC,CAC9B,IAAMyB,EAAS7B,GAAmBD,CAAC,EAC7B2B,EAAOG,EAAO,aAAazB,CAAM,EACjCqB,EAAOI,EAAO,YAAYzB,EAAS,CAAC,EAC1C,OAAOuB,GAAaF,EAAMC,CAAI,CAChC,CAGA,OAAOT,EAAalB,EAAeK,EAAS,EAAC,CAC3C,IAAM0B,EAAQN,GAAYP,CAAG,EACvBY,EAAS7B,GAAmBD,CAAC,EACnC,OAAA8B,EAAO,cAAcC,EAAM,KAAM1B,CAAM,EACvCyB,EAAO,aAAaC,EAAM,KAAM1B,EAAS,CAAC,EACnC,CACT,GApBFR,EAAA,UAAAoC,GAkCA,IAAaC,GAAb,cAAiChC,EAAc,CAC7C,YAAYE,EAAiB,CAC3B,MAAM,EAAGA,CAAQ,CACnB,CAGA,OAAOJ,EAAeK,EAAS,EAAC,CAC9B,IAAMyB,EAAS7B,GAAmBD,CAAC,EAC7B0B,EAAOI,EAAO,YAAYzB,CAAM,EAChCsB,EAAOG,EAAO,aAAazB,EAAS,CAAC,EAC3C,OAAOuB,GAAaF,EAAMC,CAAI,CAChC,CAGA,OAAOT,EAAalB,EAAeK,EAAS,EAAC,CAC3C,IAAM0B,EAAQN,GAAYP,CAAG,EACvBY,EAAS7B,GAAmBD,CAAC,EACnC,OAAA8B,EAAO,aAAaC,EAAM,KAAM1B,CAAM,EACtCyB,EAAO,cAAcC,EAAM,KAAM1B,EAAS,CAAC,EACpC,CACT,GApBFR,EAAA,YAAAqC,GAiCA,IAAaC,GAAb,cAA2BjC,EAAc,CACvC,YAAYE,EAAiB,CAC3B,MAAM,EAAGA,CAAQ,CACnB,CAGA,OAAOJ,EAAeK,EAAS,EAAC,CAC9B,OAAOJ,GAAmBD,CAAC,EAAE,YAAYK,CAAM,CACjD,CAGA,OAAOa,EAAalB,EAAeK,EAAS,EAAC,CAC3C,OAAAJ,GAAmBD,CAAC,EAAE,aAAakB,EAAKb,CAAM,EACvC,CACT,GAdFR,EAAA,MAAAsC,GA2BA,IAAaC,GAAb,cAA6BlC,EAAc,CACzC,YAAYE,EAAiB,CAC3B,MAAM,EAAGA,CAAQ,CACnB,CAGA,OAAOJ,EAAeK,EAAS,EAAC,CAC9B,OAAOJ,GAAmBD,CAAC,EAAE,YAAYK,CAAM,CACjD,CAGA,OAAOa,EAAalB,EAAeK,EAAS,EAAC,CAC3C,OAAAJ,GAAmBD,CAAC,EAAE,aAAakB,EAAKb,CAAM,EACvC,CACT,GAdFR,EAAA,QAAAuC,GA2BA,IAAaC,GAAb,cAA4BnC,EAAc,CACxC,YAAYE,EAAiB,CAC3B,MAAM,EAAGA,CAAQ,CACnB,CAGA,OAAOJ,EAAeK,EAAS,EAAC,CAC9B,OAAOJ,GAAmBD,CAAC,EAAE,aAAaK,CAAM,CAClD,CAGA,OAAOa,EAAalB,EAAeK,EAAS,EAAC,CAC3C,OAAAJ,GAAmBD,CAAC,EAAE,cAAckB,EAAKb,CAAM,EACxC,CACT,GAdFR,EAAA,OAAAwC,GA2BA,IAAaC,GAAb,cAA8BpC,EAAc,CAC1C,YAAYE,EAAiB,CAC3B,MAAM,EAAGA,CAAQ,CACnB,CAGA,OAAOJ,EAAeK,EAAS,EAAC,CAC9B,OAAOJ,GAAmBD,CAAC,EAAE,aAAaK,CAAM,CAClD,CAGA,OAAOa,EAAalB,EAAeK,EAAS,EAAC,CAC3C,OAAAJ,GAAmBD,CAAC,EAAE,cAAckB,EAAKb,CAAM,EACxC,CACT,GAdFR,EAAA,SAAAyC,GAkCA,IAAaC,GAAb,cAAiCrC,EAAW,CAI1C,YAAYsC,EAA0BC,EAAgCrC,EAAiB,CACrF,GAAI,EAAEoC,aAAyBtC,IAC7B,MAAM,IAAI,UAAU,gCAAgC,EAEtD,GAAI,EAAIuC,aAAiB3B,IAAmB2B,EAAM,QAAO,GAC/C,OAAO,UAAUA,CAAK,GAAM,GAAKA,GACzC,MAAM,IAAI,UAAU,0EACyC,EAE/D,IAAItC,EAAO,GACN,EAAEsC,aAAiB3B,KAChB,EAAI0B,EAAc,OACxBrC,EAAOsC,EAAQD,EAAc,MAG/B,MAAMrC,EAAMC,CAAQ,EAGpB,KAAK,cAAgBoC,EAOrB,KAAK,MAAQC,CACf,CAGA,QAAQzC,EAAeK,EAAS,EAAC,CAC/B,GAAI,GAAK,KAAK,KACZ,OAAO,KAAK,KAEd,IAAIF,EAAO,EACPsC,EAAQ,KAAK,MAIjB,GAHIA,aAAiB3B,KACnB2B,EAAQA,EAAM,OAAOzC,EAAGK,CAAM,GAE5B,EAAI,KAAK,cAAc,KACzBF,EAAOsC,EAAQ,KAAK,cAAc,SAC7B,CACL,IAAIC,EAAM,EACV,KAAOA,EAAMD,GACXtC,GAAQ,KAAK,cAAc,QAAQH,EAAGK,EAASF,CAAI,EACnD,EAAEuC,EAGN,OAAOvC,CACT,CAGA,OAAOH,EAAeK,EAAS,EAAC,CAC9B,IAAMC,EAAU,CAAA,EACZ,EAAI,EACJmC,EAAQ,KAAK,MAIjB,IAHIA,aAAiB3B,KACnB2B,EAAQA,EAAM,OAAOzC,EAAGK,CAAM,GAEzB,EAAIoC,GACTnC,EAAG,KAAK,KAAK,cAAc,OAAON,EAAGK,CAAM,CAAC,EAC5CA,GAAU,KAAK,cAAc,QAAQL,EAAGK,CAAM,EAC9C,GAAK,EAEP,OAAOC,CACT,CAYA,OAAOY,EAAUlB,EAAeK,EAAS,EAAC,CACxC,IAAMsC,EAAM,KAAK,cACXxC,EAAee,EAAI,OAAO,CAACf,EAAMyC,IAC9BzC,EAAOwC,EAAI,OAAOC,EAAG5C,EAAGK,EAASF,CAAI,EAC3C,CAAC,EACJ,OAAI,KAAK,iBAAiBW,IACxB,KAAK,MAAM,OAAOI,EAAI,OAAQlB,EAAGK,CAAM,EAElCF,CACT,GAzFFN,EAAA,SAAA0C,GA4HA,IAAaM,GAAb,cAAkC3C,EAAS,CAIzC,YAAY4C,EAA8B1C,EAAmB2C,EAAwB,CACnF,GAAI,EAAE,MAAM,QAAQD,CAAM,GACjBA,EAAO,OAAO,CAACE,EAAKJ,IAAMI,GAAQJ,aAAa1C,GAAS,EAAI,GACnE,MAAM,IAAI,UAAU,0CAA0C,EAE7C,OAAOE,GAArB,WACiB2C,IAAd,SACNA,EAAiB3C,EACjBA,EAAW,QAIb,QAAW6C,KAAMH,EACf,GAAK,EAAIG,EAAG,MACUA,EAAG,WAAjB,OACN,MAAM,IAAI,MAAM,sDAAsD,EAI1E,IAAI9C,EAAO,GACX,GAAI,CACFA,EAAO2C,EAAO,OAAO,CAAC3C,EAAM8C,IAAO9C,EAAO8C,EAAG,QAAO,EAAI,CAAC,OACzD,EAGF,MAAM9C,EAAMC,CAAQ,EAYpB,KAAK,OAAS0C,EAWd,KAAK,eAAiB,CAAC,CAACC,CAC1B,CAGA,QAAQ/C,EAAeK,EAAS,EAAC,CAC/B,GAAI,GAAK,KAAK,KACZ,OAAO,KAAK,KAEd,IAAIF,EAAO,EACX,GAAI,CACFA,EAAO,KAAK,OAAO,OAAO,CAACA,EAAM8C,IAAM,CACrC,IAAMC,EAAMD,EAAG,QAAQjD,EAAGK,CAAM,EAChC,OAAAA,GAAU6C,EACH/C,EAAO+C,CAChB,EAAG,CAAC,OACJ,CACA,MAAM,IAAI,WAAW,oBAAoB,EAE3C,OAAO/C,CACT,CAGA,OAAOH,EAAeK,EAAS,EAAC,CAC9BN,GAAgBC,CAAC,EACjB,IAAMmD,EAAO,KAAK,sBAAqB,EACvC,QAAWF,KAAM,KAAK,OAKpB,GAJkBA,EAAG,WAAjB,SACFE,EAAKF,EAAG,UAAuBA,EAAG,OAAOjD,EAAGK,CAAM,GAEpDA,GAAU4C,EAAG,QAAQjD,EAAGK,CAAM,EAC1B,KAAK,gBACDL,EAAE,SAAWK,EACnB,MAGJ,OAAO8C,CACT,CAOA,OAAOjC,EAAQlB,EAAeK,EAAS,EAAC,CACtC,IAAM+C,EAAc/C,EAChBgD,EAAa,EACbC,EAAY,EAChB,QAAWL,KAAM,KAAK,OAAQ,CAC5B,IAAI9C,EAAO8C,EAAG,KAEd,GADAK,EAAa,EAAInD,EAAQA,EAAO,EACd8C,EAAG,WAAjB,OAA2B,CAC7B,IAAMM,EAAKrC,EAAI+B,EAAG,UACAM,IAAd,SACFD,EAAYL,EAAG,OAAOM,EAAIvD,EAAGK,CAAM,EAC/B,EAAIF,IAGNA,EAAO8C,EAAG,QAAQjD,EAAGK,CAAM,IAIjCgD,EAAahD,EACbA,GAAUF,EAMZ,OAAQkD,EAAaC,EAAaF,CACpC,CAGA,UAAU7C,EAAa,CACrB,IAAM4C,EAAO,KAAK,sBAAqB,EACvC,QAAWF,KAAM,KAAK,OACDA,EAAG,WAAjB,QACG,EAAI1C,EAAO,SACjB4C,EAAKF,EAAG,UAAY1C,EAAO,MAAK,GAGpC,OAAO4C,CACT,CAUA,UAAU/C,EAAgB,CACxB,GAAiB,OAAOA,GAApB,SACF,MAAM,IAAI,UAAU,yBAAyB,EAE/C,QAAW6C,KAAM,KAAK,OACpB,GAAIA,EAAG,WAAa7C,EAClB,OAAO6C,CAIb,CAaA,SAAS7C,EAAgB,CACvB,GAAiB,OAAOA,GAApB,SACF,MAAM,IAAI,UAAU,yBAAyB,EAE/C,IAAIC,EAAS,EACb,QAAW4C,KAAM,KAAK,OAAQ,CAC5B,GAAIA,EAAG,WAAa7C,EAClB,OAAOC,EAEL,EAAI4C,EAAG,KACT5C,EAAS,GACA,GAAKA,IACdA,GAAU4C,EAAG,MAInB,GAtLFpD,EAAA,UAAAgD,GAuMA,IAAaW,GAAb,KAA+B,CAE7B,YAAYpD,EAAgB,CAK1B,KAAK,SAAWA,CAClB,CAMA,OAAOJ,EAAgBK,EAAe,CACpC,MAAM,IAAI,MAAM,gCAAgC,CAClD,CAMA,OAAOa,EAAQlB,EAAeK,EAAe,CAC3C,MAAM,IAAI,MAAM,gCAAgC,CAClD,GAxBFR,EAAA,mBAAA2D,GA4CA,IAAaC,GAAb,cAA8CD,EAA0B,CAEtE,YAAY3C,EAAwBT,EAAiB,CACnD,GAAI,EAAGS,aAAkBC,IAChBD,EAAO,QAAO,GACrB,MAAM,IAAI,UAAU,mDAAmD,EAGzE,MAAMT,GAAYS,EAAO,UAAY,SAAS,EAI9C,KAAK,OAASA,CAChB,CAGA,OAAOb,EAAeK,EAAe,CACnC,OAAO,KAAK,OAAO,OAAOL,EAAGK,CAAM,CACrC,CAGA,OAAOa,EAAalB,EAAeK,EAAe,CAChD,OAAO,KAAK,OAAO,OAAOa,EAAKlB,EAAGK,CAAM,CAC1C,GAvBFR,EAAA,yBAAA4D,GAqFA,IAAaC,GAAb,cAA2BxD,EAAoB,CAY7C,YACIyD,EACAC,EACAxD,EAAgB,CAElB,IAAIyD,EACJ,GAAKF,aAAiBvC,IACduC,aAAiBtC,GACvBwC,EAAgB,IAAIJ,GAAyB,IAAItC,GAAawC,CAAK,CAAC,UAC1DA,aAAiB7C,IACf6C,EAAM,QAAO,EACzBE,EAAgB,IAAIJ,GAAyBE,CAAK,UACvCA,aAAiBH,GAI5BK,EAAgBF,MAHhB,OAAM,IAAI,UAAU,kEACiC,EAOvD,GAHkBC,IAAd,SACFA,EAAgB,MAEd,EAAYA,IAAT,MACGA,aAAyB1D,IACjC,MAAM,IAAI,UAAU,wCAAwC,EAE9D,GAAa0D,IAAT,KAAwB,CAC1B,GAAI,EAAIA,EAAc,KACpB,MAAM,IAAI,MAAM,uCAAuC,EAEvCA,EAAc,WAA5B,SACFA,EAAgBA,EAAc,UAAU,SAAS,GAQrD,IAAIzD,EAAO,GACPyD,IACFzD,EAAOyD,EAAc,KAChB,GAAKzD,IAAWwD,aAAiBvC,IAC9BuC,aAAiBtC,MACvBlB,GAAS0D,EAA2C,OAAO,OAG/D,MAAM1D,EAAMC,CAAQ,EAUpB,KAAK,cAAgByD,EAOrB,KAAK,wBAA2BF,aAAiBvC,IACzCuC,aAAiBtC,GASzB,KAAK,cAAgBuC,EAYrB,KAAK,SAAW,CAAA,EAGhB,IAAIE,EAAwB,KAAK,wBAAwB,KAAK,IAAI,EAelE,KAAK,iBAAmB,SAAS5C,EAAG,CAClC,OAAO4C,EAAsB5C,CAAG,CAClC,EAeA,KAAK,uBAAyB,SAAS6C,EAAG,CACxCD,EAAwBC,EAAI,KAAK,IAAI,CACvC,CACF,CAGA,QAAQ/D,EAAeK,EAAS,EAAC,CAC/B,GAAI,GAAK,KAAK,KACZ,OAAO,KAAK,KAKd,IAAM2D,EAAM,KAAK,WAAWhE,EAAGK,CAAM,EACrC,GAAI,CAAC2D,EACH,MAAM,IAAI,MAAM,mDAAmD,EAErE,OAAOA,EAAI,QAAQhE,EAAGK,CAAM,CAC9B,CA+BA,wBAAwBa,EAAiB,CACvC,GAAI,OAAO,UAAU,eAAe,KAAKA,EAAK,KAAK,cAAc,QAAQ,EAAG,CAC1E,GAAI,KAAK,eAAiB,KAAK,cAAc,UACtC,OAAO,UAAU,eAAe,KAAKA,EAAK,KAAK,cAAc,QAAQ,EAC1E,OAEF,IAAM8C,EAAM,KAAK,SAAS9C,EAAI,KAAK,cAAc,WACjD,GAAI8C,IACK,CAACA,EAAI,QACFA,EAAI,UAAY,OAAO,UAAU,eAAe,KAAK9C,EAAK8C,EAAI,QAAQ,GAChF,OAAOA,MAGT,SAAWC,KAAO,KAAK,SAAU,CAC/B,IAAMD,EAAM,KAAK,SAASC,GAC1B,GAAID,EAAI,UAAY,OAAO,UAAU,eAAe,KAAK9C,EAAK8C,EAAI,QAAQ,EACxE,OAAOA,EAIb,MAAM,IAAI,MAAM,6BAA6B,CAC/C,CAQA,OAAOhE,EAAeK,EAAS,EAAC,CAC9B,IAAI8C,EACEe,EAAM,KAAK,cACXP,EAAQO,EAAI,OAAOlE,EAAGK,CAAM,EAC5B8D,EAAM,KAAK,SAASR,GAC1B,GAAkBQ,IAAd,OAAmB,CACrB,IAAMP,EAAgB,KAAK,cACvBQ,EAAgB,EAChB,KAAK,0BACPA,EAAiBF,EAAiC,OAAO,MAE3Df,EAAO,KAAK,sBAAqB,EACjCA,EAAKe,EAAI,UAAYP,EAGrBR,EAAKS,EAAe,UAAaA,EAAe,OAAO5D,EAAGK,EAAS+D,CAAa,OAEhFjB,EAAOgB,EAAI,OAAOnE,EAAGK,CAAM,EAE7B,OAAO8C,CACT,CAQA,OAAOjC,EAAmBlB,EAAeK,EAAS,EAAC,CACjD,IAAM2D,EAAM,KAAK,iBAAiB9C,CAAG,EACrC,GAAkB8C,IAAd,OAAmB,CACrB,IAAME,EAAM,KAAK,cAGXC,EAAM,KAAK,cACbC,EAAgB,EACpB,OAAI,KAAK,0BACPA,EAAiBF,EAAiC,OAAO,MAE3DA,EAAI,OAAOhD,EAAIgD,EAAI,UAAWlE,EAAGK,CAAM,EAGhC+D,EAAgBD,EAAI,OAAOjD,EAAIiD,EAAI,UAAYnE,EAAGK,EAAS+D,CAAa,EAEjF,OAAOJ,EAAI,OAAO9C,EAAKlB,EAAGK,CAAM,CAClC,CAeA,WAAWgE,EAAiBxD,EAA8BT,EAAgB,CACxE,IAAME,EAAK,IAAIgE,GAAc,KAAMD,EAASxD,EAAQT,CAAQ,EAC5D,YAAK,SAASiE,GAAW/D,EAClBA,CACT,CAgBA,WAAWiE,EAAyBlE,EAAS,EAAC,CAC5C,IAAIgE,EACJ,OAAIE,aAAc,WAChBF,EAAU,KAAK,cAAc,OAAOE,EAAIlE,CAAM,EAE9CgE,EAAUE,EAEL,KAAK,SAASF,EACvB,GA1SFxE,EAAA,MAAA6D,GA0UA,IAAaY,GAAb,cAAmCpE,EAAoB,CAOrD,YAAYsE,EAAcH,EAAiBxD,EAAqCT,EAAgB,CAC9F,GAAI,EAAEoE,aAAiBd,IACrB,MAAM,IAAI,UAAU,uBAAuB,EAE7C,GAAK,CAAC,OAAO,UAAUW,CAAO,GAAO,EAAIA,EACvC,MAAM,IAAI,UAAU,0CAA0C,EAOhE,GALkB,OAAOxD,GAApB,UACiBT,IAAd,SACNA,EAAWS,EACXA,EAAS,MAEPA,EAAQ,CACV,GAAI,EAAEA,aAAkBX,IACtB,MAAM,IAAI,UAAU,yBAAyB,EAE/C,GAAcsE,EAAM,gBAAf,MACG,GAAK3D,EAAO,MACZA,EAAO,KAAO2D,EAAM,cAAc,KACxC,MAAM,IAAI,MAAM,+CAA+C,EAEjE,GAAiB,OAAOpE,GAApB,SACF,MAAM,IAAI,UAAU,qCAAqC,EAG7D,IAAID,EAAOqE,EAAM,KACb,EAAIA,EAAM,OACZrE,EAAOU,EAASA,EAAO,KAAO,EACzB,GAAKV,GAASqE,EAAM,0BACvBrE,GAASqE,EAAM,cAA2C,OAAO,OAGrE,MAAMrE,EAAMC,CAAQ,EAGpB,KAAK,MAAQoE,EAKb,KAAK,QAAUH,EAMf,KAAK,OAASxD,GAAU,IAC1B,CAGA,QAAQb,EAAeK,EAAS,EAAC,CAC/B,GAAI,GAAK,KAAK,KAGZ,OAAO,KAAK,KAEd,IAAI+D,EAAgB,EAChB,KAAK,MAAM,0BACbA,EAAiB,KAAK,MAAM,cAA2C,OAAO,MAGhF,IAAIjE,EAAO,EACX,OAAI,KAAK,SACPA,EAAO,KAAK,OAAO,QAAQH,EAAGK,EAAS+D,CAAa,GAE/CA,EAAgBjE,CACzB,CAGA,OAAOH,EAAeK,EAAS,EAAC,CAC9B,IAAM8C,EAAO,KAAK,sBAAqB,EACvC,GAAI,OAAS,KAAK,MAAM,WAAWnD,EAAGK,CAAM,EAC1C,MAAM,IAAI,MAAM,kBAAkB,EAEpC,IAAI+D,EAAgB,EACpB,OAAI,KAAK,MAAM,0BACbA,EAAiB,KAAK,MAAM,cAA2C,OAAO,MAE5E,KAAK,OACPjB,EAAK,KAAK,UAAY,KAAK,OAAO,OAAOnD,EAAGK,EAAS+D,CAAa,EACzD,KAAK,SACdjB,EAAK,KAAK,UAAY,GACb,KAAK,MAAM,0BACpBA,EAAK,KAAK,MAAM,cAAc,UAAY,KAAK,SAE1CA,CACT,CAGA,OAAOjC,EAAmBlB,EAAeK,EAAS,EAAC,CACjD,IAAI+D,EAAgB,EAIpB,GAHI,KAAK,MAAM,0BACbA,EAAiB,KAAK,MAAM,cAA2C,OAAO,MAE5E,KAAK,QACD,CAAC,OAAO,UAAU,eAAe,KAAKlD,EAAK,KAAK,QAAQ,EAC9D,MAAM,IAAI,UAAU,0BAA4B,KAAK,QAAQ,EAE/D,KAAK,MAAM,cAAc,OAAO,KAAK,QAASlB,EAAGK,CAAM,EACvD,IAAIF,EAAOiE,EACX,GAAI,KAAK,SACP,KAAK,OAAO,OAAOlD,EAAI,KAAK,UAAWlB,EAAGK,EAAS+D,CAAa,EAChEjE,GAAQ,KAAK,OAAO,QAAQH,EAAGK,EAAS+D,CAAa,EAChD,GAAK,KAAK,MAAM,MACbjE,EAAO,KAAK,MAAM,MACxB,MAAM,IAAI,MAAM,2CAA2C,EAG/D,OAAOA,CACT,CAIA,UAAUI,EAAa,CACrB,GAAI,KAAK,OACP,OAAO,KAAK,OAAO,UAAUA,CAAM,CAGvC,GA7HFV,EAAA,cAAAyE,GAsIA,SAASG,GAAiB7B,EAAS,CACjC,MAAI,GAAIA,IACNA,GAAK,YAEAA,CACT,CAiCA,IAAa8B,GAAb,cAAkCxE,EAAoB,CAQpD,YAAYyE,EAAqBC,EAAuBxE,EAAiB,CACvE,GAAI,EAAGuE,aAAgBvD,IACbuD,aAAgBtD,IACxB,MAAM,IAAI,UAAU,sCAAsC,EAO5D,GALkB,OAAOuD,GAApB,UACiBxE,IAAd,SACNA,EAAWwE,EACXA,EAAM,IAEJ,EAAID,EAAK,KACX,MAAM,IAAI,WAAW,4BAA4B,EAEnD,MAAMA,EAAK,KAAMvE,CAAQ,EAKzB,KAAK,KAAOuE,EASZ,KAAK,IAAM,CAAC,CAACC,EAQb,KAAK,OAAS,CAAA,EAKd,IAAIC,EAAQ,EACZ,KAAK,gBAAkB,SAASjC,EAAS,CACvC,OAAAiC,EAAQJ,GAAiB7B,CAAC,EACnB,IACT,EACA,KAAK,gBAAkB,UAAA,CACrB,OAAOiC,CACT,CACF,CAGA,OAAO7E,EAAeK,EAAS,EAAC,CAC9B,IAAM8C,EAAO,KAAK,sBAAqB,EACjC0B,EAAQ,KAAK,KAAK,OAAO7E,EAAGK,CAAM,EACxC,KAAK,gBAAgBwE,CAAK,EAC1B,QAAW5B,KAAM,KAAK,OACFA,EAAG,WAAjB,SACFE,EAAKF,EAAG,UAAYA,EAAG,OAAOjD,CAAC,GAGnC,OAAOmD,CACT,CAOA,OAAOjC,EAAmBlB,EAAeK,EAAS,EAAC,CACjD,IAAMwE,EAAQ,KAAK,KAAK,OAAO7E,EAAGK,CAAM,EACxC,KAAK,gBAAgBwE,CAAK,EAC1B,QAAW5B,KAAM,KAAK,OACpB,GAAkBA,EAAG,WAAjB,OAA2B,CAC7B,IAAMM,EAAKrC,EAAI+B,EAAG,UACAM,IAAd,QACFN,EAAG,OAAOM,CAAE,EAIlB,OAAO,KAAK,KAAK,OAAO,KAAK,gBAAe,EAAIvD,EAAGK,CAAM,CAC3D,CAWA,SAASyE,EAAc1E,EAAgB,CACrC,IAAM2E,EAAK,IAAIC,GAAS,KAAMF,EAAM1E,CAAQ,EAC5C,YAAK,OAAO,KAAK2E,CAAE,EACZA,CACT,CAWA,WAAW3E,EAAgB,CAEzB,IAAM2E,EAAK,IAAIE,GAAQ,KAAM7E,CAAQ,EACrC,YAAK,OAAO,KAAK2E,CAAE,EACZA,CACT,CAUA,SAAS3E,EAAgB,CACvB,GAAiB,OAAOA,GAApB,SACF,MAAM,IAAI,UAAU,yBAAyB,EAE/C,QAAW6C,KAAM,KAAK,OACpB,GAAIA,EAAG,WAAa7C,EAClB,OAAO6C,CAIb,GA3IFpD,EAAA,aAAA6E,GAkKA,IAAaM,GAAb,KAAqB,CAOnB,YAAYE,EAAyBJ,EAAc1E,EAAgB,CACjE,GAAI,EAAE8E,aAAqBR,IACzB,MAAM,IAAI,UAAU,kCAAkC,EAExD,GAAK,CAAC,OAAO,UAAUI,CAAI,GAAO,GAAKA,EACrC,MAAM,IAAI,UAAU,+BAA+B,EAErD,IAAMK,EAAY,EAAID,EAAU,KAC1BE,EAAWF,EAAU,OAAO,OAAO,CAACG,EAAKpC,IAAOoC,EAAMpC,EAAG,KAAM,CAAC,EACtE,GAAK6B,EAAOM,EAAYD,EACtB,MAAM,IAAI,MAAM,sCACGA,EAAYC,GAAY,OACzBD,EAAY,UAAU,EAK1C,KAAK,UAAYD,EAGjB,KAAK,KAAOJ,EAOZ,KAAK,WAAa,GAAKA,GAAQ,EACpBA,IAAP,KACF,KAAK,UAAY,YAMnB,KAAK,MAAQM,EACT,KAAK,UAAU,MACjB,KAAK,MAAQD,EAAYC,EAAWN,GAKtC,KAAK,SAAWL,GAAiB,KAAK,WAAa,KAAK,KAAK,EAY7D,KAAK,SAAWrE,CAClB,CAIA,OAAOJ,EAAgBK,EAAe,CACpC,IAAMsE,EAAO,KAAK,UAAU,gBAAe,EAG3C,OAFkBF,GAAiBE,EAAO,KAAK,QAAQ,IAC3B,KAAK,KAEnC,CAOA,OAAOE,EAAc,CACnB,GAAiB,OAAOA,GAApB,UACG,CAAC,OAAO,UAAUA,CAAK,GACtBA,IAAUJ,GAAiBI,EAAQ,KAAK,SAAS,EACvD,MAAM,IAAI,UAAUrE,GAAiB,kBAAmB,IAAI,EACtC,wCAA0C,KAAK,SAAS,EAEhF,IAAMmE,EAAO,KAAK,UAAU,gBAAe,EACrCW,EAAYb,GAAiBI,GAAS,KAAK,KAAK,EACtD,KAAK,UAAU,gBAAgBJ,GAAiBE,EAAO,CAAC,KAAK,QAAQ,EACpCW,CAAS,CAC5C,GAzFFzF,EAAA,SAAAmF,GA6GA,IAAaC,GAAb,cAA6BD,EAAQ,CACnC,YAAYE,EAAyB9E,EAAgB,CACnD,MAAM8E,EAAW,EAAG9E,CAAQ,CAC9B,CAKA,OAAOJ,EAAgBK,EAAe,CACpC,MAAO,CAAC,CAAC,MAAM,OAAOL,EAAGK,CAAM,CACjC,CAGA,OAAOwE,EAAuB,CACV,OAAOA,GAArB,YAEFA,EAAQ,CAACA,GAEX,MAAM,OAAOA,CAAK,CACpB,GAnBFhF,EAAA,QAAAoF,GAqCA,IAAaM,GAAb,cAA0BrF,EAAkB,CAE1C,YAAYsF,EAAiCpF,EAAiB,CAC5D,GAAI,EAAIoF,aAAkB1E,IAAmB0E,EAAO,QAAO,GACjD,OAAO,UAAUA,CAAM,GAAM,GAAKA,GAC1C,MAAM,IAAI,UAAU,uEACyC,EAG/D,IAAIrF,EAAO,GACLqF,aAAkB1E,KACtBX,EAAOqF,GAET,MAAMrF,EAAMC,CAAQ,EAOpB,KAAK,OAASoF,CAChB,CAGA,QAAQxF,EAAeK,EAAe,CACpC,IAAIF,EAAO,KAAK,KAChB,MAAI,GAAIA,IACNA,EAAQ,KAAK,OAA0B,OAAOH,EAAGK,CAAM,GAElDF,CACT,CAGA,OAAOH,EAAeK,EAAS,EAAC,CAC9B,IAAIF,EAAO,KAAK,KAChB,MAAI,GAAIA,IACNA,EAAQ,KAAK,OAA0B,OAAOH,EAAGK,CAAM,GAElDJ,GAAmBD,CAAC,EAAE,MAAMK,EAAQA,EAASF,CAAI,CAC1D,CAOA,OAAOe,EAAiBlB,EAAeK,EAAc,CACnD,IAAIF,EAAO,KAAK,OAIhB,GAHI,KAAK,kBAAkBW,KACzBX,EAAOe,EAAI,QAET,EAAEA,aAAe,YAAcf,IAASe,EAAI,QAC9C,MAAM,IAAI,UAAUV,GAAiB,cAAe,IAAI,EAClC,qBAAuBL,EAAO,qBAAqB,EAE3E,GAAKE,EAASF,EAAQH,EAAE,OACtB,MAAM,IAAI,WAAW,8BAA8B,EAErD,IAAMyF,EAAYxF,GAAmBiB,CAAG,EACxC,OAAAjB,GAAmBD,CAAC,EAAE,MAAMyF,EAAU,SAAS,KAAK,EAAGpF,EAAQF,EAAM,KAAK,EACtE,KAAK,kBAAkBW,IACzB,KAAK,OAAO,OAAOX,EAAMH,EAAGK,CAAM,EAE7BF,CACT,GAhEFN,EAAA,KAAA0F,GAgFA,IAAaG,GAAb,cAA6BxF,EAAc,CACzC,YAAYE,EAAiB,CAC3B,MAAM,GAAIA,CAAQ,CACpB,CAGA,QAAQJ,EAAeK,EAAS,EAAC,CAC/BN,GAAgBC,CAAC,EACjB,IAAI0C,EAAMrC,EACV,KAAQqC,EAAM1C,EAAE,QAAkBA,EAAE0C,KAAR,GAC1BA,GAAO,EAET,MAAO,GAAIA,EAAMrC,CACnB,CAGA,OAAOL,EAAeK,EAAS,EAAC,CAC9B,IAAMF,EAAO,KAAK,QAAQH,EAAGK,CAAM,EACnC,OAAOJ,GAAmBD,CAAC,EAAE,MAAMK,EAAQA,EAASF,EAAO,CAAC,EAAE,SAAS,OAAO,CAChF,CAGA,OAAOe,EAAalB,EAAeK,EAAS,EAAC,CAI1B,OAAOa,GAApB,WACFA,EAAM,OAAOA,CAAG,GAElB,IAAMyE,EAAO7F,GAAA,OAAO,KAAKoB,EAAK,MAAM,EAC9Bf,EAAOwF,EAAK,OAClB,GAAKtF,EAASF,EAAQH,EAAE,OACtB,MAAM,IAAI,WAAW,0BAA0B,EAEjD,IAAM8B,EAAS7B,GAAmBD,CAAC,EACnC,OAAA2F,EAAK,KAAK7D,EAAQzB,CAAM,EACxByB,EAAOzB,EAASF,GAAQ,EACjBA,EAAO,CAChB,GAtCFN,EAAA,QAAA6F,GA4DA,IAAaE,GAAb,cAA0B1F,EAAc,CAEtC,YAAY2F,EAA2BzF,EAAiB,CAKtD,GAJkB,OAAOyF,GAApB,UAA+CzF,IAAd,SACpCA,EAAWyF,EACXA,EAAU,QAEMA,IAAd,OACFA,EAAU,WACD,CAAC,OAAO,UAAUA,CAAO,EAClC,MAAM,IAAI,UAAU,4BAA4B,EAGlD,MAAM,GAAIzF,CAAQ,EAUlB,KAAK,QAAUyF,CACjB,CAGA,QAAQ7F,EAAeK,EAAS,EAAC,CAC/B,OAAAN,GAAgBC,CAAC,EACVA,EAAE,OAASK,CACpB,CAGA,OAAOL,EAAeK,EAAS,EAAC,CAC9B,IAAMF,EAAO,KAAK,QAAQH,EAAGK,CAAM,EACnC,GAAK,GAAK,KAAK,SACP,KAAK,QAAUF,EACrB,MAAM,IAAI,WAAW,6BAA6B,EAEpD,OAAOF,GAAmBD,CAAC,EAAE,MAAMK,EAAQA,EAASF,CAAI,EAAE,SAAS,OAAO,CAC5E,CAGA,OAAOe,EAA4BlB,EAAeK,EAAS,EAAC,CAIzC,OAAOa,GAApB,WACFA,EAAM,OAAOA,CAAG,GAElB,IAAMyE,EAAO7F,GAAA,OAAO,KAAKoB,EAAK,MAAM,EAC9Bf,EAAOwF,EAAK,OAClB,GAAK,GAAK,KAAK,SACP,KAAK,QAAUxF,EACrB,MAAM,IAAI,WAAW,6BAA6B,EAEpD,GAAKE,EAASF,EAAQH,EAAE,OACtB,MAAM,IAAI,WAAW,0BAA0B,EAEjD,OAAA2F,EAAK,KAAK1F,GAAmBD,CAAC,EAAGK,CAAM,EAChCF,CACT,GA7DFN,EAAA,KAAA+F,GAmFA,IAAaE,GAAb,cAAiC5F,EAAS,CAExC,YAAY2E,EAAUzE,EAAiB,CACrC,MAAM,EAAGA,CAAQ,EAWjB,KAAK,MAAQyE,CACf,CAGA,OAAO7E,EAAgBK,EAAe,CACpC,OAAO,KAAK,KACd,CAGA,OAAOa,EAAQlB,EAAgBK,EAAe,CAE5C,MAAO,EACT,GA1BFR,EAAA,SAAAiG,GA8BajG,EAAA,OAAU,CAACmB,EAAqBZ,IAAmC,IAAIW,GAAYC,EAAaZ,CAAQ,EAGxGP,EAAA,OAAU,CAACgB,EAAwBR,EAAiBD,IAC7D,IAAIe,GAAaN,EAAQR,EAAQD,CAAQ,EAIhCP,EAAA,GAAOO,GAA4B,IAAIgB,GAAK,EAAGhB,CAAQ,EAIvDP,EAAA,IAAQO,GAA4B,IAAIgB,GAAK,EAAGhB,CAAQ,EAIxDP,EAAA,IAAQO,GAA4B,IAAIgB,GAAK,EAAGhB,CAAQ,EAIxDP,EAAA,IAAQO,GAA4B,IAAIgB,GAAK,EAAGhB,CAAQ,EAIxDP,EAAA,IAAQO,GAA4B,IAAIgB,GAAK,EAAGhB,CAAQ,EAIxDP,EAAA,IAAQO,GAA4B,IAAIgB,GAAK,EAAGhB,CAAQ,EAIxDP,EAAA,KAASO,GAAkC,IAAIyB,GAAWzB,CAAQ,EAIlEP,EAAA,MAAUO,GAA8B,IAAIiB,GAAO,EAAGjB,CAAQ,EAI9DP,EAAA,MAAUO,GAA8B,IAAIiB,GAAO,EAAGjB,CAAQ,EAI9DP,EAAA,MAAUO,GAA8B,IAAIiB,GAAO,EAAGjB,CAAQ,EAI9DP,EAAA,MAAUO,GAA8B,IAAIiB,GAAO,EAAGjB,CAAQ,EAI9DP,EAAA,MAAUO,GAA8B,IAAIiB,GAAO,EAAGjB,CAAQ,EAI9DP,EAAA,OAAWO,GAAoC,IAAI4B,GAAa5B,CAAQ,EAIxEP,EAAA,GAAOO,GAA2B,IAAIkB,GAAI,EAAGlB,CAAQ,EAIrDP,EAAA,IAAQO,GAA2B,IAAIkB,GAAI,EAAGlB,CAAQ,EAItDP,EAAA,IAAQO,GAA2B,IAAIkB,GAAI,EAAGlB,CAAQ,EAItDP,EAAA,IAAQO,GAA2B,IAAIkB,GAAI,EAAGlB,CAAQ,EAItDP,EAAA,IAAQO,GAA2B,IAAIkB,GAAI,EAAGlB,CAAQ,EAItDP,EAAA,IAAQO,GAA2B,IAAIkB,GAAI,EAAGlB,CAAQ,EAItDP,EAAA,KAASO,GAAiC,IAAI6B,GAAU7B,CAAQ,EAIhEP,EAAA,MAAUO,GAA6B,IAAImB,GAAM,EAAGnB,CAAQ,EAI5DP,EAAA,MAAUO,GAA6B,IAAImB,GAAM,EAAGnB,CAAQ,EAI5DP,EAAA,MAAUO,GAA6B,IAAImB,GAAM,EAAGnB,CAAQ,EAI5DP,EAAA,MAAUO,GAA6B,IAAImB,GAAM,EAAGnB,CAAQ,EAI5DP,EAAA,MAAUO,GAA6B,IAAImB,GAAM,EAAGnB,CAAQ,EAI5DP,EAAA,OAAWO,GAAmC,IAAI8B,GAAY9B,CAAQ,EAGtEP,EAAA,IAAQO,GAA6B,IAAI+B,GAAM/B,CAAQ,EAGvDP,EAAA,MAAUO,GAA+B,IAAIgC,GAAQhC,CAAQ,EAG7DP,EAAA,IAAQO,GAA8B,IAAIiC,GAAOjC,CAAQ,EAGzDP,EAAA,MAAUO,GAAgC,IAAIkC,GAASlC,CAAQ,EAG/DP,EAAA,OAAU,CAAIiD,EAA8B1C,EAAmB2C,IACxE,IAAIF,GAAaC,EAAQ1C,EAAU2C,CAAc,EAGxClD,EAAA,KAAQ,CAAC8E,EAAqBC,EAAuBxE,IAC9D,IAAIsE,GAAaC,EAAMC,EAAKxE,CAAQ,EAG3BP,EAAA,IAAO,CAAI2C,EAA0BC,EAAgCrC,IAC9E,IAAImC,GAAYC,EAAeC,EAAOrC,CAAQ,EAGrCP,EAAA,MAAS,CAAC8D,EACAC,EAA4CxD,IAC/D,IAAIsD,GAAMC,EAAOC,EAAexD,CAAQ,EAG/BP,EAAA,yBAA4B,CAACgB,EAAwBT,IAC9D,IAAIqD,GAAyB5C,EAAQT,CAAQ,EAGpCP,EAAA,KAAQ,CAAC2F,EAAiCpF,IAA4B,IAAImF,GAAKC,EAAQpF,CAAQ,EAG/FP,EAAA,KAASO,GAA+B,IAAIsF,GAAQtF,CAAQ,EAG5DP,EAAA,KAAQ,CAACgG,EAAiBzF,IAA4B,IAAIwF,GAAKC,EAASzF,CAAQ,EAGhFP,EAAA,SAAY,CAAIgF,EAAUzE,IAAmC,IAAI0F,GAASjB,EAAOzE,CAAQ,ICnlFtG,IAAA2F,GAAAC,GAAAC,IAAA,cAEA,OAAO,eAAeA,GAAS,aAAc,CAAE,MAAO,EAAK,CAAC,EAC5D,IAAIC,GAMJ,SAASC,GAAWC,EAAK,CACrB,CACI,IAAMC,EAAW,OAAO,KAAKD,CAAG,EAChCC,EAAS,QAAQ,EACjB,IAAMC,EAAMD,EAAS,SAAS,KAAK,EACnC,OAAIC,EAAI,SAAW,EACR,OAAO,CAAC,EAEZ,OAAO,KAAKA,GAAK,CAC5B,CACA,OAAOJ,GAAU,SAASE,EAAK,EAAK,CACxC,CACAH,GAAQ,WAAaE,GAMrB,SAASI,GAAWH,EAAK,CACrB,CACI,IAAME,EAAMF,EAAI,SAAS,KAAK,EAC9B,OAAIE,EAAI,SAAW,EACR,OAAO,CAAC,EAEZ,OAAO,KAAKA,GAAK,CAC5B,CACA,OAAOJ,GAAU,SAASE,EAAK,EAAI,CACvC,CACAH,GAAQ,WAAaM,GAOrB,SAASC,GAAWC,EAAKC,EAAO,CAC5B,CACI,IAAMJ,EAAMG,EAAI,SAAS,EAAE,EACrBE,EAAS,OAAO,KAAKL,EAAI,SAASI,EAAQ,EAAG,GAAG,EAAE,MAAM,EAAGA,EAAQ,CAAC,EAAG,KAAK,EAClF,OAAAC,EAAO,QAAQ,EACRA,CACX,CAEA,OAAOT,GAAU,WAAWO,EAAK,OAAO,YAAYC,CAAK,EAAG,EAAK,CACrE,CACAT,GAAQ,WAAaO,GAOrB,SAASI,GAAWH,EAAKC,EAAO,CAC5B,CACI,IAAMJ,EAAMG,EAAI,SAAS,EAAE,EAC3B,OAAO,OAAO,KAAKH,EAAI,SAASI,EAAQ,EAAG,GAAG,EAAE,MAAM,EAAGA,EAAQ,CAAC,EAAG,KAAK,CAC9E,CACA,OAAOR,GAAU,WAAWO,EAAK,OAAO,YAAYC,CAAK,EAAG,EAAI,CACpE,CACAT,GAAQ,WAAaW,KCpErB,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,UAASC,GAAuBC,EAAK,CACnC,OAAOA,GAAOA,EAAI,WAAaA,EAAM,CACnC,QAAWA,CACb,CACF,CAEAF,GAAO,QAAUC,GAAwBD,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,UCN9G,IAAAG,GAAAC,GAAA,CAAAC,GAAAC,KAAA,UAASC,GAAkBC,EAAQC,EAAO,CACxC,QAASC,EAAI,EAAGA,EAAID,EAAM,OAAQC,IAAK,CACrC,IAAIC,EAAaF,EAAMC,GACvBC,EAAW,WAAaA,EAAW,YAAc,GACjDA,EAAW,aAAe,GACtB,UAAWA,IAAYA,EAAW,SAAW,IACjD,OAAO,eAAeH,EAAQG,EAAW,IAAKA,CAAU,CAC1D,CACF,CAEA,SAASC,GAAaC,EAAaC,EAAYC,EAAa,CAC1D,OAAID,GAAYP,GAAkBM,EAAY,UAAWC,CAAU,EAC/DC,GAAaR,GAAkBM,EAAaE,CAAW,EAC3D,OAAO,eAAeF,EAAa,YAAa,CAC9C,SAAU,EACZ,CAAC,EACMA,CACT,CAEAP,GAAO,QAAUM,GAAcN,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,UCnBpG,IAAAU,GAAAC,GAAA,CAAAC,GAAAC,KAAA,UAASC,GAAgBC,EAAUC,EAAa,CAC9C,GAAI,EAAED,aAAoBC,GACxB,MAAM,IAAI,UAAU,mCAAmC,CAE3D,CAEAH,GAAO,QAAUC,GAAiBD,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,UCNvG,IAAAI,GAAAC,GAAA,CAAAC,GAAAC,KAAA,UAASC,GAAgBC,EAAGC,EAAG,CAC7B,OAAAH,GAAO,QAAUC,GAAkB,OAAO,eAAiB,OAAO,eAAe,KAAK,EAAI,SAAyBC,EAAGC,EAAG,CACvH,OAAAD,EAAE,UAAYC,EACPD,CACT,EAAGF,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,QACjEC,GAAgBC,EAAGC,CAAC,CAC7B,CAEAH,GAAO,QAAUC,GAAiBD,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,UCRvG,IAAAI,GAAAC,GAAA,CAAAC,GAAAC,KAAA,KAAIC,GAAiB,KAErB,SAASC,GAAUC,EAAUC,EAAY,CACvC,GAAI,OAAOA,GAAe,YAAcA,IAAe,KACrD,MAAM,IAAI,UAAU,oDAAoD,EAG1ED,EAAS,UAAY,OAAO,OAAOC,GAAcA,EAAW,UAAW,CACrE,YAAa,CACX,MAAOD,EACP,SAAU,GACV,aAAc,EAChB,CACF,CAAC,EACD,OAAO,eAAeA,EAAU,YAAa,CAC3C,SAAU,EACZ,CAAC,EACGC,GAAYH,GAAeE,EAAUC,CAAU,CACrD,CAEAJ,GAAO,QAAUE,GAAWF,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,UCpBjG,IAAAK,GAAAC,GAAA,CAAAC,GAAAC,KAAA,UAASC,GAAQC,EAAK,CAGpB,OAAQF,GAAO,QAAUC,GAAwB,OAAO,QAArB,YAA2C,OAAO,OAAO,UAA1B,SAAqC,SAAUC,EAAK,CACpH,OAAO,OAAOA,CAChB,EAAI,SAAUA,EAAK,CACjB,OAAOA,GAAqB,OAAO,QAArB,YAA+BA,EAAI,cAAgB,QAAUA,IAAQ,OAAO,UAAY,SAAW,OAAOA,CAC1H,EAAGF,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,QAAUC,GAAQC,CAAG,CAC/F,CAEAF,GAAO,QAAUC,GAASD,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,UCV/F,IAAAG,GAAAC,GAAA,CAAAC,GAAAC,KAAA,UAASC,GAAuBC,EAAM,CACpC,GAAIA,IAAS,OACX,MAAM,IAAI,eAAe,2DAA2D,EAGtF,OAAOA,CACT,CAEAF,GAAO,QAAUC,GAAwBD,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,UCR9G,IAAAG,GAAAC,GAAA,CAAAC,GAAAC,KAAA,KAAIC,GAAU,KAAuB,QAEjCC,GAAwB,KAE5B,SAASC,GAA2BC,EAAMC,EAAM,CAC9C,GAAIA,IAASJ,GAAQI,CAAI,IAAM,UAAY,OAAOA,GAAS,YACzD,OAAOA,EACF,GAAIA,IAAS,OAClB,MAAM,IAAI,UAAU,0DAA0D,EAGhF,OAAOH,GAAsBE,CAAI,CACnC,CAEAJ,GAAO,QAAUG,GAA4BH,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,UCdlH,IAAAM,GAAAC,GAAA,CAAAC,GAAAC,KAAA,UAASC,GAAgBC,EAAG,CAC1B,OAAAF,GAAO,QAAUC,GAAkB,OAAO,eAAiB,OAAO,eAAe,KAAK,EAAI,SAAyBC,EAAG,CACpH,OAAOA,EAAE,WAAa,OAAO,eAAeA,CAAC,CAC/C,EAAGF,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,QACjEC,GAAgBC,CAAC,CAC1B,CAEAF,GAAO,QAAUC,GAAiBD,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,UCPvG,IAAAG,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAM,OAAO,UAAU,eACvBC,GAAS,IASb,SAASC,IAAS,CAAC,CASf,OAAO,SACTA,GAAO,UAAY,OAAO,OAAO,IAAI,EAMhC,IAAIA,GAAO,EAAE,YAAWD,GAAS,KAYxC,SAASE,GAAGC,EAAIC,EAASC,EAAM,CAC7B,KAAK,GAAKF,EACV,KAAK,QAAUC,EACf,KAAK,KAAOC,GAAQ,EACtB,CAaA,SAASC,GAAYC,EAASC,EAAOL,EAAIC,EAASC,EAAM,CACtD,GAAI,OAAOF,GAAO,WAChB,MAAM,IAAI,UAAU,iCAAiC,EAGvD,IAAIM,EAAW,IAAIP,GAAGC,EAAIC,GAAWG,EAASF,CAAI,EAC9CK,EAAMV,GAASA,GAASQ,EAAQA,EAEpC,OAAKD,EAAQ,QAAQG,GACXH,EAAQ,QAAQG,GAAK,GAC1BH,EAAQ,QAAQG,GAAO,CAACH,EAAQ,QAAQG,GAAMD,CAAQ,EADxBF,EAAQ,QAAQG,GAAK,KAAKD,CAAQ,GAD1CF,EAAQ,QAAQG,GAAOD,EAAUF,EAAQ,gBAI7DA,CACT,CASA,SAASI,GAAWJ,EAASG,EAAK,CAC5B,EAAEH,EAAQ,eAAiB,EAAGA,EAAQ,QAAU,IAAIN,GACnD,OAAOM,EAAQ,QAAQG,EAC9B,CASA,SAASE,IAAe,CACtB,KAAK,QAAU,IAAIX,GACnB,KAAK,aAAe,CACtB,CASAW,GAAa,UAAU,WAAa,UAAsB,CACxD,IAAIC,EAAQ,CAAC,EACTC,EACAC,EAEJ,GAAI,KAAK,eAAiB,EAAG,OAAOF,EAEpC,IAAKE,KAASD,EAAS,KAAK,QACtBf,GAAI,KAAKe,EAAQC,CAAI,GAAGF,EAAM,KAAKb,GAASe,EAAK,MAAM,CAAC,EAAIA,CAAI,EAGtE,OAAI,OAAO,sBACFF,EAAM,OAAO,OAAO,sBAAsBC,CAAM,CAAC,EAGnDD,CACT,EASAD,GAAa,UAAU,UAAY,SAAmBJ,EAAO,CAC3D,IAAIE,EAAMV,GAASA,GAASQ,EAAQA,EAChCQ,EAAW,KAAK,QAAQN,GAE5B,GAAI,CAACM,EAAU,MAAO,CAAC,EACvB,GAAIA,EAAS,GAAI,MAAO,CAACA,EAAS,EAAE,EAEpC,QAAS,EAAI,EAAGC,EAAID,EAAS,OAAQE,EAAK,IAAI,MAAMD,CAAC,EAAG,EAAIA,EAAG,IAC7DC,EAAG,GAAKF,EAAS,GAAG,GAGtB,OAAOE,CACT,EASAN,GAAa,UAAU,cAAgB,SAAuBJ,EAAO,CACnE,IAAIE,EAAMV,GAASA,GAASQ,EAAQA,EAChCW,EAAY,KAAK,QAAQT,GAE7B,OAAKS,EACDA,EAAU,GAAW,EAClBA,EAAU,OAFM,CAGzB,EASAP,GAAa,UAAU,KAAO,SAAcJ,EAAOY,EAAIC,EAAIC,EAAIC,EAAIC,EAAI,CACrE,IAAId,EAAMV,GAASA,GAASQ,EAAQA,EAEpC,GAAI,CAAC,KAAK,QAAQE,GAAM,MAAO,GAE/B,IAAIS,EAAY,KAAK,QAAQT,GACzBe,EAAM,UAAU,OAChBC,EACAC,EAEJ,GAAIR,EAAU,GAAI,CAGhB,OAFIA,EAAU,MAAM,KAAK,eAAeX,EAAOW,EAAU,GAAI,OAAW,EAAI,EAEpEM,EAAK,CACX,IAAK,GAAG,OAAON,EAAU,GAAG,KAAKA,EAAU,OAAO,EAAG,GACrD,IAAK,GAAG,OAAOA,EAAU,GAAG,KAAKA,EAAU,QAASC,CAAE,EAAG,GACzD,IAAK,GAAG,OAAOD,EAAU,GAAG,KAAKA,EAAU,QAASC,EAAIC,CAAE,EAAG,GAC7D,IAAK,GAAG,OAAOF,EAAU,GAAG,KAAKA,EAAU,QAASC,EAAIC,EAAIC,CAAE,EAAG,GACjE,IAAK,GAAG,OAAOH,EAAU,GAAG,KAAKA,EAAU,QAASC,EAAIC,EAAIC,EAAIC,CAAE,EAAG,GACrE,IAAK,GAAG,OAAOJ,EAAU,GAAG,KAAKA,EAAU,QAASC,EAAIC,EAAIC,EAAIC,EAAIC,CAAE,EAAG,EAC3E,CAEA,IAAKG,EAAI,EAAGD,EAAO,IAAI,MAAMD,EAAK,CAAC,EAAGE,EAAIF,EAAKE,IAC7CD,EAAKC,EAAI,GAAK,UAAUA,GAG1BR,EAAU,GAAG,MAAMA,EAAU,QAASO,CAAI,CAC5C,KAAO,CACL,IAAIE,EAAST,EAAU,OACnBU,EAEJ,IAAKF,EAAI,EAAGA,EAAIC,EAAQD,IAGtB,OAFIR,EAAUQ,GAAG,MAAM,KAAK,eAAenB,EAAOW,EAAUQ,GAAG,GAAI,OAAW,EAAI,EAE1EF,EAAK,CACX,IAAK,GAAGN,EAAUQ,GAAG,GAAG,KAAKR,EAAUQ,GAAG,OAAO,EAAG,MACpD,IAAK,GAAGR,EAAUQ,GAAG,GAAG,KAAKR,EAAUQ,GAAG,QAASP,CAAE,EAAG,MACxD,IAAK,GAAGD,EAAUQ,GAAG,GAAG,KAAKR,EAAUQ,GAAG,QAASP,EAAIC,CAAE,EAAG,MAC5D,IAAK,GAAGF,EAAUQ,GAAG,GAAG,KAAKR,EAAUQ,GAAG,QAASP,EAAIC,EAAIC,CAAE,EAAG,MAChE,QACE,GAAI,CAACI,EAAM,IAAKG,EAAI,EAAGH,EAAO,IAAI,MAAMD,EAAK,CAAC,EAAGI,EAAIJ,EAAKI,IACxDH,EAAKG,EAAI,GAAK,UAAUA,GAG1BV,EAAUQ,GAAG,GAAG,MAAMR,EAAUQ,GAAG,QAASD,CAAI,CACpD,CAEJ,CAEA,MAAO,EACT,EAWAd,GAAa,UAAU,GAAK,SAAYJ,EAAOL,EAAIC,EAAS,CAC1D,OAAOE,GAAY,KAAME,EAAOL,EAAIC,EAAS,EAAK,CACpD,EAWAQ,GAAa,UAAU,KAAO,SAAcJ,EAAOL,EAAIC,EAAS,CAC9D,OAAOE,GAAY,KAAME,EAAOL,EAAIC,EAAS,EAAI,CACnD,EAYAQ,GAAa,UAAU,eAAiB,SAAwBJ,EAAOL,EAAIC,EAASC,EAAM,CACxF,IAAIK,EAAMV,GAASA,GAASQ,EAAQA,EAEpC,GAAI,CAAC,KAAK,QAAQE,GAAM,OAAO,KAC/B,GAAI,CAACP,EACH,OAAAQ,GAAW,KAAMD,CAAG,EACb,KAGT,IAAIS,EAAY,KAAK,QAAQT,GAE7B,GAAIS,EAAU,GAEVA,EAAU,KAAOhB,IAChB,CAACE,GAAQc,EAAU,QACnB,CAACf,GAAWe,EAAU,UAAYf,IAEnCO,GAAW,KAAMD,CAAG,MAEjB,CACL,QAASiB,EAAI,EAAGb,EAAS,CAAC,EAAGc,EAAST,EAAU,OAAQQ,EAAIC,EAAQD,KAEhER,EAAUQ,GAAG,KAAOxB,GACnBE,GAAQ,CAACc,EAAUQ,GAAG,MACtBvB,GAAWe,EAAUQ,GAAG,UAAYvB,IAErCU,EAAO,KAAKK,EAAUQ,EAAE,EAOxBb,EAAO,OAAQ,KAAK,QAAQJ,GAAOI,EAAO,SAAW,EAAIA,EAAO,GAAKA,EACpEH,GAAW,KAAMD,CAAG,CAC3B,CAEA,OAAO,IACT,EASAE,GAAa,UAAU,mBAAqB,SAA4BJ,EAAO,CAC7E,IAAIE,EAEJ,OAAIF,GACFE,EAAMV,GAASA,GAASQ,EAAQA,EAC5B,KAAK,QAAQE,IAAMC,GAAW,KAAMD,CAAG,IAE3C,KAAK,QAAU,IAAIT,GACnB,KAAK,aAAe,GAGf,IACT,EAKAW,GAAa,UAAU,IAAMA,GAAa,UAAU,eACpDA,GAAa,UAAU,YAAcA,GAAa,UAAU,GAK5DA,GAAa,SAAWZ,GAKxBY,GAAa,aAAeA,GAKR,OAAOd,GAAvB,MACFA,GAAO,QAAUc,MC9UnB,IAAAkB,GAAAC,GAAAC,IAAA,cAMA,IAAIC,GAAyB,KAE7B,OAAO,eAAeD,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAaE,GAErB,IAAIC,GAAmBF,GAAuB,IAAgD,EAE1FG,GAAgBH,GAAuB,IAA6C,EAEpFI,GAAaJ,GAAuB,IAA0C,EAE9EK,GAA8BL,GAAuB,IAA2D,EAEhHM,GAAmBN,GAAuB,IAAgD,EAE1FO,GAAgB,KAEpB,SAASC,GAAaC,EAAS,CAAE,IAAIC,EAA4BC,GAA0B,EAAG,OAAO,UAAgC,CAAE,IAAIC,GAzB3I,EAyBuJN,GAAiB,SAAYG,CAAO,EAAGI,EAAQ,GAAIH,EAA2B,CAAE,IAAII,GAzB3O,EAyB2PR,GAAiB,SAAY,IAAI,EAAE,YAAaO,EAAS,QAAQ,UAAUD,EAAO,UAAWE,CAAS,CAAG,MAASD,EAASD,EAAM,MAAM,KAAM,SAAS,EAAK,OAzBtZ,EAyBiaP,GAA4B,SAAY,KAAMQ,CAAM,CAAG,CAAG,CAE3d,SAASF,IAA4B,CAA0E,GAApE,OAAO,QAAY,KAAe,CAAC,QAAQ,WAA6B,QAAQ,UAAU,KAAM,MAAO,GAAO,GAAI,OAAO,OAAU,WAAY,MAAO,GAAM,GAAI,CAAE,eAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,QAAS,CAAC,EAAG,UAAY,CAAC,CAAC,CAAC,EAAU,EAAM,MAAE,CAAY,MAAO,EAAO,CAAE,CAExU,IAAII,GAAoC,SAAUC,EAAe,EA7BjE,EA8BMZ,GAAW,SAAYW,EAAsBC,CAAa,EAE9D,IAAIC,EAAST,GAAaO,CAAoB,EAS9C,SAASA,EAAqBG,EAASC,EAASC,EAAW,CACzD,IAAIC,EAEJ,OA5CJ,EA4CQnB,GAAiB,SAAY,KAAMa,CAAoB,EAC3DM,EAAQJ,EAAO,KAAK,IAAI,EACxBI,EAAM,OAAS,IAAI,OAAO,UAAUH,EAASE,CAAS,EAEtDC,EAAM,OAAO,OAAS,UAAY,CAChC,OAAOA,EAAM,KAAK,MAAM,CAC1B,EAEAA,EAAM,OAAO,UAAY,SAAUC,EAAO,CACxC,OAAOD,EAAM,KAAK,UAAWC,EAAM,IAAI,CACzC,EAEAD,EAAM,OAAO,QAAU,SAAUE,EAAO,CACtC,OAAOF,EAAM,KAAK,QAASE,CAAK,CAClC,EAEAF,EAAM,OAAO,QAAU,SAAUC,EAAO,CACtCD,EAAM,KAAK,QAASC,EAAM,KAAMA,EAAM,MAAM,CAC9C,EAEOD,CACT,CAWA,OA5EF,EA4EMlB,GAAc,SAAYY,EAAsB,CAAC,CACnD,IAAK,OACL,MAAO,SAAcS,EAAMC,EAAmBC,EAAU,CACtD,IAAIC,EAAKD,GAAYD,EAErB,GAAI,CACF,KAAK,OAAO,KAAKD,CAAI,EACrBG,EAAG,CACL,OAASJ,EAAP,CACAI,EAAGJ,CAAK,CACV,CACF,CAUF,EAAG,CACD,IAAK,QACL,MAAO,SAAeK,EAAMC,EAAQ,CAClC,KAAK,OAAO,MAAMD,EAAMC,CAAM,CAChC,CACF,EAAG,CACD,IAAK,mBACL,MAAO,SAA0BC,EAAMC,EAAUZ,EAAS,CACxD,KAAK,OAAO,iBAAiBW,EAAMC,EAAUZ,CAAO,CACtD,CACF,CAAC,CAAC,EACKJ,CACT,EAAER,GAAc,YAAY,EAU5B,SAASN,GAASiB,EAASC,EAAS,CAClC,OAAO,IAAIJ,GAAqBG,EAASC,CAAO,CAClD,ICzHA,IAAAa,GAAAC,GAAA,CAAAC,GAAAC,KAAA,KAAIC,GAAU,KAAuB,QAErC,SAASC,IAAsB,CAC7B,aAGAF,GAAO,QAAUE,GAAsB,UAA+B,CACpE,OAAOH,CACT,EAAGC,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,QACxE,IAAID,EAAU,CAAC,EACXI,EAAK,OAAO,UACZC,EAASD,EAAG,eACZE,EAAwB,OAAO,QAArB,WAA8B,OAAS,CAAC,EAClDC,EAAiBD,EAAQ,UAAY,aACrCE,EAAsBF,EAAQ,eAAiB,kBAC/CG,EAAoBH,EAAQ,aAAe,gBAE/C,SAASI,EAAOC,EAAKC,EAAKC,EAAO,CAC/B,OAAO,OAAO,eAAeF,EAAKC,EAAK,CACrC,MAAOC,EACP,WAAY,GACZ,aAAc,GACd,SAAU,EACZ,CAAC,EAAGF,EAAIC,EACV,CAEA,GAAI,CACFF,EAAO,CAAC,EAAG,EAAE,CACf,MAAE,CACAA,EAAS,SAAgBC,EAAKC,EAAKC,EAAO,CACxC,OAAOF,EAAIC,GAAOC,CACpB,CACF,CAEA,SAASC,EAAKC,EAASC,EAASC,EAAMC,EAAa,CACjD,IAAIC,EAAiBH,GAAWA,EAAQ,qBAAqBI,EAAYJ,EAAUI,EAC/EC,EAAY,OAAO,OAAOF,EAAe,SAAS,EAClDG,EAAU,IAAIC,GAAQL,GAAe,CAAC,CAAC,EAC3C,OAAOG,EAAU,QAAU,SAAUN,EAASE,EAAMK,EAAS,CAC3D,IAAIE,EAAQ,iBACZ,OAAO,SAAUC,EAAQC,EAAK,CAC5B,GAAoBF,IAAhB,YAAuB,MAAM,IAAI,MAAM,8BAA8B,EAEzE,GAAoBA,IAAhB,YAAuB,CACzB,GAAgBC,IAAZ,QAAoB,MAAMC,EAC9B,OAAOC,EAAW,CACpB,CAEA,IAAKL,EAAQ,OAASG,EAAQH,EAAQ,IAAMI,IAAO,CACjD,IAAIE,EAAWN,EAAQ,SAEvB,GAAIM,EAAU,CACZ,IAAIC,EAAiBC,GAAoBF,EAAUN,CAAO,EAE1D,GAAIO,EAAgB,CAClB,GAAIA,IAAmBE,EAAkB,SACzC,OAAOF,CACT,CACF,CAEA,GAAeP,EAAQ,SAAnB,OAA2BA,EAAQ,KAAOA,EAAQ,MAAQA,EAAQ,YAAyBA,EAAQ,SAApB,QAA4B,CAC7G,GAAyBE,IAArB,iBAA4B,MAAMA,EAAQ,YAAaF,EAAQ,IACnEA,EAAQ,kBAAkBA,EAAQ,GAAG,CACvC,MAAoBA,EAAQ,SAArB,UAA+BA,EAAQ,OAAO,SAAUA,EAAQ,GAAG,EAC1EE,EAAQ,YACR,IAAIQ,EAASC,EAASlB,EAASE,EAAMK,CAAO,EAE5C,GAAiBU,EAAO,OAApB,SAA0B,CAC5B,GAAIR,EAAQF,EAAQ,KAAO,YAAc,iBAAkBU,EAAO,MAAQD,EAAkB,SAC5F,MAAO,CACL,MAAOC,EAAO,IACd,KAAMV,EAAQ,IAChB,CACF,CAEYU,EAAO,OAAnB,UAA4BR,EAAQ,YAAaF,EAAQ,OAAS,QAASA,EAAQ,IAAMU,EAAO,IAClG,CACF,CACF,EAAEjB,EAASE,EAAMK,CAAO,EAAGD,CAC7B,CAEA,SAASY,EAASC,EAAIvB,EAAKe,EAAK,CAC9B,GAAI,CACF,MAAO,CACL,KAAM,SACN,IAAKQ,EAAG,KAAKvB,EAAKe,CAAG,CACvB,CACF,OAASS,EAAP,CACA,MAAO,CACL,KAAM,QACN,IAAKA,CACP,CACF,CACF,CAEAnC,EAAQ,KAAOc,EACf,IAAIiB,EAAmB,CAAC,EAExB,SAASX,GAAY,CAAC,CAEtB,SAASgB,GAAoB,CAAC,CAE9B,SAASC,GAA6B,CAAC,CAEvC,IAAIC,EAAoB,CAAC,EACzB5B,EAAO4B,EAAmB/B,EAAgB,UAAY,CACpD,OAAO,IACT,CAAC,EACD,IAAIgC,EAAW,OAAO,eAClBC,GAA0BD,GAAYA,EAASA,EAASE,EAAO,CAAC,CAAC,CAAC,CAAC,EACvED,IAA2BA,KAA4BpC,GAAMC,EAAO,KAAKmC,GAAyBjC,CAAc,IAAM+B,EAAoBE,IAC1I,IAAIE,GAAKL,EAA2B,UAAYjB,EAAU,UAAY,OAAO,OAAOkB,CAAiB,EAErG,SAASK,EAAsBC,EAAW,CACxC,CAAC,OAAQ,QAAS,QAAQ,EAAE,QAAQ,SAAUnB,EAAQ,CACpDf,EAAOkC,EAAWnB,EAAQ,SAAUC,EAAK,CACvC,OAAO,KAAK,QAAQD,EAAQC,CAAG,CACjC,CAAC,CACH,CAAC,CACH,CAEA,SAASmB,GAAcxB,EAAWyB,EAAa,CAC7C,SAASC,EAAOtB,EAAQC,EAAKsB,EAASC,EAAQ,CAC5C,IAAIjB,EAASC,EAASZ,EAAUI,GAASJ,EAAWK,CAAG,EAEvD,GAAgBM,EAAO,OAAnB,QAAyB,CAC3B,IAAIkB,EAASlB,EAAO,IAChBnB,EAAQqC,EAAO,MACnB,OAAOrC,GAAqBX,GAAQW,CAAK,GAAzB,UAA8BR,EAAO,KAAKQ,EAAO,SAAS,EAAIiC,EAAY,QAAQjC,EAAM,OAAO,EAAE,KAAK,SAAUA,EAAO,CACrIkC,EAAO,OAAQlC,EAAOmC,EAASC,CAAM,CACvC,EAAG,SAAUd,EAAK,CAChBY,EAAO,QAASZ,EAAKa,EAASC,CAAM,CACtC,CAAC,EAAIH,EAAY,QAAQjC,CAAK,EAAE,KAAK,SAAUsC,EAAW,CACxDD,EAAO,MAAQC,EAAWH,EAAQE,CAAM,CAC1C,EAAG,SAAUE,EAAO,CAClB,OAAOL,EAAO,QAASK,EAAOJ,EAASC,CAAM,CAC/C,CAAC,CACH,CAEAA,EAAOjB,EAAO,GAAG,CACnB,CAEA,IAAIqB,EAEJ,KAAK,QAAU,SAAU5B,EAAQC,EAAK,CACpC,SAAS4B,GAA6B,CACpC,OAAO,IAAIR,EAAY,SAAUE,EAASC,EAAQ,CAChDF,EAAOtB,EAAQC,EAAKsB,EAASC,CAAM,CACrC,CAAC,CACH,CAEA,OAAOI,EAAkBA,EAAkBA,EAAgB,KAAKC,EAA4BA,CAA0B,EAAIA,EAA2B,CACvJ,CACF,CAEA,SAASxB,GAAoBF,EAAUN,EAAS,CAC9C,IAAIG,EAASG,EAAS,SAASN,EAAQ,QAEvC,GAAkBG,IAAd,OAAsB,CACxB,GAAIH,EAAQ,SAAW,KAAkBA,EAAQ,SAApB,QAA4B,CACvD,GAAIM,EAAS,SAAS,SAAcN,EAAQ,OAAS,SAAUA,EAAQ,IAAM,OAAWQ,GAAoBF,EAAUN,CAAO,EAAeA,EAAQ,SAApB,SAA6B,OAAOS,EACpKT,EAAQ,OAAS,QAASA,EAAQ,IAAM,IAAI,UAAU,gDAAgD,CACxG,CAEA,OAAOS,CACT,CAEA,IAAIC,EAASC,EAASR,EAAQG,EAAS,SAAUN,EAAQ,GAAG,EAC5D,GAAgBU,EAAO,OAAnB,QAAyB,OAAOV,EAAQ,OAAS,QAASA,EAAQ,IAAMU,EAAO,IAAKV,EAAQ,SAAW,KAAMS,EACjH,IAAIwB,EAAOvB,EAAO,IAClB,OAAOuB,EAAOA,EAAK,MAAQjC,EAAQM,EAAS,YAAc2B,EAAK,MAAOjC,EAAQ,KAAOM,EAAS,QAAsBN,EAAQ,SAArB,WAAgCA,EAAQ,OAAS,OAAQA,EAAQ,IAAM,QAAYA,EAAQ,SAAW,KAAMS,GAAoBwB,GAAQjC,EAAQ,OAAS,QAASA,EAAQ,IAAM,IAAI,UAAU,kCAAkC,EAAGA,EAAQ,SAAW,KAAMS,EACrW,CAEA,SAASyB,GAAaC,EAAM,CAC1B,IAAIC,EAAQ,CACV,OAAQD,EAAK,EACf,EACA,KAAKA,IAASC,EAAM,SAAWD,EAAK,IAAK,KAAKA,IAASC,EAAM,WAAaD,EAAK,GAAIC,EAAM,SAAWD,EAAK,IAAK,KAAK,WAAW,KAAKC,CAAK,CAC1I,CAEA,SAASC,GAAcD,EAAO,CAC5B,IAAI1B,EAAS0B,EAAM,YAAc,CAAC,EAClC1B,EAAO,KAAO,SAAU,OAAOA,EAAO,IAAK0B,EAAM,WAAa1B,CAChE,CAEA,SAAST,GAAQL,EAAa,CAC5B,KAAK,WAAa,CAAC,CACjB,OAAQ,MACV,CAAC,EAAGA,EAAY,QAAQsC,GAAc,IAAI,EAAG,KAAK,MAAM,EAAE,CAC5D,CAEA,SAASf,EAAOmB,EAAU,CACxB,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAASrD,GAC9B,GAAIsD,EAAgB,OAAOA,EAAe,KAAKD,CAAQ,EACvD,GAAkB,OAAOA,EAAS,MAA9B,WAAoC,OAAOA,EAE/C,GAAI,CAAC,MAAMA,EAAS,MAAM,EAAG,CAC3B,IAAIE,EAAI,GACJC,EAAO,SAASA,GAAO,CACzB,KAAO,EAAED,EAAIF,EAAS,QACpB,GAAIvD,EAAO,KAAKuD,EAAUE,CAAC,EAAG,OAAOC,EAAK,MAAQH,EAASE,GAAIC,EAAK,KAAO,GAAIA,EAGjF,OAAOA,EAAK,MAAQ,OAAWA,EAAK,KAAO,GAAIA,CACjD,EAEA,OAAOA,EAAK,KAAOA,CACrB,CACF,CAEA,MAAO,CACL,KAAMpC,CACR,CACF,CAEA,SAASA,GAAa,CACpB,MAAO,CACL,MAAO,OACP,KAAM,EACR,CACF,CAEA,OAAOS,EAAkB,UAAYC,EAA4B3B,EAAOgC,GAAI,cAAeL,CAA0B,EAAG3B,EAAO2B,EAA4B,cAAeD,CAAiB,EAAGA,EAAkB,YAAc1B,EAAO2B,EAA4B5B,EAAmB,mBAAmB,EAAGT,EAAQ,oBAAsB,SAAUgE,EAAQ,CACxV,IAAIC,EAAqB,OAAOD,GAArB,YAA+BA,EAAO,YACjD,MAAO,CAAC,CAACC,IAASA,IAAS7B,IAA8C6B,EAAK,aAAeA,EAAK,QAAlD,oBAClD,EAAGjE,EAAQ,KAAO,SAAUgE,EAAQ,CAClC,OAAO,OAAO,eAAiB,OAAO,eAAeA,EAAQ3B,CAA0B,GAAK2B,EAAO,UAAY3B,EAA4B3B,EAAOsD,EAAQvD,EAAmB,mBAAmB,GAAIuD,EAAO,UAAY,OAAO,OAAOtB,EAAE,EAAGsB,CAC5O,EAAGhE,EAAQ,MAAQ,SAAU0B,EAAK,CAChC,MAAO,CACL,QAASA,CACX,CACF,EAAGiB,EAAsBE,GAAc,SAAS,EAAGnC,EAAOmC,GAAc,UAAWrC,EAAqB,UAAY,CAClH,OAAO,IACT,CAAC,EAAGR,EAAQ,cAAgB6C,GAAe7C,EAAQ,MAAQ,SAAUe,EAASC,EAASC,EAAMC,EAAa4B,EAAa,CAC1GA,IAAX,SAA2BA,EAAc,SACzC,IAAIoB,EAAO,IAAIrB,GAAc/B,EAAKC,EAASC,EAASC,EAAMC,CAAW,EAAG4B,CAAW,EACnF,OAAO9C,EAAQ,oBAAoBgB,CAAO,EAAIkD,EAAOA,EAAK,KAAK,EAAE,KAAK,SAAUhB,EAAQ,CACtF,OAAOA,EAAO,KAAOA,EAAO,MAAQgB,EAAK,KAAK,CAChD,CAAC,CACH,EAAGvB,EAAsBD,EAAE,EAAGhC,EAAOgC,GAAIjC,EAAmB,WAAW,EAAGC,EAAOgC,GAAInC,EAAgB,UAAY,CAC/G,OAAO,IACT,CAAC,EAAGG,EAAOgC,GAAI,WAAY,UAAY,CACrC,MAAO,oBACT,CAAC,EAAG1C,EAAQ,KAAO,SAAUmE,EAAQ,CACnC,IAAIC,EAAO,CAAC,EAEZ,QAASxD,KAAOuD,EACdC,EAAK,KAAKxD,CAAG,EAGf,OAAOwD,EAAK,QAAQ,EAAG,SAASL,GAAO,CACrC,KAAOK,EAAK,QAAS,CACnB,IAAIxD,EAAMwD,EAAK,IAAI,EACnB,GAAIxD,KAAOuD,EAAQ,OAAOJ,EAAK,MAAQnD,EAAKmD,EAAK,KAAO,GAAIA,CAC9D,CAEA,OAAOA,EAAK,KAAO,GAAIA,CACzB,CACF,EAAG/D,EAAQ,OAASyC,EAAQlB,GAAQ,UAAY,CAC9C,YAAaA,GACb,MAAO,SAAe8C,EAAe,CACnC,GAAI,KAAK,KAAO,EAAG,KAAK,KAAO,EAAG,KAAK,KAAO,KAAK,MAAQ,OAAW,KAAK,KAAO,GAAI,KAAK,SAAW,KAAM,KAAK,OAAS,OAAQ,KAAK,IAAM,OAAW,KAAK,WAAW,QAAQV,EAAa,EAAG,CAACU,EAAe,QAASC,KAAQ,KACvNA,EAAK,OAAO,CAAC,IAArB,KAA0BjE,EAAO,KAAK,KAAMiE,CAAI,GAAK,CAAC,MAAM,CAACA,EAAK,MAAM,CAAC,CAAC,IAAM,KAAKA,GAAQ,OAEjG,EACA,KAAM,UAAgB,CACpB,KAAK,KAAO,GACZ,IAAIC,EAAa,KAAK,WAAW,GAAG,WACpC,GAAgBA,EAAW,OAAvB,QAA6B,MAAMA,EAAW,IAClD,OAAO,KAAK,IACd,EACA,kBAAmB,SAA2BC,EAAW,CACvD,GAAI,KAAK,KAAM,MAAMA,EACrB,IAAIlD,EAAU,KAEd,SAASmD,EAAOC,EAAKC,EAAQ,CAC3B,OAAO3C,EAAO,KAAO,QAASA,EAAO,IAAMwC,EAAWlD,EAAQ,KAAOoD,EAAKC,IAAWrD,EAAQ,OAAS,OAAQA,EAAQ,IAAM,QAAY,CAAC,CAACqD,CAC5I,CAEA,QAASb,EAAI,KAAK,WAAW,OAAS,EAAGA,GAAK,EAAG,EAAEA,EAAG,CACpD,IAAIJ,EAAQ,KAAK,WAAWI,GACxB9B,EAAS0B,EAAM,WACnB,GAAeA,EAAM,SAAjB,OAAyB,OAAOe,EAAO,KAAK,EAEhD,GAAIf,EAAM,QAAU,KAAK,KAAM,CAC7B,IAAIkB,EAAWvE,EAAO,KAAKqD,EAAO,UAAU,EACxCmB,EAAaxE,EAAO,KAAKqD,EAAO,YAAY,EAEhD,GAAIkB,GAAYC,EAAY,CAC1B,GAAI,KAAK,KAAOnB,EAAM,SAAU,OAAOe,EAAOf,EAAM,SAAU,EAAE,EAChE,GAAI,KAAK,KAAOA,EAAM,WAAY,OAAOe,EAAOf,EAAM,UAAU,CAClE,SAAWkB,GACT,GAAI,KAAK,KAAOlB,EAAM,SAAU,OAAOe,EAAOf,EAAM,SAAU,EAAE,MAC3D,CACL,GAAI,CAACmB,EAAY,MAAM,IAAI,MAAM,wCAAwC,EACzE,GAAI,KAAK,KAAOnB,EAAM,WAAY,OAAOe,EAAOf,EAAM,UAAU,CAClE,CACF,CACF,CACF,EACA,OAAQ,SAAgBoB,EAAMpD,EAAK,CACjC,QAASoC,EAAI,KAAK,WAAW,OAAS,EAAGA,GAAK,EAAG,EAAEA,EAAG,CACpD,IAAIJ,EAAQ,KAAK,WAAWI,GAE5B,GAAIJ,EAAM,QAAU,KAAK,MAAQrD,EAAO,KAAKqD,EAAO,YAAY,GAAK,KAAK,KAAOA,EAAM,WAAY,CACjG,IAAIqB,EAAerB,EACnB,KACF,CACF,CAEAqB,IAA6BD,IAAZ,SAAmCA,IAAf,aAAwBC,EAAa,QAAUrD,GAAOA,GAAOqD,EAAa,aAAeA,EAAe,MAC7I,IAAI/C,EAAS+C,EAAeA,EAAa,WAAa,CAAC,EACvD,OAAO/C,EAAO,KAAO8C,EAAM9C,EAAO,IAAMN,EAAKqD,GAAgB,KAAK,OAAS,OAAQ,KAAK,KAAOA,EAAa,WAAYhD,GAAoB,KAAK,SAASC,CAAM,CAClK,EACA,SAAU,SAAkBA,EAAQgD,EAAU,CAC5C,GAAgBhD,EAAO,OAAnB,QAAyB,MAAMA,EAAO,IAC1C,OAAmBA,EAAO,OAAnB,SAA0CA,EAAO,OAAtB,WAA6B,KAAK,KAAOA,EAAO,IAAmBA,EAAO,OAApB,UAA4B,KAAK,KAAO,KAAK,IAAMA,EAAO,IAAK,KAAK,OAAS,SAAU,KAAK,KAAO,OAAsBA,EAAO,OAApB,UAA4BgD,IAAa,KAAK,KAAOA,GAAWjD,CACtQ,EACA,OAAQ,SAAgBkD,EAAY,CAClC,QAASnB,EAAI,KAAK,WAAW,OAAS,EAAGA,GAAK,EAAG,EAAEA,EAAG,CACpD,IAAIJ,EAAQ,KAAK,WAAWI,GAC5B,GAAIJ,EAAM,aAAeuB,EAAY,OAAO,KAAK,SAASvB,EAAM,WAAYA,EAAM,QAAQ,EAAGC,GAAcD,CAAK,EAAG3B,CACrH,CACF,EACA,MAAS,SAAgBmD,EAAQ,CAC/B,QAASpB,EAAI,KAAK,WAAW,OAAS,EAAGA,GAAK,EAAG,EAAEA,EAAG,CACpD,IAAIJ,EAAQ,KAAK,WAAWI,GAE5B,GAAIJ,EAAM,SAAWwB,EAAQ,CAC3B,IAAIlD,EAAS0B,EAAM,WAEnB,GAAgB1B,EAAO,OAAnB,QAAyB,CAC3B,IAAImD,EAASnD,EAAO,IACpB2B,GAAcD,CAAK,CACrB,CAEA,OAAOyB,CACT,CACF,CAEA,MAAM,IAAI,MAAM,uBAAuB,CACzC,EACA,cAAe,SAAuBvB,EAAUwB,EAAYC,EAAS,CACnE,OAAO,KAAK,SAAW,CACrB,SAAU5C,EAAOmB,CAAQ,EACzB,WAAYwB,EACZ,QAASC,CACX,EAAc,KAAK,SAAhB,SAA2B,KAAK,IAAM,QAAYtD,CACvD,CACF,EAAG/B,CACL,CAEAC,GAAO,QAAUE,GAAqBF,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,UCjW3G,IAAAqF,GAAAC,GAAA,CAAAC,GAAAC,KAAA,CAEA,IAAIC,GAAU,KAAyC,EACvDD,GAAO,QAAUC,GAGjB,GAAI,CACF,mBAAqBA,EACvB,MAAE,CACI,OAAO,YAAe,SACxB,WAAW,mBAAqBA,GAEhC,SAAS,IAAK,wBAAwB,EAAEA,EAAO,CAEnD,ICdA,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,UAASC,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQC,EAAKC,EAAK,CACzE,GAAI,CACF,IAAIC,EAAOP,EAAIK,GAAKC,CAAG,EACnBE,EAAQD,EAAK,KACnB,OAASE,EAAP,CACAP,EAAOO,CAAK,EACZ,MACF,CAEIF,EAAK,KACPN,EAAQO,CAAK,EAEb,QAAQ,QAAQA,CAAK,EAAE,KAAKL,EAAOC,CAAM,CAE7C,CAEA,SAASM,GAAkBC,EAAI,CAC7B,OAAO,UAAY,CACjB,IAAIC,EAAO,KACPC,EAAO,UACX,OAAO,IAAI,QAAQ,SAAUZ,EAASC,EAAQ,CAC5C,IAAIF,EAAMW,EAAG,MAAMC,EAAMC,CAAI,EAE7B,SAASV,EAAMK,EAAO,CACpBT,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQI,CAAK,CACvE,CAEA,SAASJ,EAAOU,EAAK,CACnBf,GAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASU,CAAG,CACtE,CAEAX,EAAM,MAAS,CACjB,CAAC,CACH,CACF,CAEAL,GAAO,QAAUY,GAAmBZ,GAAO,QAAQ,WAAa,GAAMA,GAAO,QAAQ,QAAaA,GAAO,UCpCzG,IAAAiB,GAAAC,GAAAC,IAAA,cAOA,IAAIC,GAAyB,KAE7B,OAAO,eAAeD,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,QAAa,OAErB,IAAIE,GAAeD,GAAuB,IAAqC,EAE3EE,GAAqBF,GAAuB,IAAkD,EAE9FG,GAAWH,GAAuB,IAAwC,EAE1EI,GAAmBJ,GAAuB,IAAgD,EAE1FK,GAAgBL,GAAuB,IAA6C,EAEpFM,GAAaN,GAAuB,IAA0C,EAE9EO,GAA8BP,GAAuB,IAA2D,EAEhHQ,GAAmBR,GAAuB,IAAgD,EAE1FS,GAAgB,KAEpB,SAASC,GAAaC,EAAS,CAAE,IAAIC,EAA4BC,GAA0B,EAAG,OAAO,UAAgC,CAAE,IAAIC,GAhC3I,EAgCuJN,GAAiB,SAAYG,CAAO,EAAGI,EAAQ,GAAIH,EAA2B,CAAE,IAAII,GAhC3O,EAgC2PR,GAAiB,SAAY,IAAI,EAAE,YAAaO,EAAS,QAAQ,UAAUD,EAAO,UAAWE,CAAS,CAAG,MAASD,EAASD,EAAM,MAAM,KAAM,SAAS,EAAK,OAhCtZ,EAgCiaP,GAA4B,SAAY,KAAMQ,CAAM,CAAG,CAAG,CAE3d,SAASF,IAA4B,CAA0E,GAApE,OAAO,QAAY,KAAe,CAAC,QAAQ,WAA6B,QAAQ,UAAU,KAAM,MAAO,GAAO,GAAI,OAAO,OAAU,WAAY,MAAO,GAAM,GAAI,CAAE,eAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,QAAS,CAAC,EAAG,UAAY,CAAC,CAAC,CAAC,EAAU,EAAM,MAAE,CAAY,MAAO,EAAO,CAAE,CAExU,IAAII,GAAsC,SAAUC,EAAG,EAAG,CACxD,IAAI,EAAI,CAAC,EAET,QAASC,KAAKD,EACR,OAAO,UAAU,eAAe,KAAKA,EAAGC,CAAC,GAAK,EAAE,QAAQA,CAAC,EAAI,IAAG,EAAEA,GAAKD,EAAEC,IAG/E,GAAID,GAAK,MAAQ,OAAO,OAAO,uBAA0B,WAAY,QAAS,EAAI,EAAGC,EAAI,OAAO,sBAAsBD,CAAC,EAAG,EAAIC,EAAE,OAAQ,IAClI,EAAE,QAAQA,EAAE,EAAE,EAAI,GAAK,OAAO,UAAU,qBAAqB,KAAKD,EAAGC,EAAE,EAAE,IAAG,EAAEA,EAAE,IAAMD,EAAEC,EAAE,KAEhG,OAAO,CACT,EAGIC,GAA4B,SAAUC,EAAe,EAlDzD,EAmDMf,GAAW,SAAYc,EAAcC,CAAa,EAEtD,IAAIC,EAASZ,GAAaU,CAAY,EAWtC,SAASA,EAAaG,EAAkB,CACtC,IAAIC,EAEAC,EAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,sBAE9EC,EAAK,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,CAAC,EAE1EC,EAAsB,UAAU,OAAS,EAAI,UAAU,GAAK,QAvEpE,EAwEQvB,GAAiB,SAAY,KAAMgB,CAAY,EAEnD,IAAIQ,EAAiBF,EAAG,YACpBG,EAAcD,IAAmB,OAAS,GAAOA,EACjDE,EAAeJ,EAAG,UAClBK,EAAYD,IAAiB,OAAS,GAAOA,EAC7CE,EAAwBN,EAAG,mBAC3BO,EAAqBD,IAA0B,OAAS,IAAOA,EAC/DE,EAAoBR,EAAG,eACvBS,EAAiBD,IAAsB,OAAS,EAAIA,EACpDE,GAAenB,GAAOS,EAAI,CAAC,cAAe,YAAa,qBAAsB,gBAAgB,CAAC,EAElG,OAAAF,EAAQF,EAAO,KAAK,IAAI,EACxBE,EAAM,iBAAmBD,EACzBC,EAAM,MAAQ,CAAC,EACfA,EAAM,OAAS,EACfA,EAAM,QAAUC,EAChBD,EAAM,YAAcK,EACpBL,EAAM,MAAQ,GACdA,EAAM,UAAYO,EAClBP,EAAM,mBAAqBS,EAC3BT,EAAM,eAAiBW,EACvBX,EAAM,aAAeY,GACrBZ,EAAM,mBAAqB,EAE3BA,EAAM,oBAAsBG,GAAuB,UAAY,CAC7D,MAAO,EAAEH,EAAM,MACjB,EAEIA,EAAM,aAAaA,EAAM,SAASA,EAAM,QAAS,OAAO,OAAO,CACjE,YAAaA,EAAM,YACnB,UAAWA,EAAM,UACjB,mBAAoBA,EAAM,mBAC1B,eAAgBA,EAAM,cACxB,EAAGA,EAAM,YAAY,CAAC,EACfA,CACT,CAQA,OApHF,EAoHMnB,GAAc,SAAYe,EAAc,CAAC,CAC3C,IAAK,UACL,MAAO,UAAmB,CACpB,KAAK,QAET,KAAK,SAAS,KAAK,QAAS,OAAO,OAAO,CACxC,YAAa,KAAK,YAClB,UAAW,KAAK,UAChB,mBAAoB,KAAK,mBACzB,eAAgB,KAAK,cACvB,EAAG,KAAK,YAAY,CAAC,CACvB,CAWF,EAAG,CACD,IAAK,OACL,MAAO,SAAciB,EAAQC,EAAQC,EAASC,EAAS,CACrD,IAAIC,EAAS,KAEb,MAAI,CAACD,IA/IX,EA+IuCrC,GAAS,SAAYoC,CAAO,IAA7C,WACdC,EAAUD,EACVA,EAAU,MAGL,IAAI,QAAQ,SAAUG,EAASC,EAAQ,CAC5C,GAAI,CAACF,EAAO,MAAO,OAAOE,EAAO,IAAI,MAAM,kBAAkB,CAAC,EAE9D,IAAIC,EAASH,EAAO,oBAAoBJ,EAAQC,CAAM,EAElDO,EAAU,CACZ,QAAS,MACT,OAAQR,EACR,OAAQC,GAAU,KAClB,GAAIM,CACN,EAEAH,EAAO,OAAO,KAAK,KAAK,UAAUI,CAAO,EAAGL,EAAS,SAAUM,EAAO,CACpE,GAAIA,EAAO,OAAOH,EAAOG,CAAK,EAC9BL,EAAO,MAAMG,GAAU,CACrB,QAAS,CAACF,EAASC,CAAM,CAC3B,EAEIJ,IACFE,EAAO,MAAMG,GAAQ,QAAU,WAAW,UAAY,CACpD,OAAOH,EAAO,MAAMG,GACpBD,EAAO,IAAI,MAAM,eAAe,CAAC,CACnC,EAAGJ,CAAO,EAEd,CAAC,CACH,CAAC,CACH,CAQF,EAAG,CACD,IAAK,QACL,MAAO,UAAY,CACjB,IAAIQ,GAzLV,EAyLuB7C,GAAmB,SAA0BD,GAAa,QAAW,KAAK,SAAS+C,EAAQV,EAAQ,CAClH,IAAIW,EACJ,OAAOhD,GAAa,QAAW,KAAK,SAAkBiD,EAAU,CAC9D,OACE,OAAQA,EAAS,KAAOA,EAAS,KAAM,CACrC,IAAK,GACH,OAAAA,EAAS,KAAO,EACT,KAAK,KAAK,YAAaZ,CAAM,EAEtC,IAAK,GAGH,GAFAW,EAAOC,EAAS,KAEZD,EAAM,CACRC,EAAS,KAAO,EAChB,KACF,CAEA,MAAM,IAAI,MAAM,uBAAuB,EAEzC,IAAK,GACH,OAAOA,EAAS,OAAO,SAAUD,CAAI,EAEvC,IAAK,GACL,IAAK,MACH,OAAOC,EAAS,KAAK,CACzB,CAEJ,EAAGF,EAAS,IAAI,CAClB,CAAC,CAAC,EAEF,SAASG,EAAMC,EAAI,CACjB,OAAOL,EAAO,MAAM,KAAM,SAAS,CACrC,CAEA,OAAOI,CACT,EAAE,CAOJ,EAAG,CACD,IAAK,cACL,MAAO,UAAY,CACjB,IAAIE,GAtOV,EAsO6BnD,GAAmB,SAA0BD,GAAa,QAAW,KAAK,SAASqD,GAAW,CACnH,OAAOrD,GAAa,QAAW,KAAK,SAAmBsD,EAAW,CAChE,OACE,OAAQA,EAAU,KAAOA,EAAU,KAAM,CACvC,IAAK,GACH,OAAAA,EAAU,KAAO,EACV,KAAK,KAAK,eAAe,EAElC,IAAK,GACH,OAAOA,EAAU,OAAO,SAAUA,EAAU,IAAI,EAElD,IAAK,GACL,IAAK,MACH,OAAOA,EAAU,KAAK,CAC1B,CAEJ,EAAGD,EAAU,IAAI,CACnB,CAAC,CAAC,EAEF,SAASE,GAAc,CACrB,OAAOH,EAAa,MAAM,KAAM,SAAS,CAC3C,CAEA,OAAOG,CACT,EAAE,CASJ,EAAG,CACD,IAAK,SACL,MAAO,SAAgBnB,EAAQC,EAAQ,CACrC,IAAImB,EAAS,KAEb,OAAO,IAAI,QAAQ,SAAUf,EAASC,EAAQ,CAC5C,GAAI,CAACc,EAAO,MAAO,OAAOd,EAAO,IAAI,MAAM,kBAAkB,CAAC,EAC9D,IAAIE,EAAU,CACZ,QAAS,MACT,OAAQR,EACR,OAAQC,GAAU,IACpB,EAEAmB,EAAO,OAAO,KAAK,KAAK,UAAUZ,CAAO,EAAG,SAAUC,EAAO,CAC3D,GAAIA,EAAO,OAAOH,EAAOG,CAAK,EAC9BJ,EAAQ,CACV,CAAC,CACH,CAAC,CACH,CASF,EAAG,CACD,IAAK,YACL,MAAO,UAAY,CACjB,IAAIgB,GArSV,EAqS2BxD,GAAmB,SAA0BD,GAAa,QAAW,KAAK,SAAS0D,EAASC,EAAO,CACtH,IAAI7C,EACJ,OAAOd,GAAa,QAAW,KAAK,SAAmB4D,EAAW,CAChE,OACE,OAAQA,EAAU,KAAOA,EAAU,KAAM,CACvC,IAAK,GACH,OAAI,OAAOD,GAAU,WAAUA,EAAQ,CAACA,CAAK,GAC7CC,EAAU,KAAO,EACV,KAAK,KAAK,SAAUD,CAAK,EAElC,IAAK,GAGH,GAFA7C,EAAS8C,EAAU,KAEf,EAAE,OAAOD,GAAU,UAAY7C,EAAO6C,KAAW,MAAO,CAC1DC,EAAU,KAAO,EACjB,KACF,CAEA,MAAM,IAAI,MAAM,mCAAqCD,EAAQ,WAAa7C,EAAO6C,EAAM,EAEzF,IAAK,GACH,OAAOC,EAAU,OAAO,SAAU9C,CAAM,EAE1C,IAAK,GACL,IAAK,MACH,OAAO8C,EAAU,KAAK,CAC1B,CAEJ,EAAGF,EAAU,IAAI,CACnB,CAAC,CAAC,EAEF,SAASG,EAAUC,EAAK,CACtB,OAAOL,EAAW,MAAM,KAAM,SAAS,CACzC,CAEA,OAAOI,CACT,EAAE,CASJ,EAAG,CACD,IAAK,cACL,MAAO,UAAY,CACjB,IAAIE,GArVV,EAqV6B9D,GAAmB,SAA0BD,GAAa,QAAW,KAAK,SAASgE,EAASL,EAAO,CACxH,IAAI7C,EACJ,OAAOd,GAAa,QAAW,KAAK,SAAmBiE,EAAW,CAChE,OACE,OAAQA,EAAU,KAAOA,EAAU,KAAM,CACvC,IAAK,GACH,OAAI,OAAON,GAAU,WAAUA,EAAQ,CAACA,CAAK,GAC7CM,EAAU,KAAO,EACV,KAAK,KAAK,UAAWN,CAAK,EAEnC,IAAK,GAGH,GAFA7C,EAASmD,EAAU,KAEf,EAAE,OAAON,GAAU,UAAY7C,EAAO6C,KAAW,MAAO,CAC1DM,EAAU,KAAO,EACjB,KACF,CAEA,MAAM,IAAI,MAAM,4CAA8CnD,CAAM,EAEtE,IAAK,GACH,OAAOmD,EAAU,OAAO,SAAUnD,CAAM,EAE1C,IAAK,GACL,IAAK,MACH,OAAOmD,EAAU,KAAK,CAC1B,CAEJ,EAAGD,EAAU,IAAI,CACnB,CAAC,CAAC,EAEF,SAASE,EAAYC,EAAK,CACxB,OAAOJ,EAAa,MAAM,KAAM,SAAS,CAC3C,CAEA,OAAOG,CACT,EAAE,CASJ,EAAG,CACD,IAAK,QACL,MAAO,SAAeE,EAAMC,EAAM,CAChC,KAAK,OAAO,MAAMD,GAAQ,IAAMC,CAAI,CACtC,CAUF,EAAG,CACD,IAAK,WACL,MAAO,SAAkB7C,EAAS8C,EAAS,CACzC,IAAIC,EAAS,KAEb,KAAK,OAAS,KAAK,iBAAiB/C,EAAS8C,CAAO,EACpD,KAAK,OAAO,iBAAiB,OAAQ,UAAY,CAC/CC,EAAO,MAAQ,GAEfA,EAAO,KAAK,MAAM,EAElBA,EAAO,mBAAqB,CAC9B,CAAC,EACD,KAAK,OAAO,iBAAiB,UAAW,SAAUC,EAAM,CACtD,IAAI5B,EAAU4B,EAAK,KACf5B,aAAmB,cAAaA,EAAU,OAAO,KAAKA,CAAO,EAAE,SAAS,GAE5E,GAAI,CACFA,EAAU,KAAK,MAAMA,CAAO,CAC9B,MAAE,CACA,MACF,CAGA,GAAIA,EAAQ,cAAgB2B,EAAO,UAAU3B,EAAQ,YAAY,EAAE,OAAQ,CACzE,GAAI,CAAC,OAAO,KAAKA,EAAQ,MAAM,EAAE,OAAQ,OAAO2B,EAAO,KAAK3B,EAAQ,YAAY,EAChF,IAAI6B,EAAO,CAAC7B,EAAQ,YAAY,EAChC,GAAIA,EAAQ,OAAO,cAAgB,OAAQ6B,EAAK,KAAK7B,EAAQ,MAAM,MACjE,SAAS8B,EAAI,EAAGA,EAAI9B,EAAQ,OAAO,OAAQ8B,IACzCD,EAAK,KAAK7B,EAAQ,OAAO8B,EAAE,EAI/B,OAAO,QAAQ,QAAQ,EAAE,KAAK,UAAY,CACxCH,EAAO,KAAK,MAAMA,EAAQE,CAAI,CAChC,CAAC,CACH,CAEA,GAAI,CAACF,EAAO,MAAM3B,EAAQ,IAExB,OAAIA,EAAQ,QAAUA,EAAQ,OAErB,QAAQ,QAAQ,EAAE,KAAK,UAAY,CACxC2B,EAAO,KAAK3B,EAAQ,OAAQA,EAAQ,MAAM,CAC5C,CAAC,EAGH,OAIE,UAAWA,GAAY,WAAYA,GAAS2B,EAAO,MAAM3B,EAAQ,IAAI,QAAQ,GAAG,IAAI,MAAM,4FAAqG,CAAC,EAChM2B,EAAO,MAAM3B,EAAQ,IAAI,SAAS,aAAa2B,EAAO,MAAM3B,EAAQ,IAAI,OAAO,EAC/EA,EAAQ,MAAO2B,EAAO,MAAM3B,EAAQ,IAAI,QAAQ,GAAGA,EAAQ,KAAK,EAAO2B,EAAO,MAAM3B,EAAQ,IAAI,QAAQ,GAAGA,EAAQ,MAAM,EAC7H,OAAO2B,EAAO,MAAM3B,EAAQ,GAC9B,CAAC,EACD,KAAK,OAAO,iBAAiB,QAAS,SAAUC,EAAO,CACrD,OAAO0B,EAAO,KAAK,QAAS1B,CAAK,CACnC,CAAC,EACD,KAAK,OAAO,iBAAiB,QAAS,SAAU8B,EAAO,CACrD,IAAIP,EAAOO,EAAM,KACbC,EAASD,EAAM,OACfJ,EAAO,OACT,WAAW,UAAY,CACrB,OAAOA,EAAO,KAAK,QAASH,EAAMQ,CAAM,CAC1C,EAAG,CAAC,EACNL,EAAO,MAAQ,GACfA,EAAO,OAAS,OACZH,IAAS,MACbG,EAAO,qBACHA,EAAO,YAAcA,EAAO,eAAiBA,EAAO,oBAAsBA,EAAO,iBAAmB,IAAI,WAAW,UAAY,CACjI,OAAOA,EAAO,SAAS/C,EAAS8C,CAAO,CACzC,EAAGC,EAAO,kBAAkB,EAC9B,CAAC,CACH,CACF,CAAC,CAAC,EACKpD,CACT,EAAEX,GAAc,YAAY,EAE5BV,GAAQ,QAAaqB,KC/drB,IAAA0D,GAAAC,GAAAC,IAAA,cAEA,IAAIC,GAAyB,KAE7B,OAAO,eAAeD,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,OAAS,OAEjB,IAAIE,GAAgBD,GAAuB,IAA6C,EAEpFE,GAAmBF,GAAuB,IAAgD,EAE1FG,GAAaH,GAAuB,IAA0C,EAE9EI,GAA8BJ,GAAuB,IAA2D,EAEhHK,GAAmBL,GAAuB,IAAgD,EAE1FM,GAAaN,GAAuB,IAAyC,EAE7EO,GAAUP,GAAuB,IAAuB,EAE5D,SAASQ,GAAaC,EAAS,CAAE,IAAIC,EAA4BC,GAA0B,EAAG,OAAO,UAAgC,CAAE,IAAIC,GAvB3I,EAuBuJP,GAAiB,SAAYI,CAAO,EAAGI,EAAQ,GAAIH,EAA2B,CAAE,IAAII,GAvB3O,EAuB2PT,GAAiB,SAAY,IAAI,EAAE,YAAaQ,EAAS,QAAQ,UAAUD,EAAO,UAAWE,CAAS,CAAG,MAASD,EAASD,EAAM,MAAM,KAAM,SAAS,EAAK,OAvBtZ,EAuBiaR,GAA4B,SAAY,KAAMS,CAAM,CAAG,CAAG,CAE3d,SAASF,IAA4B,CAA0E,GAApE,OAAO,QAAY,KAAe,CAAC,QAAQ,WAA6B,QAAQ,UAAU,KAAM,MAAO,GAAO,GAAI,OAAO,OAAU,WAAY,MAAO,GAAM,GAAI,CAAE,eAAQ,UAAU,QAAQ,KAAK,QAAQ,UAAU,QAAS,CAAC,EAAG,UAAY,CAAC,CAAC,CAAC,EAAU,EAAM,MAAE,CAAY,MAAO,EAAO,CAAE,CAExU,IAAII,GAAsB,SAAUC,EAAe,EA3BnD,EA4BMb,GAAW,SAAYY,EAAQC,CAAa,EAEhD,IAAIC,EAAST,GAAaO,CAAM,EAEhC,SAASA,GAAS,CAChB,IAAIG,EAAU,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,sBAE9EC,EAAO,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,CAAC,EAC5EC,EAAmBD,EAAK,YACxBE,EAAcD,IAAqB,OAAS,GAAOA,EACnDE,EAAiBH,EAAK,UACtBI,EAAYD,IAAmB,OAAS,GAAOA,EAC/CE,EAAwBL,EAAK,mBAC7BM,EAAqBD,IAA0B,OAAS,IAAOA,EAC/DE,EAAsBP,EAAK,eAC3BQ,EAAiBD,IAAwB,OAAS,EAAIA,EAEtDE,EAAsB,UAAU,OAAS,EAAI,UAAU,GAAK,OAChE,OA9CJ,EA8CQ1B,GAAiB,SAAY,KAAMa,CAAM,EACtCE,EAAO,KAAK,KAAMX,GAAW,QAAYY,EAAS,CACvD,YAAaG,EACb,UAAWE,EACX,mBAAoBE,EACpB,eAAgBE,CAClB,EAAGC,CAAmB,CACxB,CAEA,OAvDF,EAuDa3B,GAAc,SAAYc,CAAM,CAC7C,EAAER,GAAQ,OAAU,EAEpBR,GAAQ,OAASgB,KCrDF,SAARc,IAAuB,CAE5B,GAAI,CAACC,KAGHA,GAAkB,OAAO,OAAW,KAAe,OAAO,iBAAmB,OAAO,gBAAgB,KAAK,MAAM,GAAK,OAAO,SAAa,KAAe,OAAO,SAAS,iBAAoB,YAAc,SAAS,gBAAgB,KAAK,QAAQ,EAE3O,CAACA,IACH,MAAM,IAAI,MAAM,0GAA0G,EAI9H,OAAOA,GAAgBC,EAAK,CAC9B,CAlBA,IAGID,GACAC,GAJJC,GAAAC,GAAA,KAIIF,GAAQ,IAAI,WAAW,EAAE,ICJ7B,IAAOG,GAAPC,GAAAC,GAAA,KAAOF,GAAQ,wHCEf,SAASG,GAASC,EAAM,CACtB,OAAO,OAAOA,GAAS,UAAYC,GAAM,KAAKD,CAAI,CACpD,CAJA,IAMOE,GANPC,GAAAC,GAAA,KAAAC,KAMOH,GAAQH,KCMf,SAASO,GAAUC,EAAK,CACtB,IAAIC,EAAS,UAAU,OAAS,GAAK,UAAU,KAAO,OAAY,UAAU,GAAK,EAG7EC,GAAQC,GAAUH,EAAIC,EAAS,IAAME,GAAUH,EAAIC,EAAS,IAAME,GAAUH,EAAIC,EAAS,IAAME,GAAUH,EAAIC,EAAS,IAAM,IAAME,GAAUH,EAAIC,EAAS,IAAME,GAAUH,EAAIC,EAAS,IAAM,IAAME,GAAUH,EAAIC,EAAS,IAAME,GAAUH,EAAIC,EAAS,IAAM,IAAME,GAAUH,EAAIC,EAAS,IAAME,GAAUH,EAAIC,EAAS,IAAM,IAAME,GAAUH,EAAIC,EAAS,KAAOE,GAAUH,EAAIC,EAAS,KAAOE,GAAUH,EAAIC,EAAS,KAAOE,GAAUH,EAAIC,EAAS,KAAOE,GAAUH,EAAIC,EAAS,KAAOE,GAAUH,EAAIC,EAAS,MAAM,YAAY,EAMrgB,GAAI,CAACG,GAASF,CAAI,EAChB,MAAM,UAAU,6BAA6B,EAG/C,OAAOA,CACT,CA3BA,IAMIC,GAEKE,GAqBFC,GA7BPC,GAAAC,GAAA,KAAAC,KAMIN,GAAY,CAAC,EAEjB,IAASE,GAAI,EAAGA,GAAI,IAAK,EAAEA,GACzBF,GAAU,MAAME,GAAI,KAAO,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC,EAoB5CC,GAAQP,KCff,SAASW,GAAGC,EAASC,EAAKC,EAAQ,CAChC,IAAIC,EAAIF,GAAOC,GAAU,EACrBE,EAAIH,GAAO,IAAI,MAAM,EAAE,EAC3BD,EAAUA,GAAW,CAAC,EACtB,IAAIK,EAAOL,EAAQ,MAAQM,GACvBC,EAAWP,EAAQ,WAAa,OAAYA,EAAQ,SAAWQ,GAInE,GAAIH,GAAQ,MAAQE,GAAY,KAAM,CACpC,IAAIE,EAAYT,EAAQ,SAAWA,EAAQ,KAAOU,IAAK,EAEnDL,GAAQ,OAEVA,EAAOC,GAAU,CAACG,EAAU,GAAK,EAAMA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,EAAE,GAGzGF,GAAY,OAEdA,EAAWC,IAAaC,EAAU,IAAM,EAAIA,EAAU,IAAM,MAEhE,CAMA,IAAIE,EAAQX,EAAQ,QAAU,OAAYA,EAAQ,MAAQ,KAAK,IAAI,EAG/DY,EAAQZ,EAAQ,QAAU,OAAYA,EAAQ,MAAQa,GAAa,EAEnEC,EAAKH,EAAQI,IAAcH,EAAQC,IAAc,IAarD,GAXIC,EAAK,GAAKd,EAAQ,WAAa,SACjCO,EAAWA,EAAW,EAAI,QAKvBO,EAAK,GAAKH,EAAQI,KAAef,EAAQ,QAAU,SACtDY,EAAQ,GAINA,GAAS,IACX,MAAM,IAAI,MAAM,iDAAiD,EAGnEG,GAAaJ,EACbE,GAAaD,EACbJ,GAAYD,EAEZI,GAAS,YAET,IAAIK,IAAOL,EAAQ,WAAa,IAAQC,GAAS,WACjDR,EAAED,KAAOa,IAAO,GAAK,IACrBZ,EAAED,KAAOa,IAAO,GAAK,IACrBZ,EAAED,KAAOa,IAAO,EAAI,IACpBZ,EAAED,KAAOa,EAAK,IAEd,IAAIC,EAAMN,EAAQ,WAAc,IAAQ,UACxCP,EAAED,KAAOc,IAAQ,EAAI,IACrBb,EAAED,KAAOc,EAAM,IAEfb,EAAED,KAAOc,IAAQ,GAAK,GAAM,GAE5Bb,EAAED,KAAOc,IAAQ,GAAK,IAEtBb,EAAED,KAAOI,IAAa,EAAI,IAE1BH,EAAED,KAAOI,EAAW,IAEpB,QAASW,EAAI,EAAGA,EAAI,EAAG,EAAEA,EACvBd,EAAED,EAAIe,GAAKb,EAAKa,GAGlB,OAAOjB,GAAOkB,GAAUf,CAAC,CAC3B,CA5FA,IAMIE,GAEAE,GAGAO,GACAF,GAkFGO,GA9FPC,GAAAC,GAAA,KAAAC,KACAC,KAUIT,GAAa,EACbF,GAAa,EAkFVO,GAAQrB,KC5Ff,SAAS0B,GAAMC,EAAM,CACnB,GAAI,CAACC,GAASD,CAAI,EAChB,MAAM,UAAU,cAAc,EAGhC,IAAIE,EACAC,EAAM,IAAI,WAAW,EAAE,EAE3B,OAAAA,EAAI,IAAMD,EAAI,SAASF,EAAK,MAAM,EAAG,CAAC,EAAG,EAAE,KAAO,GAClDG,EAAI,GAAKD,IAAM,GAAK,IACpBC,EAAI,GAAKD,IAAM,EAAI,IACnBC,EAAI,GAAKD,EAAI,IAEbC,EAAI,IAAMD,EAAI,SAASF,EAAK,MAAM,EAAG,EAAE,EAAG,EAAE,KAAO,EACnDG,EAAI,GAAKD,EAAI,IAEbC,EAAI,IAAMD,EAAI,SAASF,EAAK,MAAM,GAAI,EAAE,EAAG,EAAE,KAAO,EACpDG,EAAI,GAAKD,EAAI,IAEbC,EAAI,IAAMD,EAAI,SAASF,EAAK,MAAM,GAAI,EAAE,EAAG,EAAE,KAAO,EACpDG,EAAI,GAAKD,EAAI,IAGbC,EAAI,KAAOD,EAAI,SAASF,EAAK,MAAM,GAAI,EAAE,EAAG,EAAE,GAAK,cAAgB,IACnEG,EAAI,IAAMD,EAAI,WAAc,IAC5BC,EAAI,IAAMD,IAAM,GAAK,IACrBC,EAAI,IAAMD,IAAM,GAAK,IACrBC,EAAI,IAAMD,IAAM,EAAI,IACpBC,EAAI,IAAMD,EAAI,IACPC,CACT,CAhCA,IAkCOC,GAlCPC,GAAAC,GAAA,KAAAC,KAkCOH,GAAQL,KC/Bf,SAASS,GAAcC,EAAK,CAC1BA,EAAM,SAAS,mBAAmBA,CAAG,CAAC,EAItC,QAFIC,EAAQ,CAAC,EAEJC,EAAI,EAAGA,EAAIF,EAAI,OAAQ,EAAEE,EAChCD,EAAM,KAAKD,EAAI,WAAWE,CAAC,CAAC,EAG9B,OAAOD,CACT,CAIe,SAARE,GAAkBC,EAAMC,EAASC,EAAU,CAChD,SAASC,EAAaC,EAAOC,EAAWC,EAAKC,EAAQ,CASnD,GARI,OAAOH,GAAU,WACnBA,EAAQT,GAAcS,CAAK,GAGzB,OAAOC,GAAc,WACvBA,EAAYG,GAAMH,CAAS,GAGzBA,EAAU,SAAW,GACvB,MAAM,UAAU,kEAAkE,EAMpF,IAAIR,EAAQ,IAAI,WAAW,GAAKO,EAAM,MAAM,EAO5C,GANAP,EAAM,IAAIQ,CAAS,EACnBR,EAAM,IAAIO,EAAOC,EAAU,MAAM,EACjCR,EAAQK,EAASL,CAAK,EACtBA,EAAM,GAAKA,EAAM,GAAK,GAAOI,EAC7BJ,EAAM,GAAKA,EAAM,GAAK,GAAO,IAEzBS,EAAK,CACPC,EAASA,GAAU,EAEnB,QAAST,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACxBQ,EAAIC,EAAST,GAAKD,EAAMC,GAG1B,OAAOQ,CACT,CAEA,OAAOG,GAAUZ,CAAK,CACxB,CAGA,GAAI,CACFM,EAAa,KAAOH,CACtB,MAAE,CAAa,CAGf,OAAAG,EAAa,IAAMO,GACnBP,EAAa,IAAMQ,GACZR,CACT,CA/DA,IAeWO,GACAC,GAhBXC,GAAAC,GAAA,KAAAC,KACAC,KAcWL,GAAM,uCACNC,GAAM,yCCIjB,SAASK,GAAIC,EAAO,CAClB,GAAI,OAAOA,GAAU,SAAU,CAC7B,IAAIC,EAAM,SAAS,mBAAmBD,CAAK,CAAC,EAE5CA,EAAQ,IAAI,WAAWC,EAAI,MAAM,EAEjC,QAASC,EAAI,EAAGA,EAAID,EAAI,OAAQ,EAAEC,EAChCF,EAAME,GAAKD,EAAI,WAAWC,CAAC,CAE/B,CAEA,OAAOC,GAAqBC,GAAWC,GAAaL,CAAK,EAAGA,EAAM,OAAS,CAAC,CAAC,CAC/E,CAMA,SAASG,GAAqBG,EAAO,CAKnC,QAJIC,EAAS,CAAC,EACVC,EAAWF,EAAM,OAAS,GAC1BG,EAAS,mBAEJ,EAAI,EAAG,EAAID,EAAU,GAAK,EAAG,CACpC,IAAIE,EAAIJ,EAAM,GAAK,KAAO,EAAI,GAAK,IAC/BK,EAAM,SAASF,EAAO,OAAOC,IAAM,EAAI,EAAI,EAAID,EAAO,OAAOC,EAAI,EAAI,EAAG,EAAE,EAC9EH,EAAO,KAAKI,CAAG,CACjB,CAEA,OAAOJ,CACT,CAMA,SAASK,GAAgBC,EAAc,CACrC,OAAQA,EAAe,KAAO,GAAK,GAAK,GAAK,CAC/C,CAMA,SAAST,GAAWM,EAAGI,EAAK,CAE1BJ,EAAEI,GAAO,IAAM,KAAQA,EAAM,GAC7BJ,EAAEE,GAAgBE,CAAG,EAAI,GAAKA,EAM9B,QALIC,EAAI,WACJC,EAAI,WACJC,EAAI,YACJC,EAAI,UAEChB,EAAI,EAAGA,EAAIQ,EAAE,OAAQR,GAAK,GAAI,CACrC,IAAIiB,EAAOJ,EACPK,EAAOJ,EACPK,EAAOJ,EACPK,EAAOJ,EACXH,EAAIQ,GAAMR,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,GAAI,EAAG,UAAU,EACzCgB,EAAIK,GAAML,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,GAAI,GAAI,UAAU,EAC9Ce,EAAIM,GAAMN,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,GAAI,GAAI,SAAS,EAC7Cc,EAAIO,GAAMP,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,GAAI,GAAI,WAAW,EAC/Ca,EAAIQ,GAAMR,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,EAAI,GAAI,EAAG,UAAU,EAC7CgB,EAAIK,GAAML,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,GAAI,GAAI,UAAU,EAC9Ce,EAAIM,GAAMN,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,GAAI,GAAI,WAAW,EAC/Cc,EAAIO,GAAMP,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,GAAI,GAAI,SAAS,EAC7Ca,EAAIQ,GAAMR,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,EAAI,GAAI,EAAG,UAAU,EAC7CgB,EAAIK,GAAML,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,GAAI,GAAI,WAAW,EAC/Ce,EAAIM,GAAMN,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,IAAK,GAAI,MAAM,EAC3Cc,EAAIO,GAAMP,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,IAAK,GAAI,WAAW,EAChDa,EAAIQ,GAAMR,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,EAAI,IAAK,EAAG,UAAU,EAC9CgB,EAAIK,GAAML,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,IAAK,GAAI,SAAS,EAC9Ce,EAAIM,GAAMN,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,IAAK,GAAI,WAAW,EAChDc,EAAIO,GAAMP,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,IAAK,GAAI,UAAU,EAC/Ca,EAAIS,GAAMT,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,EAAI,GAAI,EAAG,UAAU,EAC7CgB,EAAIM,GAAMN,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,GAAI,EAAG,WAAW,EAC9Ce,EAAIO,GAAMP,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,IAAK,GAAI,SAAS,EAC9Cc,EAAIQ,GAAMR,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,GAAI,GAAI,UAAU,EAC1Ca,EAAIS,GAAMT,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,EAAI,GAAI,EAAG,UAAU,EAC7CgB,EAAIM,GAAMN,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,IAAK,EAAG,QAAQ,EAC5Ce,EAAIO,GAAMP,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,IAAK,GAAI,UAAU,EAC/Cc,EAAIQ,GAAMR,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,GAAI,GAAI,UAAU,EAC9Ca,EAAIS,GAAMT,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,EAAI,GAAI,EAAG,SAAS,EAC5CgB,EAAIM,GAAMN,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,IAAK,EAAG,WAAW,EAC/Ce,EAAIO,GAAMP,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,GAAI,GAAI,UAAU,EAC9Cc,EAAIQ,GAAMR,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,GAAI,GAAI,UAAU,EAC9Ca,EAAIS,GAAMT,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,EAAI,IAAK,EAAG,WAAW,EAC/CgB,EAAIM,GAAMN,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,GAAI,EAAG,SAAS,EAC5Ce,EAAIO,GAAMP,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,GAAI,GAAI,UAAU,EAC9Cc,EAAIQ,GAAMR,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,IAAK,GAAI,WAAW,EAChDa,EAAIU,GAAMV,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,EAAI,GAAI,EAAG,OAAO,EAC1CgB,EAAIO,GAAMP,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,GAAI,GAAI,WAAW,EAC/Ce,EAAIQ,GAAMR,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,IAAK,GAAI,UAAU,EAC/Cc,EAAIS,GAAMT,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,IAAK,GAAI,SAAS,EAC9Ca,EAAIU,GAAMV,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,EAAI,GAAI,EAAG,WAAW,EAC9CgB,EAAIO,GAAMP,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,GAAI,GAAI,UAAU,EAC9Ce,EAAIQ,GAAMR,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,GAAI,GAAI,UAAU,EAC9Cc,EAAIS,GAAMT,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,IAAK,GAAI,WAAW,EAChDa,EAAIU,GAAMV,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,EAAI,IAAK,EAAG,SAAS,EAC7CgB,EAAIO,GAAMP,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,GAAI,GAAI,UAAU,EAC1Ce,EAAIQ,GAAMR,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,GAAI,GAAI,UAAU,EAC9Cc,EAAIS,GAAMT,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,GAAI,GAAI,QAAQ,EAC5Ca,EAAIU,GAAMV,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,EAAI,GAAI,EAAG,UAAU,EAC7CgB,EAAIO,GAAMP,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,IAAK,GAAI,UAAU,EAC/Ce,EAAIQ,GAAMR,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,IAAK,GAAI,SAAS,EAC9Cc,EAAIS,GAAMT,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,GAAI,GAAI,UAAU,EAC9Ca,EAAIW,GAAMX,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,GAAI,EAAG,UAAU,EACzCgB,EAAIQ,GAAMR,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,GAAI,GAAI,UAAU,EAC9Ce,EAAIS,GAAMT,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,IAAK,GAAI,WAAW,EAChDc,EAAIU,GAAMV,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,GAAI,GAAI,SAAS,EAC7Ca,EAAIW,GAAMX,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,EAAI,IAAK,EAAG,UAAU,EAC9CgB,EAAIQ,GAAMR,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,GAAI,GAAI,WAAW,EAC/Ce,EAAIS,GAAMT,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,IAAK,GAAI,QAAQ,EAC7Cc,EAAIU,GAAMV,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,GAAI,GAAI,WAAW,EAC/Ca,EAAIW,GAAMX,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,EAAI,GAAI,EAAG,UAAU,EAC7CgB,EAAIQ,GAAMR,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,IAAK,GAAI,SAAS,EAC9Ce,EAAIS,GAAMT,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,GAAI,GAAI,WAAW,EAC/Cc,EAAIU,GAAMV,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,IAAK,GAAI,UAAU,EAC/Ca,EAAIW,GAAMX,EAAGC,EAAGC,EAAGC,EAAGR,EAAER,EAAI,GAAI,EAAG,UAAU,EAC7CgB,EAAIQ,GAAMR,EAAGH,EAAGC,EAAGC,EAAGP,EAAER,EAAI,IAAK,GAAI,WAAW,EAChDe,EAAIS,GAAMT,EAAGC,EAAGH,EAAGC,EAAGN,EAAER,EAAI,GAAI,GAAI,SAAS,EAC7Cc,EAAIU,GAAMV,EAAGC,EAAGC,EAAGH,EAAGL,EAAER,EAAI,GAAI,GAAI,UAAU,EAC9Ca,EAAIY,GAAQZ,EAAGI,CAAI,EACnBH,EAAIW,GAAQX,EAAGI,CAAI,EACnBH,EAAIU,GAAQV,EAAGI,CAAI,EACnBH,EAAIS,GAAQT,EAAGI,CAAI,CACrB,CAEA,MAAO,CAACP,EAAGC,EAAGC,EAAGC,CAAC,CACpB,CAOA,SAASb,GAAaC,EAAO,CAC3B,GAAIA,EAAM,SAAW,EACnB,MAAO,CAAC,EAMV,QAHIsB,EAAUtB,EAAM,OAAS,EACzBC,EAAS,IAAI,YAAYK,GAAgBgB,CAAO,CAAC,EAE5C1B,EAAI,EAAGA,EAAI0B,EAAS1B,GAAK,EAChCK,EAAOL,GAAK,KAAOI,EAAMJ,EAAI,GAAK,MAASA,EAAI,GAGjD,OAAOK,CACT,CAOA,SAASoB,GAAQjB,EAAGmB,EAAG,CACrB,IAAIC,GAAOpB,EAAI,QAAWmB,EAAI,OAC1BE,GAAOrB,GAAK,KAAOmB,GAAK,KAAOC,GAAO,IAC1C,OAAOC,GAAO,GAAKD,EAAM,KAC3B,CAMA,SAASE,GAAcC,EAAKC,EAAK,CAC/B,OAAOD,GAAOC,EAAMD,IAAQ,GAAKC,CACnC,CAMA,SAASC,GAAOC,EAAGrB,EAAGC,EAAGN,EAAG2B,EAAGC,EAAG,CAChC,OAAOX,GAAQK,GAAcL,GAAQA,GAAQZ,EAAGqB,CAAC,EAAGT,GAAQjB,EAAG4B,CAAC,CAAC,EAAGD,CAAC,EAAGrB,CAAC,CAC3E,CAEA,SAASO,GAAMR,EAAGC,EAAGC,EAAGC,EAAGR,EAAG2B,EAAGC,EAAG,CAClC,OAAOH,GAAOnB,EAAIC,EAAI,CAACD,EAAIE,EAAGH,EAAGC,EAAGN,EAAG2B,EAAGC,CAAC,CAC7C,CAEA,SAASd,GAAMT,EAAGC,EAAGC,EAAGC,EAAGR,EAAG2B,EAAGC,EAAG,CAClC,OAAOH,GAAOnB,EAAIE,EAAID,EAAI,CAACC,EAAGH,EAAGC,EAAGN,EAAG2B,EAAGC,CAAC,CAC7C,CAEA,SAASb,GAAMV,EAAGC,EAAGC,EAAGC,EAAGR,EAAG2B,EAAGC,EAAG,CAClC,OAAOH,GAAOnB,EAAIC,EAAIC,EAAGH,EAAGC,EAAGN,EAAG2B,EAAGC,CAAC,CACxC,CAEA,SAASZ,GAAMX,EAAGC,EAAGC,EAAGC,EAAGR,EAAG2B,EAAGC,EAAG,CAClC,OAAOH,GAAOlB,GAAKD,EAAI,CAACE,GAAIH,EAAGC,EAAGN,EAAG2B,EAAGC,CAAC,CAC3C,CApNA,IAsNOC,GAtNPC,GAAAC,GAAA,KAsNOF,GAAQxC,KCtNf,IAEI2C,GACGC,GAHPC,GAAAC,GAAA,KAAAC,KACAC,KACIL,GAAKM,GAAI,KAAM,GAAMC,EAAG,EACrBN,GAAQD,KCAf,SAASQ,GAAGC,EAASC,EAAKC,EAAQ,CAChCF,EAAUA,GAAW,CAAC,EACtB,IAAIG,EAAOH,EAAQ,SAAWA,EAAQ,KAAOI,IAAK,EAKlD,GAHAD,EAAK,GAAKA,EAAK,GAAK,GAAO,GAC3BA,EAAK,GAAKA,EAAK,GAAK,GAAO,IAEvBF,EAAK,CACPC,EAASA,GAAU,EAEnB,QAAS,EAAI,EAAG,EAAI,GAAI,EAAE,EACxBD,EAAIC,EAAS,GAAKC,EAAK,GAGzB,OAAOF,CACT,CAEA,OAAOI,GAAUF,CAAI,CACvB,CArBA,IAuBOG,GAvBPC,GAAAC,GAAA,KAAAC,KACAC,KAsBOJ,GAAQP,KCrBf,SAASY,GAAEC,EAAGC,EAAGC,EAAGC,EAAG,CACrB,OAAQH,EAAG,CACT,IAAK,GACH,OAAOC,EAAIC,EAAI,CAACD,EAAIE,EAEtB,IAAK,GACH,OAAOF,EAAIC,EAAIC,EAEjB,IAAK,GACH,OAAOF,EAAIC,EAAID,EAAIE,EAAID,EAAIC,EAE7B,IAAK,GACH,OAAOF,EAAIC,EAAIC,CACnB,CACF,CAEA,SAASC,GAAKH,EAAGI,EAAG,CAClB,OAAOJ,GAAKI,EAAIJ,IAAM,GAAKI,CAC7B,CAEA,SAASC,GAAKC,EAAO,CACnB,IAAIC,EAAI,CAAC,WAAY,WAAY,WAAY,UAAU,EACnDC,EAAI,CAAC,WAAY,WAAY,WAAY,UAAY,UAAU,EAEnE,GAAI,OAAOF,GAAU,SAAU,CAC7B,IAAIG,EAAM,SAAS,mBAAmBH,CAAK,CAAC,EAE5CA,EAAQ,CAAC,EAET,QAAS,EAAI,EAAG,EAAIG,EAAI,OAAQ,EAAE,EAChCH,EAAM,KAAKG,EAAI,WAAW,CAAC,CAAC,CAEhC,MAAY,MAAM,QAAQH,CAAK,IAE7BA,EAAQ,MAAM,UAAU,MAAM,KAAKA,CAAK,GAG1CA,EAAM,KAAK,GAAI,EAKf,QAJII,EAAIJ,EAAM,OAAS,EAAI,EACvBK,EAAI,KAAK,KAAKD,EAAI,EAAE,EACpBE,EAAI,IAAI,MAAMD,CAAC,EAEVE,EAAK,EAAGA,EAAKF,EAAG,EAAEE,EAAI,CAG7B,QAFIC,EAAM,IAAI,YAAY,EAAE,EAEnBC,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACxBD,EAAIC,GAAKT,EAAMO,EAAK,GAAKE,EAAI,IAAM,GAAKT,EAAMO,EAAK,GAAKE,EAAI,EAAI,IAAM,GAAKT,EAAMO,EAAK,GAAKE,EAAI,EAAI,IAAM,EAAIT,EAAMO,EAAK,GAAKE,EAAI,EAAI,GAGvIH,EAAEC,GAAMC,CACV,CAEAF,EAAED,EAAI,GAAG,KAAOL,EAAM,OAAS,GAAK,EAAI,KAAK,IAAI,EAAG,EAAE,EACtDM,EAAED,EAAI,GAAG,IAAM,KAAK,MAAMC,EAAED,EAAI,GAAG,GAAG,EACtCC,EAAED,EAAI,GAAG,KAAOL,EAAM,OAAS,GAAK,EAAI,WAExC,QAASU,EAAM,EAAGA,EAAML,EAAG,EAAEK,EAAK,CAGhC,QAFIC,EAAI,IAAI,YAAY,EAAE,EAEjBC,EAAI,EAAGA,EAAI,GAAI,EAAEA,EACxBD,EAAEC,GAAKN,EAAEI,GAAKE,GAGhB,QAASC,EAAK,GAAIA,EAAK,GAAI,EAAEA,EAC3BF,EAAEE,GAAMhB,GAAKc,EAAEE,EAAK,GAAKF,EAAEE,EAAK,GAAKF,EAAEE,EAAK,IAAMF,EAAEE,EAAK,IAAK,CAAC,EASjE,QANIC,EAAIZ,EAAE,GACNa,GAAIb,EAAE,GACNc,GAAId,EAAE,GACNe,EAAIf,EAAE,GACNgB,GAAIhB,EAAE,GAEDiB,GAAM,EAAGA,GAAM,GAAI,EAAEA,GAAK,CACjC,IAAI1B,GAAI,KAAK,MAAM0B,GAAM,EAAE,EACvBC,GAAIvB,GAAKiB,EAAG,CAAC,EAAItB,GAAEC,GAAGsB,GAAGC,GAAGC,CAAC,EAAIC,GAAIjB,EAAER,IAAKkB,EAAEQ,MAAS,EAC3DD,GAAID,EACJA,EAAID,GACJA,GAAInB,GAAKkB,GAAG,EAAE,IAAM,EACpBA,GAAID,EACJA,EAAIM,EACN,CAEAlB,EAAE,GAAKA,EAAE,GAAKY,IAAM,EACpBZ,EAAE,GAAKA,EAAE,GAAKa,KAAM,EACpBb,EAAE,GAAKA,EAAE,GAAKc,KAAM,EACpBd,EAAE,GAAKA,EAAE,GAAKe,IAAM,EACpBf,EAAE,GAAKA,EAAE,GAAKgB,KAAM,CACtB,CAEA,MAAO,CAAChB,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAMA,EAAE,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAMA,EAAE,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAMA,EAAE,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAMA,EAAE,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAMA,EAAE,GAAK,GAAI,CACjW,CA7FA,IA+FOmB,GA/FPC,GAAAC,GAAA,KA+FOF,GAAQtB,KC/Ff,IAEIyB,GACGC,GAHPC,GAAAC,GAAA,KAAAC,KACAC,KACIL,GAAKM,GAAI,KAAM,GAAMC,EAAI,EACtBN,GAAQD,KCHf,IAAOQ,GAAPC,GAAAC,GAAA,KAAOF,GAAQ,yCCEf,SAASG,GAAQC,EAAM,CACrB,GAAI,CAACC,GAASD,CAAI,EAChB,MAAM,UAAU,cAAc,EAGhC,OAAO,SAASA,EAAK,OAAO,GAAI,CAAC,EAAG,EAAE,CACxC,CARA,IAUOE,GAVPC,GAAAC,GAAA,KAAAC,KAUOH,GAAQH,KCVf,IAAAO,GAAA,GAAAC,GAAAD,GAAA,SAAAE,GAAA,UAAAC,GAAA,cAAAC,GAAA,OAAAC,GAAA,OAAAC,GAAA,OAAAC,GAAA,OAAAC,GAAA,aAAAC,GAAA,YAAAC,KAAA,IAAAC,GAAAC,GAAA,KAAAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,KACAC,OCRA,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAMC,GAAO,cAAgB,GAevBC,GAAkB,SAASC,EAAQC,EAAQC,EAAIC,EAAS,CAC5D,GAAG,OAAOH,GAAW,SACnB,MAAM,IAAI,UAAUA,EAAS,mBAAmB,EAGlDG,EAAUA,GAAW,CAAC,EAGtB,IAAMC,EAAU,OAAOD,EAAQ,SAAY,SAAWA,EAAQ,QAAU,EACxE,GAAIC,IAAY,GAAKA,IAAY,EAC/B,MAAM,IAAI,UAAUA,EAAU,iBAAiB,EAGjD,IAAMC,EAAU,CACd,OAAQL,CACV,EAMA,GAJGI,IAAY,IACbC,EAAQ,QAAU,OAGjBJ,EAAQ,CAET,GAAG,OAAOA,GAAW,UAAY,CAAC,MAAM,QAAQA,CAAM,EACpD,MAAM,IAAI,UAAUA,EAAS,sCAAsC,EAErEI,EAAQ,OAASJ,CACnB,CAGA,GAAG,OAAOC,EAAQ,IAAa,CAC7B,IAAMI,EAAY,OAAOH,EAAQ,WAAc,WAAaA,EAAQ,UAAY,UAAW,CAAE,OAAOL,GAAK,CAAG,EAC5GO,EAAQ,GAAKC,EAAUD,EAASF,CAAO,CACzC,MAAWC,IAAY,GAAKF,IAAO,KAE7BC,EAAQ,qBACVE,EAAQ,GAAK,MAGfA,EAAQ,GAAKH,EAGf,OAAOG,CACT,EAEAR,GAAO,QAAUE,KC9DjB,IAAAQ,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAMC,GAAO,cAAgB,GACvBC,GAAkB,KAclBC,GAAgB,SAASC,EAAYC,EAAS,CAClD,GAAG,EAAE,gBAAgBF,IACnB,OAAO,IAAIA,GAAcC,EAAYC,CAAO,EAGzCA,IACHA,EAAU,CAAC,GAGb,KAAK,QAAU,CACb,QAAS,OAAOA,EAAQ,QAAY,IAAcA,EAAQ,QAAU,KACpE,SAAU,OAAOA,EAAQ,SAAa,IAAcA,EAAQ,SAAW,KACvE,UAAW,OAAOA,EAAQ,UAAc,IAAcA,EAAQ,UAAY,UAAW,CAAE,OAAOJ,GAAK,CAAG,EACtG,QAAS,OAAOI,EAAQ,QAAY,IAAcA,EAAQ,QAAU,EACpE,mBAAoB,OAAOA,EAAQ,oBAAuB,UAAYA,EAAQ,mBAAqB,EACrG,EAEA,KAAK,WAAaD,CACpB,EAEAJ,GAAO,QAAUG,GAWjBA,GAAc,UAAU,QAAU,SAASG,EAAQC,EAAQC,EAAIC,EAAU,CACvE,IAAMC,EAAO,KACTC,EAAU,KAGRC,EAAU,MAAM,QAAQN,CAAM,GAAK,OAAOC,GAAW,WAE3D,GAAI,KAAK,QAAQ,UAAY,GAAKK,EAChC,MAAM,IAAI,UAAU,wCAAwC,EAM9D,GAAGA,GAFW,CAACA,GAAWN,GAAU,OAAOA,GAAW,UAAY,OAAOC,GAAW,WAGlFE,EAAWF,EACXI,EAAUL,MACL,CACF,OAAOE,GAAO,aACfC,EAAWD,EAEXA,EAAK,QAGP,IAAMK,EAAc,OAAOJ,GAAa,WAExC,GAAI,CACFE,EAAUT,GAAgBI,EAAQC,EAAQC,EAAI,CAC5C,UAAW,KAAK,QAAQ,UACxB,QAAS,KAAK,QAAQ,QACtB,mBAAoB,KAAK,QAAQ,kBACnC,CAAC,CACH,OAAQM,EAAN,CACA,GAAGD,EACD,OAAOJ,EAASK,CAAG,EAErB,MAAMA,CACR,CAGA,GAAG,CAACD,EACF,OAAOF,CAGX,CAEA,IAAII,EACJ,GAAI,CACFA,EAAU,KAAK,UAAUJ,EAAS,KAAK,QAAQ,QAAQ,CACzD,OAAQG,EAAN,CACA,OAAOL,EAASK,CAAG,CACrB,CAEA,YAAK,WAAWC,EAAS,SAASD,EAAKE,EAAU,CAC/CN,EAAK,eAAeI,EAAKE,EAAUP,CAAQ,CAC7C,CAAC,EAGME,CACT,EASAR,GAAc,UAAU,eAAiB,SAASW,EAAKG,EAAcR,EAAU,CAC7E,GAAGK,EAAK,CACNL,EAASK,CAAG,EACZ,MACF,CAEA,GAAG,CAACG,EAGF,OAAOR,EAAS,EAGlB,IAAIO,EACJ,GAAI,CACFA,EAAW,KAAK,MAAMC,EAAc,KAAK,QAAQ,OAAO,CAC1D,OAAQH,EAAN,CACA,OAAOL,EAASK,CAAG,CACrB,CAEA,GAAGL,EAAS,SAAW,EAIrB,GAAG,MAAM,QAAQO,CAAQ,EAAG,CAG1B,IAAME,EAAU,SAASC,EAAK,CAC5B,OAAO,OAAOA,EAAI,MAAU,GAC9B,EAEMC,EAAa,SAAUD,EAAK,CAChC,MAAO,CAACD,EAAQC,CAAG,CACrB,EAEA,OAAOV,EAAS,KAAMO,EAAS,OAAOE,CAAO,EAAGF,EAAS,OAAOI,CAAU,CAAC,CAE7E,KAGE,QAAOX,EAAS,KAAMO,EAAS,MAAOA,EAAS,MAAM,EAMzDP,EAAS,KAAMO,CAAQ,CACzB,IClKA,IAAAK,GAAAC,GAAA,CAAAC,GAAAC,KAAA,KAAMC,GAAS,CACb,gBAAiB,wCACjB,UACE,oEACF,UAAW,8CACX,yBAA0B,wCAC1B,eAAgB,yBAChB,aAAc,iCACd,iBAAkB,iCAClB,eAAgB,0CAChB,UAAW,gCACX,KAAM,uEACN,QAAS,kCACT,KAAM,uCACR,EAEA,SAASC,GAAQC,EAAMC,EAAK,CAC1B,GAAI,CAACD,EAAM,MAAM,IAAI,MAAMC,CAAG,CAChC,CAEA,SAASC,GAAcC,EAAMC,EAAOC,EAAQ,CAG1C,GAFAN,GAAOK,aAAiB,WAAY,YAAYD,uBAA0B,EAEtEE,IAAW,OACb,GAAI,MAAM,QAAQA,CAAM,EAAG,CACzB,IAAMC,EAAUD,EAAO,KAAK,IAAI,EAC1BJ,EAAM,YAAYE,sCAAyCG,KACjEP,GAAOM,EAAO,SAASD,EAAM,MAAM,EAAGH,CAAG,CAC3C,KAAO,CACL,IAAMA,EAAM,YAAYE,qCAAwCE,IAChEN,GAAOK,EAAM,SAAWC,EAAQJ,CAAG,CACrC,CAEJ,CAEA,SAASM,GAAcH,EAAO,CAC5BL,GAAOS,GAAaJ,CAAK,IAAM,UAAW,qCAAqC,CACjF,CAEA,SAASK,GAAmBC,EAAUC,GAAQ,IAAI,WAAWA,CAAG,EAAGN,EAAQ,CACzE,OAAI,OAAOK,GAAW,aAAYA,EAASA,EAAOL,CAAM,GACxDH,GAAa,SAAUQ,EAAQL,CAAM,EAC9BK,CACT,CAEA,SAASF,GAAcJ,EAAO,CAC5B,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAK,EAAE,MAAM,EAAG,EAAE,CAC1D,CAEAP,GAAO,QAAWe,IACT,CACL,iBAAkBC,EAAM,CAOtB,OANAd,GACEc,IAAS,MAAQA,aAAgB,WACjC,2CACF,EACIA,IAAS,MAAMX,GAAa,OAAQW,EAAM,EAAE,EAExCD,EAAU,iBAAiBC,CAAI,EAAG,CACxC,IAAK,GACH,MAAM,IAAI,MAAMf,GAAO,wBAAwB,CACnD,CACF,EAEA,iBAAkBgB,EAAQ,CACxB,OAAAZ,GAAa,cAAeY,EAAQ,EAAE,EAE/BF,EAAU,iBAAiBE,CAAM,IAAM,CAChD,EAEA,iBAAkBA,EAAQ,CAGxB,OAFAZ,GAAa,cAAeY,EAAQ,EAAE,EAE9BF,EAAU,iBAAiBE,CAAM,EAAG,CAC1C,IAAK,GACH,OAAOA,EACT,IAAK,GACH,MAAM,IAAI,MAAMhB,GAAO,eAAe,CAC1C,CACF,EAEA,mBAAoBgB,EAAQC,EAAO,CAIjC,OAHAb,GAAa,cAAeY,EAAQ,EAAE,EACtCZ,GAAa,QAASa,EAAO,EAAE,EAEvBH,EAAU,mBAAmBE,EAAQC,CAAK,EAAG,CACnD,IAAK,GACH,OAAOD,EACT,IAAK,GACH,MAAM,IAAI,MAAMhB,GAAO,SAAS,CACpC,CACF,EAEA,mBAAoBgB,EAAQC,EAAO,CAIjC,OAHAb,GAAa,cAAeY,EAAQ,EAAE,EACtCZ,GAAa,QAASa,EAAO,EAAE,EAEvBH,EAAU,mBAAmBE,EAAQC,CAAK,EAAG,CACnD,IAAK,GACH,OAAOD,EACT,IAAK,GACH,MAAM,IAAI,MAAMhB,GAAO,SAAS,CACpC,CACF,EAEA,gBAAiBkB,EAAQ,CACvB,OAAAd,GAAa,aAAcc,EAAQ,CAAC,GAAI,EAAE,CAAC,EAEpCJ,EAAU,gBAAgBI,CAAM,IAAM,CAC/C,EAEA,gBAAiBF,EAAQG,EAAa,GAAMP,EAAQ,CAKlD,OAJAR,GAAa,cAAeY,EAAQ,EAAE,EACtCP,GAAaU,CAAU,EACvBP,EAASD,GAAkBC,EAAQO,EAAa,GAAK,EAAE,EAE/CL,EAAU,gBAAgBF,EAAQI,CAAM,EAAG,CACjD,IAAK,GACH,OAAOJ,EACT,IAAK,GACH,MAAM,IAAI,MAAMZ,GAAO,cAAc,EACvC,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,gBAAgB,CAC3C,CACF,EAEA,iBAAkBkB,EAAQC,EAAa,GAAMP,EAAQ,CAKnD,OAJAR,GAAa,aAAcc,EAAQ,CAAC,GAAI,EAAE,CAAC,EAC3CT,GAAaU,CAAU,EACvBP,EAASD,GAAkBC,EAAQO,EAAa,GAAK,EAAE,EAE/CL,EAAU,iBAAiBF,EAAQM,CAAM,EAAG,CAClD,IAAK,GACH,OAAON,EACT,IAAK,GACH,MAAM,IAAI,MAAMZ,GAAO,YAAY,EACrC,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,gBAAgB,CAC3C,CACF,EAEA,gBAAiBkB,EAAQC,EAAa,GAAMP,EAAQ,CAKlD,OAJAR,GAAa,aAAcc,EAAQ,CAAC,GAAI,EAAE,CAAC,EAC3CT,GAAaU,CAAU,EACvBP,EAASD,GAAkBC,EAAQO,EAAa,GAAK,EAAE,EAE/CL,EAAU,gBAAgBF,EAAQM,CAAM,EAAG,CACjD,IAAK,GACH,OAAON,EACT,IAAK,GACH,MAAM,IAAI,MAAMZ,GAAO,YAAY,EACrC,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,eAAe,EACxC,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,gBAAgB,CAC3C,CACF,EAEA,iBAAkBoB,EAASD,EAAa,GAAMP,EAAQ,CACpDX,GAAO,MAAM,QAAQmB,CAAO,EAAG,qCAAqC,EACpEnB,GAAOmB,EAAQ,OAAS,EAAG,2DAA2D,EACtF,QAAWF,KAAUE,EACnBhB,GAAa,aAAcc,EAAQ,CAAC,GAAI,EAAE,CAAC,EAK7C,OAHAT,GAAaU,CAAU,EACvBP,EAASD,GAAkBC,EAAQO,EAAa,GAAK,EAAE,EAE/CL,EAAU,iBAAiBF,EAAQQ,CAAO,EAAG,CACnD,IAAK,GACH,OAAOR,EACT,IAAK,GACH,MAAM,IAAI,MAAMZ,GAAO,YAAY,EACrC,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,cAAc,EACvC,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,gBAAgB,CAC3C,CACF,EAEA,kBAAmBkB,EAAQD,EAAOE,EAAa,GAAMP,EAAQ,CAM3D,OALAR,GAAa,aAAcc,EAAQ,CAAC,GAAI,EAAE,CAAC,EAC3Cd,GAAa,QAASa,EAAO,EAAE,EAC/BR,GAAaU,CAAU,EACvBP,EAASD,GAAkBC,EAAQO,EAAa,GAAK,EAAE,EAE/CL,EAAU,kBAAkBF,EAAQM,EAAQD,CAAK,EAAG,CAC1D,IAAK,GACH,OAAOL,EACT,IAAK,GACH,MAAM,IAAI,MAAMZ,GAAO,YAAY,EACrC,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,SAAS,CACpC,CACF,EAEA,kBAAmBkB,EAAQD,EAAOE,EAAa,GAAMP,EAAQ,CAM3D,OALAR,GAAa,aAAcc,EAAQ,CAAC,GAAI,EAAE,CAAC,EAC3Cd,GAAa,QAASa,EAAO,EAAE,EAC/BR,GAAaU,CAAU,EACvBP,EAASD,GAAkBC,EAAQO,EAAa,GAAK,EAAE,EAE/CL,EAAU,kBAAkBF,EAAQM,EAAQD,CAAK,EAAG,CAC1D,IAAK,GACH,OAAOL,EACT,IAAK,GACH,MAAM,IAAI,MAAMZ,GAAO,YAAY,EACrC,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,SAAS,CACpC,CACF,EAEA,mBAAoBqB,EAAK,CAGvB,OAFAjB,GAAa,YAAaiB,EAAK,EAAE,EAEzBP,EAAU,mBAAmBO,CAAG,EAAG,CACzC,IAAK,GACH,OAAOA,EACT,IAAK,GACH,MAAM,IAAI,MAAMrB,GAAO,SAAS,CACpC,CACF,EAEA,gBAAiBqB,EAAKT,EAAQ,CAC5BR,GAAa,YAAaiB,EAAK,EAAE,EACjCT,EAASD,GAAkBC,EAAQ,EAAE,EAErC,IAAMU,EAAM,CAAE,OAAAV,EAAQ,UAAW,EAAG,EACpC,OAAQE,EAAU,gBAAgBQ,EAAKD,CAAG,EAAG,CAC3C,IAAK,GACH,OAAOT,EAAO,MAAM,EAAGU,EAAI,SAAS,EACtC,IAAK,GACH,MAAM,IAAI,MAAMtB,GAAO,SAAS,EAClC,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,eAAe,CAC1C,CACF,EAEA,gBAAiBqB,EAAKT,EAAQ,CAI5B,OAHAR,GAAa,YAAaiB,CAAG,EAC7BT,EAASD,GAAkBC,EAAQ,EAAE,EAE7BE,EAAU,gBAAgBF,EAAQS,CAAG,EAAG,CAC9C,IAAK,GACH,OAAOT,EACT,IAAK,GACH,MAAM,IAAI,MAAMZ,GAAO,SAAS,EAClC,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,eAAe,CAC1C,CACF,EAEA,UAAWuB,EAAOP,EAAQQ,EAAU,CAAC,EAAGZ,EAAQ,CAC9CR,GAAa,UAAWmB,EAAO,EAAE,EACjCnB,GAAa,cAAeY,EAAQ,EAAE,EACtCf,GAAOS,GAAac,CAAO,IAAM,SAAU,kCAAkC,EACzEA,EAAQ,OAAS,QAAWpB,GAAa,eAAgBoB,EAAQ,IAAI,EACrEA,EAAQ,UAAY,QAAWvB,GAAOS,GAAac,EAAQ,OAAO,IAAM,WAAY,2CAA2C,EACnIZ,EAASD,GAAkBC,EAAQ,EAAE,EAErC,IAAMU,EAAM,CAAE,UAAWV,EAAQ,MAAO,IAAK,EAC7C,OAAQE,EAAU,UAAUQ,EAAKC,EAAOP,EAAQQ,EAAQ,KAAMA,EAAQ,OAAO,EAAG,CAC9E,IAAK,GACH,OAAOF,EACT,IAAK,GACH,MAAM,IAAI,MAAMtB,GAAO,IAAI,EAC7B,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,eAAe,CAC1C,CACF,EAEA,YAAaqB,EAAKE,EAAOL,EAAQ,CAK/B,OAJAd,GAAa,YAAaiB,EAAK,EAAE,EACjCjB,GAAa,UAAWmB,EAAO,EAAE,EACjCnB,GAAa,aAAcc,EAAQ,CAAC,GAAI,EAAE,CAAC,EAEnCJ,EAAU,YAAYO,EAAKE,EAAOL,CAAM,EAAG,CACjD,IAAK,GACH,MAAO,GACT,IAAK,GACH,MAAO,GACT,IAAK,GACH,MAAM,IAAI,MAAMlB,GAAO,SAAS,EAClC,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,YAAY,CACvC,CACF,EAEA,aAAcqB,EAAKI,EAAOF,EAAOJ,EAAa,GAAMP,EAAQ,CAY1D,OAXAR,GAAa,YAAaiB,EAAK,EAAE,EACjCpB,GACES,GAAae,CAAK,IAAM,UACtBA,GAAS,GACTA,GAAS,EACX,4DACF,EACArB,GAAa,UAAWmB,EAAO,EAAE,EACjCd,GAAaU,CAAU,EACvBP,EAASD,GAAkBC,EAAQO,EAAa,GAAK,EAAE,EAE/CL,EAAU,aAAaF,EAAQS,EAAKI,EAAOF,CAAK,EAAG,CACzD,IAAK,GACH,OAAOX,EACT,IAAK,GACH,MAAM,IAAI,MAAMZ,GAAO,SAAS,EAClC,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,OAAO,EAChC,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,eAAe,CAC1C,CACF,EAEA,KAAMkB,EAAQF,EAAQQ,EAAU,CAAC,EAAGZ,EAAQ,CAc1C,OAbAR,GAAa,aAAcc,EAAQ,CAAC,GAAI,EAAE,CAAC,EAC3Cd,GAAa,cAAeY,EAAQ,EAAE,EACtCf,GAAOS,GAAac,CAAO,IAAM,SAAU,kCAAkC,EACzEA,EAAQ,OAAS,QAAWpB,GAAa,eAAgBoB,EAAQ,IAAI,EACrEA,EAAQ,SAAW,QACrBvB,GAAOS,GAAac,EAAQ,MAAM,IAAM,WAAY,0CAA0C,EAC1FA,EAAQ,OAAS,QAAWpB,GAAa,eAAgBoB,EAAQ,KAAM,EAAE,EACzEA,EAAQ,OAAS,QAAWpB,GAAa,eAAgBoB,EAAQ,KAAM,EAAE,EAC7EpB,GAAa,SAAUQ,CAAM,GAE7BA,EAASD,GAAkBC,EAAQ,EAAE,EAG/BE,EAAU,KAAKF,EAAQM,EAAQF,EAAQQ,EAAQ,KAAMA,EAAQ,OAAQA,EAAQ,KAAMA,EAAQ,IAAI,EAAG,CACxG,IAAK,GACH,OAAOZ,EACT,IAAK,GACH,MAAM,IAAI,MAAMZ,GAAO,YAAY,EACrC,IAAK,GACH,MAAM,IAAI,MAAMA,GAAO,IAAI,CAC/B,CACF,CACF,ilCC9UF,IAAA0B,GAAAC,GAAA,CAAAC,GAAAC,KAAA,EAAC,SAAUA,EAAQD,EAAS,CAC1B,aAGA,SAASE,EAAQC,EAAKC,EAAK,CACzB,GAAI,CAACD,EAAK,MAAM,IAAI,MAAMC,GAAO,kBAAkB,CACrD,CAIA,SAASC,EAAUC,EAAMC,EAAW,CAClCD,EAAK,OAASC,EACd,IAAIC,EAAW,UAAY,CAAC,EAC5BA,EAAS,UAAYD,EAAU,UAC/BD,EAAK,UAAY,IAAIE,EACrBF,EAAK,UAAU,YAAcA,CAC/B,CAIA,SAASG,EAAIC,EAAQC,EAAMC,EAAQ,CACjC,GAAIH,EAAG,KAAKC,CAAM,EAChB,OAAOA,EAGT,KAAK,SAAW,EAChB,KAAK,MAAQ,KACb,KAAK,OAAS,EAGd,KAAK,IAAM,KAEPA,IAAW,QACTC,IAAS,MAAQA,IAAS,QAC5BC,EAASD,EACTA,EAAO,IAGT,KAAK,MAAMD,GAAU,EAAGC,GAAQ,GAAIC,GAAU,IAAI,EAEtD,CACI,OAAOX,GAAW,SACpBA,EAAO,QAAUQ,EAEjBT,EAAQ,GAAKS,EAGfA,EAAG,GAAKA,EACRA,EAAG,SAAW,GAEd,IAAII,EACJ,GAAI,CACE,OAAO,OAAW,KAAe,OAAO,OAAO,OAAW,IAC5DA,EAAS,OAAO,OAEhBA,EAAS,KAAkB,MAE/B,MAAE,CACF,CAEAJ,EAAG,KAAO,SAAeK,EAAK,CAC5B,OAAIA,aAAeL,EACV,GAGFK,IAAQ,MAAQ,OAAOA,GAAQ,UACpCA,EAAI,YAAY,WAAaL,EAAG,UAAY,MAAM,QAAQK,EAAI,KAAK,CACvE,EAEAL,EAAG,IAAM,SAAcM,EAAMC,EAAO,CAClC,OAAID,EAAK,IAAIC,CAAK,EAAI,EAAUD,EACzBC,CACT,EAEAP,EAAG,IAAM,SAAcM,EAAMC,EAAO,CAClC,OAAID,EAAK,IAAIC,CAAK,EAAI,EAAUD,EACzBC,CACT,EAEAP,EAAG,UAAU,MAAQ,SAAeC,EAAQC,EAAMC,EAAQ,CACxD,GAAI,OAAOF,GAAW,SACpB,OAAO,KAAK,YAAYA,EAAQC,EAAMC,CAAM,EAG9C,GAAI,OAAOF,GAAW,SACpB,OAAO,KAAK,WAAWA,EAAQC,EAAMC,CAAM,EAGzCD,IAAS,QACXA,EAAO,IAETT,EAAOS,KAAUA,EAAO,IAAMA,GAAQ,GAAKA,GAAQ,EAAE,EAErDD,EAASA,EAAO,SAAS,EAAE,QAAQ,OAAQ,EAAE,EAC7C,IAAIO,EAAQ,EACRP,EAAO,KAAO,MAChBO,IACA,KAAK,SAAW,GAGdA,EAAQP,EAAO,SACbC,IAAS,GACX,KAAK,UAAUD,EAAQO,EAAOL,CAAM,GAEpC,KAAK,WAAWF,EAAQC,EAAMM,CAAK,EAC/BL,IAAW,MACb,KAAK,WAAW,KAAK,QAAQ,EAAGD,EAAMC,CAAM,GAIpD,EAEAH,EAAG,UAAU,YAAc,SAAsBC,EAAQC,EAAMC,EAAQ,CACjEF,EAAS,IACX,KAAK,SAAW,EAChBA,EAAS,CAACA,GAERA,EAAS,UACX,KAAK,MAAQ,CAAEA,EAAS,QAAU,EAClC,KAAK,OAAS,GACLA,EAAS,kBAClB,KAAK,MAAQ,CACXA,EAAS,SACRA,EAAS,SAAa,QACzB,EACA,KAAK,OAAS,IAEdR,EAAOQ,EAAS,gBAAgB,EAChC,KAAK,MAAQ,CACXA,EAAS,SACRA,EAAS,SAAa,SACvB,CACF,EACA,KAAK,OAAS,GAGZE,IAAW,MAGf,KAAK,WAAW,KAAK,QAAQ,EAAGD,EAAMC,CAAM,CAC9C,EAEAH,EAAG,UAAU,WAAa,SAAqBC,EAAQC,EAAMC,EAAQ,CAGnE,GADAV,EAAO,OAAOQ,EAAO,QAAW,QAAQ,EACpCA,EAAO,QAAU,EACnB,YAAK,MAAQ,CAAE,CAAE,EACjB,KAAK,OAAS,EACP,KAGT,KAAK,OAAS,KAAK,KAAKA,EAAO,OAAS,CAAC,EACzC,KAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASQ,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/B,KAAK,MAAMA,GAAK,EAGlB,IAAIC,EAAGC,EACHC,EAAM,EACV,GAAIT,IAAW,KACb,IAAKM,EAAIR,EAAO,OAAS,EAAGS,EAAI,EAAGD,GAAK,EAAGA,GAAK,EAC9CE,EAAIV,EAAOQ,GAAMR,EAAOQ,EAAI,IAAM,EAAMR,EAAOQ,EAAI,IAAM,GACzD,KAAK,MAAMC,IAAOC,GAAKC,EAAO,SAC9B,KAAK,MAAMF,EAAI,GAAMC,IAAO,GAAKC,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPF,aAGKP,IAAW,KACpB,IAAKM,EAAI,EAAGC,EAAI,EAAGD,EAAIR,EAAO,OAAQQ,GAAK,EACzCE,EAAIV,EAAOQ,GAAMR,EAAOQ,EAAI,IAAM,EAAMR,EAAOQ,EAAI,IAAM,GACzD,KAAK,MAAMC,IAAOC,GAAKC,EAAO,SAC9B,KAAK,MAAMF,EAAI,GAAMC,IAAO,GAAKC,EAAQ,SACzCA,GAAO,GACHA,GAAO,KACTA,GAAO,GACPF,KAIN,OAAO,KAAK,MAAM,CACpB,EAEA,SAASG,EAAeC,EAAQC,EAAO,CACrC,IAAIC,EAAIF,EAAO,WAAWC,CAAK,EAE/B,OAAIC,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,GAGHA,EAAI,GAAM,EAEtB,CAEA,SAASC,EAAcH,EAAQI,EAAYH,EAAO,CAChD,IAAII,EAAIN,EAAcC,EAAQC,CAAK,EACnC,OAAIA,EAAQ,GAAKG,IACfC,GAAKN,EAAcC,EAAQC,EAAQ,CAAC,GAAK,GAEpCI,CACT,CAEAnB,EAAG,UAAU,UAAY,SAAoBC,EAAQO,EAAOL,EAAQ,CAElE,KAAK,OAAS,KAAK,MAAMF,EAAO,OAASO,GAAS,CAAC,EACnD,KAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASC,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/B,KAAK,MAAMA,GAAK,EAIlB,IAAIG,EAAM,EACNF,EAAI,EAEJC,EACJ,GAAIR,IAAW,KACb,IAAKM,EAAIR,EAAO,OAAS,EAAGQ,GAAKD,EAAOC,GAAK,EAC3CE,EAAIM,EAAahB,EAAQO,EAAOC,CAAC,GAAKG,EACtC,KAAK,MAAMF,IAAMC,EAAI,SACjBC,GAAO,IACTA,GAAO,GACPF,GAAK,EACL,KAAK,MAAMA,IAAMC,IAAM,IAEvBC,GAAO,MAGN,CACL,IAAIQ,EAAcnB,EAAO,OAASO,EAClC,IAAKC,EAAIW,EAAc,IAAM,EAAIZ,EAAQ,EAAIA,EAAOC,EAAIR,EAAO,OAAQQ,GAAK,EAC1EE,EAAIM,EAAahB,EAAQO,EAAOC,CAAC,GAAKG,EACtC,KAAK,MAAMF,IAAMC,EAAI,SACjBC,GAAO,IACTA,GAAO,GACPF,GAAK,EACL,KAAK,MAAMA,IAAMC,IAAM,IAEvBC,GAAO,CAGb,CAEA,KAAK,MAAM,CACb,EAEA,SAASS,EAAWC,EAAKd,EAAOe,EAAKC,EAAK,CAGxC,QAFIL,EAAI,EACJM,EAAM,KAAK,IAAIH,EAAI,OAAQC,CAAG,EACzBd,EAAID,EAAOC,EAAIgB,EAAKhB,IAAK,CAChC,IAAIO,EAAIM,EAAI,WAAWb,CAAC,EAAI,GAE5BU,GAAKK,EAGDR,GAAK,GACPG,GAAKH,EAAI,GAAK,GAGLA,GAAK,GACdG,GAAKH,EAAI,GAAK,GAIdG,GAAKH,CAET,CACA,OAAOG,CACT,CAEAnB,EAAG,UAAU,WAAa,SAAqBC,EAAQC,EAAMM,EAAO,CAElE,KAAK,MAAQ,CAAE,CAAE,EACjB,KAAK,OAAS,EAGd,QAASkB,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWzB,EAClEwB,IAEFA,IACAC,EAAWA,EAAUzB,EAAQ,EAO7B,QALI0B,EAAQ3B,EAAO,OAASO,EACxBqB,EAAMD,EAAQF,EACdH,EAAM,KAAK,IAAIK,EAAOA,EAAQC,CAAG,EAAIrB,EAErCsB,EAAO,EACFrB,EAAID,EAAOC,EAAIc,EAAKd,GAAKiB,EAChCI,EAAOT,EAAUpB,EAAQQ,EAAGA,EAAIiB,EAASxB,CAAI,EAE7C,KAAK,MAAMyB,CAAO,EACd,KAAK,MAAM,GAAKG,EAAO,SACzB,KAAK,MAAM,IAAMA,EAEjB,KAAK,OAAOA,CAAI,EAIpB,GAAID,IAAQ,EAAG,CACb,IAAIE,EAAM,EAGV,IAFAD,EAAOT,EAAUpB,EAAQQ,EAAGR,EAAO,OAAQC,CAAI,EAE1CO,EAAI,EAAGA,EAAIoB,EAAKpB,IACnBsB,GAAO7B,EAGT,KAAK,MAAM6B,CAAG,EACV,KAAK,MAAM,GAAKD,EAAO,SACzB,KAAK,MAAM,IAAMA,EAEjB,KAAK,OAAOA,CAAI,CAEpB,CAEA,KAAK,MAAM,CACb,EAEA9B,EAAG,UAAU,KAAO,SAAegC,EAAM,CACvCA,EAAK,MAAQ,IAAI,MAAM,KAAK,MAAM,EAClC,QAASvB,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC/BuB,EAAK,MAAMvB,GAAK,KAAK,MAAMA,GAE7BuB,EAAK,OAAS,KAAK,OACnBA,EAAK,SAAW,KAAK,SACrBA,EAAK,IAAM,KAAK,GAClB,EAEAhC,EAAG,UAAU,MAAQ,UAAkB,CACrC,IAAImB,EAAI,IAAInB,EAAG,IAAI,EACnB,YAAK,KAAKmB,CAAC,EACJA,CACT,EAEAnB,EAAG,UAAU,QAAU,SAAkBiC,EAAM,CAC7C,KAAO,KAAK,OAASA,GACnB,KAAK,MAAM,KAAK,UAAY,EAE9B,OAAO,IACT,EAGAjC,EAAG,UAAU,MAAQ,UAAkB,CACrC,KAAO,KAAK,OAAS,GAAK,KAAK,MAAM,KAAK,OAAS,KAAO,GACxD,KAAK,SAEP,OAAO,KAAK,UAAU,CACxB,EAEAA,EAAG,UAAU,UAAY,UAAsB,CAE7C,OAAI,KAAK,SAAW,GAAK,KAAK,MAAM,KAAO,IACzC,KAAK,SAAW,GAEX,IACT,EAEAA,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAQ,KAAK,IAAM,UAAY,SAAW,KAAK,SAAS,EAAE,EAAI,GAChE,EAgCA,IAAIkC,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,2BACF,EAEIC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CACpB,EAEIC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,QAC9D,EAEApC,EAAG,UAAU,SAAW,SAAmBE,EAAMmC,EAAS,CACxDnC,EAAOA,GAAQ,GACfmC,EAAUA,EAAU,GAAK,EAEzB,IAAIC,EACJ,GAAIpC,IAAS,IAAMA,IAAS,MAAO,CACjCoC,EAAM,GAGN,QAFI1B,EAAM,EACN2B,EAAQ,EACH9B,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAIE,EAAI,KAAK,MAAMF,GACfqB,IAAUnB,GAAKC,EAAO2B,GAAS,UAAU,SAAS,EAAE,EACxDA,EAAS5B,IAAO,GAAKC,EAAQ,SACzB2B,IAAU,GAAK9B,IAAM,KAAK,OAAS,EACrC6B,EAAMJ,EAAM,EAAIJ,EAAK,QAAUA,EAAOQ,EAEtCA,EAAMR,EAAOQ,EAEf1B,GAAO,EACHA,GAAO,KACTA,GAAO,GACPH,IAEJ,CAIA,IAHI8B,IAAU,IACZD,EAAMC,EAAM,SAAS,EAAE,EAAID,GAEtBA,EAAI,OAASD,IAAY,GAC9BC,EAAM,IAAMA,EAEd,OAAI,KAAK,WAAa,IACpBA,EAAM,IAAMA,GAEPA,CACT,CAEA,GAAIpC,KAAUA,EAAO,IAAMA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAIsC,EAAYL,EAAWjC,GAEvBuC,EAAYL,EAAWlC,GAC3BoC,EAAM,GACN,IAAItB,EAAI,KAAK,MAAM,EAEnB,IADAA,EAAE,SAAW,EACN,CAACA,EAAE,OAAO,GAAG,CAClB,IAAIG,EAAIH,EAAE,KAAKyB,CAAS,EAAE,SAASvC,CAAI,EACvCc,EAAIA,EAAE,MAAMyB,CAAS,EAEhBzB,EAAE,OAAO,EAGZsB,EAAMnB,EAAImB,EAFVA,EAAMJ,EAAMM,EAAYrB,EAAE,QAAUA,EAAImB,CAI5C,CAIA,IAHI,KAAK,OAAO,IACdA,EAAM,IAAMA,GAEPA,EAAI,OAASD,IAAY,GAC9BC,EAAM,IAAMA,EAEd,OAAI,KAAK,WAAa,IACpBA,EAAM,IAAMA,GAEPA,CACT,CAEA7C,EAAO,GAAO,iCAAiC,CACjD,EAEAO,EAAG,UAAU,SAAW,UAAqB,CAC3C,IAAI0C,EAAM,KAAK,MAAM,GACrB,OAAI,KAAK,SAAW,EAClBA,GAAO,KAAK,MAAM,GAAK,SACd,KAAK,SAAW,GAAK,KAAK,MAAM,KAAO,EAEhDA,GAAO,iBAAoB,KAAK,MAAM,GAAK,SAClC,KAAK,OAAS,GACvBjD,EAAO,GAAO,4CAA4C,EAEpD,KAAK,WAAa,EAAK,CAACiD,EAAMA,CACxC,EAEA1C,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAO,KAAK,SAAS,EAAE,CACzB,EAEAA,EAAG,UAAU,SAAW,SAAmBG,EAAQwC,EAAQ,CACzD,OAAAlD,EAAO,OAAOW,EAAW,GAAW,EAC7B,KAAK,YAAYA,EAAQD,EAAQwC,CAAM,CAChD,EAEA3C,EAAG,UAAU,QAAU,SAAkBG,EAAQwC,EAAQ,CACvD,OAAO,KAAK,YAAY,MAAOxC,EAAQwC,CAAM,CAC/C,EAEA3C,EAAG,UAAU,YAAc,SAAsB4C,EAAWzC,EAAQwC,EAAQ,CAC1E,IAAIE,EAAa,KAAK,WAAW,EAC7BC,EAAYH,GAAU,KAAK,IAAI,EAAGE,CAAU,EAChDpD,EAAOoD,GAAcC,EAAW,uCAAuC,EACvErD,EAAOqD,EAAY,EAAG,6BAA6B,EAEnD,KAAK,MAAM,EACX,IAAIC,EAAe5C,IAAW,KAC1B6C,EAAM,IAAIJ,EAAUE,CAAS,EAE7BG,EAAGxC,EACHyC,EAAI,KAAK,MAAM,EACnB,GAAKH,EAYE,CACL,IAAKtC,EAAI,EAAG,CAACyC,EAAE,OAAO,EAAGzC,IACvBwC,EAAIC,EAAE,MAAM,GAAI,EAChBA,EAAE,OAAO,CAAC,EAEVF,EAAIvC,GAAKwC,EAGX,KAAOxC,EAAIqC,EAAWrC,IACpBuC,EAAIvC,GAAK,CAEb,KAvBmB,CAEjB,IAAKA,EAAI,EAAGA,EAAIqC,EAAYD,EAAYpC,IACtCuC,EAAIvC,GAAK,EAGX,IAAKA,EAAI,EAAG,CAACyC,EAAE,OAAO,EAAGzC,IACvBwC,EAAIC,EAAE,MAAM,GAAI,EAChBA,EAAE,OAAO,CAAC,EAEVF,EAAIF,EAAYrC,EAAI,GAAKwC,CAE7B,CAaA,OAAOD,CACT,EAEI,KAAK,MACPhD,EAAG,UAAU,WAAa,SAAqBW,EAAG,CAChD,MAAO,IAAK,KAAK,MAAMA,CAAC,CAC1B,EAEAX,EAAG,UAAU,WAAa,SAAqBW,EAAG,CAChD,IAAIwC,EAAIxC,EACJQ,EAAI,EACR,OAAIgC,GAAK,OACPhC,GAAK,GACLgC,KAAO,IAELA,GAAK,KACPhC,GAAK,EACLgC,KAAO,GAELA,GAAK,IACPhC,GAAK,EACLgC,KAAO,GAELA,GAAK,IACPhC,GAAK,EACLgC,KAAO,GAEFhC,EAAIgC,CACb,EAGFnD,EAAG,UAAU,UAAY,SAAoBW,EAAG,CAE9C,GAAIA,IAAM,EAAG,MAAO,IAEpB,IAAIwC,EAAIxC,EACJQ,EAAI,EACR,OAAKgC,EAAI,QAAY,IACnBhC,GAAK,GACLgC,KAAO,KAEJA,EAAI,OAAU,IACjBhC,GAAK,EACLgC,KAAO,IAEJA,EAAI,MAAS,IAChBhC,GAAK,EACLgC,KAAO,IAEJA,EAAI,KAAS,IAChBhC,GAAK,EACLgC,KAAO,IAEJA,EAAI,KAAS,GAChBhC,IAEKA,CACT,EAGAnB,EAAG,UAAU,UAAY,UAAsB,CAC7C,IAAIW,EAAI,KAAK,MAAM,KAAK,OAAS,GAC7ByC,EAAK,KAAK,WAAWzC,CAAC,EAC1B,OAAQ,KAAK,OAAS,GAAK,GAAKyC,CAClC,EAEA,SAASC,EAAYhD,EAAK,CAGxB,QAFIM,EAAI,IAAI,MAAMN,EAAI,UAAU,CAAC,EAExBiD,EAAM,EAAGA,EAAM3C,EAAE,OAAQ2C,IAAO,CACvC,IAAI1C,EAAO0C,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjB3C,EAAE2C,IAAQjD,EAAI,MAAMO,GAAQ,GAAK2C,KAAWA,CAC9C,CAEA,OAAO5C,CACT,CAGAX,EAAG,UAAU,SAAW,UAAqB,CAC3C,GAAI,KAAK,OAAO,EAAG,MAAO,GAG1B,QADImB,EAAI,EACCV,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAIwC,EAAI,KAAK,UAAU,KAAK,MAAMxC,EAAE,EAEpC,GADAU,GAAK8B,EACDA,IAAM,GAAI,KAChB,CACA,OAAO9B,CACT,EAEAnB,EAAG,UAAU,WAAa,UAAuB,CAC/C,OAAO,KAAK,KAAK,KAAK,UAAU,EAAI,CAAC,CACvC,EAEAA,EAAG,UAAU,OAAS,SAAiBwD,EAAO,CAC5C,OAAI,KAAK,WAAa,EACb,KAAK,IAAI,EAAE,MAAMA,CAAK,EAAE,MAAM,CAAC,EAEjC,KAAK,MAAM,CACpB,EAEAxD,EAAG,UAAU,SAAW,SAAmBwD,EAAO,CAChD,OAAI,KAAK,MAAMA,EAAQ,CAAC,EACf,KAAK,KAAKA,CAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAEjC,KAAK,MAAM,CACpB,EAEAxD,EAAG,UAAU,MAAQ,UAAkB,CACrC,OAAO,KAAK,WAAa,CAC3B,EAGAA,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,MAAM,EAAE,KAAK,CAC3B,EAEAA,EAAG,UAAU,KAAO,UAAiB,CACnC,OAAK,KAAK,OAAO,IACf,KAAK,UAAY,GAGZ,IACT,EAGAA,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,KAAO,KAAK,OAASA,EAAI,QACvB,KAAK,MAAM,KAAK,UAAY,EAG9B,QAASI,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAC9B,KAAK,MAAMA,GAAK,KAAK,MAAMA,GAAKJ,EAAI,MAAMI,GAG5C,OAAO,KAAK,MAAM,CACpB,EAEAT,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,KAAKA,CAAG,CACtB,EAGAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,IAAIA,CAAG,EAClDA,EAAI,MAAM,EAAE,IAAI,IAAI,CAC7B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAGAL,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAExC,IAAI,EACA,KAAK,OAASA,EAAI,OACpB,EAAIA,EAEJ,EAAI,KAGN,QAASI,EAAI,EAAGA,EAAI,EAAE,OAAQA,IAC5B,KAAK,MAAMA,GAAK,KAAK,MAAMA,GAAKJ,EAAI,MAAMI,GAG5C,YAAK,OAAS,EAAE,OAET,KAAK,MAAM,CACpB,EAEAT,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,MAAMA,CAAG,CACvB,EAGAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,MAAMA,CAAG,EACpDA,EAAI,MAAM,EAAE,MAAM,IAAI,CAC/B,EAGAL,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAExC,IAAIoD,EACAR,EACA,KAAK,OAAS5C,EAAI,QACpBoD,EAAI,KACJR,EAAI5C,IAEJoD,EAAIpD,EACJ4C,EAAI,MAGN,QAASxC,EAAI,EAAGA,EAAIwC,EAAE,OAAQxC,IAC5B,KAAK,MAAMA,GAAKgD,EAAE,MAAMhD,GAAKwC,EAAE,MAAMxC,GAGvC,GAAI,OAASgD,EACX,KAAOhD,EAAIgD,EAAE,OAAQhD,IACnB,KAAK,MAAMA,GAAKgD,EAAE,MAAMhD,GAI5B,YAAK,OAASgD,EAAE,OAET,KAAK,MAAM,CACpB,EAEAzD,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAAZ,GAAQ,KAAK,SAAWY,EAAI,YAAc,CAAC,EACpC,KAAK,MAAMA,CAAG,CACvB,EAGAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EACnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAI,KAAK,OAASA,EAAI,OAAe,KAAK,MAAM,EAAE,MAAMA,CAAG,EACpDA,EAAI,MAAM,EAAE,MAAM,IAAI,CAC/B,EAGAL,EAAG,UAAU,MAAQ,SAAgBwD,EAAO,CAC1C/D,EAAO,OAAO+D,GAAU,UAAYA,GAAS,CAAC,EAE9C,IAAIE,EAAc,KAAK,KAAKF,EAAQ,EAAE,EAAI,EACtCG,EAAWH,EAAQ,GAGvB,KAAK,QAAQE,CAAW,EAEpBC,EAAW,GACbD,IAIF,QAASjD,EAAI,EAAGA,EAAIiD,EAAajD,IAC/B,KAAK,MAAMA,GAAK,CAAC,KAAK,MAAMA,GAAK,SAInC,OAAIkD,EAAW,IACb,KAAK,MAAMlD,GAAK,CAAC,KAAK,MAAMA,GAAM,UAAc,GAAKkD,GAIhD,KAAK,MAAM,CACpB,EAEA3D,EAAG,UAAU,KAAO,SAAewD,EAAO,CACxC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAK,CACjC,EAGAxD,EAAG,UAAU,KAAO,SAAesD,EAAK5D,EAAK,CAC3CD,EAAO,OAAO6D,GAAQ,UAAYA,GAAO,CAAC,EAE1C,IAAI1C,EAAO0C,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjB,YAAK,QAAQ1C,EAAM,CAAC,EAEhBlB,EACF,KAAK,MAAMkB,GAAO,KAAK,MAAMA,GAAQ,GAAK2C,EAE1C,KAAK,MAAM3C,GAAO,KAAK,MAAMA,GAAO,EAAE,GAAK2C,GAGtC,KAAK,MAAM,CACpB,EAGAvD,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,IAAIc,EAGJ,GAAI,KAAK,WAAa,GAAKd,EAAI,WAAa,EAC1C,YAAK,SAAW,EAChBc,EAAI,KAAK,KAAKd,CAAG,EACjB,KAAK,UAAY,EACV,KAAK,UAAU,EAGjB,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EACjD,OAAAA,EAAI,SAAW,EACfc,EAAI,KAAK,KAAKd,CAAG,EACjBA,EAAI,SAAW,EACRc,EAAE,UAAU,EAIrB,IAAIsC,EAAGR,EACH,KAAK,OAAS5C,EAAI,QACpBoD,EAAI,KACJR,EAAI5C,IAEJoD,EAAIpD,EACJ4C,EAAI,MAIN,QADIV,EAAQ,EACH9B,EAAI,EAAGA,EAAIwC,EAAE,OAAQxC,IAC5BU,GAAKsC,EAAE,MAAMhD,GAAK,IAAMwC,EAAE,MAAMxC,GAAK,GAAK8B,EAC1C,KAAK,MAAM9B,GAAKU,EAAI,SACpBoB,EAAQpB,IAAM,GAEhB,KAAOoB,IAAU,GAAK9B,EAAIgD,EAAE,OAAQhD,IAClCU,GAAKsC,EAAE,MAAMhD,GAAK,GAAK8B,EACvB,KAAK,MAAM9B,GAAKU,EAAI,SACpBoB,EAAQpB,IAAM,GAIhB,GADA,KAAK,OAASsC,EAAE,OACZlB,IAAU,EACZ,KAAK,MAAM,KAAK,QAAUA,EAC1B,KAAK,iBAEIkB,IAAM,KACf,KAAOhD,EAAIgD,EAAE,OAAQhD,IACnB,KAAK,MAAMA,GAAKgD,EAAE,MAAMhD,GAI5B,OAAO,IACT,EAGAT,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,IAAI2C,EACJ,OAAI3C,EAAI,WAAa,GAAK,KAAK,WAAa,GAC1CA,EAAI,SAAW,EACf2C,EAAM,KAAK,IAAI3C,CAAG,EAClBA,EAAI,UAAY,EACT2C,GACE3C,EAAI,WAAa,GAAK,KAAK,WAAa,GACjD,KAAK,SAAW,EAChB2C,EAAM3C,EAAI,IAAI,IAAI,EAClB,KAAK,SAAW,EACT2C,GAGL,KAAK,OAAS3C,EAAI,OAAe,KAAK,MAAM,EAAE,KAAKA,CAAG,EAEnDA,EAAI,MAAM,EAAE,KAAK,IAAI,CAC9B,EAGAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CAEtC,GAAIA,EAAI,WAAa,EAAG,CACtBA,EAAI,SAAW,EACf,IAAIc,EAAI,KAAK,KAAKd,CAAG,EACrB,OAAAA,EAAI,SAAW,EACRc,EAAE,UAAU,CAGrB,SAAW,KAAK,WAAa,EAC3B,YAAK,SAAW,EAChB,KAAK,KAAKd,CAAG,EACb,KAAK,SAAW,EACT,KAAK,UAAU,EAIxB,IAAIuD,EAAM,KAAK,IAAIvD,CAAG,EAGtB,GAAIuD,IAAQ,EACV,YAAK,SAAW,EAChB,KAAK,OAAS,EACd,KAAK,MAAM,GAAK,EACT,KAIT,IAAIH,EAAGR,EACHW,EAAM,GACRH,EAAI,KACJR,EAAI5C,IAEJoD,EAAIpD,EACJ4C,EAAI,MAIN,QADIV,EAAQ,EACH9B,EAAI,EAAGA,EAAIwC,EAAE,OAAQxC,IAC5BU,GAAKsC,EAAE,MAAMhD,GAAK,IAAMwC,EAAE,MAAMxC,GAAK,GAAK8B,EAC1CA,EAAQpB,GAAK,GACb,KAAK,MAAMV,GAAKU,EAAI,SAEtB,KAAOoB,IAAU,GAAK9B,EAAIgD,EAAE,OAAQhD,IAClCU,GAAKsC,EAAE,MAAMhD,GAAK,GAAK8B,EACvBA,EAAQpB,GAAK,GACb,KAAK,MAAMV,GAAKU,EAAI,SAItB,GAAIoB,IAAU,GAAK9B,EAAIgD,EAAE,QAAUA,IAAM,KACvC,KAAOhD,EAAIgD,EAAE,OAAQhD,IACnB,KAAK,MAAMA,GAAKgD,EAAE,MAAMhD,GAI5B,YAAK,OAAS,KAAK,IAAI,KAAK,OAAQA,CAAC,EAEjCgD,IAAM,OACR,KAAK,SAAW,GAGX,KAAK,MAAM,CACpB,EAGAzD,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,MAAM,EAAE,KAAKA,CAAG,CAC9B,EAEA,SAASwD,EAAYC,EAAMzD,EAAKiC,EAAK,CACnCA,EAAI,SAAWjC,EAAI,SAAWyD,EAAK,SACnC,IAAIrC,EAAOqC,EAAK,OAASzD,EAAI,OAAU,EACvCiC,EAAI,OAASb,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIgC,EAAIK,EAAK,MAAM,GAAK,EACpBb,EAAI5C,EAAI,MAAM,GAAK,EACnBc,EAAIsC,EAAIR,EAERc,EAAK5C,EAAI,SACToB,EAASpB,EAAI,SAAa,EAC9BmB,EAAI,MAAM,GAAKyB,EAEf,QAASC,EAAI,EAAGA,EAAIvC,EAAKuC,IAAK,CAM5B,QAHIC,EAAS1B,IAAU,GACnB2B,EAAQ3B,EAAQ,SAChB4B,EAAO,KAAK,IAAIH,EAAG3D,EAAI,OAAS,CAAC,EAC5BK,EAAI,KAAK,IAAI,EAAGsD,EAAIF,EAAK,OAAS,CAAC,EAAGpD,GAAKyD,EAAMzD,IAAK,CAC7D,IAAID,EAAKuD,EAAItD,EAAK,EAClB+C,EAAIK,EAAK,MAAMrD,GAAK,EACpBwC,EAAI5C,EAAI,MAAMK,GAAK,EACnBS,EAAIsC,EAAIR,EAAIiB,EACZD,GAAW9C,EAAI,SAAa,EAC5B+C,EAAQ/C,EAAI,QACd,CACAmB,EAAI,MAAM0B,GAAKE,EAAQ,EACvB3B,EAAQ0B,EAAS,CACnB,CACA,OAAI1B,IAAU,EACZD,EAAI,MAAM0B,GAAKzB,EAAQ,EAEvBD,EAAI,SAGCA,EAAI,MAAM,CACnB,CAKA,IAAI8B,EAAc,SAAsBN,EAAMzD,EAAKiC,EAAK,CACtD,IAAImB,EAAIK,EAAK,MACTb,EAAI5C,EAAI,MACRgE,EAAI/B,EAAI,MACRtB,EAAI,EACJ+C,EACAO,EACAlB,EACAmB,EAAKd,EAAE,GAAK,EACZe,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,EAAKjB,EAAE,GAAK,EACZkB,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,EAAKpB,EAAE,GAAK,EACZqB,EAAMD,EAAK,KACXE,GAAMF,IAAO,GACbG,GAAKvB,EAAE,GAAK,EACZwB,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK1B,EAAE,GAAK,EACZ2B,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK7B,EAAE,GAAK,EACZ8B,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKhC,EAAE,GAAK,EACZiC,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKnC,EAAE,GAAK,EACZoC,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKtC,EAAE,GAAK,EACZuC,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKzC,EAAE,GAAK,EACZ0C,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKpD,EAAE,GAAK,EACZqD,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKvD,EAAE,GAAK,EACZwD,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK1D,EAAE,GAAK,EACZ2D,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAK7D,EAAE,GAAK,EACZ8D,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKhE,EAAE,GAAK,EACZiE,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKnE,EAAE,GAAK,EACZoE,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,GAAKtE,EAAE,GAAK,EACZuE,GAAMD,GAAK,KACXE,GAAMF,KAAO,GACbG,EAAKzE,EAAE,GAAK,EACZ0E,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,EAAK5E,EAAE,GAAK,EACZ6E,EAAMD,EAAK,KACXE,EAAMF,IAAO,GACbG,EAAK/E,EAAE,GAAK,EACZgF,EAAMD,EAAK,KACXE,EAAMF,IAAO,GAEjB1F,EAAI,SAAWwB,EAAK,SAAWzD,EAAI,SACnCiC,EAAI,OAAS,GAEbyB,EAAK,KAAK,KAAKS,EAAK8B,EAAG,EACvBhC,EAAM,KAAK,KAAKE,EAAK+B,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKG,EAAK6B,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKqB,EAAK8B,EAAG,EACvB,IAAI4B,IAAQnH,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM6D,KAAO,IAAO,EAChDA,IAAM,SAENpE,EAAK,KAAK,KAAKY,EAAK2B,EAAG,EACvBhC,EAAM,KAAK,KAAKK,EAAK4B,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKM,EAAK0B,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKwB,EAAK2B,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKS,EAAKiC,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKE,EAAKkC,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKG,EAAKgC,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKqB,EAAKiC,EAAG,EAAK,EAClC,IAAI0B,IAAQpH,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM8D,KAAO,IAAO,EAChDA,IAAM,SAENrE,EAAK,KAAK,KAAKe,EAAKwB,EAAG,EACvBhC,EAAM,KAAK,KAAKQ,EAAKyB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKS,GAAKuB,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK2B,GAAKwB,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKY,EAAK8B,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKK,EAAK+B,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKM,EAAK6B,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKwB,EAAK8B,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKS,EAAKoC,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKE,EAAKqC,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKG,EAAKmC,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKqB,EAAKoC,EAAG,EAAK,EAClC,IAAIwB,IAAQrH,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAENtE,EAAK,KAAK,KAAKkB,GAAKqB,EAAG,EACvBhC,EAAM,KAAK,KAAKW,GAAKsB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKY,GAAKoB,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK8B,GAAKqB,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKe,EAAK2B,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKQ,EAAK4B,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKS,GAAK0B,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK2B,GAAK2B,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKY,EAAKiC,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKK,EAAKkC,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKM,EAAKgC,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKwB,EAAKiC,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKS,EAAKuC,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKE,EAAKwC,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKG,EAAKsC,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKqB,EAAKuC,EAAG,EAAK,EAClC,IAAIsB,IAAQtH,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAENvE,EAAK,KAAK,KAAKqB,GAAKkB,EAAG,EACvBhC,EAAM,KAAK,KAAKc,GAAKmB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKe,GAAKiB,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKiC,GAAKkB,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKkB,GAAKwB,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKW,GAAKyB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKY,GAAKuB,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK8B,GAAKwB,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKe,EAAK8B,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKQ,EAAK+B,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKS,GAAK6B,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK2B,GAAK8B,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKY,EAAKoC,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKK,EAAKqC,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKM,EAAKmC,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKwB,EAAKoC,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKS,EAAK0C,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKE,EAAK2C,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKG,EAAKyC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKqB,EAAK0C,EAAG,EAAK,EAClC,IAAIoB,IAAQvH,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENxE,EAAK,KAAK,KAAKwB,GAAKe,EAAG,EACvBhC,EAAM,KAAK,KAAKiB,GAAKgB,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKkB,GAAKc,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKoC,GAAKe,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKqB,GAAKqB,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKc,GAAKsB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKe,GAAKoB,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKiC,GAAKqB,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKkB,GAAK2B,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKW,GAAK4B,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKY,GAAK0B,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK8B,GAAK2B,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKe,EAAKiC,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKQ,EAAKkC,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKS,GAAKgC,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK2B,GAAKiC,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKY,EAAKuC,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKK,EAAKwC,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKM,EAAKsC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKwB,EAAKuC,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKS,EAAK6C,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKE,EAAK8C,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKG,EAAK4C,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKqB,EAAK6C,EAAG,EAAK,EAClC,IAAIkB,IAAQxH,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENzE,EAAK,KAAK,KAAK2B,GAAKY,EAAG,EACvBhC,EAAM,KAAK,KAAKoB,GAAKa,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKqB,GAAKW,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKuC,GAAKY,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKwB,GAAKkB,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKiB,GAAKmB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKkB,GAAKiB,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKoC,GAAKkB,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKqB,GAAKwB,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKc,GAAKyB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKe,GAAKuB,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKiC,GAAKwB,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKkB,GAAK8B,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKW,GAAK+B,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKY,GAAK6B,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK8B,GAAK8B,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKe,EAAKoC,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKQ,EAAKqC,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKS,GAAKmC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK2B,GAAKoC,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKY,EAAK0C,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKK,EAAK2C,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKM,EAAKyC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKwB,EAAK0C,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKS,EAAKgD,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKE,EAAKiD,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKG,EAAK+C,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKqB,EAAKgD,EAAG,EAAK,EAClC,IAAIgB,IAAQzH,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAEN1E,EAAK,KAAK,KAAK8B,GAAKS,EAAG,EACvBhC,EAAM,KAAK,KAAKuB,GAAKU,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAKwB,GAAKQ,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK0C,GAAKS,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAK2B,GAAKe,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKoB,GAAKgB,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKqB,GAAKc,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAKuC,GAAKe,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAKwB,GAAKqB,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKiB,GAAKsB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKkB,GAAKoB,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKoC,GAAKqB,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKqB,GAAK2B,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKc,GAAK4B,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKe,GAAK0B,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKiC,GAAK2B,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKkB,GAAKiC,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKW,GAAKkC,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKY,GAAKgC,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK8B,GAAKiC,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKe,EAAKuC,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKQ,EAAKwC,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKS,GAAKsC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK2B,GAAKuC,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKY,EAAK6C,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKK,EAAK8C,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKM,EAAK4C,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKwB,EAAK6C,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKS,EAAKmD,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKE,EAAKoD,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKG,EAAKkD,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKqB,EAAKmD,CAAG,EAAK,EAClC,IAAIc,IAAQ1H,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAEN3E,EAAK,KAAK,KAAKiC,GAAKM,EAAG,EACvBhC,EAAM,KAAK,KAAK0B,GAAKO,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAK2B,GAAKK,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAK6C,GAAKM,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAK8B,GAAKY,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAKuB,GAAKa,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAKwB,GAAKW,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK0C,GAAKY,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAK2B,GAAKkB,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKoB,GAAKmB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKqB,GAAKiB,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAKuC,GAAKkB,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAKwB,GAAKwB,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKiB,GAAKyB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKkB,GAAKuB,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKoC,GAAKwB,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKqB,GAAK8B,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKc,GAAK+B,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKe,GAAK6B,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKiC,GAAK8B,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKkB,GAAKoC,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKW,GAAKqC,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKY,GAAKmC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK8B,GAAKoC,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKe,EAAK0C,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKQ,EAAK2C,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKS,GAAKyC,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK2B,GAAK0C,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKY,EAAKgD,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKK,EAAKiD,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKM,EAAK+C,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKwB,EAAKgD,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKS,EAAKsD,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKE,EAAKuD,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKG,EAAKqD,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKqB,EAAKsD,CAAG,EAAK,EAClC,IAAIY,IAAQ3H,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAEN5E,EAAK,KAAK,KAAKoC,GAAKG,EAAG,EACvBhC,EAAM,KAAK,KAAK6B,GAAKI,EAAG,EACxBjC,EAAOA,EAAM,KAAK,KAAK8B,GAAKE,EAAG,EAAK,EACpClD,EAAK,KAAK,KAAKgD,GAAKG,EAAG,EACvBxC,EAAMA,EAAK,KAAK,KAAKiC,GAAKS,EAAG,EAAK,EAClCnC,EAAOA,EAAM,KAAK,KAAK0B,GAAKU,EAAG,EAAK,EACpCpC,EAAOA,EAAM,KAAK,KAAK2B,GAAKQ,EAAG,EAAK,EACpCrD,EAAMA,EAAK,KAAK,KAAK6C,GAAKS,EAAG,EAAK,EAClC3C,EAAMA,EAAK,KAAK,KAAK8B,GAAKe,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAKuB,GAAKgB,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAKwB,GAAKc,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK0C,GAAKe,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAK2B,GAAKqB,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKoB,GAAKsB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKqB,GAAKoB,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAKuC,GAAKqB,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAKwB,GAAK2B,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKiB,GAAK4B,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKkB,GAAK0B,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKoC,GAAK2B,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKqB,GAAKiC,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKc,GAAKkC,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKe,GAAKgC,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKiC,GAAKiC,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKkB,GAAKuC,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKW,GAAKwC,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKY,GAAKsC,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK8B,GAAKuC,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKe,EAAK6C,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKQ,EAAK8C,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKS,GAAK4C,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK2B,GAAK6C,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKY,EAAKmD,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKK,EAAKoD,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKM,EAAKkD,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKwB,EAAKmD,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKS,EAAKyD,CAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKE,EAAK0D,CAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKG,EAAKwD,CAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKqB,EAAKyD,CAAG,EAAK,EAClC,IAAIU,IAAQ5H,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACrDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAEN7E,EAAK,KAAK,KAAKoC,GAAKM,EAAG,EACvBnC,EAAM,KAAK,KAAK6B,GAAKO,EAAG,EACxBpC,EAAOA,EAAM,KAAK,KAAK8B,GAAKK,EAAG,EAAK,EACpCrD,EAAK,KAAK,KAAKgD,GAAKM,EAAG,EACvB3C,EAAMA,EAAK,KAAK,KAAKiC,GAAKY,EAAG,EAAK,EAClCtC,EAAOA,EAAM,KAAK,KAAK0B,GAAKa,EAAG,EAAK,EACpCvC,EAAOA,EAAM,KAAK,KAAK2B,GAAKW,EAAG,EAAK,EACpCxD,EAAMA,EAAK,KAAK,KAAK6C,GAAKY,EAAG,EAAK,EAClC9C,EAAMA,EAAK,KAAK,KAAK8B,GAAKkB,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAKuB,GAAKmB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAKwB,GAAKiB,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK0C,GAAKkB,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAK2B,GAAKwB,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKoB,GAAKyB,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKqB,GAAKuB,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAKuC,GAAKwB,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAKwB,GAAK8B,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKiB,GAAK+B,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKkB,GAAK6B,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKoC,GAAK8B,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKqB,GAAKoC,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKc,GAAKqC,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKe,GAAKmC,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKiC,GAAKoC,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKkB,GAAK0C,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKW,GAAK2C,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKY,GAAKyC,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK8B,GAAK0C,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKe,EAAKgD,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKQ,EAAKiD,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKS,GAAK+C,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK2B,GAAKgD,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKY,EAAKsD,CAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKK,EAAKuD,CAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKM,EAAKqD,CAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKwB,EAAKsD,CAAG,EAAK,EAClC,IAAIW,IAAS7H,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMuE,KAAQ,IAAO,EACjDA,IAAO,SAEP9E,EAAK,KAAK,KAAKoC,GAAKS,EAAG,EACvBtC,EAAM,KAAK,KAAK6B,GAAKU,EAAG,EACxBvC,EAAOA,EAAM,KAAK,KAAK8B,GAAKQ,EAAG,EAAK,EACpCxD,EAAK,KAAK,KAAKgD,GAAKS,EAAG,EACvB9C,EAAMA,EAAK,KAAK,KAAKiC,GAAKe,EAAG,EAAK,EAClCzC,EAAOA,EAAM,KAAK,KAAK0B,GAAKgB,EAAG,EAAK,EACpC1C,EAAOA,EAAM,KAAK,KAAK2B,GAAKc,EAAG,EAAK,EACpC3D,EAAMA,EAAK,KAAK,KAAK6C,GAAKe,EAAG,EAAK,EAClCjD,EAAMA,EAAK,KAAK,KAAK8B,GAAKqB,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAKuB,GAAKsB,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAKwB,GAAKoB,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK0C,GAAKqB,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAK2B,GAAK2B,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKoB,GAAK4B,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKqB,GAAK0B,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAKuC,GAAK2B,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAKwB,GAAKiC,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKiB,GAAKkC,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKkB,GAAKgC,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKoC,GAAKiC,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKqB,GAAKuC,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKc,GAAKwC,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKe,GAAKsC,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKiC,GAAKuC,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKkB,GAAK6C,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKW,GAAK8C,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKY,GAAK4C,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK8B,GAAK6C,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKe,EAAKmD,CAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKQ,EAAKoD,CAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKS,GAAKkD,CAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK2B,GAAKmD,CAAG,EAAK,EAClC,IAAIY,IAAS9H,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEP/E,EAAK,KAAK,KAAKoC,GAAKY,EAAG,EACvBzC,EAAM,KAAK,KAAK6B,GAAKa,EAAG,EACxB1C,EAAOA,EAAM,KAAK,KAAK8B,GAAKW,EAAG,EAAK,EACpC3D,EAAK,KAAK,KAAKgD,GAAKY,EAAG,EACvBjD,EAAMA,EAAK,KAAK,KAAKiC,GAAKkB,EAAG,EAAK,EAClC5C,EAAOA,EAAM,KAAK,KAAK0B,GAAKmB,EAAG,EAAK,EACpC7C,EAAOA,EAAM,KAAK,KAAK2B,GAAKiB,EAAG,EAAK,EACpC9D,EAAMA,EAAK,KAAK,KAAK6C,GAAKkB,EAAG,EAAK,EAClCpD,EAAMA,EAAK,KAAK,KAAK8B,GAAKwB,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAKuB,GAAKyB,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAKwB,GAAKuB,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK0C,GAAKwB,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAK2B,GAAK8B,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKoB,GAAK+B,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKqB,GAAK6B,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAKuC,GAAK8B,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAKwB,GAAKoC,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKiB,GAAKqC,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKkB,GAAKmC,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKoC,GAAKoC,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKqB,GAAK0C,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKc,GAAK2C,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKe,GAAKyC,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKiC,GAAK0C,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKkB,GAAKgD,CAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKW,GAAKiD,CAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKY,GAAK+C,CAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK8B,GAAKgD,CAAG,EAAK,EAClC,IAAIa,IAAS/H,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEPhF,EAAK,KAAK,KAAKoC,GAAKe,EAAG,EACvB5C,EAAM,KAAK,KAAK6B,GAAKgB,EAAG,EACxB7C,EAAOA,EAAM,KAAK,KAAK8B,GAAKc,EAAG,EAAK,EACpC9D,EAAK,KAAK,KAAKgD,GAAKe,EAAG,EACvBpD,EAAMA,EAAK,KAAK,KAAKiC,GAAKqB,EAAG,EAAK,EAClC/C,EAAOA,EAAM,KAAK,KAAK0B,GAAKsB,EAAG,EAAK,EACpChD,EAAOA,EAAM,KAAK,KAAK2B,GAAKoB,EAAG,EAAK,EACpCjE,EAAMA,EAAK,KAAK,KAAK6C,GAAKqB,EAAG,EAAK,EAClCvD,EAAMA,EAAK,KAAK,KAAK8B,GAAK2B,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAKuB,GAAK4B,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAKwB,GAAK0B,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK0C,GAAK2B,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAK2B,GAAKiC,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKoB,GAAKkC,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKqB,GAAKgC,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAKuC,GAAKiC,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAKwB,GAAKuC,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKiB,GAAKwC,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKkB,GAAKsC,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKoC,GAAKuC,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKqB,GAAK6C,CAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKc,GAAK8C,CAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKe,GAAK4C,CAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKiC,GAAK6C,CAAG,EAAK,EAClC,IAAIc,IAAShI,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEPjF,EAAK,KAAK,KAAKoC,GAAKkB,EAAG,EACvB/C,EAAM,KAAK,KAAK6B,GAAKmB,EAAG,EACxBhD,EAAOA,EAAM,KAAK,KAAK8B,GAAKiB,EAAG,EAAK,EACpCjE,EAAK,KAAK,KAAKgD,GAAKkB,EAAG,EACvBvD,EAAMA,EAAK,KAAK,KAAKiC,GAAKwB,EAAG,EAAK,EAClClD,EAAOA,EAAM,KAAK,KAAK0B,GAAKyB,EAAG,EAAK,EACpCnD,EAAOA,EAAM,KAAK,KAAK2B,GAAKuB,EAAG,EAAK,EACpCpE,EAAMA,EAAK,KAAK,KAAK6C,GAAKwB,EAAG,EAAK,EAClC1D,EAAMA,EAAK,KAAK,KAAK8B,GAAK8B,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAKuB,GAAK+B,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAKwB,GAAK6B,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK0C,GAAK8B,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAK2B,GAAKoC,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKoB,GAAKqC,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKqB,GAAKmC,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAKuC,GAAKoC,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAKwB,GAAK0C,CAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKiB,GAAK2C,CAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKkB,GAAKyC,CAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKoC,GAAK0C,CAAG,EAAK,EAClC,IAAIe,IAASjI,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEPlF,EAAK,KAAK,KAAKoC,GAAKqB,EAAG,EACvBlD,EAAM,KAAK,KAAK6B,GAAKsB,EAAG,EACxBnD,EAAOA,EAAM,KAAK,KAAK8B,GAAKoB,EAAG,EAAK,EACpCpE,EAAK,KAAK,KAAKgD,GAAKqB,EAAG,EACvB1D,EAAMA,EAAK,KAAK,KAAKiC,GAAK2B,CAAG,EAAK,EAClCrD,EAAOA,EAAM,KAAK,KAAK0B,GAAK4B,CAAG,EAAK,EACpCtD,EAAOA,EAAM,KAAK,KAAK2B,GAAK0B,CAAG,EAAK,EACpCvE,EAAMA,EAAK,KAAK,KAAK6C,GAAK2B,CAAG,EAAK,EAClC7D,EAAMA,EAAK,KAAK,KAAK8B,GAAKiC,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAKuB,GAAKkC,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAKwB,GAAKgC,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK0C,GAAKiC,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAK2B,GAAKuC,CAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKoB,GAAKwC,CAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKqB,GAAKsC,CAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAKuC,GAAKuC,CAAG,EAAK,EAClC,IAAIgB,IAASlI,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEPnF,EAAK,KAAK,KAAKoC,GAAKwB,CAAG,EACvBrD,EAAM,KAAK,KAAK6B,GAAKyB,CAAG,EACxBtD,EAAOA,EAAM,KAAK,KAAK8B,GAAKuB,CAAG,EAAK,EACpCvE,EAAK,KAAK,KAAKgD,GAAKwB,CAAG,EACvB7D,EAAMA,EAAK,KAAK,KAAKiC,GAAK8B,CAAG,EAAK,EAClCxD,EAAOA,EAAM,KAAK,KAAK0B,GAAK+B,CAAG,EAAK,EACpCzD,EAAOA,EAAM,KAAK,KAAK2B,GAAK6B,CAAG,EAAK,EACpC1E,EAAMA,EAAK,KAAK,KAAK6C,GAAK8B,CAAG,EAAK,EAClChE,EAAMA,EAAK,KAAK,KAAK8B,GAAKoC,CAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAKuB,GAAKqC,CAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAKwB,GAAKmC,CAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK0C,GAAKoC,CAAG,EAAK,EAClC,IAAIiB,IAASnI,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEPpF,EAAK,KAAK,KAAKoC,GAAK2B,CAAG,EACvBxD,EAAM,KAAK,KAAK6B,GAAK4B,CAAG,EACxBzD,EAAOA,EAAM,KAAK,KAAK8B,GAAK0B,CAAG,EAAK,EACpC1E,EAAK,KAAK,KAAKgD,GAAK2B,CAAG,EACvBhE,EAAMA,EAAK,KAAK,KAAKiC,GAAKiC,CAAG,EAAK,EAClC3D,EAAOA,EAAM,KAAK,KAAK0B,GAAKkC,CAAG,EAAK,EACpC5D,EAAOA,EAAM,KAAK,KAAK2B,GAAKgC,CAAG,EAAK,EACpC7E,EAAMA,EAAK,KAAK,KAAK6C,GAAKiC,CAAG,EAAK,EAClC,IAAIkB,GAASpI,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtDtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM8E,IAAQ,IAAO,EACjDA,GAAO,SAEPrF,EAAK,KAAK,KAAKoC,GAAK8B,CAAG,EACvB3D,EAAM,KAAK,KAAK6B,GAAK+B,CAAG,EACxB5D,EAAOA,EAAM,KAAK,KAAK8B,GAAK6B,CAAG,EAAK,EACpC7E,EAAK,KAAK,KAAKgD,GAAK8B,CAAG,EACvB,IAAImB,GAASrI,EAAI+C,EAAM,KAAOO,EAAM,OAAW,IAAO,EACtD,OAAAtD,GAAOoC,GAAMkB,IAAQ,IAAO,IAAM+E,IAAQ,IAAO,EACjDA,GAAO,SACPhF,EAAE,GAAK8D,GACP9D,EAAE,GAAK+D,GACP/D,EAAE,GAAKgE,GACPhE,EAAE,GAAKiE,GACPjE,EAAE,GAAKkE,GACPlE,EAAE,GAAKmE,GACPnE,EAAE,GAAKoE,GACPpE,EAAE,GAAKqE,GACPrE,EAAE,GAAKsE,GACPtE,EAAE,GAAKuE,GACPvE,EAAE,IAAMwE,GACRxE,EAAE,IAAMyE,GACRzE,EAAE,IAAM0E,GACR1E,EAAE,IAAM2E,GACR3E,EAAE,IAAM4E,GACR5E,EAAE,IAAM6E,GACR7E,EAAE,IAAM8E,GACR9E,EAAE,IAAM+E,EACR/E,EAAE,IAAMgF,EACJrI,IAAM,IACRqD,EAAE,IAAMrD,EACRsB,EAAI,UAECA,CACT,EAGK,KAAK,OACR8B,EAAcP,GAGhB,SAASyF,EAAUxF,EAAMzD,EAAKiC,EAAK,CACjCA,EAAI,SAAWjC,EAAI,SAAWyD,EAAK,SACnCxB,EAAI,OAASwB,EAAK,OAASzD,EAAI,OAI/B,QAFIkC,EAAQ,EACRgH,EAAU,EACLvF,EAAI,EAAGA,EAAI1B,EAAI,OAAS,EAAG0B,IAAK,CAGvC,IAAIC,EAASsF,EACbA,EAAU,EAGV,QAFIrF,EAAQ3B,EAAQ,SAChB4B,EAAO,KAAK,IAAIH,EAAG3D,EAAI,OAAS,CAAC,EAC5BK,EAAI,KAAK,IAAI,EAAGsD,EAAIF,EAAK,OAAS,CAAC,EAAGpD,GAAKyD,EAAMzD,IAAK,CAC7D,IAAID,EAAIuD,EAAItD,EACR+C,EAAIK,EAAK,MAAMrD,GAAK,EACpBwC,EAAI5C,EAAI,MAAMK,GAAK,EACnBS,EAAIsC,EAAIR,EAERc,EAAK5C,EAAI,SACb8C,EAAUA,GAAW9C,EAAI,SAAa,GAAM,EAC5C4C,EAAMA,EAAKG,EAAS,EACpBA,EAAQH,EAAK,SACbE,EAAUA,GAAUF,IAAO,IAAO,EAElCwF,GAAWtF,IAAW,GACtBA,GAAU,QACZ,CACA3B,EAAI,MAAM0B,GAAKE,EACf3B,EAAQ0B,EACRA,EAASsF,CACX,CACA,OAAIhH,IAAU,EACZD,EAAI,MAAM0B,GAAKzB,EAEfD,EAAI,SAGCA,EAAI,MAAM,CACnB,CAEA,SAASkH,GAAY1F,EAAMzD,EAAKiC,EAAK,CACnC,IAAImH,EAAO,IAAIC,GACf,OAAOD,EAAK,KAAK3F,EAAMzD,EAAKiC,CAAG,CACjC,CAEAtC,EAAG,UAAU,MAAQ,SAAgBK,EAAKiC,EAAK,CAC7C,IAAIU,EACAvB,EAAM,KAAK,OAASpB,EAAI,OAC5B,OAAI,KAAK,SAAW,IAAMA,EAAI,SAAW,GACvC2C,EAAMoB,EAAY,KAAM/D,EAAKiC,CAAG,EACvBb,EAAM,GACfuB,EAAMa,EAAW,KAAMxD,EAAKiC,CAAG,EACtBb,EAAM,KACfuB,EAAMsG,EAAS,KAAMjJ,EAAKiC,CAAG,EAE7BU,EAAMwG,GAAW,KAAMnJ,EAAKiC,CAAG,EAG1BU,CACT,EAKA,SAAS0G,GAAM,EAAGC,EAAG,CACnB,KAAK,EAAI,EACT,KAAK,EAAIA,CACX,CAEAD,GAAK,UAAU,QAAU,SAAkBE,EAAG,CAG5C,QAFIzG,EAAI,IAAI,MAAMyG,CAAC,EACf,EAAI5J,EAAG,UAAU,WAAW4J,CAAC,EAAI,EAC5BnJ,EAAI,EAAGA,EAAImJ,EAAGnJ,IACrB0C,EAAE1C,GAAK,KAAK,OAAOA,EAAG,EAAGmJ,CAAC,EAG5B,OAAOzG,CACT,EAGAuG,GAAK,UAAU,OAAS,SAAiBG,EAAGC,EAAGF,EAAG,CAChD,GAAIC,IAAM,GAAKA,IAAMD,EAAI,EAAG,OAAOC,EAGnC,QADIE,EAAK,EACAtJ,EAAI,EAAGA,EAAIqJ,EAAGrJ,IACrBsJ,IAAOF,EAAI,IAAOC,EAAIrJ,EAAI,EAC1BoJ,IAAM,EAGR,OAAOE,CACT,EAIAL,GAAK,UAAU,QAAU,SAAkBM,EAAKC,EAAKC,EAAKC,EAAMC,EAAMR,EAAG,CACvE,QAASnJ,EAAI,EAAGA,EAAImJ,EAAGnJ,IACrB0J,EAAK1J,GAAKwJ,EAAID,EAAIvJ,IAClB2J,EAAK3J,GAAKyJ,EAAIF,EAAIvJ,GAEtB,EAEAiJ,GAAK,UAAU,UAAY,SAAoBO,EAAKC,EAAKC,EAAMC,EAAMR,EAAGI,EAAK,CAC3E,KAAK,QAAQA,EAAKC,EAAKC,EAAKC,EAAMC,EAAMR,CAAC,EAEzC,QAASS,EAAI,EAAGA,EAAIT,EAAGS,IAAM,EAM3B,QALIP,EAAIO,GAAK,EAETC,EAAQ,KAAK,IAAI,EAAI,KAAK,GAAKR,CAAC,EAChCS,EAAQ,KAAK,IAAI,EAAI,KAAK,GAAKT,CAAC,EAE3BU,EAAI,EAAGA,EAAIZ,EAAGY,GAAKV,EAI1B,QAHIW,EAASH,EACTI,EAASH,EAEJ7J,EAAI,EAAGA,EAAI2J,EAAG3J,IAAK,CAC1B,IAAIiK,EAAKR,EAAKK,EAAI9J,GACdkK,EAAKR,EAAKI,EAAI9J,GAEdmK,EAAKV,EAAKK,EAAI9J,EAAI2J,GAClBS,EAAKV,EAAKI,EAAI9J,EAAI2J,GAElBU,GAAKN,EAASI,EAAKH,EAASI,EAEhCA,EAAKL,EAASK,EAAKJ,EAASG,EAC5BA,EAAKE,GAELZ,EAAKK,EAAI9J,GAAKiK,EAAKE,EACnBT,EAAKI,EAAI9J,GAAKkK,EAAKE,EAEnBX,EAAKK,EAAI9J,EAAI2J,GAAKM,EAAKE,EACvBT,EAAKI,EAAI9J,EAAI2J,GAAKO,EAAKE,EAGnBpK,IAAMoJ,IACRiB,GAAKT,EAAQG,EAASF,EAAQG,EAE9BA,EAASJ,EAAQI,EAASH,EAAQE,EAClCA,EAASM,GAEb,CAGN,EAEArB,GAAK,UAAU,YAAc,SAAsBsB,EAAGC,EAAG,CACvD,IAAIrB,EAAI,KAAK,IAAIqB,EAAGD,CAAC,EAAI,EACrBE,EAAMtB,EAAI,EACVnJ,EAAI,EACR,IAAKmJ,EAAIA,EAAI,EAAI,EAAGA,EAAGA,EAAIA,IAAM,EAC/BnJ,IAGF,MAAO,IAAKA,EAAI,EAAIyK,CACtB,EAEAxB,GAAK,UAAU,UAAY,SAAoBO,EAAKC,EAAKN,EAAG,CAC1D,GAAI,EAAAA,GAAK,GAET,QAASnJ,EAAI,EAAGA,EAAImJ,EAAI,EAAGnJ,IAAK,CAC9B,IAAI0C,EAAI8G,EAAIxJ,GAEZwJ,EAAIxJ,GAAKwJ,EAAIL,EAAInJ,EAAI,GACrBwJ,EAAIL,EAAInJ,EAAI,GAAK0C,EAEjBA,EAAI+G,EAAIzJ,GAERyJ,EAAIzJ,GAAK,CAACyJ,EAAIN,EAAInJ,EAAI,GACtByJ,EAAIN,EAAInJ,EAAI,GAAK,CAAC0C,CACpB,CACF,EAEAuG,GAAK,UAAU,aAAe,SAAuByB,EAAIvB,EAAG,CAE1D,QADIrH,EAAQ,EACH9B,EAAI,EAAGA,EAAImJ,EAAI,EAAGnJ,IAAK,CAC9B,IAAIE,EAAI,KAAK,MAAMwK,EAAG,EAAI1K,EAAI,GAAKmJ,CAAC,EAAI,KACtC,KAAK,MAAMuB,EAAG,EAAI1K,GAAKmJ,CAAC,EACxBrH,EAEF4I,EAAG1K,GAAKE,EAAI,SAERA,EAAI,SACN4B,EAAQ,EAERA,EAAQ5B,EAAI,SAAY,CAE5B,CAEA,OAAOwK,CACT,EAEAzB,GAAK,UAAU,WAAa,SAAqByB,EAAI1J,EAAKwI,EAAKL,EAAG,CAEhE,QADIrH,EAAQ,EACH9B,EAAI,EAAGA,EAAIgB,EAAKhB,IACvB8B,EAAQA,GAAS4I,EAAG1K,GAAK,GAEzBwJ,EAAI,EAAIxJ,GAAK8B,EAAQ,KAAQA,EAAQA,IAAU,GAC/C0H,EAAI,EAAIxJ,EAAI,GAAK8B,EAAQ,KAAQA,EAAQA,IAAU,GAIrD,IAAK9B,EAAI,EAAIgB,EAAKhB,EAAImJ,EAAG,EAAEnJ,EACzBwJ,EAAIxJ,GAAK,EAGXhB,EAAO8C,IAAU,CAAC,EAClB9C,GAAQ8C,EAAQ,SAAa,CAAC,CAChC,EAEAmH,GAAK,UAAU,KAAO,SAAeE,EAAG,CAEtC,QADIwB,EAAK,IAAI,MAAMxB,CAAC,EACXnJ,EAAI,EAAGA,EAAImJ,EAAGnJ,IACrB2K,EAAG3K,GAAK,EAGV,OAAO2K,CACT,EAEA1B,GAAK,UAAU,KAAO,SAAeG,EAAGF,EAAGrH,EAAK,CAC9C,IAAIsH,EAAI,EAAI,KAAK,YAAYC,EAAE,OAAQF,EAAE,MAAM,EAE3CK,EAAM,KAAK,QAAQJ,CAAC,EAEpByB,EAAI,KAAK,KAAKzB,CAAC,EAEfK,EAAM,IAAI,MAAML,CAAC,EACjB0B,EAAO,IAAI,MAAM1B,CAAC,EAClB2B,EAAO,IAAI,MAAM3B,CAAC,EAElB4B,EAAO,IAAI,MAAM5B,CAAC,EAClB6B,EAAQ,IAAI,MAAM7B,CAAC,EACnB8B,EAAQ,IAAI,MAAM9B,CAAC,EAEnB+B,EAAOrJ,EAAI,MACfqJ,EAAK,OAAS/B,EAEd,KAAK,WAAWC,EAAE,MAAOA,EAAE,OAAQI,EAAKL,CAAC,EACzC,KAAK,WAAWD,EAAE,MAAOA,EAAE,OAAQ6B,EAAM5B,CAAC,EAE1C,KAAK,UAAUK,EAAKoB,EAAGC,EAAMC,EAAM3B,EAAGI,CAAG,EACzC,KAAK,UAAUwB,EAAMH,EAAGI,EAAOC,EAAO9B,EAAGI,CAAG,EAE5C,QAASvJ,EAAI,EAAGA,EAAImJ,EAAGnJ,IAAK,CAC1B,IAAIsK,EAAKO,EAAK7K,GAAKgL,EAAMhL,GAAK8K,EAAK9K,GAAKiL,EAAMjL,GAC9C8K,EAAK9K,GAAK6K,EAAK7K,GAAKiL,EAAMjL,GAAK8K,EAAK9K,GAAKgL,EAAMhL,GAC/C6K,EAAK7K,GAAKsK,CACZ,CAEA,YAAK,UAAUO,EAAMC,EAAM3B,CAAC,EAC5B,KAAK,UAAU0B,EAAMC,EAAMI,EAAMN,EAAGzB,EAAGI,CAAG,EAC1C,KAAK,UAAU2B,EAAMN,EAAGzB,CAAC,EACzB,KAAK,aAAa+B,EAAM/B,CAAC,EAEzBtH,EAAI,SAAWuH,EAAE,SAAWF,EAAE,SAC9BrH,EAAI,OAASuH,EAAE,OAASF,EAAE,OACnBrH,EAAI,MAAM,CACnB,EAGAtC,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,IAAIiC,EAAM,IAAItC,EAAG,IAAI,EACrB,OAAAsC,EAAI,MAAQ,IAAI,MAAM,KAAK,OAASjC,EAAI,MAAM,EACvC,KAAK,MAAMA,EAAKiC,CAAG,CAC5B,EAGAtC,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,IAAIiC,EAAM,IAAItC,EAAG,IAAI,EACrB,OAAAsC,EAAI,MAAQ,IAAI,MAAM,KAAK,OAASjC,EAAI,MAAM,EACvCmJ,GAAW,KAAMnJ,EAAKiC,CAAG,CAClC,EAGAtC,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,EAAK,IAAI,CACrC,EAEAL,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CACxCZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAItB,QADIkC,EAAQ,EACH9B,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CACpC,IAAIE,GAAK,KAAK,MAAMF,GAAK,GAAKJ,EAC1B0D,GAAMpD,EAAI,WAAc4B,EAAQ,UACpCA,IAAU,GACVA,GAAU5B,EAAI,SAAa,EAE3B4B,GAASwB,IAAO,GAChB,KAAK,MAAMtD,GAAKsD,EAAK,QACvB,CAEA,OAAIxB,IAAU,IACZ,KAAK,MAAM9B,GAAK8B,EAChB,KAAK,UAGA,IACT,EAEAvC,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAGAL,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,IAAI,IAAI,CACtB,EAGAA,EAAG,UAAU,KAAO,UAAiB,CACnC,OAAO,KAAK,KAAK,KAAK,MAAM,CAAC,CAC/B,EAGAA,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,IAAIM,EAAI0C,EAAWhD,CAAG,EACtB,GAAIM,EAAE,SAAW,EAAG,OAAO,IAAIX,EAAG,CAAC,EAInC,QADIgD,EAAM,KACDvC,EAAI,EAAGA,EAAIE,EAAE,QAChBA,EAAEF,KAAO,EADeA,IAAKuC,EAAMA,EAAI,IAAI,EAC/C,CAGF,GAAI,EAAEvC,EAAIE,EAAE,OACV,QAASuC,EAAIF,EAAI,IAAI,EAAGvC,EAAIE,EAAE,OAAQF,IAAKyC,EAAIA,EAAE,IAAI,EAC/CvC,EAAEF,KAAO,IAEbuC,EAAMA,EAAI,IAAIE,CAAC,GAInB,OAAOF,CACT,EAGAhD,EAAG,UAAU,OAAS,SAAiB4L,EAAM,CAC3CnM,EAAO,OAAOmM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAIzK,EAAIyK,EAAO,GACXvB,GAAKuB,EAAOzK,GAAK,GACjB0K,EAAa,WAAe,GAAK1K,GAAQ,GAAKA,EAC9CV,EAEJ,GAAIU,IAAM,EAAG,CACX,IAAIoB,EAAQ,EAEZ,IAAK9B,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAAK,CAChC,IAAIqL,EAAW,KAAK,MAAMrL,GAAKoL,EAC3B7K,GAAM,KAAK,MAAMP,GAAK,GAAKqL,GAAa3K,EAC5C,KAAK,MAAMV,GAAKO,EAAIuB,EACpBA,EAAQuJ,IAAc,GAAK3K,CAC7B,CAEIoB,IACF,KAAK,MAAM9B,GAAK8B,EAChB,KAAK,SAET,CAEA,GAAI8H,IAAM,EAAG,CACX,IAAK5J,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAChC,KAAK,MAAMA,EAAI4J,GAAK,KAAK,MAAM5J,GAGjC,IAAKA,EAAI,EAAGA,EAAI4J,EAAG5J,IACjB,KAAK,MAAMA,GAAK,EAGlB,KAAK,QAAU4J,CACjB,CAEA,OAAO,KAAK,MAAM,CACpB,EAEArK,EAAG,UAAU,MAAQ,SAAgB4L,EAAM,CAEzC,OAAAnM,EAAO,KAAK,WAAa,CAAC,EACnB,KAAK,OAAOmM,CAAI,CACzB,EAKA5L,EAAG,UAAU,OAAS,SAAiB4L,EAAMG,EAAMC,EAAU,CAC3DvM,EAAO,OAAOmM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAIK,EACAF,EACFE,GAAKF,EAAQA,EAAO,IAAO,GAE3BE,EAAI,EAGN,IAAI9K,EAAIyK,EAAO,GACXvB,EAAI,KAAK,KAAKuB,EAAOzK,GAAK,GAAI,KAAK,MAAM,EACzC+K,EAAO,SAAc,WAAc/K,GAAMA,EACzCgL,EAAcH,EAMlB,GAJAC,GAAK5B,EACL4B,EAAI,KAAK,IAAI,EAAGA,CAAC,EAGbE,EAAa,CACf,QAAS1L,EAAI,EAAGA,EAAI4J,EAAG5J,IACrB0L,EAAY,MAAM1L,GAAK,KAAK,MAAMA,GAEpC0L,EAAY,OAAS9B,CACvB,CAEA,GAAIA,IAAM,EAEH,GAAI,KAAK,OAASA,EAEvB,IADA,KAAK,QAAUA,EACV5J,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC3B,KAAK,MAAMA,GAAK,KAAK,MAAMA,EAAI4J,QAGjC,KAAK,MAAM,GAAK,EAChB,KAAK,OAAS,EAGhB,IAAI9H,EAAQ,EACZ,IAAK9B,EAAI,KAAK,OAAS,EAAGA,GAAK,IAAM8B,IAAU,GAAK9B,GAAKwL,GAAIxL,IAAK,CAChE,IAAIqB,EAAO,KAAK,MAAMrB,GAAK,EAC3B,KAAK,MAAMA,GAAM8B,GAAU,GAAKpB,EAAOW,IAASX,EAChDoB,EAAQT,EAAOoK,CACjB,CAGA,OAAIC,GAAe5J,IAAU,IAC3B4J,EAAY,MAAMA,EAAY,UAAY5J,GAGxC,KAAK,SAAW,IAClB,KAAK,MAAM,GAAK,EAChB,KAAK,OAAS,GAGT,KAAK,MAAM,CACpB,EAEAvC,EAAG,UAAU,MAAQ,SAAgB4L,EAAMG,EAAMC,EAAU,CAEzD,OAAAvM,EAAO,KAAK,WAAa,CAAC,EACnB,KAAK,OAAOmM,EAAMG,EAAMC,CAAQ,CACzC,EAGAhM,EAAG,UAAU,KAAO,SAAe4L,EAAM,CACvC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAI,CAChC,EAEA5L,EAAG,UAAU,MAAQ,SAAgB4L,EAAM,CACzC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGA5L,EAAG,UAAU,KAAO,SAAe4L,EAAM,CACvC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAI,CAChC,EAEA5L,EAAG,UAAU,MAAQ,SAAgB4L,EAAM,CACzC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGA5L,EAAG,UAAU,MAAQ,SAAgBsD,EAAK,CACxC7D,EAAO,OAAO6D,GAAQ,UAAYA,GAAO,CAAC,EAC1C,IAAInC,EAAImC,EAAM,GACV+G,GAAK/G,EAAMnC,GAAK,GAChB+B,EAAI,GAAK/B,EAGb,GAAI,KAAK,QAAUkJ,EAAG,MAAO,GAG7B,IAAI1J,EAAI,KAAK,MAAM0J,GAEnB,MAAO,CAAC,EAAE1J,EAAIuC,EAChB,EAGAlD,EAAG,UAAU,OAAS,SAAiB4L,EAAM,CAC3CnM,EAAO,OAAOmM,GAAS,UAAYA,GAAQ,CAAC,EAC5C,IAAIzK,EAAIyK,EAAO,GACXvB,GAAKuB,EAAOzK,GAAK,GAIrB,GAFA1B,EAAO,KAAK,WAAa,EAAG,yCAAyC,EAEjE,KAAK,QAAU4K,EACjB,OAAO,KAQT,GALIlJ,IAAM,GACRkJ,IAEF,KAAK,OAAS,KAAK,IAAIA,EAAG,KAAK,MAAM,EAEjClJ,IAAM,EAAG,CACX,IAAI+K,EAAO,SAAc,WAAc/K,GAAMA,EAC7C,KAAK,MAAM,KAAK,OAAS,IAAM+K,CACjC,CAEA,OAAO,KAAK,MAAM,CACpB,EAGAlM,EAAG,UAAU,MAAQ,SAAgB4L,EAAM,CACzC,OAAO,KAAK,MAAM,EAAE,OAAOA,CAAI,CACjC,EAGA5L,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAGxC,OAFAZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAClBA,EAAM,EAAU,KAAK,MAAM,CAACA,CAAG,EAG/B,KAAK,WAAa,EAChB,KAAK,SAAW,IAAM,KAAK,MAAM,GAAK,GAAKA,GAC7C,KAAK,MAAM,GAAKA,GAAO,KAAK,MAAM,GAAK,GACvC,KAAK,SAAW,EACT,OAGT,KAAK,SAAW,EAChB,KAAK,MAAMA,CAAG,EACd,KAAK,SAAW,EACT,MAIF,KAAK,OAAOA,CAAG,CACxB,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,KAAK,MAAM,IAAMA,EAGjB,QAASI,EAAI,EAAGA,EAAI,KAAK,QAAU,KAAK,MAAMA,IAAM,SAAWA,IAC7D,KAAK,MAAMA,IAAM,SACbA,IAAM,KAAK,OAAS,EACtB,KAAK,MAAMA,EAAI,GAAK,EAEpB,KAAK,MAAMA,EAAI,KAGnB,YAAK,OAAS,KAAK,IAAI,KAAK,OAAQA,EAAI,CAAC,EAElC,IACT,EAGAT,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CAGxC,GAFAZ,EAAO,OAAOY,GAAQ,QAAQ,EAC9BZ,EAAOY,EAAM,QAAS,EAClBA,EAAM,EAAG,OAAO,KAAK,MAAM,CAACA,CAAG,EAEnC,GAAI,KAAK,WAAa,EACpB,YAAK,SAAW,EAChB,KAAK,MAAMA,CAAG,EACd,KAAK,SAAW,EACT,KAKT,GAFA,KAAK,MAAM,IAAMA,EAEb,KAAK,SAAW,GAAK,KAAK,MAAM,GAAK,EACvC,KAAK,MAAM,GAAK,CAAC,KAAK,MAAM,GAC5B,KAAK,SAAW,MAGhB,SAASI,EAAI,EAAGA,EAAI,KAAK,QAAU,KAAK,MAAMA,GAAK,EAAGA,IACpD,KAAK,MAAMA,IAAM,SACjB,KAAK,MAAMA,EAAI,IAAM,EAIzB,OAAO,KAAK,MAAM,CACpB,EAEAT,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,KAAO,UAAiB,CACnC,YAAK,SAAW,EAET,IACT,EAEAA,EAAG,UAAU,IAAM,UAAgB,CACjC,OAAO,KAAK,MAAM,EAAE,KAAK,CAC3B,EAEAA,EAAG,UAAU,aAAe,SAAuBK,EAAKmB,EAAK4K,EAAO,CAClE,IAAI3K,EAAMpB,EAAI,OAAS+L,EACnB3L,EAEJ,KAAK,QAAQgB,CAAG,EAEhB,IAAId,EACA4B,EAAQ,EACZ,IAAK9B,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CAC/BE,GAAK,KAAK,MAAMF,EAAI2L,GAAS,GAAK7J,EAClC,IAAIhC,GAASF,EAAI,MAAMI,GAAK,GAAKe,EACjCb,GAAKJ,EAAQ,SACbgC,GAAS5B,GAAK,KAAQJ,EAAQ,SAAa,GAC3C,KAAK,MAAME,EAAI2L,GAASzL,EAAI,QAC9B,CACA,KAAOF,EAAI,KAAK,OAAS2L,EAAO3L,IAC9BE,GAAK,KAAK,MAAMF,EAAI2L,GAAS,GAAK7J,EAClCA,EAAQ5B,GAAK,GACb,KAAK,MAAMF,EAAI2L,GAASzL,EAAI,SAG9B,GAAI4B,IAAU,EAAG,OAAO,KAAK,MAAM,EAKnC,IAFA9C,EAAO8C,IAAU,EAAE,EACnBA,EAAQ,EACH9B,EAAI,EAAGA,EAAI,KAAK,OAAQA,IAC3BE,EAAI,EAAE,KAAK,MAAMF,GAAK,GAAK8B,EAC3BA,EAAQ5B,GAAK,GACb,KAAK,MAAMF,GAAKE,EAAI,SAEtB,YAAK,SAAW,EAET,KAAK,MAAM,CACpB,EAEAX,EAAG,UAAU,SAAW,SAAmBK,EAAKgM,EAAM,CACpD,IAAID,EAAQ,KAAK,OAAS/L,EAAI,OAE1BoD,EAAI,KAAK,MAAM,EACfR,EAAI5C,EAGJiM,EAAMrJ,EAAE,MAAMA,EAAE,OAAS,GAAK,EAC9BsJ,EAAU,KAAK,WAAWD,CAAG,EACjCF,EAAQ,GAAKG,EACTH,IAAU,IACZnJ,EAAIA,EAAE,MAAMmJ,CAAK,EACjB3I,EAAE,OAAO2I,CAAK,EACdE,EAAMrJ,EAAE,MAAMA,EAAE,OAAS,GAAK,GAIhC,IAAIgI,EAAIxH,EAAE,OAASR,EAAE,OACjBC,EAEJ,GAAImJ,IAAS,MAAO,CAClBnJ,EAAI,IAAIlD,EAAG,IAAI,EACfkD,EAAE,OAAS+H,EAAI,EACf/H,EAAE,MAAQ,IAAI,MAAMA,EAAE,MAAM,EAC5B,QAASzC,EAAI,EAAGA,EAAIyC,EAAE,OAAQzC,IAC5ByC,EAAE,MAAMzC,GAAK,CAEjB,CAEA,IAAI+L,EAAO/I,EAAE,MAAM,EAAE,aAAaR,EAAG,EAAGgI,CAAC,EACrCuB,EAAK,WAAa,IACpB/I,EAAI+I,EACAtJ,IACFA,EAAE,MAAM+H,GAAK,IAIjB,QAASvK,EAAIuK,EAAI,EAAGvK,GAAK,EAAGA,IAAK,CAC/B,IAAI+L,GAAMhJ,EAAE,MAAMR,EAAE,OAASvC,GAAK,GAAK,UACpC+C,EAAE,MAAMR,EAAE,OAASvC,EAAI,GAAK,GAO/B,IAHA+L,EAAK,KAAK,IAAKA,EAAKH,EAAO,EAAG,QAAS,EAEvC7I,EAAE,aAAaR,EAAGwJ,EAAI/L,CAAC,EAChB+C,EAAE,WAAa,GACpBgJ,IACAhJ,EAAE,SAAW,EACbA,EAAE,aAAaR,EAAG,EAAGvC,CAAC,EACjB+C,EAAE,OAAO,IACZA,EAAE,UAAY,GAGdP,IACFA,EAAE,MAAMxC,GAAK+L,EAEjB,CACA,OAAIvJ,GACFA,EAAE,MAAM,EAEVO,EAAE,MAAM,EAGJ4I,IAAS,OAASD,IAAU,GAC9B3I,EAAE,OAAO2I,CAAK,EAGT,CACL,IAAKlJ,GAAK,KACV,IAAKO,CACP,CACF,EAMAzD,EAAG,UAAU,OAAS,SAAiBK,EAAKgM,EAAMK,EAAU,CAG1D,GAFAjN,EAAO,CAACY,EAAI,OAAO,CAAC,EAEhB,KAAK,OAAO,EACd,MAAO,CACL,IAAK,IAAIL,EAAG,CAAC,EACb,IAAK,IAAIA,EAAG,CAAC,CACf,EAGF,IAAI2M,EAAK9K,EAAKmB,EACd,OAAI,KAAK,WAAa,GAAK3C,EAAI,WAAa,GAC1C2C,EAAM,KAAK,IAAI,EAAE,OAAO3C,EAAKgM,CAAI,EAE7BA,IAAS,QACXM,EAAM3J,EAAI,IAAI,IAAI,GAGhBqJ,IAAS,QACXxK,EAAMmB,EAAI,IAAI,IAAI,EACd0J,GAAY7K,EAAI,WAAa,GAC/BA,EAAI,KAAKxB,CAAG,GAIT,CACL,IAAKsM,EACL,IAAK9K,CACP,GAGE,KAAK,WAAa,GAAKxB,EAAI,WAAa,GAC1C2C,EAAM,KAAK,OAAO3C,EAAI,IAAI,EAAGgM,CAAI,EAE7BA,IAAS,QACXM,EAAM3J,EAAI,IAAI,IAAI,GAGb,CACL,IAAK2J,EACL,IAAK3J,EAAI,GACX,IAGG,KAAK,SAAW3C,EAAI,YAAc,GACrC2C,EAAM,KAAK,IAAI,EAAE,OAAO3C,EAAI,IAAI,EAAGgM,CAAI,EAEnCA,IAAS,QACXxK,EAAMmB,EAAI,IAAI,IAAI,EACd0J,GAAY7K,EAAI,WAAa,GAC/BA,EAAI,KAAKxB,CAAG,GAIT,CACL,IAAK2C,EAAI,IACT,IAAKnB,CACP,GAMExB,EAAI,OAAS,KAAK,QAAU,KAAK,IAAIA,CAAG,EAAI,EACvC,CACL,IAAK,IAAIL,EAAG,CAAC,EACb,IAAK,IACP,EAIEK,EAAI,SAAW,EACbgM,IAAS,MACJ,CACL,IAAK,KAAK,KAAKhM,EAAI,MAAM,EAAE,EAC3B,IAAK,IACP,EAGEgM,IAAS,MACJ,CACL,IAAK,KACL,IAAK,IAAIrM,EAAG,KAAK,KAAKK,EAAI,MAAM,EAAE,CAAC,CACrC,EAGK,CACL,IAAK,KAAK,KAAKA,EAAI,MAAM,EAAE,EAC3B,IAAK,IAAIL,EAAG,KAAK,KAAKK,EAAI,MAAM,EAAE,CAAC,CACrC,EAGK,KAAK,SAASA,EAAKgM,CAAI,CAChC,EAGArM,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAK,EAAE,GACxC,EAGAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAK,EAAE,GACxC,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,OAAOA,EAAK,MAAO,EAAI,EAAE,GACvC,EAGAL,EAAG,UAAU,SAAW,SAAmBK,EAAK,CAC9C,IAAIuM,EAAK,KAAK,OAAOvM,CAAG,EAGxB,GAAIuM,EAAG,IAAI,OAAO,EAAG,OAAOA,EAAG,IAE/B,IAAI/K,EAAM+K,EAAG,IAAI,WAAa,EAAIA,EAAG,IAAI,KAAKvM,CAAG,EAAIuM,EAAG,IAEpDC,EAAOxM,EAAI,MAAM,CAAC,EAClByM,EAAKzM,EAAI,MAAM,CAAC,EAChBuD,EAAM/B,EAAI,IAAIgL,CAAI,EAGtB,OAAIjJ,EAAM,GAAKkJ,IAAO,GAAKlJ,IAAQ,EAAUgJ,EAAG,IAGzCA,EAAG,IAAI,WAAa,EAAIA,EAAG,IAAI,MAAM,CAAC,EAAIA,EAAG,IAAI,MAAM,CAAC,CACjE,EAEA5M,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtCZ,EAAOY,GAAO,QAAS,EAIvB,QAHImK,GAAK,GAAK,IAAMnK,EAEhB0M,EAAM,EACDtM,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IACpCsM,GAAOvC,EAAIuC,GAAO,KAAK,MAAMtM,GAAK,IAAMJ,EAG1C,OAAO0M,CACT,EAGA/M,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CACxCZ,EAAOY,GAAO,QAAS,EAGvB,QADIkC,EAAQ,EACH9B,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAAK,CACzC,IAAIE,GAAK,KAAK,MAAMF,GAAK,GAAK8B,EAAQ,SACtC,KAAK,MAAM9B,GAAME,EAAIN,EAAO,EAC5BkC,EAAQ5B,EAAIN,CACd,CAEA,OAAO,KAAK,MAAM,CACpB,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,MAAM,EAAE,MAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,KAAO,SAAewK,EAAG,CACpC/K,EAAO+K,EAAE,WAAa,CAAC,EACvB/K,EAAO,CAAC+K,EAAE,OAAO,CAAC,EAElB,IAAIX,EAAI,KACJF,EAAIa,EAAE,MAAM,EAEZX,EAAE,WAAa,EACjBA,EAAIA,EAAE,KAAKW,CAAC,EAEZX,EAAIA,EAAE,MAAM,EAad,QATImD,EAAI,IAAIhN,EAAG,CAAC,EACZiN,EAAI,IAAIjN,EAAG,CAAC,EAGZkN,EAAI,IAAIlN,EAAG,CAAC,EACZmN,EAAI,IAAInN,EAAG,CAAC,EAEZoN,EAAI,EAEDvD,EAAE,OAAO,GAAKF,EAAE,OAAO,GAC5BE,EAAE,OAAO,CAAC,EACVF,EAAE,OAAO,CAAC,EACV,EAAEyD,EAMJ,QAHIC,EAAK1D,EAAE,MAAM,EACb2D,EAAKzD,EAAE,MAAM,EAEV,CAACA,EAAE,OAAO,GAAG,CAClB,QAASpJ,EAAI,EAAG8M,EAAK,GAAI1D,EAAE,MAAM,GAAK0D,KAAQ,GAAK9M,EAAI,GAAI,EAAEA,EAAG8M,IAAO,EAAE,CACzE,GAAI9M,EAAI,EAEN,IADAoJ,EAAE,OAAOpJ,CAAC,EACHA,KAAM,IACPuM,EAAE,MAAM,GAAKC,EAAE,MAAM,KACvBD,EAAE,KAAKK,CAAE,EACTJ,EAAE,KAAKK,CAAE,GAGXN,EAAE,OAAO,CAAC,EACVC,EAAE,OAAO,CAAC,EAId,QAASvM,EAAI,EAAG8M,EAAK,GAAI7D,EAAE,MAAM,GAAK6D,KAAQ,GAAK9M,EAAI,GAAI,EAAEA,EAAG8M,IAAO,EAAE,CACzE,GAAI9M,EAAI,EAEN,IADAiJ,EAAE,OAAOjJ,CAAC,EACHA,KAAM,IACPwM,EAAE,MAAM,GAAKC,EAAE,MAAM,KACvBD,EAAE,KAAKG,CAAE,EACTF,EAAE,KAAKG,CAAE,GAGXJ,EAAE,OAAO,CAAC,EACVC,EAAE,OAAO,CAAC,EAIVtD,EAAE,IAAIF,CAAC,GAAK,GACdE,EAAE,KAAKF,CAAC,EACRqD,EAAE,KAAKE,CAAC,EACRD,EAAE,KAAKE,CAAC,IAERxD,EAAE,KAAKE,CAAC,EACRqD,EAAE,KAAKF,CAAC,EACRG,EAAE,KAAKF,CAAC,EAEZ,CAEA,MAAO,CACL,EAAGC,EACH,EAAGC,EACH,IAAKxD,EAAE,OAAOyD,CAAC,CACjB,CACF,EAKApN,EAAG,UAAU,OAAS,SAAiBwK,EAAG,CACxC/K,EAAO+K,EAAE,WAAa,CAAC,EACvB/K,EAAO,CAAC+K,EAAE,OAAO,CAAC,EAElB,IAAI/G,EAAI,KACJR,EAAIuH,EAAE,MAAM,EAEZ/G,EAAE,WAAa,EACjBA,EAAIA,EAAE,KAAK+G,CAAC,EAEZ/G,EAAIA,EAAE,MAAM,EAQd,QALIgK,EAAK,IAAIzN,EAAG,CAAC,EACb0N,EAAK,IAAI1N,EAAG,CAAC,EAEb2N,EAAQ1K,EAAE,MAAM,EAEbQ,EAAE,KAAK,CAAC,EAAI,GAAKR,EAAE,KAAK,CAAC,EAAI,GAAG,CACrC,QAASxC,EAAI,EAAG8M,EAAK,GAAI9J,EAAE,MAAM,GAAK8J,KAAQ,GAAK9M,EAAI,GAAI,EAAEA,EAAG8M,IAAO,EAAE,CACzE,GAAI9M,EAAI,EAEN,IADAgD,EAAE,OAAOhD,CAAC,EACHA,KAAM,GACPgN,EAAG,MAAM,GACXA,EAAG,KAAKE,CAAK,EAGfF,EAAG,OAAO,CAAC,EAIf,QAAS/M,EAAI,EAAG8M,EAAK,GAAIvK,EAAE,MAAM,GAAKuK,KAAQ,GAAK9M,EAAI,GAAI,EAAEA,EAAG8M,IAAO,EAAE,CACzE,GAAI9M,EAAI,EAEN,IADAuC,EAAE,OAAOvC,CAAC,EACHA,KAAM,GACPgN,EAAG,MAAM,GACXA,EAAG,KAAKC,CAAK,EAGfD,EAAG,OAAO,CAAC,EAIXjK,EAAE,IAAIR,CAAC,GAAK,GACdQ,EAAE,KAAKR,CAAC,EACRwK,EAAG,KAAKC,CAAE,IAEVzK,EAAE,KAAKQ,CAAC,EACRiK,EAAG,KAAKD,CAAE,EAEd,CAEA,IAAIzK,EACJ,OAAIS,EAAE,KAAK,CAAC,IAAM,EAChBT,EAAMyK,EAENzK,EAAM0K,EAGJ1K,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAKwH,CAAC,EAGLxH,CACT,EAEAhD,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,GAAI,KAAK,OAAO,EAAG,OAAOA,EAAI,IAAI,EAClC,GAAIA,EAAI,OAAO,EAAG,OAAO,KAAK,IAAI,EAElC,IAAIoD,EAAI,KAAK,MAAM,EACfR,EAAI5C,EAAI,MAAM,EAClBoD,EAAE,SAAW,EACbR,EAAE,SAAW,EAGb,QAASmJ,EAAQ,EAAG3I,EAAE,OAAO,GAAKR,EAAE,OAAO,EAAGmJ,IAC5C3I,EAAE,OAAO,CAAC,EACVR,EAAE,OAAO,CAAC,EAGZ,EAAG,CACD,KAAOQ,EAAE,OAAO,GACdA,EAAE,OAAO,CAAC,EAEZ,KAAOR,EAAE,OAAO,GACdA,EAAE,OAAO,CAAC,EAGZ,IAAI9B,EAAIsC,EAAE,IAAIR,CAAC,EACf,GAAI9B,EAAI,EAAG,CAET,IAAIgC,EAAIM,EACRA,EAAIR,EACJA,EAAIE,CACN,SAAWhC,IAAM,GAAK8B,EAAE,KAAK,CAAC,IAAM,EAClC,MAGFQ,EAAE,KAAKR,CAAC,CACV,OAAS,IAET,OAAOA,EAAE,OAAOmJ,CAAK,CACvB,EAGApM,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,EAAE,EAAE,KAAKA,CAAG,CAClC,EAEAL,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAQ,KAAK,MAAM,GAAK,KAAO,CACjC,EAEAA,EAAG,UAAU,MAAQ,UAAkB,CACrC,OAAQ,KAAK,MAAM,GAAK,KAAO,CACjC,EAGAA,EAAG,UAAU,MAAQ,SAAgBK,EAAK,CACxC,OAAO,KAAK,MAAM,GAAKA,CACzB,EAGAL,EAAG,UAAU,MAAQ,SAAgBsD,EAAK,CACxC7D,EAAO,OAAO6D,GAAQ,QAAQ,EAC9B,IAAInC,EAAImC,EAAM,GACV+G,GAAK/G,EAAMnC,GAAK,GAChB+B,EAAI,GAAK/B,EAGb,GAAI,KAAK,QAAUkJ,EACjB,YAAK,QAAQA,EAAI,CAAC,EAClB,KAAK,MAAMA,IAAMnH,EACV,KAKT,QADIX,EAAQW,EACHzC,EAAI4J,EAAG9H,IAAU,GAAK9B,EAAI,KAAK,OAAQA,IAAK,CACnD,IAAIE,EAAI,KAAK,MAAMF,GAAK,EACxBE,GAAK4B,EACLA,EAAQ5B,IAAM,GACdA,GAAK,SACL,KAAK,MAAMF,GAAKE,CAClB,CACA,OAAI4B,IAAU,IACZ,KAAK,MAAM9B,GAAK8B,EAChB,KAAK,UAEA,IACT,EAEAvC,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAO,KAAK,SAAW,GAAK,KAAK,MAAM,KAAO,CAChD,EAEAA,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,IAAIuN,EAAWvN,EAAM,EAErB,GAAI,KAAK,WAAa,GAAK,CAACuN,EAAU,MAAO,GAC7C,GAAI,KAAK,WAAa,GAAKA,EAAU,MAAO,GAE5C,KAAK,MAAM,EAEX,IAAI5K,EACJ,GAAI,KAAK,OAAS,EAChBA,EAAM,MACD,CACD4K,IACFvN,EAAM,CAACA,GAGTZ,EAAOY,GAAO,SAAW,mBAAmB,EAE5C,IAAIM,EAAI,KAAK,MAAM,GAAK,EACxBqC,EAAMrC,IAAMN,EAAM,EAAIM,EAAIN,EAAM,GAAK,CACvC,CACA,OAAI,KAAK,WAAa,EAAU,CAAC2C,EAAM,EAChCA,CACT,EAMAhD,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EAAG,MAAO,GACtD,GAAI,KAAK,WAAa,GAAKA,EAAI,WAAa,EAAG,MAAO,GAEtD,IAAI2C,EAAM,KAAK,KAAK3C,CAAG,EACvB,OAAI,KAAK,WAAa,EAAU,CAAC2C,EAAM,EAChCA,CACT,EAGAhD,EAAG,UAAU,KAAO,SAAeK,EAAK,CAEtC,GAAI,KAAK,OAASA,EAAI,OAAQ,MAAO,GACrC,GAAI,KAAK,OAASA,EAAI,OAAQ,MAAO,GAGrC,QADI2C,EAAM,EACDvC,EAAI,KAAK,OAAS,EAAGA,GAAK,EAAGA,IAAK,CACzC,IAAIgD,EAAI,KAAK,MAAMhD,GAAK,EACpBwC,EAAI5C,EAAI,MAAMI,GAAK,EAEvB,GAAIgD,IAAMR,EACV,CAAIQ,EAAIR,EACND,EAAM,GACGS,EAAIR,IACbD,EAAM,GAER,MACF,CACA,OAAOA,CACT,EAEAhD,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,CAC5B,EAEAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,CAC3B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,GAAK,CAC3B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,IAAIA,CAAG,GAAK,CAC1B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,EAC5B,EAEAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,EAC3B,EAEAL,EAAG,UAAU,KAAO,SAAeK,EAAK,CACtC,OAAO,KAAK,KAAKA,CAAG,GAAK,CAC3B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,IAAIA,CAAG,GAAK,CAC1B,EAEAL,EAAG,UAAU,IAAM,SAAcK,EAAK,CACpC,OAAO,KAAK,KAAKA,CAAG,IAAM,CAC5B,EAEAL,EAAG,UAAU,GAAK,SAAaK,EAAK,CAClC,OAAO,KAAK,IAAIA,CAAG,IAAM,CAC3B,EAMAL,EAAG,IAAM,SAAcK,EAAK,CAC1B,OAAO,IAAIwN,EAAIxN,CAAG,CACpB,EAEAL,EAAG,UAAU,MAAQ,SAAgB8N,EAAK,CACxC,OAAArO,EAAO,CAAC,KAAK,IAAK,uCAAuC,EACzDA,EAAO,KAAK,WAAa,EAAG,+BAA+B,EACpDqO,EAAI,UAAU,IAAI,EAAE,UAAUA,CAAG,CAC1C,EAEA9N,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,sDAAsD,EAChE,KAAK,IAAI,YAAY,IAAI,CAClC,EAEAO,EAAG,UAAU,UAAY,SAAoB8N,EAAK,CAChD,YAAK,IAAMA,EACJ,IACT,EAEA9N,EAAG,UAAU,SAAW,SAAmB8N,EAAK,CAC9C,OAAArO,EAAO,CAAC,KAAK,IAAK,uCAAuC,EAClD,KAAK,UAAUqO,CAAG,CAC3B,EAEA9N,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EAEAL,EAAG,UAAU,QAAU,SAAkBK,EAAK,CAC5C,OAAAZ,EAAO,KAAK,IAAK,qCAAqC,EAC/C,KAAK,IAAI,KAAK,KAAMY,CAAG,CAChC,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EAEAL,EAAG,UAAU,QAAU,SAAkBK,EAAK,CAC5C,OAAAZ,EAAO,KAAK,IAAK,qCAAqC,EAC/C,KAAK,IAAI,KAAK,KAAMY,CAAG,CAChC,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EAC9C,KAAK,IAAI,IAAI,KAAMY,CAAG,CAC/B,EAEAL,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,KAAMY,CAAG,EACpB,KAAK,IAAI,IAAI,KAAMA,CAAG,CAC/B,EAEAL,EAAG,UAAU,QAAU,SAAkBK,EAAK,CAC5C,OAAAZ,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,KAAMY,CAAG,EACpB,KAAK,IAAI,KAAK,KAAMA,CAAG,CAChC,EAEAL,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAAP,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,IAAI,CAC1B,EAEAO,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAGAO,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAEAO,EAAG,UAAU,QAAU,UAAoB,CACzC,OAAAP,EAAO,KAAK,IAAK,qCAAqC,EACtD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,KAAK,IAAI,CAC3B,EAGAO,EAAG,UAAU,OAAS,UAAmB,CACvC,OAAAP,EAAO,KAAK,IAAK,oCAAoC,EACrD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,IAAI,CAC1B,EAEAO,EAAG,UAAU,OAAS,SAAiBK,EAAK,CAC1C,OAAAZ,EAAO,KAAK,KAAO,CAACY,EAAI,IAAK,mBAAmB,EAChD,KAAK,IAAI,SAAS,IAAI,EACf,KAAK,IAAI,IAAI,KAAMA,CAAG,CAC/B,EAGA,IAAI0N,EAAS,CACX,KAAM,KACN,KAAM,KACN,KAAM,KACN,OAAQ,IACV,EAGA,SAASC,GAAQC,EAAMzD,EAAG,CAExB,KAAK,KAAOyD,EACZ,KAAK,EAAI,IAAIjO,EAAGwK,EAAG,EAAE,EACrB,KAAK,EAAI,KAAK,EAAE,UAAU,EAC1B,KAAK,EAAI,IAAIxK,EAAG,CAAC,EAAE,OAAO,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAE7C,KAAK,IAAM,KAAK,KAAK,CACvB,CAEAgO,GAAO,UAAU,KAAO,UAAiB,CACvC,IAAIE,EAAM,IAAIlO,EAAG,IAAI,EACrB,OAAAkO,EAAI,MAAQ,IAAI,MAAM,KAAK,KAAK,KAAK,EAAI,EAAE,CAAC,EACrCA,CACT,EAEAF,GAAO,UAAU,QAAU,SAAkB3N,EAAK,CAGhD,IAAIc,EAAId,EACJ8N,EAEJ,GACE,KAAK,MAAMhN,EAAG,KAAK,GAAG,EACtBA,EAAI,KAAK,MAAMA,CAAC,EAChBA,EAAIA,EAAE,KAAK,KAAK,GAAG,EACnBgN,EAAOhN,EAAE,UAAU,QACZgN,EAAO,KAAK,GAErB,IAAIvK,EAAMuK,EAAO,KAAK,EAAI,GAAKhN,EAAE,KAAK,KAAK,CAAC,EAC5C,OAAIyC,IAAQ,GACVzC,EAAE,MAAM,GAAK,EACbA,EAAE,OAAS,GACFyC,EAAM,EACfzC,EAAE,KAAK,KAAK,CAAC,EAETA,EAAE,QAAU,OAEdA,EAAE,MAAM,EAGRA,EAAE,OAAO,EAINA,CACT,EAEA6M,GAAO,UAAU,MAAQ,SAAgBI,EAAO9L,EAAK,CACnD8L,EAAM,OAAO,KAAK,EAAG,EAAG9L,CAAG,CAC7B,EAEA0L,GAAO,UAAU,MAAQ,SAAgB3N,EAAK,CAC5C,OAAOA,EAAI,KAAK,KAAK,CAAC,CACxB,EAEA,SAASgO,IAAQ,CACfL,GAAO,KACL,KACA,OACA,yEAAyE,CAC7E,CACApO,EAASyO,GAAML,EAAM,EAErBK,GAAK,UAAU,MAAQ,SAAgBD,EAAOE,EAAQ,CAKpD,QAHIpC,EAAO,QAEPqC,EAAS,KAAK,IAAIH,EAAM,OAAQ,CAAC,EAC5B3N,EAAI,EAAGA,EAAI8N,EAAQ9N,IAC1B6N,EAAO,MAAM7N,GAAK2N,EAAM,MAAM3N,GAIhC,GAFA6N,EAAO,OAASC,EAEZH,EAAM,QAAU,EAAG,CACrBA,EAAM,MAAM,GAAK,EACjBA,EAAM,OAAS,EACf,MACF,CAGA,IAAII,EAAOJ,EAAM,MAAM,GAGvB,IAFAE,EAAO,MAAMA,EAAO,UAAYE,EAAOtC,EAElCzL,EAAI,GAAIA,EAAI2N,EAAM,OAAQ3N,IAAK,CAClC,IAAIgO,EAAOL,EAAM,MAAM3N,GAAK,EAC5B2N,EAAM,MAAM3N,EAAI,KAAQgO,EAAOvC,IAAS,EAAMsC,IAAS,GACvDA,EAAOC,CACT,CACAD,KAAU,GACVJ,EAAM,MAAM3N,EAAI,IAAM+N,EAClBA,IAAS,GAAKJ,EAAM,OAAS,GAC/BA,EAAM,QAAU,GAEhBA,EAAM,QAAU,CAEpB,EAEAC,GAAK,UAAU,MAAQ,SAAgBhO,EAAK,CAE1CA,EAAI,MAAMA,EAAI,QAAU,EACxBA,EAAI,MAAMA,EAAI,OAAS,GAAK,EAC5BA,EAAI,QAAU,EAId,QADI0D,EAAK,EACAtD,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CACnC,IAAIE,EAAIN,EAAI,MAAMI,GAAK,EACvBsD,GAAMpD,EAAI,IACVN,EAAI,MAAMI,GAAKsD,EAAK,SACpBA,EAAKpD,EAAI,IAASoD,EAAK,SAAa,EACtC,CAGA,OAAI1D,EAAI,MAAMA,EAAI,OAAS,KAAO,IAChCA,EAAI,SACAA,EAAI,MAAMA,EAAI,OAAS,KAAO,GAChCA,EAAI,UAGDA,CACT,EAEA,SAASqO,IAAQ,CACfV,GAAO,KACL,KACA,OACA,gEAAgE,CACpE,CACApO,EAAS8O,GAAMV,EAAM,EAErB,SAASW,IAAQ,CACfX,GAAO,KACL,KACA,OACA,uDAAuD,CAC3D,CACApO,EAAS+O,GAAMX,EAAM,EAErB,SAASY,IAAU,CAEjBZ,GAAO,KACL,KACA,QACA,qEAAqE,CACzE,CACApO,EAASgP,GAAQZ,EAAM,EAEvBY,GAAO,UAAU,MAAQ,SAAgBvO,EAAK,CAG5C,QADIkC,EAAQ,EACH9B,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CACnC,IAAI2C,GAAM/C,EAAI,MAAMI,GAAK,GAAK,GAAO8B,EACjCwB,EAAKX,EAAK,SACdA,KAAQ,GAER/C,EAAI,MAAMI,GAAKsD,EACfxB,EAAQa,CACV,CACA,OAAIb,IAAU,IACZlC,EAAI,MAAMA,EAAI,UAAYkC,GAErBlC,CACT,EAGAL,EAAG,OAAS,SAAgBiO,EAAM,CAEhC,GAAIF,EAAOE,GAAO,OAAOF,EAAOE,GAEhC,IAAIY,EACJ,GAAIZ,IAAS,OACXY,EAAQ,IAAIR,WACHJ,IAAS,OAClBY,EAAQ,IAAIH,WACHT,IAAS,OAClBY,EAAQ,IAAIF,WACHV,IAAS,SAClBY,EAAQ,IAAID,OAEZ,OAAM,IAAI,MAAM,iBAAmBX,CAAI,EAEzC,OAAAF,EAAOE,GAAQY,EAERA,CACT,EAKA,SAAShB,EAAK5C,EAAG,CACf,GAAI,OAAOA,GAAM,SAAU,CACzB,IAAI4D,EAAQ7O,EAAG,OAAOiL,CAAC,EACvB,KAAK,EAAI4D,EAAM,EACf,KAAK,MAAQA,CACf,MACEpP,EAAOwL,EAAE,IAAI,CAAC,EAAG,gCAAgC,EACjD,KAAK,EAAIA,EACT,KAAK,MAAQ,IAEjB,CAEA4C,EAAI,UAAU,SAAW,SAAmBpK,EAAG,CAC7ChE,EAAOgE,EAAE,WAAa,EAAG,+BAA+B,EACxDhE,EAAOgE,EAAE,IAAK,iCAAiC,CACjD,EAEAoK,EAAI,UAAU,SAAW,SAAmBpK,EAAG,EAAG,CAChDhE,GAAQgE,EAAE,SAAW,EAAE,YAAc,EAAG,+BAA+B,EACvEhE,EAAOgE,EAAE,KAAOA,EAAE,MAAQ,EAAE,IAC1B,iCAAiC,CACrC,EAEAoK,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,OAAI,KAAK,MAAc,KAAK,MAAM,QAAQA,CAAC,EAAE,UAAU,IAAI,EACpDA,EAAE,KAAK,KAAK,CAAC,EAAE,UAAU,IAAI,CACtC,EAEAoK,EAAI,UAAU,IAAM,SAAcpK,EAAG,CACnC,OAAIA,EAAE,OAAO,EACJA,EAAE,MAAM,EAGV,KAAK,EAAE,IAAIA,CAAC,EAAE,UAAU,IAAI,CACrC,EAEAoK,EAAI,UAAU,IAAM,SAAcpK,EAAG,EAAG,CACtC,KAAK,SAASA,EAAG,CAAC,EAElB,IAAIT,EAAMS,EAAE,IAAI,CAAC,EACjB,OAAIT,EAAI,IAAI,KAAK,CAAC,GAAK,GACrBA,EAAI,KAAK,KAAK,CAAC,EAEVA,EAAI,UAAU,IAAI,CAC3B,EAEA6K,EAAI,UAAU,KAAO,SAAepK,EAAG,EAAG,CACxC,KAAK,SAASA,EAAG,CAAC,EAElB,IAAIT,EAAMS,EAAE,KAAK,CAAC,EAClB,OAAIT,EAAI,IAAI,KAAK,CAAC,GAAK,GACrBA,EAAI,KAAK,KAAK,CAAC,EAEVA,CACT,EAEA6K,EAAI,UAAU,IAAM,SAAcpK,EAAG,EAAG,CACtC,KAAK,SAASA,EAAG,CAAC,EAElB,IAAIT,EAAMS,EAAE,IAAI,CAAC,EACjB,OAAIT,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAK,KAAK,CAAC,EAEVA,EAAI,UAAU,IAAI,CAC3B,EAEA6K,EAAI,UAAU,KAAO,SAAepK,EAAG,EAAG,CACxC,KAAK,SAASA,EAAG,CAAC,EAElB,IAAIT,EAAMS,EAAE,KAAK,CAAC,EAClB,OAAIT,EAAI,KAAK,CAAC,EAAI,GAChBA,EAAI,KAAK,KAAK,CAAC,EAEVA,CACT,EAEA6K,EAAI,UAAU,IAAM,SAAcpK,EAAGpD,EAAK,CACxC,YAAK,SAASoD,CAAC,EACR,KAAK,KAAKA,EAAE,MAAMpD,CAAG,CAAC,CAC/B,EAEAwN,EAAI,UAAU,KAAO,SAAepK,EAAG,EAAG,CACxC,YAAK,SAASA,EAAG,CAAC,EACX,KAAK,KAAKA,EAAE,KAAK,CAAC,CAAC,CAC5B,EAEAoK,EAAI,UAAU,IAAM,SAAcpK,EAAG,EAAG,CACtC,YAAK,SAASA,EAAG,CAAC,EACX,KAAK,KAAKA,EAAE,IAAI,CAAC,CAAC,CAC3B,EAEAoK,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,OAAO,KAAK,KAAKA,EAAGA,EAAE,MAAM,CAAC,CAC/B,EAEAoK,EAAI,UAAU,IAAM,SAAcpK,EAAG,CACnC,OAAO,KAAK,IAAIA,EAAGA,CAAC,CACtB,EAEAoK,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,GAAIA,EAAE,OAAO,EAAG,OAAOA,EAAE,MAAM,EAE/B,IAAIqL,EAAO,KAAK,EAAE,MAAM,CAAC,EAIzB,GAHArP,EAAOqP,EAAO,IAAM,CAAC,EAGjBA,IAAS,EAAG,CACd,IAAI/M,EAAM,KAAK,EAAE,IAAI,IAAI/B,EAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EACxC,OAAO,KAAK,IAAIyD,EAAG1B,CAAG,CACxB,CAOA,QAFImB,EAAI,KAAK,EAAE,KAAK,CAAC,EACjBmH,EAAI,EACD,CAACnH,EAAE,OAAO,GAAKA,EAAE,MAAM,CAAC,IAAM,GACnCmH,IACAnH,EAAE,OAAO,CAAC,EAEZzD,EAAO,CAACyD,EAAE,OAAO,CAAC,EAElB,IAAI6L,EAAM,IAAI/O,EAAG,CAAC,EAAE,MAAM,IAAI,EAC1BgP,EAAOD,EAAI,OAAO,EAIlBE,EAAO,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,EAC9BC,EAAI,KAAK,EAAE,UAAU,EAGzB,IAFAA,EAAI,IAAIlP,EAAG,EAAIkP,EAAIA,CAAC,EAAE,MAAM,IAAI,EAEzB,KAAK,IAAIA,EAAGD,CAAI,EAAE,IAAID,CAAI,IAAM,GACrCE,EAAE,QAAQF,CAAI,EAOhB,QAJIhO,EAAI,KAAK,IAAIkO,EAAGhM,CAAC,EACjB/B,EAAI,KAAK,IAAIsC,EAAGP,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,EACnCC,EAAI,KAAK,IAAIM,EAAGP,CAAC,EACjB+H,EAAIZ,EACDlH,EAAE,IAAI4L,CAAG,IAAM,GAAG,CAEvB,QADIb,EAAM/K,EACD1C,EAAI,EAAGyN,EAAI,IAAIa,CAAG,IAAM,EAAGtO,IAClCyN,EAAMA,EAAI,OAAO,EAEnBzO,EAAOgB,EAAIwK,CAAC,EACZ,IAAIhI,EAAI,KAAK,IAAIjC,EAAG,IAAIhB,EAAG,CAAC,EAAE,OAAOiL,EAAIxK,EAAI,CAAC,CAAC,EAE/CU,EAAIA,EAAE,OAAO8B,CAAC,EACdjC,EAAIiC,EAAE,OAAO,EACbE,EAAIA,EAAE,OAAOnC,CAAC,EACdiK,EAAIxK,CACN,CAEA,OAAOU,CACT,EAEA0M,EAAI,UAAU,KAAO,SAAepK,EAAG,CACrC,IAAI0L,EAAM1L,EAAE,OAAO,KAAK,CAAC,EACzB,OAAI0L,EAAI,WAAa,GACnBA,EAAI,SAAW,EACR,KAAK,KAAKA,CAAG,EAAE,OAAO,GAEtB,KAAK,KAAKA,CAAG,CAExB,EAEAtB,EAAI,UAAU,IAAM,SAAcpK,EAAGpD,EAAK,CACxC,GAAIA,EAAI,OAAO,EAAG,OAAO,IAAIL,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7C,GAAIK,EAAI,KAAK,CAAC,IAAM,EAAG,OAAOoD,EAAE,MAAM,EAEtC,IAAI2L,EAAa,EACbC,EAAM,IAAI,MAAM,GAAKD,CAAU,EACnCC,EAAI,GAAK,IAAIrP,EAAG,CAAC,EAAE,MAAM,IAAI,EAC7BqP,EAAI,GAAK5L,EACT,QAAShD,EAAI,EAAGA,EAAI4O,EAAI,OAAQ5O,IAC9B4O,EAAI5O,GAAK,KAAK,IAAI4O,EAAI5O,EAAI,GAAIgD,CAAC,EAGjC,IAAIT,EAAMqM,EAAI,GACVC,EAAU,EACVC,EAAa,EACb/O,EAAQH,EAAI,UAAU,EAAI,GAK9B,IAJIG,IAAU,IACZA,EAAQ,IAGLC,EAAIJ,EAAI,OAAS,EAAGI,GAAK,EAAGA,IAAK,CAEpC,QADIqB,EAAOzB,EAAI,MAAMI,GACZC,EAAIF,EAAQ,EAAGE,GAAK,EAAGA,IAAK,CACnC,IAAI4C,EAAOxB,GAAQpB,EAAK,EAKxB,GAJIsC,IAAQqM,EAAI,KACdrM,EAAM,KAAK,IAAIA,CAAG,GAGhBM,IAAQ,GAAKgM,IAAY,EAAG,CAC9BC,EAAa,EACb,QACF,CAEAD,IAAY,EACZA,GAAWhM,EACXiM,IACI,EAAAA,IAAeH,IAAe3O,IAAM,GAAKC,IAAM,MAEnDsC,EAAM,KAAK,IAAIA,EAAKqM,EAAIC,EAAQ,EAChCC,EAAa,EACbD,EAAU,EACZ,CACA9O,EAAQ,EACV,CAEA,OAAOwC,CACT,EAEA6K,EAAI,UAAU,UAAY,SAAoBxN,EAAK,CACjD,IAAIc,EAAId,EAAI,KAAK,KAAK,CAAC,EAEvB,OAAOc,IAAMd,EAAMc,EAAE,MAAM,EAAIA,CACjC,EAEA0M,EAAI,UAAU,YAAc,SAAsBxN,EAAK,CACrD,IAAI2C,EAAM3C,EAAI,MAAM,EACpB,OAAA2C,EAAI,IAAM,KACHA,CACT,EAMAhD,EAAG,KAAO,SAAeK,EAAK,CAC5B,OAAO,IAAImP,EAAKnP,CAAG,CACrB,EAEA,SAASmP,EAAMvE,EAAG,CAChB4C,EAAI,KAAK,KAAM5C,CAAC,EAEhB,KAAK,MAAQ,KAAK,EAAE,UAAU,EAC1B,KAAK,MAAQ,KAAO,IACtB,KAAK,OAAS,GAAM,KAAK,MAAQ,IAGnC,KAAK,EAAI,IAAIjL,EAAG,CAAC,EAAE,OAAO,KAAK,KAAK,EACpC,KAAK,GAAK,KAAK,KAAK,KAAK,EAAE,IAAI,CAAC,EAChC,KAAK,KAAO,KAAK,EAAE,OAAO,KAAK,CAAC,EAEhC,KAAK,KAAO,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,EACrD,KAAK,KAAO,KAAK,KAAK,KAAK,KAAK,CAAC,EACjC,KAAK,KAAO,KAAK,EAAE,IAAI,KAAK,IAAI,CAClC,CACAJ,EAAS4P,EAAM3B,CAAG,EAElB2B,EAAK,UAAU,UAAY,SAAoBnP,EAAK,CAClD,OAAO,KAAK,KAAKA,EAAI,MAAM,KAAK,KAAK,CAAC,CACxC,EAEAmP,EAAK,UAAU,YAAc,SAAsBnP,EAAK,CACtD,IAAIc,EAAI,KAAK,KAAKd,EAAI,IAAI,KAAK,IAAI,CAAC,EACpC,OAAAc,EAAE,IAAM,KACDA,CACT,EAEAqO,EAAK,UAAU,KAAO,SAAe/L,EAAG,EAAG,CACzC,GAAIA,EAAE,OAAO,GAAK,EAAE,OAAO,EACzB,OAAAA,EAAE,MAAM,GAAK,EACbA,EAAE,OAAS,EACJA,EAGT,IAAIN,EAAIM,EAAE,KAAK,CAAC,EACZzC,EAAImC,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACpEsM,EAAItM,EAAE,KAAKnC,CAAC,EAAE,OAAO,KAAK,KAAK,EAC/BgC,EAAMyM,EAEV,OAAIA,EAAE,IAAI,KAAK,CAAC,GAAK,EACnBzM,EAAMyM,EAAE,KAAK,KAAK,CAAC,EACVA,EAAE,KAAK,CAAC,EAAI,IACrBzM,EAAMyM,EAAE,KAAK,KAAK,CAAC,GAGdzM,EAAI,UAAU,IAAI,CAC3B,EAEAwM,EAAK,UAAU,IAAM,SAAc/L,EAAG,EAAG,CACvC,GAAIA,EAAE,OAAO,GAAK,EAAE,OAAO,EAAG,OAAO,IAAIzD,EAAG,CAAC,EAAE,UAAU,IAAI,EAE7D,IAAImD,EAAIM,EAAE,IAAI,CAAC,EACXzC,EAAImC,EAAE,MAAM,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,OAAO,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACpEsM,EAAItM,EAAE,KAAKnC,CAAC,EAAE,OAAO,KAAK,KAAK,EAC/BgC,EAAMyM,EACV,OAAIA,EAAE,IAAI,KAAK,CAAC,GAAK,EACnBzM,EAAMyM,EAAE,KAAK,KAAK,CAAC,EACVA,EAAE,KAAK,CAAC,EAAI,IACrBzM,EAAMyM,EAAE,KAAK,KAAK,CAAC,GAGdzM,EAAI,UAAU,IAAI,CAC3B,EAEAwM,EAAK,UAAU,KAAO,SAAe/L,EAAG,CAEtC,IAAIT,EAAM,KAAK,KAAKS,EAAE,OAAO,KAAK,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC,EACjD,OAAOT,EAAI,UAAU,IAAI,CAC3B,CACF,GAAG,OAAOxD,GAAW,KAAeA,GAAQD,EAAI,ICr3GhD,IAAAmQ,GAAAC,GAAA,CAAAC,GAAAC,KAAA,CAAAA,GAAO,QAAUC,GAEjB,SAASA,GAAOC,EAAKC,EAAK,CACxB,GAAI,CAACD,EACH,MAAM,IAAI,MAAMC,GAAO,kBAAkB,CAC7C,CAEAF,GAAO,MAAQ,SAAqBG,EAAGC,EAAGF,EAAK,CAC7C,GAAIC,GAAKC,EACP,MAAM,IAAI,MAAMF,GAAQ,qBAAuBC,EAAI,OAASC,CAAE,CAClE,ICVA,IAAAC,GAAAC,GAAAC,IAAA,cAEA,IAAIC,GAAQD,GAEZ,SAASE,GAAQC,EAAKC,EAAK,CACzB,GAAI,MAAM,QAAQD,CAAG,EACnB,OAAOA,EAAI,MAAM,EACnB,GAAI,CAACA,EACH,MAAO,CAAC,EACV,IAAIE,EAAM,CAAC,EACX,GAAI,OAAOF,GAAQ,SAAU,CAC3B,QAASG,EAAI,EAAGA,EAAIH,EAAI,OAAQG,IAC9BD,EAAIC,GAAKH,EAAIG,GAAK,EACpB,OAAOD,CACT,CACA,GAAID,IAAQ,MAAO,CACjBD,EAAMA,EAAI,QAAQ,eAAgB,EAAE,EAChCA,EAAI,OAAS,IAAM,IACrBA,EAAM,IAAMA,GACd,QAASG,EAAI,EAAGA,EAAIH,EAAI,OAAQG,GAAK,EACnCD,EAAI,KAAK,SAASF,EAAIG,GAAKH,EAAIG,EAAI,GAAI,EAAE,CAAC,CAC9C,KACE,SAASA,EAAI,EAAGA,EAAIH,EAAI,OAAQG,IAAK,CACnC,IAAIC,EAAIJ,EAAI,WAAWG,CAAC,EACpBE,EAAKD,GAAK,EACVE,EAAKF,EAAI,IACTC,EACFH,EAAI,KAAKG,EAAIC,CAAE,EAEfJ,EAAI,KAAKI,CAAE,CACf,CAEF,OAAOJ,CACT,CACAJ,GAAM,QAAUC,GAEhB,SAASQ,GAAMC,EAAM,CACnB,OAAIA,EAAK,SAAW,EACX,IAAMA,EAENA,CACX,CACAV,GAAM,MAAQS,GAEd,SAASE,GAAMT,EAAK,CAElB,QADIE,EAAM,GACDC,EAAI,EAAGA,EAAIH,EAAI,OAAQG,IAC9BD,GAAOK,GAAMP,EAAIG,GAAG,SAAS,EAAE,CAAC,EAClC,OAAOD,CACT,CACAJ,GAAM,MAAQW,GAEdX,GAAM,OAAS,SAAgBY,EAAKT,EAAK,CACvC,OAAIA,IAAQ,MACHQ,GAAMC,CAAG,EAETA,CACX,ICzDA,IAAAC,GAAAC,GAAAC,IAAA,cAEA,IAAIC,GAAQD,GACRE,GAAK,KACLC,GAAY,KACZC,GAAW,KAEfH,GAAM,OAASE,GACfF,GAAM,QAAUG,GAAS,QACzBH,GAAM,MAAQG,GAAS,MACvBH,GAAM,MAAQG,GAAS,MACvBH,GAAM,OAASG,GAAS,OAGxB,SAASC,GAAOC,EAAKC,EAAGC,EAAM,CAC5B,IAAIC,EAAM,IAAI,MAAM,KAAK,IAAIH,EAAI,UAAU,EAAGE,CAAI,EAAI,CAAC,EACvDC,EAAI,KAAK,CAAC,EAKV,QAHIC,EAAK,GAAMH,EAAI,EACfI,EAAIL,EAAI,MAAM,EAETM,EAAI,EAAGA,EAAIH,EAAI,OAAQG,IAAK,CACnC,IAAIC,EACAC,EAAMH,EAAE,MAAMD,EAAK,CAAC,EACpBC,EAAE,MAAM,GACNG,GAAOJ,GAAM,GAAK,EACpBG,GAAKH,GAAM,GAAKI,EAEhBD,EAAIC,EACNH,EAAE,MAAME,CAAC,GAETA,EAAI,EAGNJ,EAAIG,GAAKC,EACTF,EAAE,OAAO,CAAC,CACZ,CAEA,OAAOF,CACT,CACAR,GAAM,OAASI,GAGf,SAASU,GAAOC,EAAIC,EAAI,CACtB,IAAIC,EAAM,CACR,CAAC,EACD,CAAC,CACH,EAEAF,EAAKA,EAAG,MAAM,EACdC,EAAKA,EAAG,MAAM,EAId,QAHIE,EAAK,EACLC,EAAK,EACLC,EACGL,EAAG,KAAK,CAACG,CAAE,EAAI,GAAKF,EAAG,KAAK,CAACG,CAAE,EAAI,GAAG,CAE3C,IAAIE,EAAON,EAAG,MAAM,CAAC,EAAIG,EAAM,EAC3BI,EAAON,EAAG,MAAM,CAAC,EAAIG,EAAM,EAC3BE,IAAQ,IACVA,EAAM,IACJC,IAAQ,IACVA,EAAM,IACR,IAAIC,GACCF,EAAM,KAAO,EAChBE,EAAK,GAELH,EAAML,EAAG,MAAM,CAAC,EAAIG,EAAM,GACrBE,IAAO,GAAKA,IAAO,IAAME,IAAQ,EACpCC,EAAK,CAACF,EAENE,EAAKF,GAETJ,EAAI,GAAG,KAAKM,CAAE,EAEd,IAAIC,GACCF,EAAM,KAAO,EAChBE,EAAK,GAELJ,EAAMJ,EAAG,MAAM,CAAC,EAAIG,EAAM,GACrBC,IAAO,GAAKA,IAAO,IAAMC,IAAQ,EACpCG,EAAK,CAACF,EAENE,EAAKF,GAETL,EAAI,GAAG,KAAKO,CAAE,EAGV,EAAIN,IAAOK,EAAK,IAClBL,EAAK,EAAIA,GACP,EAAIC,IAAOK,EAAK,IAClBL,EAAK,EAAIA,GACXJ,EAAG,OAAO,CAAC,EACXC,EAAG,OAAO,CAAC,CACb,CAEA,OAAOC,CACT,CACAjB,GAAM,OAASc,GAEf,SAASW,GAAeC,EAAKC,EAAMC,EAAU,CAC3C,IAAIC,EAAM,IAAMF,EAChBD,EAAI,UAAUC,GAAQ,UAA0B,CAC9C,OAAO,KAAKE,KAAS,OAAY,KAAKA,GACpC,KAAKA,GAAOD,EAAS,KAAK,IAAI,CAClC,CACF,CACA5B,GAAM,eAAiByB,GAEvB,SAASK,GAAWC,EAAO,CACzB,OAAO,OAAOA,GAAU,SAAW/B,GAAM,QAAQ+B,EAAO,KAAK,EAC3DA,CACJ,CACA/B,GAAM,WAAa8B,GAEnB,SAASE,GAAUD,EAAO,CACxB,OAAO,IAAI9B,GAAG8B,EAAO,MAAO,IAAI,CAClC,CACA/B,GAAM,UAAYgC,KCrHlB,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,KAAIC,GAEJD,GAAO,QAAU,SAAcE,EAAK,CAClC,OAAKD,KACHA,GAAI,IAAIE,GAAK,IAAI,GAEZF,GAAE,SAASC,CAAG,CACvB,EAEA,SAASC,GAAKC,EAAM,CAClB,KAAK,KAAOA,CACd,CACAJ,GAAO,QAAQ,KAAOG,GAEtBA,GAAK,UAAU,SAAW,SAAkBD,EAAK,CAC/C,OAAO,KAAK,MAAMA,CAAG,CACvB,EAGAC,GAAK,UAAU,MAAQ,SAAeE,EAAG,CACvC,GAAI,KAAK,KAAK,SACZ,OAAO,KAAK,KAAK,SAASA,CAAC,EAG7B,QADIC,EAAM,IAAI,WAAWD,CAAC,EACjBE,EAAI,EAAGA,EAAID,EAAI,OAAQC,IAC9BD,EAAIC,GAAK,KAAK,KAAK,QAAQ,EAC7B,OAAOD,CACT,EAEA,GAAI,OAAO,MAAS,SACd,KAAK,QAAU,KAAK,OAAO,gBAE7BH,GAAK,UAAU,MAAQ,SAAeE,EAAG,CACvC,IAAIG,EAAM,IAAI,WAAWH,CAAC,EAC1B,YAAK,OAAO,gBAAgBG,CAAG,EACxBA,CACT,EACS,KAAK,UAAY,KAAK,SAAS,gBAExCL,GAAK,UAAU,MAAQ,SAAeE,EAAG,CACvC,IAAIG,EAAM,IAAI,WAAWH,CAAC,EAC1B,YAAK,SAAS,gBAAgBG,CAAG,EAC1BA,CACT,EAGS,OAAO,QAAW,WAE3BL,GAAK,UAAU,MAAQ,UAAW,CAChC,MAAM,IAAI,MAAM,qBAAqB,CACvC,OAIF,IAAI,CAEF,GADIM,GAAS,KACT,OAAOA,GAAO,aAAgB,WAChC,MAAM,IAAI,MAAM,eAAe,EAEjCN,GAAK,UAAU,MAAQ,SAAeE,EAAG,CACvC,OAAOI,GAAO,YAAYJ,CAAC,CAC7B,CACF,MAAE,CACF,CARM,IAAAI,KCvDR,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAQ,KACRC,GAASD,GAAM,OACfE,GAASF,GAAM,OACfG,GAASH,GAAM,OAEnB,SAASI,GAAUC,EAAMC,EAAM,CAC7B,KAAK,KAAOD,EACZ,KAAK,EAAI,IAAIN,GAAGO,EAAK,EAAG,EAAE,EAG1B,KAAK,IAAMA,EAAK,MAAQP,GAAG,IAAIO,EAAK,KAAK,EAAIP,GAAG,KAAK,KAAK,CAAC,EAG3D,KAAK,KAAO,IAAIA,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EACpC,KAAK,IAAM,IAAIA,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EACnC,KAAK,IAAM,IAAIA,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EAGnC,KAAK,EAAIO,EAAK,GAAK,IAAIP,GAAGO,EAAK,EAAG,EAAE,EACpC,KAAK,EAAIA,EAAK,GAAK,KAAK,cAAcA,EAAK,EAAGA,EAAK,IAAI,EAGvD,KAAK,QAAU,IAAI,MAAM,CAAC,EAC1B,KAAK,QAAU,IAAI,MAAM,CAAC,EAC1B,KAAK,QAAU,IAAI,MAAM,CAAC,EAC1B,KAAK,QAAU,IAAI,MAAM,CAAC,EAE1B,KAAK,WAAa,KAAK,EAAI,KAAK,EAAE,UAAU,EAAI,EAGhD,IAAIC,EAAc,KAAK,GAAK,KAAK,EAAE,IAAI,KAAK,CAAC,EACzC,CAACA,GAAeA,EAAY,KAAK,GAAG,EAAI,EAC1C,KAAK,KAAO,MAEZ,KAAK,cAAgB,GACrB,KAAK,KAAO,KAAK,EAAE,MAAM,KAAK,GAAG,EAErC,CACAT,GAAO,QAAUM,GAEjBA,GAAU,UAAU,MAAQ,UAAiB,CAC3C,MAAM,IAAI,MAAM,iBAAiB,CACnC,EAEAA,GAAU,UAAU,SAAW,UAAoB,CACjD,MAAM,IAAI,MAAM,iBAAiB,CACnC,EAEAA,GAAU,UAAU,aAAe,SAAsBI,EAAGC,EAAG,CAC7DN,GAAOK,EAAE,WAAW,EACpB,IAAIE,EAAUF,EAAE,YAAY,EAExBG,EAAMV,GAAOQ,EAAG,EAAG,KAAK,UAAU,EAClCG,GAAK,GAAMF,EAAQ,KAAO,IAAOA,EAAQ,KAAO,IAAM,EAAI,EAAI,GAClEE,GAAK,EAGL,IAAIC,EAAO,CAAC,EACRC,EACAC,EACJ,IAAKD,EAAI,EAAGA,EAAIH,EAAI,OAAQG,GAAKJ,EAAQ,KAAM,CAC7CK,EAAO,EACP,QAASC,EAAIF,EAAIJ,EAAQ,KAAO,EAAGM,GAAKF,EAAGE,IACzCD,GAAQA,GAAQ,GAAKJ,EAAIK,GAC3BH,EAAK,KAAKE,CAAI,CAChB,CAIA,QAFIE,EAAI,KAAK,OAAO,KAAM,KAAM,IAAI,EAChCC,EAAI,KAAK,OAAO,KAAM,KAAM,IAAI,EAC3BC,EAAIP,EAAGO,EAAI,EAAGA,IAAK,CAC1B,IAAKL,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC3BC,EAAOF,EAAKC,GACRC,IAASI,EACXD,EAAIA,EAAE,SAASR,EAAQ,OAAOI,EAAE,EACzBC,IAAS,CAACI,IACjBD,EAAIA,EAAE,SAASR,EAAQ,OAAOI,GAAG,IAAI,CAAC,GAE1CG,EAAIA,EAAE,IAAIC,CAAC,CACb,CACA,OAAOD,EAAE,IAAI,CACf,EAEAb,GAAU,UAAU,SAAW,SAAkBI,EAAGC,EAAG,CACrD,IAAIW,EAAI,EAGJC,EAAYb,EAAE,cAAcY,CAAC,EACjCA,EAAIC,EAAU,IAQd,QAPIC,EAAMD,EAAU,OAGhBV,EAAMV,GAAOQ,EAAGW,EAAG,KAAK,UAAU,EAGlCG,EAAM,KAAK,OAAO,KAAM,KAAM,IAAI,EAC7BJ,EAAIR,EAAI,OAAS,EAAGQ,GAAK,EAAGA,IAAK,CAExC,QAASH,EAAI,EAAGG,GAAK,GAAKR,EAAIQ,KAAO,EAAGA,IACtCH,IAKF,GAJIG,GAAK,GACPH,IACFO,EAAMA,EAAI,KAAKP,CAAC,EAEZG,EAAI,EACN,MACF,IAAIK,EAAIb,EAAIQ,GACZhB,GAAOqB,IAAM,CAAC,EACVhB,EAAE,OAAS,SAETgB,EAAI,EACND,EAAMA,EAAI,SAASD,EAAKE,EAAI,GAAM,EAAE,EAEpCD,EAAMA,EAAI,SAASD,EAAK,CAACE,EAAI,GAAM,GAAG,IAAI,CAAC,EAGzCA,EAAI,EACND,EAAMA,EAAI,IAAID,EAAKE,EAAI,GAAM,EAAE,EAE/BD,EAAMA,EAAI,IAAID,EAAK,CAACE,EAAI,GAAM,GAAG,IAAI,CAAC,CAE5C,CACA,OAAOhB,EAAE,OAAS,SAAWe,EAAI,IAAI,EAAIA,CAC3C,EAEAnB,GAAU,UAAU,YAAc,SAAqBqB,EACrDC,EACAC,EACAC,EACAC,EAAgB,CAChB,IAAIC,EAAW,KAAK,QAChBR,EAAM,KAAK,QACXX,EAAM,KAAK,QAGXoB,EAAM,EACNZ,EACAL,EACAN,EACJ,IAAKW,EAAI,EAAGA,EAAIS,EAAKT,IAAK,CACxBX,EAAIkB,EAAOP,GACX,IAAIE,EAAYb,EAAE,cAAciB,CAAI,EACpCK,EAASX,GAAKE,EAAU,IACxBC,EAAIH,GAAKE,EAAU,MACrB,CAGA,IAAKF,EAAIS,EAAM,EAAGT,GAAK,EAAGA,GAAK,EAAG,CAChC,IAAIF,EAAIE,EAAI,EACRD,EAAIC,EACR,GAAIW,EAASb,KAAO,GAAKa,EAASZ,KAAO,EAAG,CAC1CP,EAAIM,GAAKhB,GAAO0B,EAAOV,GAAIa,EAASb,GAAI,KAAK,UAAU,EACvDN,EAAIO,GAAKjB,GAAO0B,EAAOT,GAAIY,EAASZ,GAAI,KAAK,UAAU,EACvDa,EAAM,KAAK,IAAIpB,EAAIM,GAAG,OAAQc,CAAG,EACjCA,EAAM,KAAK,IAAIpB,EAAIO,GAAG,OAAQa,CAAG,EACjC,QACF,CAEA,IAAIC,GAAO,CACTN,EAAOT,GACP,KACA,KACAS,EAAOR,EACT,EAGIQ,EAAOT,GAAG,EAAE,IAAIS,EAAOR,GAAG,CAAC,IAAM,GACnCc,GAAK,GAAKN,EAAOT,GAAG,IAAIS,EAAOR,EAAE,EACjCc,GAAK,GAAKN,EAAOT,GAAG,IAAI,EAAE,SAASS,EAAOR,GAAG,IAAI,CAAC,GACzCQ,EAAOT,GAAG,EAAE,IAAIS,EAAOR,GAAG,EAAE,OAAO,CAAC,IAAM,GACnDc,GAAK,GAAKN,EAAOT,GAAG,IAAI,EAAE,SAASS,EAAOR,EAAE,EAC5Cc,GAAK,GAAKN,EAAOT,GAAG,IAAIS,EAAOR,GAAG,IAAI,CAAC,IAEvCc,GAAK,GAAKN,EAAOT,GAAG,IAAI,EAAE,SAASS,EAAOR,EAAE,EAC5Cc,GAAK,GAAKN,EAAOT,GAAG,IAAI,EAAE,SAASS,EAAOR,GAAG,IAAI,CAAC,GAGpD,IAAIe,GAAQ,CACV,GACA,GACA,GACA,GACA,EACA,EACA,EACA,EACA,CACF,EAEIC,EAAMhC,GAAOyB,EAAOV,GAAIU,EAAOT,EAAE,EAIrC,IAHAa,EAAM,KAAK,IAAIG,EAAI,GAAG,OAAQH,CAAG,EACjCpB,EAAIM,GAAK,IAAI,MAAMc,CAAG,EACtBpB,EAAIO,GAAK,IAAI,MAAMa,CAAG,EACjBjB,EAAI,EAAGA,EAAIiB,EAAKjB,IAAK,CACxB,IAAIqB,GAAKD,EAAI,GAAGpB,GAAK,EACjBsB,GAAKF,EAAI,GAAGpB,GAAK,EAErBH,EAAIM,GAAGH,GAAKmB,IAAOE,GAAK,GAAK,GAAKC,GAAK,IACvCzB,EAAIO,GAAGJ,GAAK,EACZQ,EAAIL,GAAKe,EACX,CACF,CAEA,IAAIT,GAAM,KAAK,OAAO,KAAM,KAAM,IAAI,EAClCc,GAAM,KAAK,QACf,IAAKlB,EAAIY,EAAKZ,GAAK,EAAGA,IAAK,CAGzB,QAFIV,GAAI,EAEDU,GAAK,GAAG,CACb,IAAImB,EAAO,GACX,IAAKxB,EAAI,EAAGA,EAAIc,EAAKd,IACnBuB,GAAIvB,GAAKH,EAAIG,GAAGK,GAAK,EACjBkB,GAAIvB,KAAO,IACbwB,EAAO,IAEX,GAAI,CAACA,EACH,MACF7B,KACAU,GACF,CAIA,GAHIA,GAAK,GACPV,KACFc,GAAMA,GAAI,KAAKd,EAAC,EACZU,EAAI,EACN,MAEF,IAAKL,EAAI,EAAGA,EAAIc,EAAKd,IAAK,CACxB,IAAIU,EAAIa,GAAIvB,GAERU,IAAM,IAEDA,EAAI,EACXhB,EAAIc,EAAIR,GAAIU,EAAI,GAAM,GACfA,EAAI,IACXhB,EAAIc,EAAIR,GAAI,CAACU,EAAI,GAAM,GAAG,IAAI,GAE5BhB,EAAE,OAAS,SACbe,GAAMA,GAAI,SAASf,CAAC,EAEpBe,GAAMA,GAAI,IAAIf,CAAC,EACnB,CACF,CAEA,IAAKW,EAAI,EAAGA,EAAIS,EAAKT,IACnBG,EAAIH,GAAK,KAEX,OAAIU,EACKN,GAEAA,GAAI,IAAI,CACnB,EAEA,SAASgB,GAAUC,EAAOnC,EAAM,CAC9B,KAAK,MAAQmC,EACb,KAAK,KAAOnC,EACZ,KAAK,YAAc,IACrB,CACAD,GAAU,UAAYmC,GAEtBA,GAAU,UAAU,GAAK,UAAuB,CAC9C,MAAM,IAAI,MAAM,iBAAiB,CACnC,EAEAA,GAAU,UAAU,SAAW,UAAoB,CACjD,OAAO,KAAK,MAAM,SAAS,IAAI,CACjC,EAEAnC,GAAU,UAAU,YAAc,SAAqBqC,EAAOC,EAAK,CACjED,EAAQzC,GAAM,QAAQyC,EAAOC,CAAG,EAEhC,IAAId,EAAM,KAAK,EAAE,WAAW,EAG5B,IAAKa,EAAM,KAAO,GAAQA,EAAM,KAAO,GAAQA,EAAM,KAAO,IACxDA,EAAM,OAAS,IAAM,EAAIb,EAAK,CAC5Ba,EAAM,KAAO,EACftC,GAAOsC,EAAMA,EAAM,OAAS,GAAK,IAAM,CAAC,EACjCA,EAAM,KAAO,GACpBtC,GAAOsC,EAAMA,EAAM,OAAS,GAAK,IAAM,CAAC,EAE1C,IAAIE,EAAO,KAAK,MAAMF,EAAM,MAAM,EAAG,EAAIb,CAAG,EAC1Ca,EAAM,MAAM,EAAIb,EAAK,EAAI,EAAIA,CAAG,CAAC,EAEnC,OAAOe,CACT,UAAYF,EAAM,KAAO,GAAQA,EAAM,KAAO,IAClCA,EAAM,OAAS,IAAMb,EAC/B,OAAO,KAAK,WAAWa,EAAM,MAAM,EAAG,EAAIb,CAAG,EAAGa,EAAM,KAAO,CAAI,EAEnE,MAAM,IAAI,MAAM,sBAAsB,CACxC,EAEAF,GAAU,UAAU,iBAAmB,SAA0BG,EAAK,CACpE,OAAO,KAAK,OAAOA,EAAK,EAAI,CAC9B,EAEAH,GAAU,UAAU,QAAU,SAAiBK,EAAS,CACtD,IAAIhB,EAAM,KAAK,MAAM,EAAE,WAAW,EAC9BiB,EAAI,KAAK,KAAK,EAAE,QAAQ,KAAMjB,CAAG,EAErC,OAAIgB,EACK,CAAE,KAAK,KAAK,EAAE,OAAO,EAAI,EAAO,CAAK,EAAE,OAAOC,CAAC,EAEjD,CAAE,CAAK,EAAE,OAAOA,EAAG,KAAK,KAAK,EAAE,QAAQ,KAAMjB,CAAG,CAAC,CAC1D,EAEAW,GAAU,UAAU,OAAS,SAAgBG,EAAKE,EAAS,CACzD,OAAO5C,GAAM,OAAO,KAAK,QAAQ4C,CAAO,EAAGF,CAAG,CAChD,EAEAH,GAAU,UAAU,WAAa,SAAoBO,EAAO,CAC1D,GAAI,KAAK,YACP,OAAO,KAET,IAAIC,EAAc,CAChB,QAAS,KACT,IAAK,KACL,KAAM,IACR,EACA,OAAAA,EAAY,IAAM,KAAK,cAAc,CAAC,EACtCA,EAAY,QAAU,KAAK,YAAY,EAAGD,CAAK,EAC/CC,EAAY,KAAO,KAAK,SAAS,EACjC,KAAK,YAAcA,EAEZ,IACT,EAEAR,GAAU,UAAU,YAAc,SAAqB9B,EAAG,CACxD,GAAI,CAAC,KAAK,YACR,MAAO,GAET,IAAIC,EAAU,KAAK,YAAY,QAC/B,OAAKA,EAGEA,EAAQ,OAAO,QAAU,KAAK,MAAMD,EAAE,UAAU,EAAI,GAAKC,EAAQ,IAAI,EAFnE,EAGX,EAEA6B,GAAU,UAAU,YAAc,SAAqBS,EAAMF,EAAO,CAClE,GAAI,KAAK,aAAe,KAAK,YAAY,QACvC,OAAO,KAAK,YAAY,QAI1B,QAFIpC,EAAU,CAAE,IAAK,EACjBa,EAAM,KACDJ,EAAI,EAAGA,EAAI2B,EAAO3B,GAAK6B,EAAM,CACpC,QAASlC,EAAI,EAAGA,EAAIkC,EAAMlC,IACxBS,EAAMA,EAAI,IAAI,EAChBb,EAAQ,KAAKa,CAAG,CAClB,CACA,MAAO,CACL,KAAMyB,EACN,OAAQtC,CACV,CACF,EAEA6B,GAAU,UAAU,cAAgB,SAAuBjB,EAAK,CAC9D,GAAI,KAAK,aAAe,KAAK,YAAY,IACvC,OAAO,KAAK,YAAY,IAK1B,QAHIqB,EAAM,CAAE,IAAK,EACbZ,GAAO,GAAKT,GAAO,EACnB2B,EAAMlB,IAAQ,EAAI,KAAO,KAAK,IAAI,EAC7BZ,EAAI,EAAGA,EAAIY,EAAKZ,IACvBwB,EAAIxB,GAAKwB,EAAIxB,EAAI,GAAG,IAAI8B,CAAG,EAC7B,MAAO,CACL,IAAK3B,EACL,OAAQqB,CACV,CACF,EAEAJ,GAAU,UAAU,SAAW,UAAoB,CACjD,OAAO,IACT,EAEAA,GAAU,UAAU,KAAO,SAAc9B,EAAG,CAE1C,QADIyC,EAAI,KACC/B,EAAI,EAAGA,EAAIV,EAAGU,IACrB+B,EAAIA,EAAE,IAAI,EACZ,OAAOA,CACT,IC5XA,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,CAAI,OAAO,OAAO,QAAW,WAE3BA,GAAO,QAAU,SAAkBC,EAAMC,EAAW,CAC9CA,IACFD,EAAK,OAASC,EACdD,EAAK,UAAY,OAAO,OAAOC,EAAU,UAAW,CAClD,YAAa,CACX,MAAOD,EACP,WAAY,GACZ,SAAU,GACV,aAAc,EAChB,CACF,CAAC,EAEL,EAGAD,GAAO,QAAU,SAAkBC,EAAMC,EAAW,CAClD,GAAIA,EAAW,CACbD,EAAK,OAASC,EACd,IAAIC,EAAW,UAAY,CAAC,EAC5BA,EAAS,UAAYD,EAAU,UAC/BD,EAAK,UAAY,IAAIE,EACrBF,EAAK,UAAU,YAAcA,CAC/B,CACF,ICzBF,IAAAG,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAK,KACLC,GAAW,KACXC,GAAO,KAEPC,GAASJ,GAAM,OAEnB,SAASK,GAAWC,EAAM,CACxBH,GAAK,KAAK,KAAM,QAASG,CAAI,EAE7B,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,KAAO,KAAK,IAAI,QAAQ,EAE7B,KAAK,MAAQ,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAM,EAC1C,KAAK,OAAS,KAAK,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,IAAM,EAGxD,KAAK,KAAO,KAAK,iBAAiBA,CAAI,EACtC,KAAK,YAAc,IAAI,MAAM,CAAC,EAC9B,KAAK,YAAc,IAAI,MAAM,CAAC,CAChC,CACAJ,GAASG,GAAYF,EAAI,EACzBJ,GAAO,QAAUM,GAEjBA,GAAW,UAAU,iBAAmB,SAA0BC,EAAM,CAEtE,GAAI,GAAC,KAAK,OAAS,CAAC,KAAK,GAAK,CAAC,KAAK,GAAK,KAAK,EAAE,KAAK,CAAC,IAAM,GAI5D,KAAIC,EACAC,EACJ,GAAIF,EAAK,KACPC,EAAO,IAAIN,GAAGK,EAAK,KAAM,EAAE,EAAE,MAAM,KAAK,GAAG,MACtC,CACL,IAAIG,EAAQ,KAAK,cAAc,KAAK,CAAC,EAErCF,EAAOE,EAAM,GAAG,IAAIA,EAAM,EAAE,EAAI,EAAIA,EAAM,GAAKA,EAAM,GACrDF,EAAOA,EAAK,MAAM,KAAK,GAAG,CAC5B,CACA,GAAID,EAAK,OACPE,EAAS,IAAIP,GAAGK,EAAK,OAAQ,EAAE,MAC1B,CAEL,IAAII,EAAU,KAAK,cAAc,KAAK,CAAC,EACnC,KAAK,EAAE,IAAIA,EAAQ,EAAE,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,OAAOH,CAAI,CAAC,IAAM,EAC1DC,EAASE,EAAQ,IAEjBF,EAASE,EAAQ,GACjBN,GAAO,KAAK,EAAE,IAAII,CAAM,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,OAAOD,CAAI,CAAC,IAAM,CAAC,EAEhE,CAGA,IAAII,EACJ,OAAIL,EAAK,MACPK,EAAQL,EAAK,MAAM,IAAI,SAASM,EAAK,CACnC,MAAO,CACL,EAAG,IAAIX,GAAGW,EAAI,EAAG,EAAE,EACnB,EAAG,IAAIX,GAAGW,EAAI,EAAG,EAAE,CACrB,CACF,CAAC,EAEDD,EAAQ,KAAK,cAAcH,CAAM,EAG5B,CACL,KAAMD,EACN,OAAQC,EACR,MAAOG,CACT,EACF,EAEAN,GAAW,UAAU,cAAgB,SAAuBQ,EAAK,CAI/D,IAAIC,EAAMD,IAAQ,KAAK,EAAI,KAAK,IAAMZ,GAAG,KAAKY,CAAG,EAC7CE,EAAO,IAAId,GAAG,CAAC,EAAE,MAAMa,CAAG,EAAE,QAAQ,EACpCE,EAAQD,EAAK,OAAO,EAEpBE,EAAI,IAAIhB,GAAG,CAAC,EAAE,MAAMa,CAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAOC,CAAI,EAEvDG,EAAKF,EAAM,OAAOC,CAAC,EAAE,QAAQ,EAC7BE,EAAKH,EAAM,OAAOC,CAAC,EAAE,QAAQ,EACjC,MAAO,CAAEC,EAAIC,CAAG,CAClB,EAEAd,GAAW,UAAU,cAAgB,SAAuBG,EAAQ,CA2BlE,QAzBIY,EAAW,KAAK,EAAE,MAAM,KAAK,MAAM,KAAK,EAAE,UAAU,EAAI,CAAC,CAAC,EAI1DC,EAAIb,EACJc,EAAI,KAAK,EAAE,MAAM,EACjBC,EAAK,IAAItB,GAAG,CAAC,EACbuB,EAAK,IAAIvB,GAAG,CAAC,EACbwB,EAAK,IAAIxB,GAAG,CAAC,EACbyB,EAAK,IAAIzB,GAAG,CAAC,EAGb0B,EACAC,EAEAC,EACAC,EAEAC,EACAC,EAEAC,EACAC,GAAI,EACJC,GACAC,EACGf,EAAE,KAAK,CAAC,IAAM,GAAG,CACtB,IAAIgB,GAAIf,EAAE,IAAID,CAAC,EACfc,GAAIb,EAAE,IAAIe,GAAE,IAAIhB,CAAC,CAAC,EAClBe,EAAIX,EAAG,IAAIY,GAAE,IAAId,CAAE,CAAC,EACpB,IAAIe,GAAIZ,EAAG,IAAIW,GAAE,IAAIb,CAAE,CAAC,EAExB,GAAI,CAACK,GAAMM,GAAE,IAAIf,CAAQ,EAAI,EAC3BO,EAAKM,EAAM,IAAI,EACfL,EAAKL,EACLM,EAAKM,GAAE,IAAI,EACXL,EAAKM,UACIP,GAAM,EAAEK,KAAM,EACvB,MAEFD,EAAQE,GAERb,EAAID,EACJA,EAAIc,GACJV,EAAKF,EACLA,EAAKa,EACLV,EAAKF,EACLA,EAAKc,EACP,CACAP,EAAKI,GAAE,IAAI,EACXH,EAAKI,EAEL,IAAIG,GAAOV,EAAG,IAAI,EAAE,IAAIC,EAAG,IAAI,CAAC,EAC5BU,GAAOT,EAAG,IAAI,EAAE,IAAIC,EAAG,IAAI,CAAC,EAChC,OAAIQ,GAAK,IAAID,EAAI,GAAK,IACpBR,EAAKJ,EACLK,EAAKJ,GAIHC,EAAG,WACLA,EAAKA,EAAG,IAAI,EACZC,EAAKA,EAAG,IAAI,GAEVC,EAAG,WACLA,EAAKA,EAAG,IAAI,EACZC,EAAKA,EAAG,IAAI,GAGP,CACL,CAAE,EAAGH,EAAI,EAAGC,CAAG,EACf,CAAE,EAAGC,EAAI,EAAGC,CAAG,CACjB,CACF,EAEA3B,GAAW,UAAU,WAAa,SAAoBoC,EAAG,CACvD,IAAI9B,EAAQ,KAAK,KAAK,MAClB+B,EAAK/B,EAAM,GACXgC,EAAKhC,EAAM,GAEXiC,EAAKD,EAAG,EAAE,IAAIF,CAAC,EAAE,SAAS,KAAK,CAAC,EAChCI,EAAKH,EAAG,EAAE,IAAI,EAAE,IAAID,CAAC,EAAE,SAAS,KAAK,CAAC,EAEtCK,EAAKF,EAAG,IAAIF,EAAG,CAAC,EAChBK,EAAKF,EAAG,IAAIF,EAAG,CAAC,EAChBK,EAAKJ,EAAG,IAAIF,EAAG,CAAC,EAChBO,EAAKJ,EAAG,IAAIF,EAAG,CAAC,EAGhBO,EAAKT,EAAE,IAAIK,CAAE,EAAE,IAAIC,CAAE,EACrBI,EAAKH,EAAG,IAAIC,CAAE,EAAE,IAAI,EACxB,MAAO,CAAE,GAAIC,EAAI,GAAIC,CAAG,CAC1B,EAEA9C,GAAW,UAAU,WAAa,SAAoB+B,EAAGgB,EAAK,CAC5DhB,EAAI,IAAInC,GAAGmC,EAAG,EAAE,EACXA,EAAE,MACLA,EAAIA,EAAE,MAAM,KAAK,GAAG,GAEtB,IAAIV,EAAKU,EAAE,OAAO,EAAE,OAAOA,CAAC,EAAE,QAAQA,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,QAAQ,KAAK,CAAC,EAClEE,EAAIZ,EAAG,QAAQ,EACnB,GAAIY,EAAE,OAAO,EAAE,OAAOZ,CAAE,EAAE,IAAI,KAAK,IAAI,IAAM,EAC3C,MAAM,IAAI,MAAM,eAAe,EAIjC,IAAI2B,EAAQf,EAAE,QAAQ,EAAE,MAAM,EAC9B,OAAIc,GAAO,CAACC,GAAS,CAACD,GAAOC,KAC3Bf,EAAIA,EAAE,OAAO,GAER,KAAK,MAAMF,EAAGE,CAAC,CACxB,EAEAjC,GAAW,UAAU,SAAW,SAAkBiD,EAAO,CACvD,GAAIA,EAAM,IACR,MAAO,GAET,IAAIlB,EAAIkB,EAAM,EACVhB,EAAIgB,EAAM,EAEVC,EAAK,KAAK,EAAE,OAAOnB,CAAC,EACpBoB,EAAMpB,EAAE,OAAO,EAAE,OAAOA,CAAC,EAAE,QAAQmB,CAAE,EAAE,QAAQ,KAAK,CAAC,EACzD,OAAOjB,EAAE,OAAO,EAAE,QAAQkB,CAAG,EAAE,KAAK,CAAC,IAAM,CAC7C,EAEAnD,GAAW,UAAU,gBACjB,SAAyBoD,EAAQC,EAAQC,EAAgB,CAGvD,QAFIC,EAAU,KAAK,YACfC,EAAU,KAAK,YACV3B,EAAI,EAAGA,EAAIuB,EAAO,OAAQvB,IAAK,CACtC,IAAI4B,EAAQ,KAAK,WAAWJ,EAAOxB,EAAE,EACjC6B,EAAIN,EAAOvB,GACX3B,EAAOwD,EAAE,SAAS,EAElBD,EAAM,GAAG,WACXA,EAAM,GAAG,KAAK,EACdC,EAAIA,EAAE,IAAI,EAAI,GAEZD,EAAM,GAAG,WACXA,EAAM,GAAG,KAAK,EACdvD,EAAOA,EAAK,IAAI,EAAI,GAGtBqD,EAAQ1B,EAAI,GAAK6B,EACjBH,EAAQ1B,EAAI,EAAI,GAAK3B,EACrBsD,EAAQ3B,EAAI,GAAK4B,EAAM,GACvBD,EAAQ3B,EAAI,EAAI,GAAK4B,EAAM,EAC7B,CAIA,QAHIE,EAAM,KAAK,YAAY,EAAGJ,EAASC,EAAS3B,EAAI,EAAGyB,CAAc,EAG5DM,EAAI,EAAGA,EAAI/B,EAAI,EAAG+B,IACzBL,EAAQK,GAAK,KACbJ,EAAQI,GAAK,KAEf,OAAOD,CACT,EAEJ,SAASE,GAAMC,EAAO/B,EAAGE,EAAG8B,EAAO,CACjCjE,GAAK,UAAU,KAAK,KAAMgE,EAAO,QAAQ,EACrC/B,IAAM,MAAQE,IAAM,MACtB,KAAK,EAAI,KACT,KAAK,EAAI,KACT,KAAK,IAAM,KAEX,KAAK,EAAI,IAAIrC,GAAGmC,EAAG,EAAE,EACrB,KAAK,EAAI,IAAInC,GAAGqC,EAAG,EAAE,EAEjB8B,IACF,KAAK,EAAE,SAAS,KAAK,MAAM,GAAG,EAC9B,KAAK,EAAE,SAAS,KAAK,MAAM,GAAG,GAE3B,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACjC,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACtC,KAAK,IAAM,GAEf,CACAlE,GAASgE,GAAO/D,GAAK,SAAS,EAE9BE,GAAW,UAAU,MAAQ,SAAe+B,EAAGE,EAAG8B,EAAO,CACvD,OAAO,IAAIF,GAAM,KAAM9B,EAAGE,EAAG8B,CAAK,CACpC,EAEA/D,GAAW,UAAU,cAAgB,SAAuBgE,EAAKvD,EAAK,CACpE,OAAOoD,GAAM,SAAS,KAAMG,EAAKvD,CAAG,CACtC,EAEAoD,GAAM,UAAU,SAAW,UAAoB,CAC7C,GAAI,EAAC,KAAK,MAAM,KAGhB,KAAII,EAAM,KAAK,YACf,GAAIA,GAAOA,EAAI,KACb,OAAOA,EAAI,KAEb,IAAI/D,EAAO,KAAK,MAAM,MAAM,KAAK,EAAE,OAAO,KAAK,MAAM,KAAK,IAAI,EAAG,KAAK,CAAC,EACvE,GAAI+D,EAAK,CACP,IAAIH,EAAQ,KAAK,MACbI,EAAU,SAASR,EAAG,CACxB,OAAOI,EAAM,MAAMJ,EAAE,EAAE,OAAOI,EAAM,KAAK,IAAI,EAAGJ,EAAE,CAAC,CACrD,EACAO,EAAI,KAAO/D,EACXA,EAAK,YAAc,CACjB,KAAM,KACN,IAAK+D,EAAI,KAAO,CACd,IAAKA,EAAI,IAAI,IACb,OAAQA,EAAI,IAAI,OAAO,IAAIC,CAAO,CACpC,EACA,QAASD,EAAI,SAAW,CACtB,KAAMA,EAAI,QAAQ,KAClB,OAAQA,EAAI,QAAQ,OAAO,IAAIC,CAAO,CACxC,CACF,CACF,CACA,OAAOhE,EACT,EAEA2D,GAAM,UAAU,OAAS,UAAkB,CACzC,OAAK,KAAK,YAGH,CAAE,KAAK,EAAG,KAAK,EAAG,KAAK,aAAe,CAC3C,QAAS,KAAK,YAAY,SAAW,CACnC,KAAM,KAAK,YAAY,QAAQ,KAC/B,OAAQ,KAAK,YAAY,QAAQ,OAAO,MAAM,CAAC,CACjD,EACA,IAAK,KAAK,YAAY,KAAO,CAC3B,IAAK,KAAK,YAAY,IAAI,IAC1B,OAAQ,KAAK,YAAY,IAAI,OAAO,MAAM,CAAC,CAC7C,CACF,CAAE,EAXO,CAAE,KAAK,EAAG,KAAK,CAAE,CAY5B,EAEAA,GAAM,SAAW,SAAkBC,EAAOE,EAAKvD,EAAK,CAC9C,OAAOuD,GAAQ,WACjBA,EAAM,KAAK,MAAMA,CAAG,GACtB,IAAIL,EAAMG,EAAM,MAAME,EAAI,GAAIA,EAAI,GAAIvD,CAAG,EACzC,GAAI,CAACuD,EAAI,GACP,OAAOL,EAET,SAASQ,EAAUH,EAAK,CACtB,OAAOF,EAAM,MAAME,EAAI,GAAIA,EAAI,GAAIvD,CAAG,CACxC,CAEA,IAAIwD,EAAMD,EAAI,GACd,OAAAL,EAAI,YAAc,CAChB,KAAM,KACN,QAASM,EAAI,SAAW,CACtB,KAAMA,EAAI,QAAQ,KAClB,OAAQ,CAAEN,CAAI,EAAE,OAAOM,EAAI,QAAQ,OAAO,IAAIE,CAAS,CAAC,CAC1D,EACA,IAAKF,EAAI,KAAO,CACd,IAAKA,EAAI,IAAI,IACb,OAAQ,CAAEN,CAAI,EAAE,OAAOM,EAAI,IAAI,OAAO,IAAIE,CAAS,CAAC,CACtD,CACF,EACOR,CACT,EAEAE,GAAM,UAAU,QAAU,UAAmB,CAC3C,OAAI,KAAK,WAAW,EACX,sBACF,gBAAkB,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EACpD,OAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EAAI,GAClD,EAEAA,GAAM,UAAU,WAAa,UAAsB,CACjD,OAAO,KAAK,GACd,EAEAA,GAAM,UAAU,IAAM,SAAaH,EAAG,CAEpC,GAAI,KAAK,IACP,OAAOA,EAGT,GAAIA,EAAE,IACJ,OAAO,KAGT,GAAI,KAAK,GAAGA,CAAC,EACX,OAAO,KAAK,IAAI,EAGlB,GAAI,KAAK,IAAI,EAAE,GAAGA,CAAC,EACjB,OAAO,KAAK,MAAM,MAAM,KAAM,IAAI,EAGpC,GAAI,KAAK,EAAE,IAAIA,EAAE,CAAC,IAAM,EACtB,OAAO,KAAK,MAAM,MAAM,KAAM,IAAI,EAEpC,IAAIU,EAAI,KAAK,EAAE,OAAOV,EAAE,CAAC,EACrBU,EAAE,KAAK,CAAC,IAAM,IAChBA,EAAIA,EAAE,OAAO,KAAK,EAAE,OAAOV,EAAE,CAAC,EAAE,QAAQ,CAAC,GAC3C,IAAIW,EAAKD,EAAE,OAAO,EAAE,QAAQ,KAAK,CAAC,EAAE,QAAQV,EAAE,CAAC,EAC3CY,EAAKF,EAAE,OAAO,KAAK,EAAE,OAAOC,CAAE,CAAC,EAAE,QAAQ,KAAK,CAAC,EACnD,OAAO,KAAK,MAAM,MAAMA,EAAIC,CAAE,CAChC,EAEAT,GAAM,UAAU,IAAM,UAAe,CACnC,GAAI,KAAK,IACP,OAAO,KAGT,IAAIU,EAAM,KAAK,EAAE,OAAO,KAAK,CAAC,EAC9B,GAAIA,EAAI,KAAK,CAAC,IAAM,EAClB,OAAO,KAAK,MAAM,MAAM,KAAM,IAAI,EAEpC,IAAIC,EAAI,KAAK,MAAM,EAEfpD,EAAK,KAAK,EAAE,OAAO,EACnBqD,EAAQF,EAAI,QAAQ,EACpBH,EAAIhD,EAAG,OAAOA,CAAE,EAAE,QAAQA,CAAE,EAAE,QAAQoD,CAAC,EAAE,OAAOC,CAAK,EAErDJ,EAAKD,EAAE,OAAO,EAAE,QAAQ,KAAK,EAAE,OAAO,KAAK,CAAC,CAAC,EAC7CE,EAAKF,EAAE,OAAO,KAAK,EAAE,OAAOC,CAAE,CAAC,EAAE,QAAQ,KAAK,CAAC,EACnD,OAAO,KAAK,MAAM,MAAMA,EAAIC,CAAE,CAChC,EAEAT,GAAM,UAAU,KAAO,UAAgB,CACrC,OAAO,KAAK,EAAE,QAAQ,CACxB,EAEAA,GAAM,UAAU,KAAO,UAAgB,CACrC,OAAO,KAAK,EAAE,QAAQ,CACxB,EAEAA,GAAM,UAAU,IAAM,SAAazB,EAAG,CAEpC,OADAA,EAAI,IAAIxC,GAAGwC,EAAG,EAAE,EACZ,KAAK,WAAW,EACX,KACA,KAAK,YAAYA,CAAC,EAClB,KAAK,MAAM,aAAa,KAAMA,CAAC,EAC/B,KAAK,MAAM,KACX,KAAK,MAAM,gBAAgB,CAAE,IAAK,EAAG,CAAEA,CAAE,CAAC,EAE1C,KAAK,MAAM,SAAS,KAAMA,CAAC,CACtC,EAEAyB,GAAM,UAAU,OAAS,SAAgBhB,EAAIH,EAAII,EAAI,CACnD,IAAIM,EAAS,CAAE,KAAMV,CAAG,EACpBW,EAAS,CAAER,EAAIC,CAAG,EACtB,OAAI,KAAK,MAAM,KACN,KAAK,MAAM,gBAAgBM,EAAQC,CAAM,EAEzC,KAAK,MAAM,YAAY,EAAGD,EAAQC,EAAQ,CAAC,CACtD,EAEAQ,GAAM,UAAU,QAAU,SAAiBhB,EAAIH,EAAII,EAAI,CACrD,IAAIM,EAAS,CAAE,KAAMV,CAAG,EACpBW,EAAS,CAAER,EAAIC,CAAG,EACtB,OAAI,KAAK,MAAM,KACN,KAAK,MAAM,gBAAgBM,EAAQC,EAAQ,EAAI,EAE/C,KAAK,MAAM,YAAY,EAAGD,EAAQC,EAAQ,EAAG,EAAI,CAC5D,EAEAQ,GAAM,UAAU,GAAK,SAAYH,EAAG,CAClC,OAAO,OAASA,GACT,KAAK,MAAQA,EAAE,MACV,KAAK,KAAO,KAAK,EAAE,IAAIA,EAAE,CAAC,IAAM,GAAK,KAAK,EAAE,IAAIA,EAAE,CAAC,IAAM,EACvE,EAEAG,GAAM,UAAU,IAAM,SAAaa,EAAa,CAC9C,GAAI,KAAK,IACP,OAAO,KAET,IAAIf,EAAM,KAAK,MAAM,MAAM,KAAK,EAAG,KAAK,EAAE,OAAO,CAAC,EAClD,GAAIe,GAAe,KAAK,YAAa,CACnC,IAAIT,EAAM,KAAK,YACXU,EAAS,SAASjB,EAAG,CACvB,OAAOA,EAAE,IAAI,CACf,EACAC,EAAI,YAAc,CAChB,IAAKM,EAAI,KAAO,CACd,IAAKA,EAAI,IAAI,IACb,OAAQA,EAAI,IAAI,OAAO,IAAIU,CAAM,CACnC,EACA,QAASV,EAAI,SAAW,CACtB,KAAMA,EAAI,QAAQ,KAClB,OAAQA,EAAI,QAAQ,OAAO,IAAIU,CAAM,CACvC,CACF,CACF,CACA,OAAOhB,CACT,EAEAE,GAAM,UAAU,IAAM,UAAe,CACnC,GAAI,KAAK,IACP,OAAO,KAAK,MAAM,OAAO,KAAM,KAAM,IAAI,EAE3C,IAAIF,EAAM,KAAK,MAAM,OAAO,KAAK,EAAG,KAAK,EAAG,KAAK,MAAM,GAAG,EAC1D,OAAOA,CACT,EAEA,SAASiB,GAAOd,EAAO/B,EAAGE,EAAG4C,EAAG,CAC9B/E,GAAK,UAAU,KAAK,KAAMgE,EAAO,UAAU,EACvC/B,IAAM,MAAQE,IAAM,MAAQ4C,IAAM,MACpC,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,IAAIjF,GAAG,CAAC,IAEjB,KAAK,EAAI,IAAIA,GAAGmC,EAAG,EAAE,EACrB,KAAK,EAAI,IAAInC,GAAGqC,EAAG,EAAE,EACrB,KAAK,EAAI,IAAIrC,GAAGiF,EAAG,EAAE,GAElB,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACjC,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACjC,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAEtC,KAAK,KAAO,KAAK,IAAM,KAAK,MAAM,GACpC,CACAhF,GAAS+E,GAAQ9E,GAAK,SAAS,EAE/BE,GAAW,UAAU,OAAS,SAAgB+B,EAAGE,EAAG4C,EAAG,CACrD,OAAO,IAAID,GAAO,KAAM7C,EAAGE,EAAG4C,CAAC,CACjC,EAEAD,GAAO,UAAU,IAAM,UAAe,CACpC,GAAI,KAAK,WAAW,EAClB,OAAO,KAAK,MAAM,MAAM,KAAM,IAAI,EAEpC,IAAIE,EAAO,KAAK,EAAE,QAAQ,EACtBC,EAAQD,EAAK,OAAO,EACpB5B,EAAK,KAAK,EAAE,OAAO6B,CAAK,EACxBC,EAAK,KAAK,EAAE,OAAOD,CAAK,EAAE,OAAOD,CAAI,EAEzC,OAAO,KAAK,MAAM,MAAM5B,EAAI8B,CAAE,CAChC,EAEAJ,GAAO,UAAU,IAAM,UAAe,CACpC,OAAO,KAAK,MAAM,OAAO,KAAK,EAAG,KAAK,EAAE,OAAO,EAAG,KAAK,CAAC,CAC1D,EAEAA,GAAO,UAAU,IAAM,SAAalB,EAAG,CAErC,GAAI,KAAK,WAAW,EAClB,OAAOA,EAGT,GAAIA,EAAE,WAAW,EACf,OAAO,KAGT,IAAIuB,EAAMvB,EAAE,EAAE,OAAO,EACjBwB,EAAK,KAAK,EAAE,OAAO,EACnBC,EAAK,KAAK,EAAE,OAAOF,CAAG,EACtBG,EAAK1B,EAAE,EAAE,OAAOwB,CAAE,EAClBG,EAAK,KAAK,EAAE,OAAOJ,EAAI,OAAOvB,EAAE,CAAC,CAAC,EAClC4B,EAAK5B,EAAE,EAAE,OAAOwB,EAAG,OAAO,KAAK,CAAC,CAAC,EAEjCK,EAAIJ,EAAG,OAAOC,CAAE,EAChBtD,EAAIuD,EAAG,OAAOC,CAAE,EACpB,GAAIC,EAAE,KAAK,CAAC,IAAM,EAChB,OAAIzD,EAAE,KAAK,CAAC,IAAM,EACT,KAAK,MAAM,OAAO,KAAM,KAAM,IAAI,EAElC,KAAK,IAAI,EAGpB,IAAI0D,EAAKD,EAAE,OAAO,EACdE,EAAKD,EAAG,OAAOD,CAAC,EAChBtE,EAAIkE,EAAG,OAAOK,CAAE,EAEhBnB,EAAKvC,EAAE,OAAO,EAAE,QAAQ2D,CAAE,EAAE,QAAQxE,CAAC,EAAE,QAAQA,CAAC,EAChDqD,EAAKxC,EAAE,OAAOb,EAAE,QAAQoD,CAAE,CAAC,EAAE,QAAQgB,EAAG,OAAOI,CAAE,CAAC,EAClDC,EAAK,KAAK,EAAE,OAAOhC,EAAE,CAAC,EAAE,OAAO6B,CAAC,EAEpC,OAAO,KAAK,MAAM,OAAOlB,EAAIC,EAAIoB,CAAE,CACrC,EAEAd,GAAO,UAAU,SAAW,SAAkBlB,EAAG,CAE/C,GAAI,KAAK,WAAW,EAClB,OAAOA,EAAE,IAAI,EAGf,GAAIA,EAAE,WAAW,EACf,OAAO,KAGT,IAAIwB,EAAK,KAAK,EAAE,OAAO,EACnBC,EAAK,KAAK,EACVC,EAAK1B,EAAE,EAAE,OAAOwB,CAAE,EAClBG,EAAK,KAAK,EACVC,EAAK5B,EAAE,EAAE,OAAOwB,CAAE,EAAE,OAAO,KAAK,CAAC,EAEjC,EAAIC,EAAG,OAAOC,CAAE,EAChBtD,EAAIuD,EAAG,OAAOC,CAAE,EACpB,GAAI,EAAE,KAAK,CAAC,IAAM,EAChB,OAAIxD,EAAE,KAAK,CAAC,IAAM,EACT,KAAK,MAAM,OAAO,KAAM,KAAM,IAAI,EAElC,KAAK,IAAI,EAGpB,IAAI0D,EAAK,EAAE,OAAO,EACdC,EAAKD,EAAG,OAAO,CAAC,EAChBvE,EAAIkE,EAAG,OAAOK,CAAE,EAEhBnB,EAAKvC,EAAE,OAAO,EAAE,QAAQ2D,CAAE,EAAE,QAAQxE,CAAC,EAAE,QAAQA,CAAC,EAChDqD,EAAKxC,EAAE,OAAOb,EAAE,QAAQoD,CAAE,CAAC,EAAE,QAAQgB,EAAG,OAAOI,CAAE,CAAC,EAClDC,EAAK,KAAK,EAAE,OAAO,CAAC,EAExB,OAAO,KAAK,MAAM,OAAOrB,EAAIC,EAAIoB,CAAE,CACrC,EAEAd,GAAO,UAAU,KAAO,SAAce,EAAK,CACzC,GAAIA,IAAQ,EACV,OAAO,KACT,GAAI,KAAK,WAAW,EAClB,OAAO,KACT,GAAI,CAACA,EACH,OAAO,KAAK,IAAI,EAElB,IAAI9D,EACJ,GAAI,KAAK,MAAM,OAAS,KAAK,MAAM,OAAQ,CACzC,IAAIC,EAAI,KACR,IAAKD,EAAI,EAAGA,EAAI8D,EAAK9D,IACnBC,EAAIA,EAAE,IAAI,EACZ,OAAOA,CACT,CAIA,IAAI0C,EAAI,KAAK,MAAM,EACf9D,EAAO,KAAK,MAAM,KAElBkF,EAAK,KAAK,EACVC,EAAK,KAAK,EACVC,EAAK,KAAK,EACVC,EAAMD,EAAG,OAAO,EAAE,OAAO,EAGzBE,EAAMH,EAAG,OAAOA,CAAE,EACtB,IAAKhE,EAAI,EAAGA,EAAI8D,EAAK9D,IAAK,CACxB,IAAIoE,EAAML,EAAG,OAAO,EAChBM,EAAOF,EAAI,OAAO,EAClBG,EAAOD,EAAK,OAAO,EACnB9B,EAAI6B,EAAI,OAAOA,CAAG,EAAE,QAAQA,CAAG,EAAE,QAAQzB,EAAE,OAAOuB,CAAG,CAAC,EAEtDK,EAAKR,EAAG,OAAOM,CAAI,EACnB7B,GAAKD,EAAE,OAAO,EAAE,QAAQgC,EAAG,OAAOA,CAAE,CAAC,EACrCC,GAAKD,EAAG,QAAQ/B,EAAE,EAClBiC,EAAMlC,EAAE,OAAOiC,EAAE,EACrBC,EAAMA,EAAI,QAAQA,CAAG,EAAE,QAAQH,CAAI,EACnC,IAAIT,GAAKM,EAAI,OAAOF,CAAE,EAClBjE,EAAI,EAAI8D,IACVI,EAAMA,EAAI,OAAOI,CAAI,GAEvBP,EAAKvB,GACLyB,EAAKJ,GACLM,EAAMM,CACR,CAEA,OAAO,KAAK,MAAM,OAAOV,EAAII,EAAI,OAAOtF,CAAI,EAAGoF,CAAE,CACnD,EAEAlB,GAAO,UAAU,IAAM,UAAe,CACpC,OAAI,KAAK,WAAW,EACX,KAEL,KAAK,MAAM,MACN,KAAK,SAAS,EACd,KAAK,MAAM,OACX,KAAK,UAAU,EAEf,KAAK,KAAK,CACrB,EAEAA,GAAO,UAAU,SAAW,UAAoB,CAC9C,IAAIP,EACAC,EACAoB,EAEJ,GAAI,KAAK,KAAM,CAMb,IAAIa,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAOD,EAAG,OAAO,EAEjB5F,EAAI,KAAK,EAAE,OAAO4F,CAAE,EAAE,OAAO,EAAE,QAAQD,CAAE,EAAE,QAAQE,CAAI,EAC3D7F,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAI8F,EAAIH,EAAG,OAAOA,CAAE,EAAE,QAAQA,CAAE,EAE5BI,EAAID,EAAE,OAAO,EAAE,QAAQ9F,CAAC,EAAE,QAAQA,CAAC,EAGnCgG,EAAQH,EAAK,QAAQA,CAAI,EAC7BG,EAAQA,EAAM,QAAQA,CAAK,EAC3BA,EAAQA,EAAM,QAAQA,CAAK,EAG3BvC,EAAKsC,EAELrC,EAAKoC,EAAE,OAAO9F,EAAE,QAAQ+F,CAAC,CAAC,EAAE,QAAQC,CAAK,EAEzClB,EAAK,KAAK,EAAE,OAAO,KAAK,CAAC,CAC3B,KAAO,CAML,IAAIlB,EAAI,KAAK,EAAE,OAAO,EAElBqC,EAAI,KAAK,EAAE,OAAO,EAElBzC,EAAIyC,EAAE,OAAO,EAEbC,EAAI,KAAK,EAAE,OAAOD,CAAC,EAAE,OAAO,EAAE,QAAQrC,CAAC,EAAE,QAAQJ,CAAC,EACtD0C,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAIC,EAAIvC,EAAE,OAAOA,CAAC,EAAE,QAAQA,CAAC,EAEzBwC,GAAID,EAAE,OAAO,EAGbE,GAAK7C,EAAE,QAAQA,CAAC,EACpB6C,GAAKA,GAAG,QAAQA,EAAE,EAClBA,GAAKA,GAAG,QAAQA,EAAE,EAGlB5C,EAAK2C,GAAE,QAAQF,CAAC,EAAE,QAAQA,CAAC,EAE3BxC,EAAKyC,EAAE,OAAOD,EAAE,QAAQzC,CAAE,CAAC,EAAE,QAAQ4C,EAAE,EAEvCvB,EAAK,KAAK,EAAE,OAAO,KAAK,CAAC,EACzBA,EAAKA,EAAG,QAAQA,CAAE,CACpB,CAEA,OAAO,KAAK,MAAM,OAAOrB,EAAIC,EAAIoB,CAAE,CACrC,EAEAd,GAAO,UAAU,UAAY,UAAqB,CAChD,IAAIP,EACAC,EACAoB,EAEJ,GAAI,KAAK,KAAM,CAMb,IAAIa,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAOD,EAAG,OAAO,EAEjB5F,EAAI,KAAK,EAAE,OAAO4F,CAAE,EAAE,OAAO,EAAE,QAAQD,CAAE,EAAE,QAAQE,CAAI,EAC3D7F,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAI8F,EAAIH,EAAG,OAAOA,CAAE,EAAE,QAAQA,CAAE,EAAE,QAAQ,KAAK,MAAM,CAAC,EAElDI,EAAID,EAAE,OAAO,EAAE,QAAQ9F,CAAC,EAAE,QAAQA,CAAC,EAEvCyD,EAAKsC,EAEL,IAAIC,EAAQH,EAAK,QAAQA,CAAI,EAC7BG,EAAQA,EAAM,QAAQA,CAAK,EAC3BA,EAAQA,EAAM,QAAQA,CAAK,EAC3BtC,EAAKoC,EAAE,OAAO9F,EAAE,QAAQ+F,CAAC,CAAC,EAAE,QAAQC,CAAK,EAEzClB,EAAK,KAAK,EAAE,OAAO,KAAK,CAAC,CAC3B,KAAO,CAKL,IAAIwB,EAAQ,KAAK,EAAE,OAAO,EAEtBC,EAAQ,KAAK,EAAE,OAAO,EAEtBjH,EAAO,KAAK,EAAE,OAAOiH,CAAK,EAE1BC,EAAQ,KAAK,EAAE,OAAOF,CAAK,EAAE,OAAO,KAAK,EAAE,OAAOA,CAAK,CAAC,EAC5DE,EAAQA,EAAM,OAAOA,CAAK,EAAE,QAAQA,CAAK,EAEzC,IAAIC,EAAQnH,EAAK,QAAQA,CAAI,EAC7BmH,EAAQA,EAAM,QAAQA,CAAK,EAC3B,IAAIC,GAAQD,EAAM,OAAOA,CAAK,EAC9BhD,EAAK+C,EAAM,OAAO,EAAE,QAAQE,EAAK,EAEjC5B,EAAK,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQyB,CAAK,EAAE,QAAQD,CAAK,EAEhE,IAAIK,GAAUJ,EAAM,OAAO,EAC3BI,GAAUA,GAAQ,QAAQA,EAAO,EACjCA,GAAUA,GAAQ,QAAQA,EAAO,EACjCA,GAAUA,GAAQ,QAAQA,EAAO,EACjCjD,EAAK8C,EAAM,OAAOC,EAAM,QAAQhD,CAAE,CAAC,EAAE,QAAQkD,EAAO,CACtD,CAEA,OAAO,KAAK,MAAM,OAAOlD,EAAIC,EAAIoB,CAAE,CACrC,EAEAd,GAAO,UAAU,KAAO,UAAgB,CACtC,IAAIJ,EAAI,KAAK,MAAM,EAGfoB,EAAK,KAAK,EACVC,EAAK,KAAK,EACVC,EAAK,KAAK,EACVC,EAAMD,EAAG,OAAO,EAAE,OAAO,EAEzBG,EAAML,EAAG,OAAO,EAChB4B,EAAM3B,EAAG,OAAO,EAEhBzB,EAAI6B,EAAI,OAAOA,CAAG,EAAE,QAAQA,CAAG,EAAE,QAAQzB,EAAE,OAAOuB,CAAG,CAAC,EAEtD0B,EAAO7B,EAAG,OAAOA,CAAE,EACvB6B,EAAOA,EAAK,QAAQA,CAAI,EACxB,IAAIrB,EAAKqB,EAAK,OAAOD,CAAG,EACpBnD,EAAKD,EAAE,OAAO,EAAE,QAAQgC,EAAG,OAAOA,CAAE,CAAC,EACrCC,EAAKD,EAAG,QAAQ/B,CAAE,EAElBqD,EAAOF,EAAI,OAAO,EACtBE,EAAOA,EAAK,QAAQA,CAAI,EACxBA,EAAOA,EAAK,QAAQA,CAAI,EACxBA,EAAOA,EAAK,QAAQA,CAAI,EACxB,IAAIpD,EAAKF,EAAE,OAAOiC,CAAE,EAAE,QAAQqB,CAAI,EAC9BhC,EAAKG,EAAG,OAAOA,CAAE,EAAE,OAAOC,CAAE,EAEhC,OAAO,KAAK,MAAM,OAAOzB,EAAIC,EAAIoB,CAAE,CACrC,EAEAd,GAAO,UAAU,KAAO,UAAgB,CACtC,GAAI,CAAC,KAAK,MAAM,MACd,OAAO,KAAK,IAAI,EAAE,IAAI,IAAI,EAM5B,IAAI2B,EAAK,KAAK,EAAE,OAAO,EAEnBC,EAAK,KAAK,EAAE,OAAO,EAEnBmB,EAAK,KAAK,EAAE,OAAO,EAEnBlB,EAAOD,EAAG,OAAO,EAEjBE,EAAIH,EAAG,OAAOA,CAAE,EAAE,QAAQA,CAAE,EAE5BqB,EAAKlB,EAAE,OAAO,EAEdK,EAAI,KAAK,EAAE,OAAOP,CAAE,EAAE,OAAO,EAAE,QAAQD,CAAE,EAAE,QAAQE,CAAI,EAC3DM,EAAIA,EAAE,QAAQA,CAAC,EACfA,EAAIA,EAAE,OAAOA,CAAC,EAAE,QAAQA,CAAC,EACzBA,EAAIA,EAAE,QAAQa,CAAE,EAEhB,IAAIC,EAAKd,EAAE,OAAO,EAEdJ,EAAIF,EAAK,QAAQA,CAAI,EACzBE,EAAIA,EAAE,QAAQA,CAAC,EACfA,EAAIA,EAAE,QAAQA,CAAC,EACfA,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAI3F,EAAI0F,EAAE,QAAQK,CAAC,EAAE,OAAO,EAAE,QAAQa,CAAE,EAAE,QAAQC,CAAE,EAAE,QAAQlB,CAAC,EAE3DmB,EAAOtB,EAAG,OAAOxF,CAAC,EACtB8G,EAAOA,EAAK,QAAQA,CAAI,EACxBA,EAAOA,EAAK,QAAQA,CAAI,EACxB,IAAIzD,EAAK,KAAK,EAAE,OAAOwD,CAAE,EAAE,QAAQC,CAAI,EACvCzD,EAAKA,EAAG,QAAQA,CAAE,EAClBA,EAAKA,EAAG,QAAQA,CAAE,EAElB,IAAIC,EAAK,KAAK,EAAE,OAAOtD,EAAE,OAAO2F,EAAE,QAAQ3F,CAAC,CAAC,EAAE,QAAQ+F,EAAE,OAAOc,CAAE,CAAC,CAAC,EACnEvD,EAAKA,EAAG,QAAQA,CAAE,EAClBA,EAAKA,EAAG,QAAQA,CAAE,EAClBA,EAAKA,EAAG,QAAQA,CAAE,EAElB,IAAIoB,EAAK,KAAK,EAAE,OAAOqB,CAAC,EAAE,OAAO,EAAE,QAAQY,CAAE,EAAE,QAAQE,CAAE,EAEzD,OAAO,KAAK,MAAM,OAAOxD,EAAIC,EAAIoB,CAAE,CACrC,EAEAd,GAAO,UAAU,IAAM,SAAaxC,EAAG2F,EAAO,CAC5C,OAAA3F,EAAI,IAAIxC,GAAGwC,EAAG2F,CAAK,EAEZ,KAAK,MAAM,SAAS,KAAM3F,CAAC,CACpC,EAEAwC,GAAO,UAAU,GAAK,SAAYlB,EAAG,CACnC,GAAIA,EAAE,OAAS,SACb,OAAO,KAAK,GAAGA,EAAE,IAAI,CAAC,EAExB,GAAI,OAASA,EACX,MAAO,GAGT,IAAIwB,EAAK,KAAK,EAAE,OAAO,EACnBD,EAAMvB,EAAE,EAAE,OAAO,EACrB,GAAI,KAAK,EAAE,OAAOuB,CAAG,EAAE,QAAQvB,EAAE,EAAE,OAAOwB,CAAE,CAAC,EAAE,KAAK,CAAC,IAAM,EACzD,MAAO,GAGT,IAAI8C,EAAK9C,EAAG,OAAO,KAAK,CAAC,EACrB+C,EAAMhD,EAAI,OAAOvB,EAAE,CAAC,EACxB,OAAO,KAAK,EAAE,OAAOuE,CAAG,EAAE,QAAQvE,EAAE,EAAE,OAAOsE,CAAE,CAAC,EAAE,KAAK,CAAC,IAAM,CAChE,EAEApD,GAAO,UAAU,OAAS,SAAgB7C,EAAG,CAC3C,IAAImG,EAAK,KAAK,EAAE,OAAO,EACnBC,EAAKpG,EAAE,MAAM,KAAK,MAAM,GAAG,EAAE,OAAOmG,CAAE,EAC1C,GAAI,KAAK,EAAE,IAAIC,CAAE,IAAM,EACrB,MAAO,GAIT,QAFIC,EAAKrG,EAAE,MAAM,EACb4E,EAAI,KAAK,MAAM,KAAK,OAAOuB,CAAE,IACxB,CAEP,GADAE,EAAG,KAAK,KAAK,MAAM,CAAC,EAChBA,EAAG,IAAI,KAAK,MAAM,CAAC,GAAK,EAC1B,MAAO,GAGT,GADAD,EAAG,QAAQxB,CAAC,EACR,KAAK,EAAE,IAAIwB,CAAE,IAAM,EACrB,MAAO,EACX,CACF,EAEAvD,GAAO,UAAU,QAAU,UAAmB,CAC5C,OAAI,KAAK,WAAW,EACX,uBACF,iBAAmB,KAAK,EAAE,SAAS,GAAI,CAAC,EAC3C,OAAS,KAAK,EAAE,SAAS,GAAI,CAAC,EAC9B,OAAS,KAAK,EAAE,SAAS,GAAI,CAAC,EAAI,GACxC,EAEAA,GAAO,UAAU,WAAa,UAAsB,CAElD,OAAO,KAAK,EAAE,KAAK,CAAC,IAAM,CAC5B,ICz6BA,IAAAyD,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAK,KACLC,GAAW,KACXC,GAAO,KAEPC,GAAQ,KAEZ,SAASC,GAAUC,EAAM,CACvBH,GAAK,KAAK,KAAM,OAAQG,CAAI,EAE5B,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,GAAK,IAAIL,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EAAE,QAAQ,EAC5C,KAAK,IAAM,IAAIA,GAAG,CAAC,EAAE,MAAM,KAAK,GAAG,EACnC,KAAK,IAAM,KAAK,GAAG,OAAO,KAAK,EAAE,OAAO,KAAK,GAAG,CAAC,CACnD,CACAC,GAASG,GAAWF,EAAI,EACxBH,GAAO,QAAUK,GAEjBA,GAAU,UAAU,SAAW,SAAkBE,EAAO,CACtD,IAAIC,EAAID,EAAM,UAAU,EAAE,EACtBE,EAAKD,EAAE,OAAO,EACdE,EAAMD,EAAG,OAAOD,CAAC,EAAE,OAAOC,EAAG,OAAO,KAAK,CAAC,CAAC,EAAE,OAAOD,CAAC,EACrDG,EAAID,EAAI,QAAQ,EAEpB,OAAOC,EAAE,OAAO,EAAE,IAAID,CAAG,IAAM,CACjC,EAEA,SAASE,GAAMC,EAAOL,EAAGM,EAAG,CAC1BX,GAAK,UAAU,KAAK,KAAMU,EAAO,YAAY,EACzCL,IAAM,MAAQM,IAAM,MACtB,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,KAAK,MAAM,OAEpB,KAAK,EAAI,IAAIb,GAAGO,EAAG,EAAE,EACrB,KAAK,EAAI,IAAIP,GAAGa,EAAG,EAAE,EAChB,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACjC,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAE1C,CACAZ,GAASU,GAAOT,GAAK,SAAS,EAE9BE,GAAU,UAAU,YAAc,SAAqBU,EAAOC,EAAK,CACjE,OAAO,KAAK,MAAMZ,GAAM,QAAQW,EAAOC,CAAG,EAAG,CAAC,CAChD,EAEAX,GAAU,UAAU,MAAQ,SAAeG,EAAGM,EAAG,CAC/C,OAAO,IAAIF,GAAM,KAAMJ,EAAGM,CAAC,CAC7B,EAEAT,GAAU,UAAU,cAAgB,SAAuBY,EAAK,CAC9D,OAAOL,GAAM,SAAS,KAAMK,CAAG,CACjC,EAEAL,GAAM,UAAU,WAAa,UAAsB,CAEnD,EAEAA,GAAM,UAAU,QAAU,UAAmB,CAC3C,OAAO,KAAK,KAAK,EAAE,QAAQ,KAAM,KAAK,MAAM,EAAE,WAAW,CAAC,CAC5D,EAEAA,GAAM,SAAW,SAAkBC,EAAOI,EAAK,CAC7C,OAAO,IAAIL,GAAMC,EAAOI,EAAI,GAAIA,EAAI,IAAMJ,EAAM,GAAG,CACrD,EAEAD,GAAM,UAAU,QAAU,UAAmB,CAC3C,OAAI,KAAK,WAAW,EACX,sBACF,gBAAkB,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EACpD,OAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EAAI,GAClD,EAEAA,GAAM,UAAU,WAAa,UAAsB,CAEjD,OAAO,KAAK,EAAE,KAAK,CAAC,IAAM,CAC5B,EAEAA,GAAM,UAAU,IAAM,UAAe,CAKnC,IAAIM,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAExBC,EAAKD,EAAE,OAAO,EAEdE,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAExBC,EAAKD,EAAE,OAAO,EAEdE,EAAIH,EAAG,OAAOE,CAAE,EAEhBE,EAAKJ,EAAG,OAAOE,CAAE,EAEjBG,EAAKF,EAAE,OAAOD,EAAG,OAAO,KAAK,MAAM,IAAI,OAAOC,CAAC,CAAC,CAAC,EACrD,OAAO,KAAK,MAAM,MAAMC,EAAIC,CAAE,CAChC,EAEAZ,GAAM,UAAU,IAAM,UAAe,CACnC,MAAM,IAAI,MAAM,mCAAmC,CACrD,EAEAA,GAAM,UAAU,QAAU,SAAiBa,EAAGC,EAAM,CAKlD,IAAIR,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAExBE,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAExBE,EAAIG,EAAE,EAAE,OAAOA,EAAE,CAAC,EAElBE,EAAIF,EAAE,EAAE,OAAOA,EAAE,CAAC,EAElBG,EAAKD,EAAE,OAAOT,CAAC,EAEfW,EAAKP,EAAE,OAAOF,CAAC,EAEfG,EAAKG,EAAK,EAAE,OAAOE,EAAG,OAAOC,CAAE,EAAE,OAAO,CAAC,EAEzCL,EAAKE,EAAK,EAAE,OAAOE,EAAG,QAAQC,CAAE,EAAE,OAAO,CAAC,EAC9C,OAAO,KAAK,MAAM,MAAMN,EAAIC,CAAE,CAChC,EAEAZ,GAAM,UAAU,IAAM,SAAakB,EAAG,CAMpC,QALI,EAAIA,EAAE,MAAM,EACZZ,EAAI,KACJE,EAAI,KAAK,MAAM,MAAM,KAAM,IAAI,EAC/BE,EAAI,KAECS,EAAO,CAAC,EAAG,EAAE,KAAK,CAAC,IAAM,EAAG,EAAE,OAAO,CAAC,EAC7CA,EAAK,KAAK,EAAE,MAAM,CAAC,CAAC,EAEtB,QAASC,EAAID,EAAK,OAAS,EAAGC,GAAK,EAAGA,IAChCD,EAAKC,KAAO,GAEdd,EAAIA,EAAE,QAAQE,EAAGE,CAAC,EAElBF,EAAIA,EAAE,IAAI,IAGVA,EAAIF,EAAE,QAAQE,EAAGE,CAAC,EAElBJ,EAAIA,EAAE,IAAI,GAGd,OAAOE,CACT,EAEAR,GAAM,UAAU,OAAS,UAAkB,CACzC,MAAM,IAAI,MAAM,mCAAmC,CACrD,EAEAA,GAAM,UAAU,QAAU,UAAmB,CAC3C,MAAM,IAAI,MAAM,mCAAmC,CACrD,EAEAA,GAAM,UAAU,GAAK,SAAYqB,EAAO,CACtC,OAAO,KAAK,KAAK,EAAE,IAAIA,EAAM,KAAK,CAAC,IAAM,CAC3C,EAEArB,GAAM,UAAU,UAAY,UAAqB,CAC/C,YAAK,EAAI,KAAK,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,EACvC,KAAK,EAAI,KAAK,MAAM,IACb,IACT,EAEAA,GAAM,UAAU,KAAO,UAAgB,CAErC,YAAK,UAAU,EAER,KAAK,EAAE,QAAQ,CACxB,ICjLA,IAAAsB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAK,KACLC,GAAW,KACXC,GAAO,KAEPC,GAASJ,GAAM,OAEnB,SAASK,GAAaC,EAAM,CAE1B,KAAK,SAAWA,EAAK,EAAI,KAAO,EAChC,KAAK,MAAQ,KAAK,UAAYA,EAAK,EAAI,KAAO,GAC9C,KAAK,SAAW,KAAK,MAErBH,GAAK,KAAK,KAAM,UAAWG,CAAI,EAE/B,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC,EAC3C,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,GAAG,EAC9B,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,GAAK,KAAK,EAAE,OAAO,EACxB,KAAK,EAAI,IAAIL,GAAGK,EAAK,EAAG,EAAE,EAAE,MAAM,KAAK,GAAG,EAC1C,KAAK,GAAK,KAAK,EAAE,OAAO,KAAK,CAAC,EAE9BF,GAAO,CAAC,KAAK,SAAW,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAM,CAAC,EACtD,KAAK,MAAQE,EAAK,EAAI,KAAO,CAC/B,CACAJ,GAASG,GAAcF,EAAI,EAC3BJ,GAAO,QAAUM,GAEjBA,GAAa,UAAU,MAAQ,SAAeE,EAAK,CACjD,OAAI,KAAK,MACAA,EAAI,OAAO,EAEX,KAAK,EAAE,OAAOA,CAAG,CAC5B,EAEAF,GAAa,UAAU,MAAQ,SAAeE,EAAK,CACjD,OAAI,KAAK,KACAA,EAEA,KAAK,EAAE,OAAOA,CAAG,CAC5B,EAGAF,GAAa,UAAU,OAAS,SAAgBG,EAAGC,EAAGC,EAAGC,EAAG,CAC1D,OAAO,KAAK,MAAMH,EAAGC,EAAGC,EAAGC,CAAC,CAC9B,EAEAN,GAAa,UAAU,WAAa,SAAoBG,EAAGI,EAAK,CAC9DJ,EAAI,IAAIP,GAAGO,EAAG,EAAE,EACXA,EAAE,MACLA,EAAIA,EAAE,MAAM,KAAK,GAAG,GAEtB,IAAIK,EAAKL,EAAE,OAAO,EACdM,EAAM,KAAK,GAAG,OAAO,KAAK,EAAE,OAAOD,CAAE,CAAC,EACtCE,EAAM,KAAK,IAAI,OAAO,KAAK,GAAG,OAAO,KAAK,CAAC,EAAE,OAAOF,CAAE,CAAC,EAEvDG,EAAKF,EAAI,OAAOC,EAAI,QAAQ,CAAC,EAC7BN,EAAIO,EAAG,QAAQ,EACnB,GAAIP,EAAE,OAAO,EAAE,OAAOO,CAAE,EAAE,IAAI,KAAK,IAAI,IAAM,EAC3C,MAAM,IAAI,MAAM,eAAe,EAEjC,IAAIC,EAAQR,EAAE,QAAQ,EAAE,MAAM,EAC9B,OAAIG,GAAO,CAACK,GAAS,CAACL,GAAOK,KAC3BR,EAAIA,EAAE,OAAO,GAER,KAAK,MAAMD,EAAGC,CAAC,CACxB,EAEAJ,GAAa,UAAU,WAAa,SAAoBI,EAAGG,EAAK,CAC9DH,EAAI,IAAIR,GAAGQ,EAAG,EAAE,EACXA,EAAE,MACLA,EAAIA,EAAE,MAAM,KAAK,GAAG,GAGtB,IAAIO,EAAKP,EAAE,OAAO,EACdM,EAAMC,EAAG,OAAO,KAAK,EAAE,EACvBF,EAAME,EAAG,OAAO,KAAK,CAAC,EAAE,OAAO,KAAK,EAAE,EAAE,OAAO,KAAK,CAAC,EACrDH,EAAKE,EAAI,OAAOD,EAAI,QAAQ,CAAC,EAEjC,GAAID,EAAG,IAAI,KAAK,IAAI,IAAM,EAAG,CAC3B,GAAID,EACF,MAAM,IAAI,MAAM,eAAe,EAE/B,OAAO,KAAK,MAAM,KAAK,KAAMH,CAAC,CAClC,CAEA,IAAID,EAAIK,EAAG,QAAQ,EACnB,GAAIL,EAAE,OAAO,EAAE,OAAOK,CAAE,EAAE,IAAI,KAAK,IAAI,IAAM,EAC3C,MAAM,IAAI,MAAM,eAAe,EAEjC,OAAIL,EAAE,QAAQ,EAAE,MAAM,IAAMI,IAC1BJ,EAAIA,EAAE,OAAO,GAER,KAAK,MAAMA,EAAGC,CAAC,CACxB,EAEAJ,GAAa,UAAU,SAAW,SAAkBa,EAAO,CACzD,GAAIA,EAAM,WAAW,EACnB,MAAO,GAGTA,EAAM,UAAU,EAEhB,IAAIL,EAAKK,EAAM,EAAE,OAAO,EACpBF,EAAKE,EAAM,EAAE,OAAO,EACpBH,EAAMF,EAAG,OAAO,KAAK,CAAC,EAAE,OAAOG,CAAE,EACjCF,EAAM,KAAK,GAAG,OAAO,KAAK,IAAI,OAAO,KAAK,EAAE,OAAOD,CAAE,EAAE,OAAOG,CAAE,CAAC,CAAC,EAEtE,OAAOD,EAAI,IAAID,CAAG,IAAM,CAC1B,EAEA,SAASK,GAAMC,EAAOZ,EAAGC,EAAGC,EAAGC,EAAG,CAChCR,GAAK,UAAU,KAAK,KAAMiB,EAAO,YAAY,EACzCZ,IAAM,MAAQC,IAAM,MAAQC,IAAM,MACpC,KAAK,EAAI,KAAK,MAAM,KACpB,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,EAAI,KAAK,MAAM,KACpB,KAAK,KAAO,KAEZ,KAAK,EAAI,IAAIT,GAAGO,EAAG,EAAE,EACrB,KAAK,EAAI,IAAIP,GAAGQ,EAAG,EAAE,EACrB,KAAK,EAAIC,EAAI,IAAIT,GAAGS,EAAG,EAAE,EAAI,KAAK,MAAM,IACxC,KAAK,EAAIC,GAAK,IAAIV,GAAGU,EAAG,EAAE,EACrB,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACjC,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACjC,KAAK,EAAE,MACV,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GAClC,KAAK,GAAK,CAAC,KAAK,EAAE,MACpB,KAAK,EAAI,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,GACtC,KAAK,KAAO,KAAK,IAAM,KAAK,MAAM,IAG9B,KAAK,MAAM,UAAY,CAAC,KAAK,IAC/B,KAAK,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EACxB,KAAK,OACR,KAAK,EAAI,KAAK,EAAE,OAAO,KAAK,EAAE,QAAQ,CAAC,IAG/C,CACAT,GAASiB,GAAOhB,GAAK,SAAS,EAE9BE,GAAa,UAAU,cAAgB,SAAuBgB,EAAK,CACjE,OAAOF,GAAM,SAAS,KAAME,CAAG,CACjC,EAEAhB,GAAa,UAAU,MAAQ,SAAeG,EAAGC,EAAGC,EAAGC,EAAG,CACxD,OAAO,IAAIQ,GAAM,KAAMX,EAAGC,EAAGC,EAAGC,CAAC,CACnC,EAEAQ,GAAM,SAAW,SAAkBC,EAAOC,EAAK,CAC7C,OAAO,IAAIF,GAAMC,EAAOC,EAAI,GAAIA,EAAI,GAAIA,EAAI,EAAE,CAChD,EAEAF,GAAM,UAAU,QAAU,UAAmB,CAC3C,OAAI,KAAK,WAAW,EACX,sBACF,gBAAkB,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EACpD,OAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EACxC,OAAS,KAAK,EAAE,QAAQ,EAAE,SAAS,GAAI,CAAC,EAAI,GAClD,EAEAA,GAAM,UAAU,WAAa,UAAsB,CAEjD,OAAO,KAAK,EAAE,KAAK,CAAC,IAAM,IACvB,KAAK,EAAE,IAAI,KAAK,CAAC,IAAM,GACvB,KAAK,MAAQ,KAAK,EAAE,IAAI,KAAK,MAAM,CAAC,IAAM,EAC/C,EAEAA,GAAM,UAAU,QAAU,UAAmB,CAM3C,IAAIG,EAAI,KAAK,EAAE,OAAO,EAElBC,EAAI,KAAK,EAAE,OAAO,EAElBC,EAAI,KAAK,EAAE,OAAO,EACtBA,EAAIA,EAAE,QAAQA,CAAC,EAEf,IAAIC,EAAI,KAAK,MAAM,MAAMH,CAAC,EAEtBI,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQJ,CAAC,EAAE,QAAQC,CAAC,EAEvDI,EAAIF,EAAE,OAAOF,CAAC,EAEdK,EAAID,EAAE,OAAOH,CAAC,EAEdK,EAAIJ,EAAE,OAAOF,CAAC,EAEdO,EAAKJ,EAAE,OAAOE,CAAC,EAEfG,EAAKJ,EAAE,OAAOE,CAAC,EAEfG,EAAKN,EAAE,OAAOG,CAAC,EAEfI,EAAKL,EAAE,OAAOD,CAAC,EACnB,OAAO,KAAK,MAAM,MAAMG,EAAIC,EAAIE,EAAID,CAAE,CACxC,EAEAb,GAAM,UAAU,SAAW,UAAoB,CAQ7C,IAAII,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAO,EAEjCC,EAAI,KAAK,EAAE,OAAO,EAElBC,EAAI,KAAK,EAAE,OAAO,EAElBK,EACAC,EACAE,EACAP,EACAG,EACAK,EACJ,GAAI,KAAK,MAAM,QAAS,CAEtBR,EAAI,KAAK,MAAM,MAAMF,CAAC,EAEtB,IAAII,EAAIF,EAAE,OAAOD,CAAC,EACd,KAAK,MAEPK,EAAKP,EAAE,OAAOC,CAAC,EAAE,OAAOC,CAAC,EAAE,OAAOG,EAAE,OAAO,KAAK,MAAM,GAAG,CAAC,EAE1DG,EAAKH,EAAE,OAAOF,EAAE,OAAOD,CAAC,CAAC,EAEzBQ,EAAKL,EAAE,OAAO,EAAE,OAAOA,CAAC,EAAE,OAAOA,CAAC,IAGlCC,EAAI,KAAK,EAAE,OAAO,EAElBK,EAAIN,EAAE,OAAOC,CAAC,EAAE,QAAQA,CAAC,EAEzBC,EAAKP,EAAE,OAAOC,CAAC,EAAE,QAAQC,CAAC,EAAE,OAAOS,CAAC,EAEpCH,EAAKH,EAAE,OAAOF,EAAE,OAAOD,CAAC,CAAC,EAEzBQ,EAAKL,EAAE,OAAOM,CAAC,EAEnB,MAEER,EAAIF,EAAE,OAAOC,CAAC,EAEdI,EAAI,KAAK,MAAM,MAAM,KAAK,CAAC,EAAE,OAAO,EAEpCK,EAAIR,EAAE,OAAOG,CAAC,EAAE,OAAOA,CAAC,EAExBC,EAAK,KAAK,MAAM,MAAMP,EAAE,QAAQG,CAAC,CAAC,EAAE,OAAOQ,CAAC,EAE5CH,EAAK,KAAK,MAAM,MAAML,CAAC,EAAE,OAAOF,EAAE,QAAQC,CAAC,CAAC,EAE5CQ,EAAKP,EAAE,OAAOQ,CAAC,EAEjB,OAAO,KAAK,MAAM,MAAMJ,EAAIC,EAAIE,CAAE,CACpC,EAEAd,GAAM,UAAU,IAAM,UAAe,CACnC,OAAI,KAAK,WAAW,EACX,KAGL,KAAK,MAAM,SACN,KAAK,QAAQ,EAEb,KAAK,SAAS,CACzB,EAEAA,GAAM,UAAU,QAAU,SAAiBgB,EAAG,CAM5C,IAAIb,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAOa,EAAE,EAAE,OAAOA,EAAE,CAAC,CAAC,EAEhDZ,EAAI,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAOY,EAAE,EAAE,OAAOA,EAAE,CAAC,CAAC,EAEhDX,EAAI,KAAK,EAAE,OAAO,KAAK,MAAM,EAAE,EAAE,OAAOW,EAAE,CAAC,EAE3CV,EAAI,KAAK,EAAE,OAAOU,EAAE,EAAE,OAAOA,EAAE,CAAC,CAAC,EAEjCT,EAAIH,EAAE,OAAOD,CAAC,EAEdM,EAAIH,EAAE,OAAOD,CAAC,EAEdG,EAAIF,EAAE,OAAOD,CAAC,EAEdK,EAAIN,EAAE,OAAOD,CAAC,EAEdQ,EAAKJ,EAAE,OAAOE,CAAC,EAEfG,EAAKJ,EAAE,OAAOE,CAAC,EAEfG,EAAKN,EAAE,OAAOG,CAAC,EAEfI,EAAKL,EAAE,OAAOD,CAAC,EACnB,OAAO,KAAK,MAAM,MAAMG,EAAIC,EAAIE,EAAID,CAAE,CACxC,EAEAb,GAAM,UAAU,SAAW,SAAkBgB,EAAG,CAO9C,IAAIb,EAAI,KAAK,EAAE,OAAOa,EAAE,CAAC,EAErBZ,EAAID,EAAE,OAAO,EAEbE,EAAI,KAAK,EAAE,OAAOW,EAAE,CAAC,EAErBV,EAAI,KAAK,EAAE,OAAOU,EAAE,CAAC,EAErBT,EAAI,KAAK,MAAM,EAAE,OAAOF,CAAC,EAAE,OAAOC,CAAC,EAEnCG,EAAIL,EAAE,OAAOG,CAAC,EAEdC,EAAIJ,EAAE,OAAOG,CAAC,EAEdU,EAAM,KAAK,EAAE,OAAO,KAAK,CAAC,EAAE,OAAOD,EAAE,EAAE,OAAOA,EAAE,CAAC,CAAC,EAAE,QAAQX,CAAC,EAAE,QAAQC,CAAC,EACxEK,EAAKR,EAAE,OAAOM,CAAC,EAAE,OAAOQ,CAAG,EAC3BL,EACAE,EACJ,OAAI,KAAK,MAAM,SAEbF,EAAKT,EAAE,OAAOK,CAAC,EAAE,OAAOF,EAAE,OAAO,KAAK,MAAM,MAAMD,CAAC,CAAC,CAAC,EAErDS,EAAKL,EAAE,OAAOD,CAAC,IAGfI,EAAKT,EAAE,OAAOK,CAAC,EAAE,OAAOF,EAAE,OAAOD,CAAC,CAAC,EAEnCS,EAAK,KAAK,MAAM,MAAML,CAAC,EAAE,OAAOD,CAAC,GAE5B,KAAK,MAAM,MAAMG,EAAIC,EAAIE,CAAE,CACpC,EAEAd,GAAM,UAAU,IAAM,SAAagB,EAAG,CACpC,OAAI,KAAK,WAAW,EACXA,EACLA,EAAE,WAAW,EACR,KAEL,KAAK,MAAM,SACN,KAAK,QAAQA,CAAC,EAEd,KAAK,SAASA,CAAC,CAC1B,EAEAhB,GAAM,UAAU,IAAM,SAAakB,EAAG,CACpC,OAAI,KAAK,YAAYA,CAAC,EACb,KAAK,MAAM,aAAa,KAAMA,CAAC,EAE/B,KAAK,MAAM,SAAS,KAAMA,CAAC,CACtC,EAEAlB,GAAM,UAAU,OAAS,SAAgBmB,EAAIH,EAAGI,EAAI,CAClD,OAAO,KAAK,MAAM,YAAY,EAAG,CAAE,KAAMJ,CAAE,EAAG,CAAEG,EAAIC,CAAG,EAAG,EAAG,EAAK,CACpE,EAEApB,GAAM,UAAU,QAAU,SAAiBmB,EAAIH,EAAGI,EAAI,CACpD,OAAO,KAAK,MAAM,YAAY,EAAG,CAAE,KAAMJ,CAAE,EAAG,CAAEG,EAAIC,CAAG,EAAG,EAAG,EAAI,CACnE,EAEApB,GAAM,UAAU,UAAY,UAAqB,CAC/C,GAAI,KAAK,KACP,OAAO,KAGT,IAAIqB,EAAK,KAAK,EAAE,QAAQ,EACxB,YAAK,EAAI,KAAK,EAAE,OAAOA,CAAE,EACzB,KAAK,EAAI,KAAK,EAAE,OAAOA,CAAE,EACrB,KAAK,IACP,KAAK,EAAI,KAAK,EAAE,OAAOA,CAAE,GAC3B,KAAK,EAAI,KAAK,MAAM,IACpB,KAAK,KAAO,GACL,IACT,EAEArB,GAAM,UAAU,IAAM,UAAe,CACnC,OAAO,KAAK,MAAM,MAAM,KAAK,EAAE,OAAO,EACpC,KAAK,EACL,KAAK,EACL,KAAK,GAAK,KAAK,EAAE,OAAO,CAAC,CAC7B,EAEAA,GAAM,UAAU,KAAO,UAAgB,CACrC,YAAK,UAAU,EACR,KAAK,EAAE,QAAQ,CACxB,EAEAA,GAAM,UAAU,KAAO,UAAgB,CACrC,YAAK,UAAU,EACR,KAAK,EAAE,QAAQ,CACxB,EAEAA,GAAM,UAAU,GAAK,SAAYsB,EAAO,CACtC,OAAO,OAASA,GACT,KAAK,KAAK,EAAE,IAAIA,EAAM,KAAK,CAAC,IAAM,GAClC,KAAK,KAAK,EAAE,IAAIA,EAAM,KAAK,CAAC,IAAM,CAC3C,EAEAtB,GAAM,UAAU,OAAS,SAAgBX,EAAG,CAC1C,IAAIkC,EAAKlC,EAAE,MAAM,KAAK,MAAM,GAAG,EAAE,OAAO,KAAK,CAAC,EAC9C,GAAI,KAAK,EAAE,IAAIkC,CAAE,IAAM,EACrB,MAAO,GAIT,QAFIC,EAAKnC,EAAE,MAAM,EACbG,EAAI,KAAK,MAAM,KAAK,OAAO,KAAK,CAAC,IAC5B,CAEP,GADAgC,EAAG,KAAK,KAAK,MAAM,CAAC,EAChBA,EAAG,IAAI,KAAK,MAAM,CAAC,GAAK,EAC1B,MAAO,GAGT,GADAD,EAAG,QAAQ/B,CAAC,EACR,KAAK,EAAE,IAAI+B,CAAE,IAAM,EACrB,MAAO,EACX,CACF,EAGAvB,GAAM,UAAU,IAAMA,GAAM,UAAU,UACtCA,GAAM,UAAU,SAAWA,GAAM,UAAU,MClb3C,IAAAyB,GAAAC,GAAAC,IAAA,cAEA,IAAIC,GAAQD,GAEZC,GAAM,KAAO,KACbA,GAAM,MAAQ,KACdA,GAAM,KAAO,KACbA,GAAM,QAAU,OCPhB,IAAAC,GAAAC,GAAAC,IAAA,cAEA,IAAIC,GAAS,KACTC,GAAW,KAEfF,GAAQ,SAAWE,GAEnB,SAASC,GAAgBC,EAAKC,EAAG,CAI/B,OAHKD,EAAI,WAAWC,CAAC,EAAI,SAAY,OAGjCA,EAAI,GAAKA,EAAI,GAAKD,EAAI,OACjB,IAEDA,EAAI,WAAWC,EAAI,CAAC,EAAI,SAAY,KAC9C,CAEA,SAASC,GAAQF,EAAKG,EAAK,CACzB,GAAI,MAAM,QAAQH,CAAG,EACnB,OAAOA,EAAI,MAAM,EACnB,GAAI,CAACA,EACH,MAAO,CAAC,EACV,IAAII,EAAM,CAAC,EACX,GAAI,OAAOJ,GAAQ,SACjB,GAAKG,GAyBE,GAAIA,IAAQ,MAIjB,IAHAH,EAAMA,EAAI,QAAQ,eAAgB,EAAE,EAChCA,EAAI,OAAS,IAAM,IACrBA,EAAM,IAAMA,GACT,EAAI,EAAG,EAAIA,EAAI,OAAQ,GAAK,EAC/BI,EAAI,KAAK,SAASJ,EAAI,GAAKA,EAAI,EAAI,GAAI,EAAE,CAAC,MAxB5C,SADIK,EAAI,EACC,EAAI,EAAG,EAAIL,EAAI,OAAQ,IAAK,CACnC,IAAIM,EAAIN,EAAI,WAAW,CAAC,EACpBM,EAAI,IACNF,EAAIC,KAAOC,EACFA,EAAI,MACbF,EAAIC,KAAQC,GAAK,EAAK,IACtBF,EAAIC,KAAQC,EAAI,GAAM,KACbP,GAAgBC,EAAK,CAAC,GAC/BM,EAAI,QAAYA,EAAI,OAAW,KAAON,EAAI,WAAW,EAAE,CAAC,EAAI,MAC5DI,EAAIC,KAAQC,GAAK,GAAM,IACvBF,EAAIC,KAASC,GAAK,GAAM,GAAM,IAC9BF,EAAIC,KAASC,GAAK,EAAK,GAAM,IAC7BF,EAAIC,KAAQC,EAAI,GAAM,MAEtBF,EAAIC,KAAQC,GAAK,GAAM,IACvBF,EAAIC,KAASC,GAAK,EAAK,GAAM,IAC7BF,EAAIC,KAAQC,EAAI,GAAM,IAE1B,KASF,KAAK,EAAI,EAAG,EAAIN,EAAI,OAAQ,IAC1BI,EAAI,GAAKJ,EAAI,GAAK,EAEtB,OAAOI,CACT,CACAR,GAAQ,QAAUM,GAElB,SAASK,GAAMP,EAAK,CAElB,QADII,EAAM,GACDH,EAAI,EAAGA,EAAID,EAAI,OAAQC,IAC9BG,GAAOI,GAAMR,EAAIC,GAAG,SAAS,EAAE,CAAC,EAClC,OAAOG,CACT,CACAR,GAAQ,MAAQW,GAEhB,SAASE,GAAMC,EAAG,CAChB,IAAIN,EAAOM,IAAM,GACLA,IAAM,EAAK,MACXA,GAAK,EAAK,UACVA,EAAI,MAAS,GACzB,OAAON,IAAQ,CACjB,CACAR,GAAQ,MAAQa,GAEhB,SAASE,GAAQX,EAAKY,EAAQ,CAE5B,QADIR,EAAM,GACDH,EAAI,EAAGA,EAAID,EAAI,OAAQC,IAAK,CACnC,IAAIS,EAAIV,EAAIC,GACRW,IAAW,WACbF,EAAID,GAAMC,CAAC,GACbN,GAAOS,GAAMH,EAAE,SAAS,EAAE,CAAC,CAC7B,CACA,OAAON,CACT,CACAR,GAAQ,QAAUe,GAElB,SAASH,GAAMM,EAAM,CACnB,OAAIA,EAAK,SAAW,EACX,IAAMA,EAENA,CACX,CACAlB,GAAQ,MAAQY,GAEhB,SAASK,GAAMC,EAAM,CACnB,OAAIA,EAAK,SAAW,EACX,IAAMA,EACNA,EAAK,SAAW,EAChB,KAAOA,EACPA,EAAK,SAAW,EAChB,MAAQA,EACRA,EAAK,SAAW,EAChB,OAASA,EACTA,EAAK,SAAW,EAChB,QAAUA,EACVA,EAAK,SAAW,EAChB,SAAWA,EACXA,EAAK,SAAW,EAChB,UAAYA,EAEZA,CACX,CACAlB,GAAQ,MAAQiB,GAEhB,SAASE,GAAOf,EAAKgB,EAAOC,EAAKL,EAAQ,CACvC,IAAIM,EAAMD,EAAMD,EAChBnB,GAAOqB,EAAM,IAAM,CAAC,EAEpB,QADId,EAAM,IAAI,MAAMc,EAAM,CAAC,EAClBjB,EAAI,EAAGkB,EAAIH,EAAOf,EAAIG,EAAI,OAAQH,IAAKkB,GAAK,EAAG,CACtD,IAAIT,EACAE,IAAW,MACbF,EAAKV,EAAImB,IAAM,GAAOnB,EAAImB,EAAI,IAAM,GAAOnB,EAAImB,EAAI,IAAM,EAAKnB,EAAImB,EAAI,GAEtET,EAAKV,EAAImB,EAAI,IAAM,GAAOnB,EAAImB,EAAI,IAAM,GAAOnB,EAAImB,EAAI,IAAM,EAAKnB,EAAImB,GACxEf,EAAIH,GAAKS,IAAM,CACjB,CACA,OAAON,CACT,CACAR,GAAQ,OAASmB,GAEjB,SAASK,GAAQpB,EAAKY,EAAQ,CAE5B,QADIR,EAAM,IAAI,MAAMJ,EAAI,OAAS,CAAC,EACzBC,EAAI,EAAGkB,EAAI,EAAGlB,EAAID,EAAI,OAAQC,IAAKkB,GAAK,EAAG,CAClD,IAAIE,EAAIrB,EAAIC,GACRW,IAAW,OACbR,EAAIe,GAAKE,IAAM,GACfjB,EAAIe,EAAI,GAAME,IAAM,GAAM,IAC1BjB,EAAIe,EAAI,GAAME,IAAM,EAAK,IACzBjB,EAAIe,EAAI,GAAKE,EAAI,MAEjBjB,EAAIe,EAAI,GAAKE,IAAM,GACnBjB,EAAIe,EAAI,GAAME,IAAM,GAAM,IAC1BjB,EAAIe,EAAI,GAAME,IAAM,EAAK,IACzBjB,EAAIe,GAAKE,EAAI,IAEjB,CACA,OAAOjB,CACT,CACAR,GAAQ,QAAUwB,GAElB,SAASE,GAAOZ,EAAGa,EAAG,CACpB,OAAQb,IAAMa,EAAMb,GAAM,GAAKa,CACjC,CACA3B,GAAQ,OAAS0B,GAEjB,SAASE,GAAOd,EAAGa,EAAG,CACpB,OAAQb,GAAKa,EAAMb,IAAO,GAAKa,CACjC,CACA3B,GAAQ,OAAS4B,GAEjB,SAASC,GAAMC,EAAGH,EAAG,CACnB,OAAQG,EAAIH,IAAO,CACrB,CACA3B,GAAQ,MAAQ6B,GAEhB,SAASE,GAAQD,EAAGH,EAAGjB,EAAG,CACxB,OAAQoB,EAAIH,EAAIjB,IAAO,CACzB,CACAV,GAAQ,QAAU+B,GAElB,SAASC,GAAQF,EAAGH,EAAGjB,EAAGuB,EAAG,CAC3B,OAAQH,EAAIH,EAAIjB,EAAIuB,IAAO,CAC7B,CACAjC,GAAQ,QAAUgC,GAElB,SAASE,GAAQJ,EAAGH,EAAGjB,EAAGuB,EAAGE,EAAG,CAC9B,OAAQL,EAAIH,EAAIjB,EAAIuB,EAAIE,IAAO,CACjC,CACAnC,GAAQ,QAAUkC,GAElB,SAASE,GAAMC,EAAKC,EAAKC,EAAIC,EAAI,CAC/B,IAAIC,EAAKJ,EAAIC,GACTI,EAAKL,EAAIC,EAAM,GAEfK,EAAMH,EAAKE,IAAQ,EACnBE,GAAMD,EAAKH,EAAK,EAAI,GAAKD,EAAKE,EAClCJ,EAAIC,GAAOM,IAAO,EAClBP,EAAIC,EAAM,GAAKK,CACjB,CACA3C,GAAQ,MAAQoC,GAEhB,SAASS,GAASN,EAAIC,EAAIC,EAAIC,EAAI,CAChC,IAAIC,EAAMH,EAAKE,IAAQ,EACnBE,GAAMD,EAAKH,EAAK,EAAI,GAAKD,EAAKE,EAClC,OAAOG,IAAO,CAChB,CACA5C,GAAQ,SAAW6C,GAEnB,SAASC,GAASP,EAAIC,EAAIC,EAAIC,EAAI,CAChC,IAAIC,EAAKH,EAAKE,EACd,OAAOC,IAAO,CAChB,CACA3C,GAAQ,SAAW8C,GAEnB,SAASC,GAAWR,EAAIC,EAAIC,EAAIC,EAAIM,EAAIC,EAAIC,EAAIC,EAAI,CAClD,IAAIC,EAAQ,EACRT,EAAKH,EACTG,EAAMA,EAAKD,IAAQ,EACnBU,GAAST,EAAKH,EAAK,EAAI,EACvBG,EAAMA,EAAKM,IAAQ,EACnBG,GAAST,EAAKM,EAAK,EAAI,EACvBN,EAAMA,EAAKQ,IAAQ,EACnBC,GAAST,EAAKQ,EAAK,EAAI,EAEvB,IAAIP,EAAKL,EAAKE,EAAKO,EAAKE,EAAKE,EAC7B,OAAOR,IAAO,CAChB,CACA5C,GAAQ,WAAa+C,GAErB,SAASM,GAAWd,EAAIC,EAAIC,EAAIC,EAAIM,EAAIC,EAAIC,EAAIC,EAAI,CAClD,IAAIR,EAAKH,EAAKE,EAAKO,EAAKE,EACxB,OAAOR,IAAO,CAChB,CACA3C,GAAQ,WAAaqD,GAErB,SAASC,GAAWf,EAAIC,EAAIC,EAAIC,EAAIM,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,EAAI,CAC1D,IAAIJ,EAAQ,EACRT,EAAKH,EACTG,EAAMA,EAAKD,IAAQ,EACnBU,GAAST,EAAKH,EAAK,EAAI,EACvBG,EAAMA,EAAKM,IAAQ,EACnBG,GAAST,EAAKM,EAAK,EAAI,EACvBN,EAAMA,EAAKQ,IAAQ,EACnBC,GAAST,EAAKQ,EAAK,EAAI,EACvBR,EAAMA,EAAKa,IAAQ,EACnBJ,GAAST,EAAKa,EAAK,EAAI,EAEvB,IAAIZ,EAAKL,EAAKE,EAAKO,EAAKE,EAAKK,EAAKH,EAClC,OAAOR,IAAO,CAChB,CACA5C,GAAQ,WAAasD,GAErB,SAASG,GAAWlB,EAAIC,EAAIC,EAAIC,EAAIM,EAAIC,EAAIC,EAAIC,EAAII,EAAIC,EAAI,CAC1D,IAAIb,EAAKH,EAAKE,EAAKO,EAAKE,EAAKK,EAE7B,OAAOb,IAAO,CAChB,CACA3C,GAAQ,WAAayD,GAErB,SAASC,GAAUnB,EAAIC,EAAImB,EAAK,CAC9B,IAAIC,EAAKpB,GAAO,GAAKmB,EAASpB,IAAOoB,EACrC,OAAOC,IAAM,CACf,CACA5D,GAAQ,UAAY0D,GAEpB,SAASG,GAAUtB,EAAIC,EAAImB,EAAK,CAC9B,IAAIC,EAAKrB,GAAO,GAAKoB,EAASnB,IAAOmB,EACrC,OAAOC,IAAM,CACf,CACA5D,GAAQ,UAAY6D,GAEpB,SAASC,GAASvB,EAAIC,EAAImB,EAAK,CAC7B,OAAOpB,IAAOoB,CAChB,CACA3D,GAAQ,SAAW8D,GAEnB,SAASC,GAASxB,EAAIC,EAAImB,EAAK,CAC7B,IAAIC,EAAKrB,GAAO,GAAKoB,EAASnB,IAAOmB,EACrC,OAAOC,IAAM,CACf,CACA5D,GAAQ,SAAW+D,KCrRnB,IAAAC,GAAAC,GAAAC,IAAA,cAEA,IAAIC,GAAQ,KACRC,GAAS,KAEb,SAASC,IAAY,CACnB,KAAK,QAAU,KACf,KAAK,aAAe,EACpB,KAAK,UAAY,KAAK,YAAY,UAClC,KAAK,QAAU,KAAK,YAAY,QAChC,KAAK,aAAe,KAAK,YAAY,aACrC,KAAK,UAAY,KAAK,YAAY,UAAY,EAC9C,KAAK,OAAS,MAEd,KAAK,QAAU,KAAK,UAAY,EAChC,KAAK,SAAW,KAAK,UAAY,EACnC,CACAH,GAAQ,UAAYG,GAEpBA,GAAU,UAAU,OAAS,SAAgBC,EAAKC,EAAK,CAUrD,GARAD,EAAMH,GAAM,QAAQG,EAAKC,CAAG,EACvB,KAAK,QAGR,KAAK,QAAU,KAAK,QAAQ,OAAOD,CAAG,EAFtC,KAAK,QAAUA,EAGjB,KAAK,cAAgBA,EAAI,OAGrB,KAAK,QAAQ,QAAU,KAAK,QAAS,CACvCA,EAAM,KAAK,QAGX,IAAIE,EAAIF,EAAI,OAAS,KAAK,QAC1B,KAAK,QAAUA,EAAI,MAAMA,EAAI,OAASE,EAAGF,EAAI,MAAM,EAC/C,KAAK,QAAQ,SAAW,IAC1B,KAAK,QAAU,MAEjBA,EAAMH,GAAM,OAAOG,EAAK,EAAGA,EAAI,OAASE,EAAG,KAAK,MAAM,EACtD,QAAS,EAAI,EAAG,EAAIF,EAAI,OAAQ,GAAK,KAAK,SACxC,KAAK,QAAQA,EAAK,EAAG,EAAI,KAAK,QAAQ,CAC1C,CAEA,OAAO,IACT,EAEAD,GAAU,UAAU,OAAS,SAAgBE,EAAK,CAChD,YAAK,OAAO,KAAK,KAAK,CAAC,EACvBH,GAAO,KAAK,UAAY,IAAI,EAErB,KAAK,QAAQG,CAAG,CACzB,EAEAF,GAAU,UAAU,KAAO,UAAe,CACxC,IAAII,EAAM,KAAK,aACXC,EAAQ,KAAK,QACbC,EAAID,GAAUD,EAAM,KAAK,WAAaC,EACtCE,EAAM,IAAI,MAAMD,EAAI,KAAK,SAAS,EACtCC,EAAI,GAAK,IACT,QAASC,EAAI,EAAGA,EAAIF,EAAGE,IACrBD,EAAIC,GAAK,EAIX,GADAJ,IAAQ,EACJ,KAAK,SAAW,MAAO,CACzB,QAASK,EAAI,EAAGA,EAAI,KAAK,UAAWA,IAClCF,EAAIC,KAAO,EAEbD,EAAIC,KAAO,EACXD,EAAIC,KAAO,EACXD,EAAIC,KAAO,EACXD,EAAIC,KAAO,EACXD,EAAIC,KAAQJ,IAAQ,GAAM,IAC1BG,EAAIC,KAAQJ,IAAQ,GAAM,IAC1BG,EAAIC,KAAQJ,IAAQ,EAAK,IACzBG,EAAIC,KAAOJ,EAAM,GACnB,KAUE,KATAG,EAAIC,KAAOJ,EAAM,IACjBG,EAAIC,KAAQJ,IAAQ,EAAK,IACzBG,EAAIC,KAAQJ,IAAQ,GAAM,IAC1BG,EAAIC,KAAQJ,IAAQ,GAAM,IAC1BG,EAAIC,KAAO,EACXD,EAAIC,KAAO,EACXD,EAAIC,KAAO,EACXD,EAAIC,KAAO,EAENC,EAAI,EAAGA,EAAI,KAAK,UAAWA,IAC9BF,EAAIC,KAAO,EAGf,OAAOD,CACT,IC3FA,IAAAG,GAAAC,GAAAC,IAAA,cAEA,IAAIC,GAAQ,KACRC,GAASD,GAAM,OAEnB,SAASE,GAAKC,EAAGC,EAAGC,EAAGC,EAAG,CACxB,GAAIH,IAAM,EACR,OAAOI,GAAKH,EAAGC,EAAGC,CAAC,EACrB,GAAIH,IAAM,GAAKA,IAAM,EACnB,OAAOK,GAAIJ,EAAGC,EAAGC,CAAC,EACpB,GAAIH,IAAM,EACR,OAAOM,GAAML,EAAGC,EAAGC,CAAC,CACxB,CACAP,GAAQ,KAAOG,GAEf,SAASK,GAAKH,EAAGC,EAAGC,EAAG,CACrB,OAAQF,EAAIC,EAAO,CAACD,EAAKE,CAC3B,CACAP,GAAQ,KAAOQ,GAEf,SAASE,GAAML,EAAGC,EAAGC,EAAG,CACtB,OAAQF,EAAIC,EAAMD,EAAIE,EAAMD,EAAIC,CAClC,CACAP,GAAQ,MAAQU,GAEhB,SAASD,GAAIJ,EAAGC,EAAGC,EAAG,CACpB,OAAOF,EAAIC,EAAIC,CACjB,CACAP,GAAQ,IAAMS,GAEd,SAASE,GAAON,EAAG,CACjB,OAAOH,GAAOG,EAAG,CAAC,EAAIH,GAAOG,EAAG,EAAE,EAAIH,GAAOG,EAAG,EAAE,CACpD,CACAL,GAAQ,OAASW,GAEjB,SAASC,GAAOP,EAAG,CACjB,OAAOH,GAAOG,EAAG,CAAC,EAAIH,GAAOG,EAAG,EAAE,EAAIH,GAAOG,EAAG,EAAE,CACpD,CACAL,GAAQ,OAASY,GAEjB,SAASC,GAAOR,EAAG,CACjB,OAAOH,GAAOG,EAAG,CAAC,EAAIH,GAAOG,EAAG,EAAE,EAAKA,IAAM,CAC/C,CACAL,GAAQ,OAASa,GAEjB,SAASC,GAAOT,EAAG,CACjB,OAAOH,GAAOG,EAAG,EAAE,EAAIH,GAAOG,EAAG,EAAE,EAAKA,IAAM,EAChD,CACAL,GAAQ,OAASc,KChDjB,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAS,KACTC,GAAY,KAEZC,GAASH,GAAM,OACfI,GAAQJ,GAAM,MACdK,GAAUL,GAAM,QAChBM,GAAOJ,GAAU,KACjBK,GAAYN,GAAO,UAEnBO,GAAS,CACX,WAAY,WACZ,WAAY,UACd,EAEA,SAASC,IAAO,CACd,GAAI,EAAE,gBAAgBA,IACpB,OAAO,IAAIA,GAEbF,GAAU,KAAK,IAAI,EACnB,KAAK,EAAI,CACP,WAAY,WAAY,WACxB,UAAY,UAAW,EACzB,KAAK,EAAI,IAAI,MAAM,EAAE,CACvB,CAEAP,GAAM,SAASS,GAAMF,EAAS,EAC9BR,GAAO,QAAUU,GAEjBA,GAAK,UAAY,IACjBA,GAAK,QAAU,IACfA,GAAK,aAAe,GACpBA,GAAK,UAAY,GAEjBA,GAAK,UAAU,QAAU,SAAiBC,EAAKC,EAAO,CAGpD,QAFIC,EAAI,KAAK,EAEJ,EAAI,EAAG,EAAI,GAAI,IACtBA,EAAE,GAAKF,EAAIC,EAAQ,GAErB,KAAM,EAAIC,EAAE,OAAQ,IAClBA,EAAE,GAAKT,GAAOS,EAAE,EAAI,GAAKA,EAAE,EAAI,GAAKA,EAAE,EAAI,IAAMA,EAAE,EAAI,IAAK,CAAC,EAE9D,IAAIC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GAEf,IAAK,EAAI,EAAG,EAAIL,EAAE,OAAQ,IAAK,CAC7B,IAAIM,EAAI,CAAC,EAAE,EAAI,IACXC,EAAId,GAAQF,GAAOU,EAAG,CAAC,EAAGP,GAAKY,EAAGJ,EAAGC,EAAGC,CAAC,EAAGC,EAAGL,EAAE,GAAIJ,GAAOU,EAAE,EAClED,EAAID,EACJA,EAAID,EACJA,EAAIZ,GAAOW,EAAG,EAAE,EAChBA,EAAID,EACJA,EAAIM,CACN,CAEA,KAAK,EAAE,GAAKf,GAAM,KAAK,EAAE,GAAIS,CAAC,EAC9B,KAAK,EAAE,GAAKT,GAAM,KAAK,EAAE,GAAIU,CAAC,EAC9B,KAAK,EAAE,GAAKV,GAAM,KAAK,EAAE,GAAIW,CAAC,EAC9B,KAAK,EAAE,GAAKX,GAAM,KAAK,EAAE,GAAIY,CAAC,EAC9B,KAAK,EAAE,GAAKZ,GAAM,KAAK,EAAE,GAAIa,CAAC,CAChC,EAEAR,GAAK,UAAU,QAAU,SAAgBW,EAAK,CAC5C,OAAIA,IAAQ,MACHpB,GAAM,QAAQ,KAAK,EAAG,KAAK,EAE3BA,GAAM,QAAQ,KAAK,EAAG,KAAK,CACtC,ICzEA,IAAAqB,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAS,KACTC,GAAY,KACZC,GAAS,KAETC,GAAQJ,GAAM,MACdK,GAAUL,GAAM,QAChBM,GAAUN,GAAM,QAChBO,GAAOL,GAAU,KACjBM,GAAQN,GAAU,MAClBO,GAASP,GAAU,OACnBQ,GAASR,GAAU,OACnBS,GAAST,GAAU,OACnBU,GAASV,GAAU,OAEnBW,GAAYZ,GAAO,UAEnBa,GAAW,CACb,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,UAAY,UAAY,UACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACtC,EAEA,SAASC,IAAS,CAChB,GAAI,EAAE,gBAAgBA,IACpB,OAAO,IAAIA,GAEbF,GAAU,KAAK,IAAI,EACnB,KAAK,EAAI,CACP,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACtC,EACA,KAAK,EAAIC,GACT,KAAK,EAAI,IAAI,MAAM,EAAE,CACvB,CACAd,GAAM,SAASe,GAAQF,EAAS,EAChCd,GAAO,QAAUgB,GAEjBA,GAAO,UAAY,IACnBA,GAAO,QAAU,IACjBA,GAAO,aAAe,IACtBA,GAAO,UAAY,GAEnBA,GAAO,UAAU,QAAU,SAAiBC,EAAKC,EAAO,CAGtD,QAFIC,EAAI,KAAK,EAEJ,EAAI,EAAG,EAAI,GAAI,IACtBA,EAAE,GAAKF,EAAIC,EAAQ,GACrB,KAAO,EAAIC,EAAE,OAAQ,IACnBA,EAAE,GAAKb,GAAQO,GAAOM,EAAE,EAAI,EAAE,EAAGA,EAAE,EAAI,GAAIP,GAAOO,EAAE,EAAI,GAAG,EAAGA,EAAE,EAAI,GAAG,EAEzE,IAAIC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GAGf,IADAvB,GAAO,KAAK,EAAE,SAAWe,EAAE,MAAM,EAC5B,EAAI,EAAG,EAAIA,EAAE,OAAQ,IAAK,CAC7B,IAAIS,EAAKrB,GAAQoB,EAAGhB,GAAOa,CAAC,EAAGhB,GAAKgB,EAAGC,EAAGC,CAAC,EAAG,KAAK,EAAE,GAAIP,EAAE,EAAE,EACzDU,EAAKxB,GAAMK,GAAOU,CAAC,EAAGX,GAAMW,EAAGC,EAAGC,CAAC,CAAC,EACxCK,EAAID,EACJA,EAAID,EACJA,EAAID,EACJA,EAAInB,GAAMkB,EAAGK,CAAE,EACfL,EAAID,EACJA,EAAID,EACJA,EAAID,EACJA,EAAIf,GAAMuB,EAAIC,CAAE,CAClB,CAEA,KAAK,EAAE,GAAKxB,GAAM,KAAK,EAAE,GAAIe,CAAC,EAC9B,KAAK,EAAE,GAAKf,GAAM,KAAK,EAAE,GAAIgB,CAAC,EAC9B,KAAK,EAAE,GAAKhB,GAAM,KAAK,EAAE,GAAIiB,CAAC,EAC9B,KAAK,EAAE,GAAKjB,GAAM,KAAK,EAAE,GAAIkB,CAAC,EAC9B,KAAK,EAAE,GAAKlB,GAAM,KAAK,EAAE,GAAImB,CAAC,EAC9B,KAAK,EAAE,GAAKnB,GAAM,KAAK,EAAE,GAAIoB,CAAC,EAC9B,KAAK,EAAE,GAAKpB,GAAM,KAAK,EAAE,GAAIqB,CAAC,EAC9B,KAAK,EAAE,GAAKrB,GAAM,KAAK,EAAE,GAAIsB,CAAC,CAChC,EAEAX,GAAO,UAAU,QAAU,SAAgBc,EAAK,CAC9C,OAAIA,IAAQ,MACH7B,GAAM,QAAQ,KAAK,EAAG,KAAK,EAE3BA,GAAM,QAAQ,KAAK,EAAG,KAAK,CACtC,ICxGA,IAAA8B,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAS,KAEb,SAASC,IAAS,CAChB,GAAI,EAAE,gBAAgBA,IACpB,OAAO,IAAIA,GAEbD,GAAO,KAAK,IAAI,EAChB,KAAK,EAAI,CACP,WAAY,UAAY,UAAY,WACpC,WAAY,WAAY,WAAY,UAAW,CACnD,CACAD,GAAM,SAASE,GAAQD,EAAM,EAC7BF,GAAO,QAAUG,GAEjBA,GAAO,UAAY,IACnBA,GAAO,QAAU,IACjBA,GAAO,aAAe,IACtBA,GAAO,UAAY,GAEnBA,GAAO,UAAU,QAAU,SAAgBC,EAAK,CAE9C,OAAIA,IAAQ,MACHH,GAAM,QAAQ,KAAK,EAAE,MAAM,EAAG,CAAC,EAAG,KAAK,EAEvCA,GAAM,QAAQ,KAAK,EAAE,MAAM,EAAG,CAAC,EAAG,KAAK,CAClD,IC5BA,IAAAI,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAS,KACTC,GAAS,KAETC,GAAYH,GAAM,UAClBI,GAAYJ,GAAM,UAClBK,GAAWL,GAAM,SACjBM,GAAWN,GAAM,SACjBO,GAAQP,GAAM,MACdQ,GAAWR,GAAM,SACjBS,GAAWT,GAAM,SACjBU,GAAaV,GAAM,WACnBW,GAAaX,GAAM,WACnBY,GAAaZ,GAAM,WACnBa,GAAab,GAAM,WAEnBc,GAAYb,GAAO,UAEnBc,GAAW,CACb,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,UAAY,UACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,WAAY,WAAY,UACpC,WAAY,WAAY,WAAY,WACpC,UAAY,WAAY,UAAY,WACpC,UAAY,WAAY,UAAY,UACpC,UAAY,UAAY,UAAY,WACpC,WAAY,UAAY,WAAY,WACpC,WAAY,WAAY,WAAY,WACpC,WAAY,UAAY,WAAY,UACtC,EAEA,SAASC,IAAS,CAChB,GAAI,EAAE,gBAAgBA,IACpB,OAAO,IAAIA,GAEbF,GAAU,KAAK,IAAI,EACnB,KAAK,EAAI,CACP,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,UACZ,UAAY,WACZ,WAAY,SAAW,EACzB,KAAK,EAAIC,GACT,KAAK,EAAI,IAAI,MAAM,GAAG,CACxB,CACAf,GAAM,SAASgB,GAAQF,EAAS,EAChCf,GAAO,QAAUiB,GAEjBA,GAAO,UAAY,KACnBA,GAAO,QAAU,IACjBA,GAAO,aAAe,IACtBA,GAAO,UAAY,IAEnBA,GAAO,UAAU,cAAgB,SAAuBC,EAAKC,EAAO,CAIlE,QAHIC,EAAI,KAAK,EAGJ,EAAI,EAAG,EAAI,GAAI,IACtBA,EAAE,GAAKF,EAAIC,EAAQ,GACrB,KAAO,EAAIC,EAAE,OAAQ,GAAK,EAAG,CAC3B,IAAIC,EAAQC,GAAUF,EAAE,EAAI,GAAIA,EAAE,EAAI,EAAE,EACpCG,EAAQC,GAAUJ,EAAE,EAAI,GAAIA,EAAE,EAAI,EAAE,EACpCK,EAAQL,EAAE,EAAI,IACdM,EAAQN,EAAE,EAAI,IACdO,EAAQC,GAAUR,EAAE,EAAI,IAAKA,EAAE,EAAI,GAAG,EACtCS,EAAQC,GAAUV,EAAE,EAAI,IAAKA,EAAE,EAAI,GAAG,EACtCW,EAAQX,EAAE,EAAI,IACdY,EAAQZ,EAAE,EAAI,IAElBA,EAAE,GAAKT,GACLU,EAAOE,EACPE,EAAOC,EACPC,EAAOE,EACPE,EAAOC,CAAK,EACdZ,EAAE,EAAI,GAAKR,GACTS,EAAOE,EACPE,EAAOC,EACPC,EAAOE,EACPE,EAAOC,CAAK,CAChB,CACF,EAEAf,GAAO,UAAU,QAAU,SAAiBC,EAAKC,EAAO,CACtD,KAAK,cAAcD,EAAKC,CAAK,EAE7B,IAAIC,EAAI,KAAK,EAETa,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,GACZC,EAAK,KAAK,EAAE,IACZC,EAAK,KAAK,EAAE,IACZC,GAAK,KAAK,EAAE,IACZC,GAAK,KAAK,EAAE,IACZC,EAAK,KAAK,EAAE,IACZC,GAAK,KAAK,EAAE,IAEhB7C,GAAO,KAAK,EAAE,SAAWiB,EAAE,MAAM,EACjC,QAAS6B,GAAI,EAAGA,GAAI7B,EAAE,OAAQ6B,IAAK,EAAG,CACpC,IAAI5B,GAAQ0B,EACRxB,GAAQyB,GACRvB,GAAQyB,GAAUT,EAAIC,CAAE,EACxBhB,EAAQyB,GAAUV,EAAIC,CAAE,EACxBf,EAAQyB,GAAQX,EAAIC,EAAIC,EAAIC,EAAIC,GAAIC,EAAE,EACtCjB,EAAQwB,GAAQZ,EAAIC,EAAIC,EAAIC,EAAIC,GAAIC,EAAE,EACtCf,EAAQ,KAAK,EAAEkB,IACfjB,EAAQ,KAAK,EAAEiB,GAAI,GACnBK,EAAQlC,EAAE6B,IACVM,EAAQnC,EAAE6B,GAAI,GAEdO,EAAQ3C,GACVQ,GAAOE,GACPE,GAAOC,EACPC,EAAOE,EACPE,EAAOC,EACPsB,EAAOC,CAAK,EACVE,EAAQ3C,GACVO,GAAOE,GACPE,GAAOC,EACPC,EAAOE,EACPE,EAAOC,EACPsB,EAAOC,CAAK,EAEdlC,GAAQqC,GAAUzB,EAAIC,CAAE,EACxBX,GAAQoC,GAAU1B,EAAIC,CAAE,EACxBT,GAAQmC,GAAS3B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,CAAE,EACvCZ,EAAQmC,GAAS5B,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,CAAE,EAEvC,IAAIwB,EAAQrD,GAASY,GAAOE,GAAOE,GAAOC,CAAK,EAC3CqC,EAAQrD,GAASW,GAAOE,GAAOE,GAAOC,CAAK,EAE/CqB,EAAKF,GACLG,GAAKF,GAELD,GAAKF,EACLG,GAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKhC,GAAS8B,EAAIC,EAAIgB,EAAOC,CAAK,EAClCf,EAAKhC,GAAS8B,EAAIA,EAAIgB,EAAOC,CAAK,EAElClB,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKF,EACLG,EAAKF,EAELD,EAAKxB,GAAS+C,EAAOC,EAAOK,EAAOC,CAAK,EACxC7B,EAAKxB,GAAS8C,EAAOC,EAAOK,EAAOC,CAAK,CAC1C,CAEAvD,GAAM,KAAK,EAAG,EAAGyB,EAAIC,CAAE,EACvB1B,GAAM,KAAK,EAAG,EAAG2B,EAAIC,CAAE,EACvB5B,GAAM,KAAK,EAAG,EAAG6B,EAAIC,CAAE,EACvB9B,GAAM,KAAK,EAAG,EAAG+B,EAAIC,CAAE,EACvBhC,GAAM,KAAK,EAAG,EAAGiC,EAAIC,CAAE,EACvBlC,GAAM,KAAK,EAAG,GAAImC,EAAIC,CAAE,EACxBpC,GAAM,KAAK,EAAG,GAAIqC,GAAIC,EAAE,EACxBtC,GAAM,KAAK,EAAG,GAAIuC,EAAIC,EAAE,CAC1B,EAEA/B,GAAO,UAAU,QAAU,SAAgB+C,EAAK,CAC9C,OAAIA,IAAQ,MACH/D,GAAM,QAAQ,KAAK,EAAG,KAAK,EAE3BA,GAAM,QAAQ,KAAK,EAAG,KAAK,CACtC,EAEA,SAASmD,GAAQa,EAAIC,EAAIC,EAAIC,EAAIC,EAAI,CACnC,IAAIC,EAAKL,EAAKE,EAAQ,CAACF,EAAMI,EAC7B,OAAIC,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASjB,GAAQY,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,EAAI,CACvC,IAAID,EAAKJ,EAAKE,EAAQ,CAACF,EAAMK,EAC7B,OAAID,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASV,GAASK,EAAIC,EAAIC,EAAIC,EAAIC,EAAI,CACpC,IAAIC,EAAKL,EAAKE,EAAOF,EAAKI,EAAOF,EAAKE,EACtC,OAAIC,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAAST,GAASI,EAAIC,EAAIC,EAAIC,EAAIC,EAAIE,EAAI,CACxC,IAAID,EAAKJ,EAAKE,EAAOF,EAAKK,EAAOH,EAAKG,EACtC,OAAID,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASZ,GAAUO,EAAIC,EAAI,CACzB,IAAI7C,EAAQjB,GAAU6D,EAAIC,EAAI,EAAE,EAC5BzC,EAAQrB,GAAU8D,EAAID,EAAI,CAAC,EAC3BtC,EAAQvB,GAAU8D,EAAID,EAAI,CAAC,EAE3BK,EAAIjD,EAAQI,EAAQE,EACxB,OAAI2C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASX,GAAUM,EAAIC,EAAI,CACzB,IAAI3C,EAAQlB,GAAU4D,EAAIC,EAAI,EAAE,EAC5BxC,EAAQrB,GAAU6D,EAAID,EAAI,CAAC,EAC3BpC,EAAQxB,GAAU6D,EAAID,EAAI,CAAC,EAE3BK,EAAI/C,EAAQG,EAAQG,EACxB,OAAIyC,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASpB,GAAUe,EAAIC,EAAI,CACzB,IAAI7C,EAAQjB,GAAU6D,EAAIC,EAAI,EAAE,EAC5BzC,EAAQrB,GAAU6D,EAAIC,EAAI,EAAE,EAC5BvC,EAAQvB,GAAU8D,EAAID,EAAI,CAAC,EAE3BK,EAAIjD,EAAQI,EAAQE,EACxB,OAAI2C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASnB,GAAUc,EAAIC,EAAI,CACzB,IAAI3C,EAAQlB,GAAU4D,EAAIC,EAAI,EAAE,EAC5BxC,EAAQrB,GAAU4D,EAAIC,EAAI,EAAE,EAC5BrC,EAAQxB,GAAU6D,EAAID,EAAI,CAAC,EAE3BK,EAAI/C,EAAQG,EAAQG,EACxB,OAAIyC,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAAS1C,GAAUqC,EAAIC,EAAI,CACzB,IAAI7C,EAAQjB,GAAU6D,EAAIC,EAAI,CAAC,EAC3BzC,EAAQrB,GAAU6D,EAAIC,EAAI,CAAC,EAC3BvC,EAAQrB,GAAS2D,EAAIC,EAAI,CAAC,EAE1BI,EAAIjD,EAAQI,EAAQE,EACxB,OAAI2C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAASxC,GAAUmC,EAAIC,EAAI,CACzB,IAAI3C,EAAQlB,GAAU4D,EAAIC,EAAI,CAAC,EAC3BxC,EAAQrB,GAAU4D,EAAIC,EAAI,CAAC,EAC3BrC,EAAQtB,GAAS0D,EAAIC,EAAI,CAAC,EAE1BI,EAAI/C,EAAQG,EAAQG,EACxB,OAAIyC,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAAShD,GAAU2C,EAAIC,EAAI,CACzB,IAAI7C,EAAQjB,GAAU6D,EAAIC,EAAI,EAAE,EAC5BzC,EAAQrB,GAAU8D,EAAID,EAAI,EAAE,EAC5BtC,EAAQrB,GAAS2D,EAAIC,EAAI,CAAC,EAE1BI,EAAIjD,EAAQI,EAAQE,EACxB,OAAI2C,EAAI,IACNA,GAAK,YACAA,CACT,CAEA,SAAS9C,GAAUyC,EAAIC,EAAI,CACzB,IAAI3C,EAAQlB,GAAU4D,EAAIC,EAAI,EAAE,EAC5BxC,EAAQrB,GAAU6D,EAAID,EAAI,EAAE,EAC5BpC,EAAQtB,GAAS0D,EAAIC,EAAI,CAAC,EAE1BI,EAAI/C,EAAQG,EAAQG,EACxB,OAAIyC,EAAI,IACNA,GAAK,YACAA,CACT,ICzUA,IAAAE,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAQ,KAERC,GAAS,KAEb,SAASC,IAAS,CAChB,GAAI,EAAE,gBAAgBA,IACpB,OAAO,IAAIA,GAEbD,GAAO,KAAK,IAAI,EAChB,KAAK,EAAI,CACP,WAAY,WACZ,WAAY,UACZ,WAAY,UACZ,UAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,WACZ,WAAY,UAAW,CAC3B,CACAD,GAAM,SAASE,GAAQD,EAAM,EAC7BF,GAAO,QAAUG,GAEjBA,GAAO,UAAY,KACnBA,GAAO,QAAU,IACjBA,GAAO,aAAe,IACtBA,GAAO,UAAY,IAEnBA,GAAO,UAAU,QAAU,SAAgBC,EAAK,CAC9C,OAAIA,IAAQ,MACHH,GAAM,QAAQ,KAAK,EAAE,MAAM,EAAG,EAAE,EAAG,KAAK,EAExCA,GAAM,QAAQ,KAAK,EAAE,MAAM,EAAG,EAAE,EAAG,KAAK,CACnD,IClCA,IAAAI,GAAAC,GAAAC,IAAA,cAEAA,GAAQ,KAAO,KACfA,GAAQ,OAAS,KACjBA,GAAQ,OAAS,KACjBA,GAAQ,OAAS,KACjBA,GAAQ,OAAS,OCNjB,IAAAC,GAAAC,GAAAC,IAAA,cAEA,IAAIC,GAAQ,KACRC,GAAS,KAETC,GAASF,GAAM,OACfG,GAAQH,GAAM,MACdI,GAAUJ,GAAM,QAChBK,GAAUL,GAAM,QAChBM,GAAYL,GAAO,UAEvB,SAASM,IAAY,CACnB,GAAI,EAAE,gBAAgBA,IACpB,OAAO,IAAIA,GAEbD,GAAU,KAAK,IAAI,EAEnB,KAAK,EAAI,CAAE,WAAY,WAAY,WAAY,UAAY,UAAW,EACtE,KAAK,OAAS,QAChB,CACAN,GAAM,SAASO,GAAWD,EAAS,EACnCP,GAAQ,UAAYQ,GAEpBA,GAAU,UAAY,IACtBA,GAAU,QAAU,IACpBA,GAAU,aAAe,IACzBA,GAAU,UAAY,GAEtBA,GAAU,UAAU,QAAU,SAAgBC,EAAKC,EAAO,CAWxD,QAVIC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAI,KAAK,EAAE,GACXC,EAAKL,EACLM,EAAKL,EACLM,EAAKL,EACLM,EAAKL,EACLM,EAAKL,EACAM,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAIC,EAAIlB,GACND,GACEG,GAAQK,EAAGY,GAAEF,EAAGT,EAAGC,EAAGC,CAAC,EAAGL,EAAIe,GAAEH,GAAKX,GAAQe,GAAEJ,CAAC,CAAC,EACjDK,GAAEL,EAAE,EACNN,CAAC,EACHJ,EAAII,EACJA,EAAID,EACJA,EAAIX,GAAOU,EAAG,EAAE,EAChBA,EAAID,EACJA,EAAIU,EACJA,EAAIlB,GACFD,GACEG,GAAQU,EAAIO,GAAE,GAAKF,EAAGJ,EAAIC,EAAIC,CAAE,EAAGV,EAAIkB,GAAGN,GAAKX,GAAQkB,GAAGP,CAAC,CAAC,EAC5DQ,GAAGR,EAAE,EACPD,CAAE,EACJJ,EAAKI,EACLA,EAAKD,EACLA,EAAKhB,GAAOe,EAAI,EAAE,EAClBA,EAAKD,EACLA,EAAKK,CACP,CACAA,EAAIjB,GAAQ,KAAK,EAAE,GAAIQ,EAAGM,CAAE,EAC5B,KAAK,EAAE,GAAKd,GAAQ,KAAK,EAAE,GAAIS,EAAGM,CAAE,EACpC,KAAK,EAAE,GAAKf,GAAQ,KAAK,EAAE,GAAIU,EAAGC,CAAE,EACpC,KAAK,EAAE,GAAKX,GAAQ,KAAK,EAAE,GAAIM,EAAGM,CAAE,EACpC,KAAK,EAAE,GAAKZ,GAAQ,KAAK,EAAE,GAAIO,EAAGM,CAAE,EACpC,KAAK,EAAE,GAAKI,CACd,EAEAd,GAAU,UAAU,QAAU,SAAgBsB,EAAK,CACjD,OAAIA,IAAQ,MACH7B,GAAM,QAAQ,KAAK,EAAG,QAAQ,EAE9BA,GAAM,QAAQ,KAAK,EAAG,QAAQ,CACzC,EAEA,SAASsB,GAAEF,EAAGU,EAAGC,EAAGC,EAAG,CACrB,OAAIZ,GAAK,GACAU,EAAIC,EAAIC,EACRZ,GAAK,GACJU,EAAIC,EAAO,CAACD,EAAKE,EAClBZ,GAAK,IACJU,EAAK,CAACC,GAAMC,EACbZ,GAAK,GACJU,EAAIE,EAAMD,EAAK,CAACC,EAEjBF,GAAKC,EAAK,CAACC,EACtB,CAEA,SAASR,GAAEJ,EAAG,CACZ,OAAIA,GAAK,GACA,EACAA,GAAK,GACL,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WAEA,UACX,CAEA,SAASO,GAAGP,EAAG,CACb,OAAIA,GAAK,GACA,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WACAA,GAAK,GACL,WAEA,CACX,CAEA,IAAIG,GAAI,CACN,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EACnD,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GAClD,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EACnD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EACpD,EAEIG,GAAK,CACP,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAClD,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,EAAG,EACnD,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAClD,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAClD,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,EACpD,EAEID,GAAI,CACN,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EACrD,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,GACpD,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EACrD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GACpD,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,CACvD,EAEIG,GAAK,CACP,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,EACrD,EAAG,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GACpD,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,EAAG,EACrD,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EACrD,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,GAAI,EACtD,ICjJA,IAAAK,GAAAC,GAAA,CAAAC,GAAAC,KAAA,cAEA,IAAIC,GAAQ,KACRC,GAAS,KAEb,SAASC,GAAKC,EAAMC,EAAKC,EAAK,CAC5B,GAAI,EAAE,gBAAgBH,IACpB,OAAO,IAAIA,GAAKC,EAAMC,EAAKC,CAAG,EAChC,KAAK,KAAOF,EACZ,KAAK,UAAYA,EAAK,UAAY,EAClC,KAAK,QAAUA,EAAK,QAAU,EAC9B,KAAK,MAAQ,KACb,KAAK,MAAQ,KAEb,KAAK,MAAMH,GAAM,QAAQI,EAAKC,CAAG,CAAC,CACpC,CACAN,GAAO,QAAUG,GAEjBA,GAAK,UAAU,MAAQ,SAAcE,EAAK,CAEpCA,EAAI,OAAS,KAAK,YACpBA,EAAM,IAAI,KAAK,KAAK,EAAE,OAAOA,CAAG,EAAE,OAAO,GAC3CH,GAAOG,EAAI,QAAU,KAAK,SAAS,EAGnC,QAASE,EAAIF,EAAI,OAAQE,EAAI,KAAK,UAAWA,IAC3CF,EAAI,KAAK,CAAC,EAEZ,IAAKE,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAC1BF,EAAIE,IAAM,GAIZ,IAHA,KAAK,MAAQ,IAAI,KAAK,KAAK,EAAE,OAAOF,CAAG,EAGlCE,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAC1BF,EAAIE,IAAM,IACZ,KAAK,MAAQ,IAAI,KAAK,KAAK,EAAE,OAAOF,CAAG,CACzC,EAEAF,GAAK,UAAU,OAAS,SAAgBK,EAAKF,EAAK,CAChD,YAAK,MAAM,OAAOE,EAAKF,CAAG,EACnB,IACT,EAEAH,GAAK,UAAU,OAAS,SAAgBG,EAAK,CAC3C,YAAK,MAAM,OAAO,KAAK,MAAM,OAAO,CAAC,EAC9B,KAAK,MAAM,OAAOA,CAAG,CAC9B,IC9CA,IAAAG,GAAAC,GAAAC,IAAA,KAAIC,GAAOD,GAEXC,GAAK,MAAQ,KACbA,GAAK,OAAS,KACdA,GAAK,IAAM,KACXA,GAAK,OAAS,KACdA,GAAK,KAAO,KAGZA,GAAK,KAAOA,GAAK,IAAI,KACrBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,OAASA,GAAK,IAAI,OACvBA,GAAK,UAAYA,GAAK,OAAO,YCd7B,IAAAC,GAAAC,GAAA,CAAAC,GAAAC,KAAA,CAAAA,GAAO,QAAU,CACf,QAAS,CACP,KAAM,EACN,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,gEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,EACA,IAAK,CACH,IAAK,EACL,OAAQ,CACN,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,iEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,kEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,iEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,EACA,CACE,mEACA,kEACF,CACF,CACF,CACF,IC3wBA,IAAAC,GAAAC,GAAAC,IAAA,cAEA,IAAIC,GAASD,GAETE,GAAO,KACPC,GAAQ,KACRC,GAAQ,KAERC,GAASD,GAAM,OAE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", + "names": ["require_crypto", "__commonJSMin", "require_nacl_fast", "__commonJSMin", "exports", "module", "nacl", "gf", "init", "i", "r", "randombytes", "_0", "_9", "gf0", "gf1", "_121665", "D", "D2", "X", "Y", "I", "ts64", "x", "h", "l", "vn", "xi", "y", "yi", "n", "d", "crypto_verify_16", "crypto_verify_32", "core_salsa20", "o", "p", "k", "c", "j0", "j1", "j2", "j3", "j4", "j5", "j6", "j7", "j8", "j9", "j10", "j11", "j12", "j13", "j14", "j15", "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "u", "core_hsalsa20", "crypto_core_salsa20", "out", "inp", "crypto_core_hsalsa20", "sigma", "crypto_stream_salsa20_xor", "cpos", "m", "mpos", "b", "z", "crypto_stream_salsa20", "crypto_stream", "s", "sn", "crypto_stream_xor", "poly1305", "key", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "bytes", "hibit", "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d8", "d9", "h0", "h1", "h2", "h3", "h4", "h5", "h6", "h7", "h8", "h9", "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "mac", "macpos", "g", "mask", "f", "want", "crypto_onetimeauth", "outpos", "crypto_onetimeauth_verify", "hpos", "crypto_secretbox", "crypto_secretbox_open", "set25519", "a", "car25519", "v", "sel25519", "q", "t", "pack25519", "j", "neq25519", "par25519", "unpack25519", "A", "Z", "M", "t8", "t9", "t10", "t11", "t12", "t13", "t14", "t15", "t16", "t17", "t18", "t19", "t20", "t21", "t22", "t23", "t24", "t25", "t26", "t27", "t28", "t29", "t30", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "S", "inv25519", "pow2523", "crypto_scalarmult", "e", "x32", "x16", "crypto_scalarmult_base", "crypto_box_keypair", "crypto_box_beforenm", "crypto_box_afternm", "crypto_box_open_afternm", "crypto_box", "crypto_box_open", "K", "crypto_hashblocks_hl", "hh", "hl", "wh", "wl", "bh0", "bh1", "bh2", "bh3", "bh4", "bh5", "bh6", "bh7", "bl0", "bl1", "bl2", "bl3", "bl4", "bl5", "bl6", "bl7", "th", "tl", "ah0", "ah1", "ah2", "ah3", "ah4", "ah5", "ah6", "ah7", "al0", "al1", "al2", "al3", "al4", "al5", "al6", "al7", "pos", "crypto_hash", "add", "cswap", "pack", "tx", "ty", "zi", "scalarmult", "scalarbase", "crypto_sign_keypair", "pk", "sk", "seeded", "L", "modL", "carry", "reduce", "crypto_sign", "sm", "smlen", "unpackneg", "chk", "num", "den", "den2", "den4", "den6", "crypto_sign_open", "crypto_secretbox_KEYBYTES", "crypto_secretbox_NONCEBYTES", "crypto_secretbox_ZEROBYTES", "crypto_secretbox_BOXZEROBYTES", "crypto_scalarmult_BYTES", "crypto_scalarmult_SCALARBYTES", "crypto_box_PUBLICKEYBYTES", "crypto_box_SECRETKEYBYTES", "crypto_box_BEFORENMBYTES", "crypto_box_NONCEBYTES", "crypto_box_ZEROBYTES", "crypto_box_BOXZEROBYTES", "crypto_sign_BYTES", "crypto_sign_PUBLICKEYBYTES", "crypto_sign_SECRETKEYBYTES", "crypto_sign_SEEDBYTES", "crypto_hash_BYTES", "checkLengths", "checkBoxLengths", "checkArrayTypes", "cleanup", "arr", "msg", "nonce", "box", "publicKey", "secretKey", "signedMsg", "tmp", "mlen", "sig", "seed", "fn", "crypto", "QUOTA", "__require", "require_base64_js", "__commonJSMin", "exports", "byteLength", "toByteArray", "fromByteArray", "lookup", "revLookup", "Arr", "code", "i", "len", "getLens", "b64", "validLen", "placeHoldersLen", "lens", "_byteLength", "tmp", "arr", "curByte", "tripletToBase64", "num", "encodeChunk", "uint8", "start", "end", "output", "extraBytes", "parts", "maxChunkLength", "len2", "require_ieee754", "__commonJSMin", "exports", "buffer", "offset", "isLE", "mLen", "nBytes", "e", "m", "eLen", "eMax", "eBias", "nBits", "i", "d", "s", "value", "c", "rt", "require_buffer", "__commonJSMin", "exports", "base64", "ieee754", "customInspectSymbol", "Buffer", "SlowBuffer", "K_MAX_LENGTH", "typedArraySupport", "arr", "proto", "createBuffer", "length", "buf", "arg", "encodingOrOffset", "allocUnsafe", "from", "value", "fromString", "fromArrayView", "isInstance", "fromArrayBuffer", "valueOf", "b", "fromObject", "assertSize", "size", "alloc", "fill", "encoding", "checked", "string", "byteLength", "actual", "fromArrayLike", "array", "i", "arrayView", "copy", "byteOffset", "obj", "len", "numberIsNaN", "a", "x", "y", "list", "buffer", "pos", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "start", "end", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "m", "str", "max", "target", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "val", "dir", "arrayIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "hexWrite", "offset", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "res", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "ret", "out", "hexSliceLookupTable", "bytes", "newBuf", "checkOffset", "ext", "noAssert", "mul", "defineBigIntMethod", "validateNumber", "first", "last", "boundsError", "lo", "hi", "checkInt", "min", "maxBytes", "wrtBigUInt64LE", "checkIntBI", "wrtBigUInt64BE", "limit", "sub", "checkIEEE754", "writeFloat", "littleEndian", "writeDouble", "targetStart", "code", "errors", "E", "sym", "getMessage", "Base", "name", "range", "input", "msg", "received", "addNumericalSeparator", "checkBounds", "type", "INVALID_BASE64_RE", "base64clean", "units", "leadSurrogate", "byteArray", "c", "src", "dst", "alphabet", "table", "i16", "fn", "BufferBigIntNotDefined", "require_buffer", "__commonJSMin", "require_bn", "__commonJSMin", "exports", "module", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "b", "len", "c", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "move", "src", "size", "inspect", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "allocate", "ArrayType", "byteLength", "reqLength", "res", "postfix", "position", "shift", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "FFTM", "x", "y", "N", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "isNegNum", "q", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_buffer", "__commonJSMin", "exports", "base64", "ieee754", "customInspectSymbol", "Buffer", "SlowBuffer", "K_MAX_LENGTH", "typedArraySupport", "arr", "proto", "createBuffer", "length", "buf", "arg", "encodingOrOffset", "allocUnsafe", "from", "value", "fromString", "fromArrayView", "isInstance", "fromArrayBuffer", "valueOf", "b", "fromObject", "assertSize", "size", "alloc", "fill", "encoding", "checked", "string", "byteLength", "actual", "fromArrayLike", "array", "i", "arrayView", "copy", "byteOffset", "obj", "len", "numberIsNaN", "a", "x", "y", "list", "buffer", "pos", "mustMatch", "loweredCase", "utf8ToBytes", "base64ToBytes", "slowToString", "start", "end", "hexSlice", "utf8Slice", "asciiSlice", "latin1Slice", "base64Slice", "utf16leSlice", "swap", "n", "m", "str", "max", "target", "thisStart", "thisEnd", "thisCopy", "targetCopy", "bidirectionalIndexOf", "val", "dir", "arrayIndexOf", "indexSize", "arrLength", "valLength", "read", "foundIndex", "found", "j", "hexWrite", "offset", "remaining", "strLen", "parsed", "utf8Write", "blitBuffer", "asciiWrite", "asciiToBytes", "base64Write", "ucs2Write", "utf16leToBytes", "res", "firstByte", "codePoint", "bytesPerSequence", "secondByte", "thirdByte", "fourthByte", "tempCodePoint", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "codePoints", "ret", "out", "hexSliceLookupTable", "bytes", "newBuf", "checkOffset", "ext", "noAssert", "mul", "defineBigIntMethod", "validateNumber", "first", "last", "boundsError", "lo", "hi", "checkInt", "min", "maxBytes", "wrtBigUInt64LE", "checkIntBI", "wrtBigUInt64BE", "limit", "sub", "checkIEEE754", "writeFloat", "littleEndian", "writeDouble", "targetStart", "code", "errors", "E", "sym", "getMessage", "Base", "name", "range", "input", "msg", "received", "addNumericalSeparator", "checkBounds", "type", "INVALID_BASE64_RE", "base64clean", "units", "leadSurrogate", "byteArray", "c", "src", "dst", "alphabet", "table", "i16", "fn", "BufferBigIntNotDefined", "require_safe_buffer", "__commonJSMin", "exports", "module", "buffer", "Buffer", "copyProps", "src", "dst", "key", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_src", "__commonJSMin", "exports", "module", "_Buffer", "base", "ALPHABET", "BASE_MAP", "j", "i", "x", "xc", "BASE", "LEADER", "FACTOR", "iFACTOR", "encode", "source", "zeroes", "length", "pbegin", "pend", "size", "b58", "carry", "it1", "it2", "str", "decodeUnsafe", "psz", "b256", "it3", "it4", "vch", "decode", "string", "buffer", "require_bs58", "__commonJSMin", "exports", "module", "basex", "ALPHABET", "require_encoding_lib", "__commonJSMin", "exports", "inRange", "a", "min", "max", "ToDictionary", "o", "stringToCodePoints", "string", "s", "n", "i", "u", "c", "d", "b", "codePointsToString", "code_points", "cp", "end_of_stream", "Stream", "tokens", "token", "finished", "decoderError", "fatal", "opt_code_point", "DEFAULT_ENCODING", "TextDecoder", "encoding", "options", "input", "bytes", "UTF8Decoder", "input_stream", "result", "TextEncoder", "opt_string", "UTF8Encoder", "utf8_code_point", "utf8_bytes_seen", "utf8_bytes_needed", "utf8_lower_boundary", "utf8_upper_boundary", "stream", "bite", "code_point", "count", "offset", "temp", "require_lib", "__commonJSMin", "exports", "__createBinding", "o", "m", "k", "k2", "__setModuleDefault", "v", "__decorate", "decorators", "target", "key", "desc", "c", "r", "d", "i", "__importStar", "mod", "result", "__importDefault", "bn_js_1", "bs58_1", "encoding", "ResolvedTextDecoder", "textDecoder", "baseEncode", "value", "baseDecode", "INITIAL_LENGTH", "BorshError", "message", "fieldName", "BinaryWriter", "buffer", "str", "b", "array", "fn", "elem", "handlingRangeError", "propertyKey", "propertyDescriptor", "originalMethod", "args", "e", "code", "BinaryReader", "buf", "len", "capitalizeFirstLetter", "string", "serializeField", "schema", "fieldType", "writer", "item", "val", "serializeStruct", "error", "obj", "structSchema", "name", "idx", "serialize", "Writer", "deserializeField", "reader", "arr", "map", "length", "deserializeStruct", "classType", "fieldValue", "deserialize", "Reader", "deserializeUnchecked", "require_Layout", "__commonJSMin", "exports", "buffer_1", "checkUint8Array", "b", "uint8ArrayToBuffer", "Layout", "span", "property", "offset", "rv", "values", "nameWithProperty", "name", "lo", "bindConstructorLayout", "Class", "layout", "ExternalLayout", "GreedyCount", "elementSpan", "rem", "src", "OffsetLayout", "UInt", "UIntBE", "Int", "IntBE", "V2E32", "divmodInt64", "hi32", "lo32", "roundedInt64", "NearUInt64", "buffer", "split", "NearUInt64BE", "NearInt64", "NearInt64BE", "Float", "FloatBE", "Double", "DoubleBE", "Sequence", "elementLayout", "count", "idx", "elo", "v", "Structure", "fields", "decodePrefixes", "acc", "fd", "fsp", "dest", "firstOffset", "lastOffset", "lastWrote", "fv", "UnionDiscriminator", "UnionLayoutDiscriminator", "Union", "discr", "defaultLayout", "discriminator", "boundGetSourceVariant", "gsv", "vlo", "tag", "dlo", "clo", "contentOffset", "variant", "VariantLayout", "vb", "union", "fixBitwiseResult", "BitStructure", "word", "msb", "value", "bits", "bf", "BitField", "Boolean", "container", "totalBits", "usedBits", "sum", "wordValue", "Blob", "length", "srcBuffer", "CString", "srcb", "UTF8", "maxSpan", "Constant", "require_browser", "__commonJSMin", "exports", "converter", "toBigIntLE", "buf", "reversed", "hex", "toBigIntBE", "toBufferLE", "num", "width", "buffer", "toBufferBE", "require_interopRequireDefault", "__commonJSMin", "exports", "module", "_interopRequireDefault", "obj", "require_createClass", "__commonJSMin", "exports", "module", "_defineProperties", "target", "props", "i", "descriptor", "_createClass", "Constructor", "protoProps", "staticProps", "require_classCallCheck", "__commonJSMin", "exports", "module", "_classCallCheck", "instance", "Constructor", "require_setPrototypeOf", "__commonJSMin", "exports", "module", "_setPrototypeOf", "o", "p", "require_inherits", "__commonJSMin", "exports", "module", "setPrototypeOf", "_inherits", "subClass", "superClass", "require_typeof", "__commonJSMin", "exports", "module", "_typeof", "obj", "require_assertThisInitialized", "__commonJSMin", "exports", "module", "_assertThisInitialized", "self", "require_possibleConstructorReturn", "__commonJSMin", "exports", "module", "_typeof", "assertThisInitialized", "_possibleConstructorReturn", "self", "call", "require_getPrototypeOf", "__commonJSMin", "exports", "module", "_getPrototypeOf", "o", "require_eventemitter3", "__commonJSMin", "exports", "module", "has", "prefix", "Events", "EE", "fn", "context", "once", "addListener", "emitter", "event", "listener", "evt", "clearEvent", "EventEmitter", "names", "events", "name", "handlers", "l", "ee", "listeners", "a1", "a2", "a3", "a4", "a5", "len", "args", "i", "length", "j", "require_websocket_browser", "__commonJSMin", "exports", "_interopRequireDefault", "_default", "_classCallCheck2", "_createClass2", "_inherits2", "_possibleConstructorReturn2", "_getPrototypeOf2", "_eventemitter", "_createSuper", "Derived", "hasNativeReflectConstruct", "_isNativeReflectConstruct", "Super", "result", "NewTarget", "WebSocketBrowserImpl", "_EventEmitter", "_super", "address", "options", "protocols", "_this", "event", "error", "data", "optionsOrCallback", "callback", "cb", "code", "reason", "type", "listener", "require_regeneratorRuntime", "__commonJSMin", "exports", "module", "_typeof", "_regeneratorRuntime", "Op", "hasOwn", "$Symbol", "iteratorSymbol", "asyncIteratorSymbol", "toStringTagSymbol", "define", "obj", "key", "value", "wrap", "innerFn", "outerFn", "self", "tryLocsList", "protoGenerator", "Generator", "generator", "context", "Context", "state", "method", "arg", "doneResult", "delegate", "delegateResult", "maybeInvokeDelegate", "ContinueSentinel", "record", "tryCatch", "fn", "err", "GeneratorFunction", "GeneratorFunctionPrototype", "IteratorPrototype", "getProto", "NativeIteratorPrototype", "values", "Gp", "defineIteratorMethods", "prototype", "AsyncIterator", "PromiseImpl", "invoke", "resolve", "reject", "result", "unwrapped", "error", "previousPromise", "callInvokeWithMethodAndArg", "info", "pushTryEntry", "locs", "entry", "resetTryEntry", "iterable", "iteratorMethod", "i", "next", "genFun", "ctor", "iter", "object", "keys", "skipTempReset", "name", "rootRecord", "exception", "handle", "loc", "caught", "hasCatch", "hasFinally", "type", "finallyEntry", "afterLoc", "finallyLoc", "tryLoc", "thrown", "resultName", "nextLoc", "require_regenerator", "__commonJSMin", "exports", "module", "runtime", "require_asyncToGenerator", "__commonJSMin", "exports", "module", "asyncGeneratorStep", "gen", "resolve", "reject", "_next", "_throw", "key", "arg", "info", "value", "error", "_asyncToGenerator", "fn", "self", "args", "err", "require_client", "__commonJSMin", "exports", "_interopRequireDefault", "_regenerator", "_asyncToGenerator2", "_typeof2", "_classCallCheck2", "_createClass2", "_inherits2", "_possibleConstructorReturn2", "_getPrototypeOf2", "_eventemitter", "_createSuper", "Derived", "hasNativeReflectConstruct", "_isNativeReflectConstruct", "Super", "result", "NewTarget", "__rest", "s", "p", "CommonClient", "_EventEmitter", "_super", "webSocketFactory", "_this", "address", "_a", "generate_request_id", "_a$autoconnect", "autoconnect", "_a$reconnect", "reconnect", "_a$reconnect_interval", "reconnect_interval", "_a$max_reconnects", "max_reconnects", "rest_options", "method", "params", "timeout", "ws_opts", "_this2", "resolve", "reject", "rpc_id", "message", "error", "_login", "_callee", "resp", "_context", "login", "_x", "_listMethods", "_callee2", "_context2", "listMethods", "_this3", "_subscribe", "_callee3", "event", "_context3", "subscribe", "_x2", "_unsubscribe", "_callee4", "_context4", "unsubscribe", "_x3", "code", "data", "options", "_this4", "_ref", "args", "i", "_ref2", "reason", "require_index_browser", "__commonJSMin", "exports", "_interopRequireDefault", "_createClass2", "_classCallCheck2", "_inherits2", "_possibleConstructorReturn2", "_getPrototypeOf2", "_websocket", "_client", "_createSuper", "Derived", "hasNativeReflectConstruct", "_isNativeReflectConstruct", "Super", "result", "NewTarget", "Client", "_CommonClient", "_super", "address", "_ref", "_ref$autoconnect", "autoconnect", "_ref$reconnect", "reconnect", "_ref$reconnect_interv", "reconnect_interval", "_ref$max_reconnects", "max_reconnects", "generate_request_id", "rng", "getRandomValues", "rnds8", "init_rng", "__esmMin", "regex_default", "init_regex", "__esmMin", "validate", "uuid", "regex_default", "validate_default", "init_validate", "__esmMin", "init_regex", "stringify", "arr", "offset", "uuid", "byteToHex", "validate_default", "i", "stringify_default", "init_stringify", "__esmMin", "init_validate", "v1", "options", "buf", "offset", "i", "b", "node", "_nodeId", "clockseq", "_clockseq", "seedBytes", "rng", "msecs", "nsecs", "_lastNSecs", "dt", "_lastMSecs", "tl", "tmh", "n", "stringify_default", "v1_default", "init_v1", "__esmMin", "init_rng", "init_stringify", "parse", "uuid", "validate_default", "v", "arr", "parse_default", "init_parse", "__esmMin", "init_validate", "stringToBytes", "str", "bytes", "i", "v35_default", "name", "version", "hashfunc", "generateUUID", "value", "namespace", "buf", "offset", "parse_default", "stringify_default", "DNS", "URL", "init_v35", "__esmMin", "init_stringify", "init_parse", "md5", "bytes", "msg", "i", "md5ToHexEncodedArray", "wordsToMd5", "bytesToWords", "input", "output", "length32", "hexTab", "x", "hex", "getOutputLength", "inputLength8", "len", "a", "b", "c", "d", "olda", "oldb", "oldc", "oldd", "md5ff", "md5gg", "md5hh", "md5ii", "safeAdd", "length8", "y", "lsw", "msw", "bitRotateLeft", "num", "cnt", "md5cmn", "q", "s", "t", "md5_default", "init_md5", "__esmMin", "v3", "v3_default", "init_v3", "__esmMin", "init_v35", "init_md5", "v35_default", "md5_default", "v4", "options", "buf", "offset", "rnds", "rng", "stringify_default", "v4_default", "init_v4", "__esmMin", "init_rng", "init_stringify", "f", "s", "x", "y", "z", "ROTL", "n", "sha1", "bytes", "K", "H", "msg", "l", "N", "M", "_i", "arr", "j", "_i2", "W", "t", "_t", "a", "b", "c", "d", "e", "_t2", "T", "sha1_default", "init_sha1", "__esmMin", "v5", "v5_default", "init_v5", "__esmMin", "init_v35", "init_sha1", "v35_default", "sha1_default", "nil_default", "init_nil", "__esmMin", "version", "uuid", "validate_default", "version_default", "init_version", "__esmMin", "init_validate", "esm_browser_exports", "__export", "nil_default", "parse_default", "stringify_default", "v1_default", "v3_default", "v4_default", "v5_default", "validate_default", "version_default", "init_esm_browser", "__esmMin", "init_v1", "init_v3", "init_v4", "init_v5", "init_nil", "init_version", "init_validate", "init_stringify", "init_parse", "require_generateRequest", "__commonJSMin", "exports", "module", "uuid", "generateRequest", "method", "params", "id", "options", "version", "request", "generator", "require_browser", "__commonJSMin", "exports", "module", "uuid", "generateRequest", "ClientBrowser", "callServer", "options", "method", "params", "id", "callback", "self", "request", "isBatch", "hasCallback", "err", "message", "response", "responseText", "isError", "res", "isNotError", "require_lib", "__commonJSMin", "exports", "module", "errors", "assert", "cond", "msg", "isUint8Array", "name", "value", "length", "numbers", "isCompressed", "toTypeString", "getAssertedOutput", "output", "len", "secp256k1", "seed", "seckey", "tweak", "pubkey", "compressed", "pubkeys", "sig", "obj", "msg32", "options", "recid", "require_bn", "__commonJSMin", "exports", "module", "assert", "val", "msg", "inherits", "ctor", "superCtor", "TempCtor", "BN", "number", "base", "endian", "Buffer", "num", "left", "right", "start", "i", "j", "w", "off", "parseHex4Bits", "string", "index", "c", "parseHexByte", "lowerBound", "r", "parseLength", "parseBase", "str", "end", "mul", "len", "limbLen", "limbPow", "total", "mod", "word", "pow", "dest", "size", "zeros", "groupSizes", "groupBases", "padding", "out", "carry", "groupSize", "groupBase", "ret", "length", "ArrayType", "byteLength", "reqLength", "littleEndian", "res", "b", "q", "t", "hi", "toBitArray", "bit", "wbit", "width", "a", "bytesNeeded", "bitsLeft", "cmp", "smallMulTo", "self", "lo", "k", "ncarry", "rword", "maxJ", "comb10MulTo", "o", "mid", "a0", "al0", "ah0", "a1", "al1", "ah1", "a2", "al2", "ah2", "a3", "al3", "ah3", "a4", "al4", "ah4", "a5", "al5", "ah5", "a6", "al6", "ah6", "a7", "al7", "ah7", "a8", "al8", "ah8", "a9", "al9", "ah9", "b0", "bl0", "bh0", "b1", "bl1", "bh1", "b2", "bl2", "bh2", "b3", "bl3", "bh3", "b4", "bl4", "bh4", "b5", "bl5", "bh5", "b6", "bl6", "bh6", "b7", "bl7", "bh7", "b8", "bl8", "bh8", "b9", "bl9", "bh9", "w0", "w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10", "w11", "w12", "w13", "w14", "w15", "w16", "w17", "w18", "bigMulTo", "hncarry", "jumboMulTo", "fftm", "FFTM", "y", "N", "x", "l", "rb", "rbt", "rws", "iws", "rtws", "itws", "s", "rtwdf", "itwdf", "p", "rtwdf_", "itwdf_", "re", "ie", "ro", "io", "rx", "n", "m", "odd", "ws", "ph", "_", "rwst", "iwst", "nrws", "nrwst", "niwst", "rmws", "bits", "carryMask", "newCarry", "hint", "extended", "h", "mask", "maskedWords", "shift", "mode", "bhi", "bhiBits", "diff", "qj", "positive", "div", "dm", "half", "r2", "acc", "A", "B", "C", "D", "g", "yp", "xp", "im", "jm", "x1", "x2", "delta", "negative", "Red", "ctx", "primes", "MPrime", "name", "tmp", "rlen", "input", "K256", "output", "outLen", "prev", "next", "P224", "P192", "P25519", "prime", "mod3", "one", "nOne", "lpow", "z", "inv", "windowSize", "wnd", "current", "currentLen", "Mont", "u", "require_minimalistic_assert", "__commonJSMin", "exports", "module", "assert", "val", "msg", "l", "r", "require_utils", "__commonJSMin", "exports", "utils", "toArray", "msg", "enc", "res", "i", "c", "hi", "lo", "zero2", "word", "toHex", "arr", "require_utils", "__commonJSMin", "exports", "utils", "BN", "minAssert", "minUtils", "getNAF", "num", "w", "bits", "naf", "ws", "k", "i", "z", "mod", "getJSF", "k1", "k2", "jsf", "d1", "d2", "m8", "m14", "m24", "u1", "u2", "cachedProperty", "obj", "name", "computer", "key", "parseBytes", "bytes", "intFromLE", "require_brorand", "__commonJSMin", "exports", "module", "r", "len", "Rand", "rand", "n", "res", "i", "arr", "crypto", "require_base", "__commonJSMin", "exports", "module", "BN", "utils", "getNAF", "getJSF", "assert", "BaseCurve", "type", "conf", "adjustCount", "p", "k", "doubles", "naf", "I", "repr", "j", "nafW", "l", "a", "b", "i", "w", "nafPoints", "wnd", "acc", "z", "defW", "points", "coeffs", "len", "jacobianResult", "wndWidth", "max", "comb", "index", "jsf", "ja", "jb", "tmp", "zero", "BasePoint", "curve", "bytes", "enc", "res", "compact", "x", "power", "precomputed", "step", "dbl", "r", "require_inherits_browser", "__commonJSMin", "exports", "module", "ctor", "superCtor", "TempCtor", "require_short", "__commonJSMin", "exports", "module", "utils", "BN", "inherits", "Base", "assert", "ShortCurve", "conf", "beta", "lambda", "betas", "lambdas", "basis", "vec", "num", "red", "tinv", "ntinv", "s", "l1", "l2", "aprxSqrt", "u", "v", "x1", "y1", "x2", "y2", "a0", "b0", "a1", "b1", "a2", "b2", "prevR", "i", "r", "x", "q", "y", "len1", "len2", "k", "v1", "v2", "c1", "c2", "p1", "p2", "q1", "q2", "k1", "k2", "odd", "isOdd", "point", "ax", "rhs", "points", "coeffs", "jacobianResult", "npoints", "ncoeffs", "split", "p", "res", "j", "Point", "curve", "isRed", "obj", "pre", "endoMul", "obj2point", "c", "nx", "ny", "ys1", "a", "dyinv", "_precompute", "negate", "JPoint", "z", "zinv", "zinv2", "ay", "pz2", "z2", "u1", "u2", "s1", "s2", "h", "h2", "h3", "nz", "pow", "jx", "jy", "jz", "jz4", "jyd", "jx2", "jyd2", "jyd4", "t1", "t2", "dny", "xx", "yy", "yyyy", "m", "t", "yyyy8", "b", "d", "e", "f", "c8", "delta", "gamma", "alpha", "beta4", "beta8", "ggamma8", "jy2", "jxd4", "jyd8", "zz", "mm", "ee", "yyu4", "kbase", "z3", "pz3", "zs", "rx", "xc", "require_mont", "__commonJSMin", "exports", "module", "BN", "inherits", "Base", "utils", "MontCurve", "conf", "point", "x", "x2", "rhs", "y", "Point", "curve", "z", "bytes", "enc", "obj", "a", "aa", "b", "bb", "c", "nx", "nz", "p", "diff", "d", "da", "cb", "k", "bits", "i", "other", "require_edwards", "__commonJSMin", "exports", "module", "utils", "BN", "inherits", "Base", "assert", "EdwardsCurve", "conf", "num", "x", "y", "z", "t", "odd", "x2", "rhs", "lhs", "y2", "isOdd", "point", "Point", "curve", "obj", "a", "b", "c", "d", "e", "g", "f", "h", "nx", "ny", "nt", "nz", "j", "p", "tmp", "k", "k1", "k2", "zi", "other", "rx", "xc", "require_curve", "__commonJSMin", "exports", "curve", "require_utils", "__commonJSMin", "exports", "assert", "inherits", "isSurrogatePair", "msg", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "r", "rotr64_lo", "shr64_hi", "shr64_lo", "require_common", "__commonJSMin", "exports", "utils", "assert", "BlockHash", "msg", "enc", "r", "len", "bytes", "k", "res", "i", "t", "require_common", "__commonJSMin", "exports", "utils", "rotr32", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "require__", "__commonJSMin", "exports", "module", "utils", "common", "shaCommon", "rotl32", "sum32", "sum32_5", "ft_1", "BlockHash", "sha1_K", "SHA1", "msg", "start", "W", "a", "b", "c", "d", "e", "s", "t", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "common", "shaCommon", "assert", "sum32", "sum32_4", "sum32_5", "ch32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "BlockHash", "sha256_K", "SHA256", "msg", "start", "W", "a", "b", "c", "d", "e", "f", "g", "h", "T1", "T2", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "SHA256", "SHA224", "enc", "require__", "__commonJSMin", "exports", "module", "utils", "common", "assert", "rotr64_hi", "rotr64_lo", "shr64_hi", "shr64_lo", "sum64", "sum64_hi", "sum64_lo", "sum64_4_hi", "sum64_4_lo", "sum64_5_hi", "sum64_5_lo", "BlockHash", "sha512_K", "SHA512", "msg", "start", "W", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "ah", "al", "bh", "bl", "ch", "cl", "dh", "dl", "eh", "el", "fh", "fl", "gh", "gl", "hh", "hl", "i", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "enc", "xh", "xl", "yh", "yl", "zh", "r", "zl", "require__", "__commonJSMin", "exports", "module", "utils", "SHA512", "SHA384", "enc", "require_sha", "__commonJSMin", "exports", "require_ripemd", "__commonJSMin", "exports", "utils", "common", "rotl32", "sum32", "sum32_3", "sum32_4", "BlockHash", "RIPEMD160", "msg", "start", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "f", "r", "K", "s", "rh", "Kh", "sh", "enc", "x", "y", "z", "require_hmac", "__commonJSMin", "exports", "module", "utils", "assert", "Hmac", "hash", "key", "enc", "i", "msg", "require_hash", "__commonJSMin", "exports", "hash", "require_secp256k1", "__commonJSMin", "exports", "module", "require_curves", "__commonJSMin", "exports", "curves", "hash", "curve", "utils", "assert", "PresetCurve", "options", "defineCurve", "name", "pre", "require_hmac_drbg", "__commonJSMin", "exports", "module", "hash", "utils", "assert", "HmacDRBG", "options", "entropy", "nonce", "pers", "seed", "i", "kmac", "entropyEnc", "add", "addEnc", "len", "enc", "temp", "res", "require_key", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "KeyPair", "ec", "options", "pub", "enc", "priv", "compact", "key", "msg", "signature", "require_signature", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "Signature", "options", "enc", "Position", "getLength", "buf", "p", "initial", "octetLen", "val", "i", "off", "rmPadding", "len", "data", "rlen", "r", "slen", "s", "constructLength", "arr", "octets", "backHalf", "res", "require_ec", "__commonJSMin", "exports", "module", "BN", "HmacDRBG", "utils", "curves", "rand", "assert", "KeyPair", "Signature", "EC", "options", "priv", "enc", "pub", "drbg", "bytes", "ns2", "msg", "truncOnly", "delta", "key", "bkey", "nonce", "ns1", "iter", "kp", "kpX", "r", "s", "recoveryParam", "signature", "sinv", "u1", "u2", "p", "j", "n", "e", "isYOdd", "isSecondKey", "rInv", "s1", "s2", "Q", "Qprime", "require_key", "__commonJSMin", "exports", "module", "utils", "assert", "parseBytes", "cachedProperty", "KeyPair", "eddsa", "params", "pub", "secret", "hash", "lastIx", "a", "message", "sig", "enc", "require_signature", "__commonJSMin", "exports", "module", "BN", "utils", "assert", "cachedProperty", "parseBytes", "Signature", "eddsa", "sig", "require_eddsa", "__commonJSMin", "exports", "module", "hash", "curves", "utils", "assert", "parseBytes", "KeyPair", "Signature", "EDDSA", "curve", "message", "secret", "key", "r", "R", "Rencoded", "s_", "S", "sig", "pub", "h", "SG", "RplusAh", "i", "point", "enc", "bytes", "lastIx", "normed", "xIsOdd", "y", "num", "val", "require_elliptic", "__commonJSMin", "exports", "elliptic", "require_elliptic", "__commonJSMin", "exports", "module", "EC", "ec", "ecparams", "BN", "loadCompressedPublicKey", "first", "xbuf", "x", "y", "loadUncompressedPublicKey", "ybuf", "x3", "loadPublicKey", "pubkey", "savePublicKey", "output", "point", "i", "seckey", "bn", "negate", "tweak", "tweaked", "pair", "pubkeys", "pairs", "sig", "r", "s", "obj", "sigR", "sigS", "lenR", "posR", "lenS", "posS", "message", "data", "noncefn", "_noncefn", "counter", "nonce", "d", "msg32", "sigObj", "sigr", "sigs", "recid", "hashfn", "scalar", "sha256", "hash", "require_elliptic", "__commonJSMin", "exports", "module", "require_sha3", "__commonJSMin", "exports", "module", "INPUT_ERROR", "FINALIZE_ERROR", "WINDOW", "root", "WEB_WORKER", "NODE_JS", "COMMON_JS", "AMD", "ARRAY_BUFFER", "HEX_CHARS", "SHAKE_PADDING", "CSHAKE_PADDING", "KECCAK_PADDING", "PADDING", "SHIFT", "RC", "BITS", "SHAKE_BITS", "OUTPUT_TYPES", "CSHAKE_BYTEPAD", "obj", "createOutputMethod", "bits", "padding", "outputType", "message", "Keccak", "createShakeOutputMethod", "outputBits", "createCshakeOutputMethod", "n", "s", "methods", "createKmacOutputMethod", "key", "createOutputMethods", "method", "createMethod", "i", "type", "createShakeMethod", "createCshakeMethod", "w", "createKmacMethod", "Kmac", "algorithms", "methodNames", "algorithm", "j", "methodName", "newMethodName", "notString", "blocks", "byteCount", "length", "blockCount", "index", "code", "f", "x", "right", "o", "bytes", "str", "strs", "paddingBytes", "zeros", "outputBlocks", "extraBytes", "hex", "block", "buffer", "array", "offset", "h", "l", "c0", "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "b0", "b1", "b2", "b3", "b4", "b5", "b6", "b7", "b8", "b9", "b10", "b11", "b12", "b13", "b14", "b15", "b16", "b17", "b18", "b19", "b20", "b21", "b22", "b23", "b24", "b25", "b26", "b27", "b28", "b29", "b30", "b31", "b32", "b33", "b34", "b35", "b36", "b37", "b38", "b39", "b40", "b41", "b42", "b43", "b44", "b45", "b46", "b47", "b48", "b49", "src_exports", "__export", "ACCOUNT_SIZE", "ACCOUNT_TYPE_SIZE", "ASSOCIATED_TOKEN_PROGRAM_ID", "AccountLayout", "AccountState", "AccountType", "AuthorityType", "DEFAULT_ACCOUNT_STATE_SIZE", "DefaultAccountStateInstruction", "DefaultAccountStateLayout", "ExtensionType", "IMMUTABLE_OWNER_SIZE", "INTEREST_BEARING_MINT_CONFIG_STATE_SIZE", "ImmutableOwnerLayout", "InterestBearingMintConfigStateLayout", "InterestBearingMintInstruction", "LENGTH_SIZE", "MAX_FEE_BASIS_POINTS", "MEMO_TRANSFER_SIZE", "MINT_CLOSE_AUTHORITY_SIZE", "MINT_SIZE", "MULTISIG_SIZE", "MemoTransferInstruction", "MemoTransferLayout", "MintCloseAuthorityLayout", "MintLayout", "MultisigLayout", "NATIVE_MINT", "NATIVE_MINT_2022", "NON_TRANSFERABLE_SIZE", "NonTransferableLayout", "ONE_IN_BASIS_POINTS", "TOKEN_2022_PROGRAM_ID", "TOKEN_PROGRAM_ID", "TRANSFER_FEE_AMOUNT_SIZE", "TRANSFER_FEE_CONFIG_SIZE", "TYPE_SIZE", "TokenAccountNotFoundError", "TokenError", "TokenInstruction", "TokenInvalidAccountError", "TokenInvalidAccountOwnerError", "TokenInvalidAccountSizeError", "TokenInvalidInstructionDataError", "TokenInvalidInstructionKeysError", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionTypeError", "TokenInvalidMintError", "TokenInvalidOwnerError", "TokenOwnerOffCurveError", "TokenUnsupportedInstructionError", "TransferFeeAmountLayout", "TransferFeeConfigLayout", "TransferFeeInstruction", "amountToUiAmount", "amountToUiAmountInstructionData", "approve", "approveChecked", "approveCheckedInstructionData", "approveInstructionData", "burn", "burnChecked", "burnCheckedInstructionData", "burnInstructionData", "closeAccount", "closeAccountInstructionData", "createAccount", "createAmountToUiAmountInstruction", "createApproveCheckedInstruction", "createApproveInstruction", "createAssociatedTokenAccount", "createAssociatedTokenAccountIdempotent", "createAssociatedTokenAccountIdempotentInstruction", "createAssociatedTokenAccountInstruction", "createBurnCheckedInstruction", "createBurnInstruction", "createCloseAccountInstruction", "createCreateNativeMintInstruction", "createDisableRequiredMemoTransfersInstruction", "createEnableRequiredMemoTransfersInstruction", "createFreezeAccountInstruction", "createHarvestWithheldTokensToMintInstruction", "createInitializeAccount2Instruction", "createInitializeAccount3Instruction", "createInitializeAccountInstruction", "createInitializeDefaultAccountStateInstruction", "createInitializeImmutableOwnerInstruction", "createInitializeInterestBearingMintInstruction", "createInitializeMint2Instruction", "createInitializeMintCloseAuthorityInstruction", "createInitializeMintInstruction", "createInitializeMultisigInstruction", "createInitializeNonTransferableMintInstruction", "createInitializeTransferFeeConfigInstruction", "createInterestBearingMint", "createMint", "createMintToCheckedInstruction", "createMintToInstruction", "createMultisig", "createNativeMint", "createNativeMintInstructionData", "createReallocateInstruction", "createRevokeInstruction", "createSetAuthorityInstruction", "createSyncNativeInstruction", "createThawAccountInstruction", "createTransferCheckedInstruction", "createTransferCheckedWithFeeInstruction", "createTransferInstruction", "createUiAmountToAmountInstruction", "createUpdateDefaultAccountStateInstruction", "createUpdateRateInterestBearingMintInstruction", "createWithdrawWithheldTokensFromAccountsInstruction", "createWithdrawWithheldTokensFromMintInstruction", "createWrappedNativeAccount", "decodeAmountToUiAmountInstruction", "decodeAmountToUiAmountInstructionUnchecked", "decodeApproveCheckedInstruction", "decodeApproveCheckedInstructionUnchecked", "decodeApproveInstruction", "decodeApproveInstructionUnchecked", "decodeBurnCheckedInstruction", "decodeBurnCheckedInstructionUnchecked", "decodeBurnInstruction", "decodeBurnInstructionUnchecked", "decodeCloseAccountInstruction", "decodeCloseAccountInstructionUnchecked", "decodeFreezeAccountInstruction", "decodeFreezeAccountInstructionUnchecked", "decodeHarvestWithheldTokensToMintInstruction", "decodeHarvestWithheldTokensToMintInstructionUnchecked", "decodeInitializeAccount2Instruction", "decodeInitializeAccount2InstructionUnchecked", "decodeInitializeAccount3Instruction", "decodeInitializeAccount3InstructionUnchecked", "decodeInitializeAccountInstruction", "decodeInitializeAccountInstructionUnchecked", "decodeInitializeImmutableOwnerInstruction", "decodeInitializeImmutableOwnerInstructionUnchecked", "decodeInitializeMint2Instruction", "decodeInitializeMint2InstructionUnchecked", "decodeInitializeMintCloseAuthorityInstruction", "decodeInitializeMintCloseAuthorityInstructionUnchecked", "decodeInitializeMintInstruction", "decodeInitializeMintInstructionUnchecked", "decodeInitializeMultisigInstruction", "decodeInitializeMultisigInstructionUnchecked", "decodeInitializeTransferFeeConfigInstruction", "decodeInitializeTransferFeeConfigInstructionUnchecked", "decodeInstruction", "decodeMintToCheckedInstruction", "decodeMintToCheckedInstructionUnchecked", "decodeMintToInstruction", "decodeMintToInstructionUnchecked", "decodeRevokeInstruction", "decodeRevokeInstructionUnchecked", "decodeSetAuthorityInstruction", "decodeSetAuthorityInstructionUnchecked", "decodeSyncNativeInstruction", "decodeSyncNativeInstructionUnchecked", "decodeThawAccountInstruction", "decodeThawAccountInstructionUnchecked", "decodeTransferCheckedInstruction", "decodeTransferCheckedInstructionUnchecked", "decodeTransferCheckedWithFeeInstruction", "decodeTransferCheckedWithFeeInstructionUnchecked", "decodeTransferInstruction", "decodeTransferInstructionUnchecked", "decodeUiAmountToAmountInstruction", "decodeUiAmountToAmountInstructionUnchecked", "decodeWithdrawWithheldTokensFromAccountsInstruction", "decodeWithdrawWithheldTokensFromAccountsInstructionUnchecked", "decodeWithdrawWithheldTokensFromMintInstruction", "decodeWithdrawWithheldTokensFromMintInstructionUnchecked", "defaultAccountStateInstructionData", "disableRequiredMemoTransfers", "enableRequiredMemoTransfers", "freezeAccount", "freezeAccountInstructionData", "getAccount", "getAccountLen", "getAccountLenForMint", "getAccountTypeOfMintType", "getAssociatedTokenAddress", "getAssociatedTokenAddressSync", "getDefaultAccountState", "getExtensionData", "getExtensionTypes", "getImmutableOwner", "getInterestBearingMintConfigState", "getMemoTransfer", "getMinimumBalanceForRentExemptAccount", "getMinimumBalanceForRentExemptAccountWithExtensions", "getMinimumBalanceForRentExemptMint", "getMinimumBalanceForRentExemptMintWithExtensions", "getMinimumBalanceForRentExemptMultisig", "getMint", "getMintCloseAuthority", "getMintLen", "getMultipleAccounts", "getMultisig", "getNonTransferable", "getOrCreateAssociatedTokenAccount", "getTransferFeeAmount", "getTransferFeeConfig", "getTypeLen", "harvestWithheldTokensToMint", "harvestWithheldTokensToMintInstructionData", "initializeAccount2InstructionData", "initializeAccount3InstructionData", "initializeAccountInstructionData", "initializeDefaultAccountState", "initializeImmutableOwnerInstructionData", "initializeMint2InstructionData", "initializeMintCloseAuthorityInstructionData", "initializeMintInstructionData", "initializeMultisigInstructionData", "initializeNonTransferableMintInstructionData", "initializeTransferFeeConfigInstructionData", "interestBearingMintInitializeInstructionData", "interestBearingMintUpdateRateInstructionData", "isAmountToUiAmountInstruction", "isApproveCheckedInstruction", "isApproveInstruction", "isBurnCheckedInstruction", "isBurnInstruction", "isCloseAccountInstruction", "isFreezeAccountInstruction", "isInitializeAccount2Instruction", "isInitializeAccount3Instruction", "isInitializeAccountInstruction", "isInitializeMint2Instruction", "isInitializeMintInstruction", "isInitializeMultisigInstruction", "isMintToCheckedInstruction", "isMintToInstruction", "isRevokeInstruction", "isSetAuthorityInstruction", "isSyncNativeInstruction", "isThawAccountInstruction", "isTransferCheckedInstruction", "isTransferInstruction", "isUiamountToAmountInstruction", "memoTransferInstructionData", "mintTo", "mintToChecked", "mintToCheckedInstructionData", "mintToInstructionData", "programSupportsExtensions", "revoke", "revokeInstructionData", "setAuthority", "setAuthorityInstructionData", "syncNative", "syncNativeInstructionData", "thawAccount", "thawAccountInstructionData", "transfer", "transferChecked", "transferCheckedInstructionData", "transferCheckedWithFee", "transferCheckedWithFeeInstructionData", "transferFeeLayout", "transferInstructionData", "uiAmountToAmount", "unpackAccount", "unpackMint", "unpackMultisig", "updateDefaultAccountState", "updateRateInterestBearingMint", "withdrawWithheldTokensFromAccounts", "withdrawWithheldTokensFromAccountsInstructionData", "withdrawWithheldTokensFromMint", "withdrawWithheldTokensFromMintInstructionData", "StructError", "TypeError", "constructor", "failure", "failures", "cached", "message", "rest", "path", "msg", "length", "join", "Object", "assign", "name", "_cached", "isIterable", "x", "isObject", "Symbol", "iterator", "print", "value", "JSON", "stringify", "shiftIterator", "input", "done", "next", "undefined", "toFailure", "result", "context", "struct", "message", "path", "branch", "type", "refinement", "key", "length", "toFailures", "isIterable", "r", "failure", "run", "options", "coerce", "mask", "ctx", "coercer", "isObject", "schema", "Array", "isArray", "valid", "validator", "k", "v", "s", "entries", "ts", "t", "Map", "set", "Set", "add", "refiner", "Struct", "constructor", "props", "assert", "create", "is", "validate", "tuples", "tuple", "StructError", "define", "name", "validator", "Struct", "type", "schema", "any", "define", "array", "Element", "Struct", "type", "schema", "entries", "value", "Array", "isArray", "i", "v", "coercer", "slice", "validator", "print", "boolean", "instance", "Class", "define", "value", "name", "print", "literal", "constant", "description", "print", "t", "Struct", "type", "schema", "validator", "value", "never", "define", "nullable", "struct", "Struct", "validator", "value", "ctx", "refiner", "number", "isNaN", "print", "optional", "struct", "Struct", "validator", "value", "ctx", "undefined", "refiner", "record", "Key", "Value", "type", "schema", "entries", "isObject", "k", "v", "print", "string", "define", "value", "print", "tuple", "Elements", "Never", "never", "Struct", "type", "schema", "entries", "Array", "isArray", "length", "Math", "max", "i", "validator", "keys", "Object", "isObject", "k", "union", "Structs", "description", "map", "s", "join", "ctx", "failures", "S", "tuples", "run", "first", "failure", "push", "unknown", "coerce", "struct", "condition", "coercer", "is", "toBuffer", "arr", "Buffer", "isBuffer", "Uint8Array", "from", "buffer", "byteOffset", "byteLength", "minimalisticAssert", "assert", "val", "msg", "l", "r", "inherits_browserModule", "ctor", "superCtor", "TempCtor", "require$$0", "inherits", "require$$1", "utils", "isSurrogatePair", "i", "toArray", "enc", "res", "p", "c", "toHex", "zero2", "htonl", "w", "toHex32", "endian", "zero8", "word", "join32", "start", "end", "len", "k", "split32", "m", "rotr32", "b", "rotl32", "sum32", "a", "sum32_3", "sum32_4", "d", "sum32_5", "e", "sum64", "buf", "pos", "ah", "al", "bh", "bl", "lo", "hi", "sum64_hi", "sum64_lo", "sum64_4_hi", "ch", "cl", "dh", "dl", "carry", "sum64_4_lo", "sum64_5_hi", "eh", "el", "sum64_5_lo", "rotr64_hi", "num", "rotr64_lo", "shr64_hi", "shr64_lo", "BlockHash", "common", "bytes", "t", "ft_1", "s", "x", "y", "z", "ch32", "p32", "maj32", "s0_256", "s1_256", "g0_256", "g1_256", "shaCommon", "require$$2", "sha1_K", "SHA1", "_1", "W", "require$$3", "sha256_K", "SHA256", "_256", "f", "g", "h", "T1", "T2", "SHA224", "_224", "sha512_K", "SHA512", "_512", "c0_hi", "g1_512_hi", "c0_lo", "g1_512_lo", "c1_hi", "c1_lo", "c2_hi", "g0_512_hi", "c2_lo", "g0_512_lo", "c3_hi", "c3_lo", "fh", "fl", "gh", "gl", "hh", "hl", "s1_512_hi", "s1_512_lo", "ch64_hi", "ch64_lo", "c4_hi", "c4_lo", "T1_hi", "T1_lo", "s0_512_hi", "s0_512_lo", "maj64_hi", "maj64_lo", "T2_hi", "T2_lo", "xh", "xl", "yh", "yl", "zh", "zl", "SHA384", "_384", "sha", "require$$4", "RIPEMD160", "ripemd", "A", "B", "C", "D", "E", "Ah", "Bh", "Ch", "Dh", "Eh", "j", "T", "K", "rh", "Kh", "sh", "Hmac", "hash", "key", "hmac", "exports", "version", "_permanentCensorErrors", "_censorErrors", "LogLevels", "_logLevel", "_globalLogger", "_checkNormalize", "missing", "form", "error", "_normalizeError", "LogLevel", "ErrorCode", "HEX", "Logger", "logLevel", "args", "level", "message", "code", "params", "messageDetails", "value", "hex", "reason", "url", "fault", "name", "condition", "count", "expectedCount", "target", "kind", "censorship", "permanent", "logger", "isHexable", "addSlice", "array", "isInteger", "isBytes", "v", "arrayify", "options", "result", "isHexString", "length", "sha256", "data", "Struct", "constructor", "properties", "Object", "assign", "encode", "serialize", "SOLANA_SCHEMA", "decode", "deserialize", "decodeUnchecked", "deserializeUnchecked", "SOLANA_SCHEMA", "Map", "MAX_SEED_LENGTH", "isPublicKeyData", "value", "_bn", "undefined", "PublicKey", "Struct", "constructor", "decoded", "bs58", "decode", "length", "Error", "BN", "byteLength", "equals", "publicKey", "eq", "toBase58", "encode", "toBytes", "toJSON", "toBuffer", "b", "toArrayLike", "Buffer", "zeroPad", "alloc", "copy", "toString", "createWithSeed", "fromPublicKey", "seed", "programId", "buffer", "concat", "from", "hash", "sha256", "Uint8Array", "slice", "createProgramAddressSync", "seeds", "forEach", "TypeError", "publicKeyBytes", "toArray", "is_on_curve", "createProgramAddress", "findProgramAddressSync", "nonce", "address", "seedsWithNonce", "err", "findProgramAddress", "isOnCurve", "pubkeyData", "pubkey", "default", "set", "kind", "fields", "naclLowLevel", "nacl", "lowlevel", "p", "r", "gf", "t", "chk", "num", "den", "den2", "den4", "den6", "set25519", "gf1", "unpack25519", "S", "M", "D", "Z", "A", "pow2523", "neq25519", "I", "a", "c", "d", "pack25519", "crypto_verify_32", "BPF_LOADER_DEPRECATED_PROGRAM_ID", "PublicKey", "PACKET_DATA_SIZE", "SIGNATURE_LENGTH_IN_BYTES", "TransactionExpiredBlockheightExceededError", "Error", "constructor", "signature", "Object", "defineProperty", "prototype", "value", "TransactionExpiredTimeoutError", "timeoutSeconds", "toFixed", "publicKey", "property", "blob", "rustString", "rsl", "struct", "u32", "offset", "_decode", "decode", "bind", "_encode", "encode", "rslShim", "b", "toString", "str", "data", "chars", "Buffer", "from", "alloc", "span", "length", "authorized", "lockup", "ns64", "voteInit", "u8", "getAlloc", "type", "fields", "getItemAlloc", "item", "field", "Array", "isArray", "elementLayout", "layout", "forEach", "decodeLength", "bytes", "len", "size", "elem", "shift", "encodeLength", "rem_len", "push", "PUBKEY_LENGTH", "Message", "args", "header", "accountKeys", "recentBlockhash", "instructions", "indexToProgramIds", "Map", "map", "account", "ix", "set", "programIdIndex", "isAccountSigner", "index", "numRequiredSignatures", "isAccountWritable", "numReadonlySignedAccounts", "numReadonlyUnsignedAccounts", "isProgramId", "has", "programIds", "values", "nonProgramIds", "filter", "_", "serialize", "numKeys", "keyCount", "shortvec", "instruction", "accounts", "bs58", "keyIndicesCount", "dataCount", "keyIndices", "dataLength", "instructionCount", "instructionBuffer", "copy", "instructionBufferLength", "seq", "slice", "signDataLayout", "Layout", "transaction", "keys", "key", "toBuffer", "toBytes", "signData", "buffer", "byteArray", "accountCount", "i", "dataSlice", "messageArgs", "assert", "condition", "message", "TransactionStatus", "DEFAULT_SIGNATURE", "fill", "TransactionInstruction", "opts", "programId", "toJSON", "pubkey", "isSigner", "isWritable", "Transaction", "signatures", "feePayer", "lastValidBlockHeight", "nonceInfo", "_message", "_json", "hasOwnProperty", "call", "blockhash", "nonce", "nonceInstruction", "signers", "add", "items", "concat", "compileMessage", "JSON", "stringify", "console", "warn", "undefined", "accountMetas", "accountMeta", "includes", "uniqueMetas", "pubkeyString", "uniqueIndex", "findIndex", "x", "sort", "y", "toBase58", "localeCompare", "feePayerIndex", "equals", "payerMeta", "splice", "unshift", "signedKeys", "unsignedKeys", "compiledInstructions", "indexOf", "meta", "invariant", "keyIndex", "_compile", "every", "pair", "serializeMessage", "getEstimatedFee", "connection", "getFeeForMessage", "setSigners", "seen", "Set", "sign", "uniqueSigners", "signer", "_partialSign", "partialSign", "nacl", "detached", "secretKey", "_addSignature", "addSignature", "sigpair", "verifySignatures", "_verifySignatures", "requireAllSignatures", "verify", "config", "assign", "_serialize", "signatureCount", "transactionLength", "wireTransaction", "keyObj", "populate", "sigPubkeyPair", "some", "SYSVAR_CLOCK_PUBKEY", "SYSVAR_EPOCH_SCHEDULE_PUBKEY", "SYSVAR_INSTRUCTIONS_PUBKEY", "SYSVAR_RECENT_BLOCKHASHES_PUBKEY", "SYSVAR_RENT_PUBKEY", "SYSVAR_REWARDS_PUBKEY", "SYSVAR_SLOT_HASHES_PUBKEY", "SYSVAR_SLOT_HISTORY_PUBKEY", "SYSVAR_STAKE_HISTORY_PUBKEY", "sendAndConfirmTransaction", "options", "sendOptions", "skipPreflight", "preflightCommitment", "commitment", "maxRetries", "minContextSlot", "sendTransaction", "status", "confirmTransaction", "err", "sleep", "ms", "Promise", "resolve", "setTimeout", "encodeData", "allocLength", "layoutFields", "FeeCalculatorLayout", "nu64", "NonceAccountLayout", "struct", "u32", "Layout", "NONCE_ACCOUNT_LENGTH", "span", "encodeDecode", "layout", "decode", "bind", "encode", "bigInt", "length", "property", "blob", "bigIntLayout", "buffer", "offset", "src", "toBigIntLE", "Buffer", "from", "toBufferLE", "u64", "SYSTEM_INSTRUCTION_LAYOUTS", "Object", "freeze", "Create", "index", "layout", "struct", "u32", "ns64", "Layout", "Assign", "Transfer", "u64", "CreateWithSeed", "AdvanceNonceAccount", "WithdrawNonceAccount", "InitializeNonceAccount", "AuthorizeNonceAccount", "Allocate", "AllocateWithSeed", "AssignWithSeed", "TransferWithSeed", "UpgradeNonceAccount", "SystemProgram", "constructor", "createAccount", "params", "type", "data", "encodeData", "lamports", "space", "programId", "toBuffer", "TransactionInstruction", "keys", "pubkey", "fromPubkey", "isSigner", "isWritable", "newAccountPubkey", "transfer", "BigInt", "seed", "basePubkey", "toPubkey", "assign", "base", "accountPubkey", "createAccountWithSeed", "push", "createNonceAccount", "transaction", "Transaction", "add", "noncePubkey", "NONCE_ACCOUNT_LENGTH", "initParams", "authorizedPubkey", "nonceInitialize", "authorized", "instructionData", "SYSVAR_RECENT_BLOCKHASHES_PUBKEY", "SYSVAR_RENT_PUBKEY", "nonceAdvance", "nonceWithdraw", "nonceAuthorize", "newAuthorizedPubkey", "allocate", "PublicKey", "CHUNK_SIZE", "PACKET_DATA_SIZE", "Loader", "getMinNumSignatures", "dataLength", "Math", "ceil", "chunkSize", "load", "connection", "payer", "program", "balanceNeeded", "getMinimumBalanceForRentExemption", "length", "programInfo", "getAccountInfo", "publicKey", "executable", "console", "error", "owner", "equals", "sendAndConfirmTransaction", "commitment", "dataLayout", "seq", "u8", "offset", "array", "transactions", "bytes", "slice", "Buffer", "alloc", "encode", "instruction", "bytesLength", "bytesLengthPadding", "_rpcEndpoint", "includes", "sleep", "REQUESTS_PER_SECOND", "Promise", "all", "span", "BPF_LOADER_PROGRAM_ID", "fetchImpl", "globalThis", "fetch", "NUM_TICKS_PER_SECOND", "DEFAULT_TICKS_PER_SLOT", "NUM_SLOTS_PER_SECOND", "MS_PER_SLOT", "LookupTableMetaLayout", "index", "layout", "struct", "u32", "u64", "nu64", "u8", "seq", "Layout", "offset", "URL", "globalThis", "PublicKeyFromString", "coerce", "instance", "PublicKey", "string", "value", "RawAccountDataResult", "tuple", "literal", "BufferFromRawAccountData", "Buffer", "from", "BLOCKHASH_CACHE_TIMEOUT_MS", "createRpcResult", "result", "union", "pick", "jsonrpc", "literal", "id", "string", "error", "code", "unknown", "message", "data", "optional", "any", "UnknownRpcResult", "jsonRpcResult", "schema", "coerce", "value", "create", "jsonRpcResultAndContext", "context", "slot", "number", "notificationResultAndContext", "GetInflationGovernorResult", "foundation", "foundationTerm", "initial", "taper", "terminal", "GetInflationRewardResult", "array", "nullable", "epoch", "effectiveSlot", "amount", "postBalance", "GetEpochInfoResult", "slotIndex", "slotsInEpoch", "absoluteSlot", "blockHeight", "transactionCount", "GetEpochScheduleResult", "slotsPerEpoch", "leaderScheduleSlotOffset", "warmup", "boolean", "firstNormalEpoch", "firstNormalSlot", "GetLeaderScheduleResult", "record", "TransactionErrorResult", "SignatureStatusResult", "err", "SignatureReceivedResult", "VersionResult", "SimulatedTransactionResponseStruct", "logs", "accounts", "executable", "owner", "lamports", "rentEpoch", "unitsConsumed", "returnData", "programId", "tuple", "BlockProductionResponseStruct", "byIdentity", "range", "firstSlot", "lastSlot", "GetInflationGovernorRpcResult", "jsonRpcResult", "GetInflationGovernorResult", "GetEpochInfoRpcResult", "GetEpochInfoResult", "GetEpochScheduleRpcResult", "GetEpochScheduleResult", "GetLeaderScheduleRpcResult", "GetLeaderScheduleResult", "SlotRpcResult", "number", "GetSupplyRpcResult", "jsonRpcResultAndContext", "pick", "total", "circulating", "nonCirculating", "nonCirculatingAccounts", "array", "PublicKeyFromString", "TokenAmountResult", "amount", "string", "uiAmount", "nullable", "decimals", "uiAmountString", "optional", "GetTokenLargestAccountsResult", "address", "GetTokenAccountsByOwner", "pubkey", "account", "executable", "boolean", "owner", "lamports", "data", "BufferFromRawAccountData", "rentEpoch", "ParsedAccountDataResult", "program", "parsed", "unknown", "space", "GetParsedTokenAccountsByOwner", "GetLargestAccountsRpcResult", "AccountInfoResult", "KeyedAccountInfoResult", "ParsedOrRawAccountData", "coerce", "union", "instance", "Buffer", "RawAccountDataResult", "value", "Array", "isArray", "create", "ParsedAccountInfoResult", "KeyedParsedAccountInfoResult", "StakeActivationResult", "state", "literal", "active", "inactive", "GetConfirmedSignaturesForAddress2RpcResult", "signature", "slot", "err", "TransactionErrorResult", "memo", "blockTime", "GetSignaturesForAddressRpcResult", "AccountNotificationResult", "subscription", "result", "notificationResultAndContext", "ProgramAccountInfoResult", "ProgramAccountNotificationResult", "SlotInfoResult", "parent", "root", "SlotNotificationResult", "SlotUpdateResult", "type", "timestamp", "stats", "numTransactionEntries", "numSuccessfulTransactions", "numFailedTransactions", "maxTransactionsPerEntry", "SlotUpdateNotificationResult", "SignatureNotificationResult", "SignatureStatusResult", "SignatureReceivedResult", "RootNotificationResult", "ContactInfoResult", "gossip", "tpu", "rpc", "version", "VoteAccountInfoResult", "votePubkey", "nodePubkey", "activatedStake", "epochVoteAccount", "epochCredits", "tuple", "commission", "lastVote", "rootSlot", "GetVoteAccounts", "current", "delinquent", "ConfirmationStatus", "SignatureStatusResponse", "confirmations", "confirmationStatus", "GetSignatureStatusesRpcResult", "GetMinimumBalanceForRentExemptionRpcResult", "ConfirmedTransactionResult", "signatures", "message", "accountKeys", "header", "numRequiredSignatures", "numReadonlySignedAccounts", "numReadonlyUnsignedAccounts", "instructions", "accounts", "programIdIndex", "recentBlockhash", "ParsedInstructionResult", "programId", "RawInstructionResult", "InstructionResult", "UnknownInstructionResult", "ParsedOrRawInstruction", "ParsedConfirmedTransactionResult", "signer", "writable", "TokenBalanceResult", "accountIndex", "mint", "uiTokenAmount", "LoadedAddressesResult", "readonly", "ConfirmedTransactionMetaResult", "fee", "innerInstructions", "index", "preBalances", "postBalances", "logMessages", "preTokenBalances", "postTokenBalances", "loadedAddresses", "ParsedConfirmedTransactionMetaResult", "GetBlockRpcResult", "blockhash", "previousBlockhash", "parentSlot", "transactions", "transaction", "meta", "rewards", "postBalance", "rewardType", "blockHeight", "GetConfirmedBlockRpcResult", "GetBlockSignaturesRpcResult", "GetTransactionRpcResult", "GetParsedTransactionRpcResult", "GetRecentBlockhashAndContextRpcResult", "feeCalculator", "lamportsPerSignature", "GetLatestBlockhashRpcResult", "lastValidBlockHeight", "PerfSampleResult", "numTransactions", "numSlots", "samplePeriodSecs", "GetRecentPerformanceSamplesRpcResult", "GetFeeCalculatorRpcResult", "RequestAirdropRpcResult", "SendTransactionRpcResult", "LogsResult", "logs", "LogsNotificationResult", "COMMON_HTTP_HEADERS", "_process$env$npm_pack", "process", "Keypair", "constructor", "keypair", "_keypair", "nacl", "sign", "keyPair", "generate", "fromSecretKey", "secretKey", "options", "skipValidation", "signData", "TextEncoder", "encode", "signature", "detached", "verify", "publicKey", "Error", "fromSeed", "seed", "PublicKey", "LOOKUP_TABLE_INSTRUCTION_LAYOUTS", "Object", "freeze", "CreateLookupTable", "index", "layout", "struct", "u32", "bigintLayout", "u8", "FreezeLookupTable", "ExtendLookupTable", "seq", "Layout", "offset", "DeactivateLookupTable", "CloseLookupTable", "AddressLookupTableProgram", "constructor", "createLookupTable", "params", "lookupTableAddress", "bumpSeed", "PublicKey", "findProgramAddressSync", "authority", "toBuffer", "toBufferLE", "BigInt", "recentSlot", "programId", "type", "LOOKUP_TABLE_INSTRUCTION_LAYOUTS", "CreateLookupTable", "data", "encodeData", "keys", "pubkey", "isSigner", "isWritable", "payer", "SystemProgram", "TransactionInstruction", "freezeLookupTable", "FreezeLookupTable", "lookupTable", "extendLookupTable", "ExtendLookupTable", "addresses", "map", "addr", "toBytes", "push", "deactivateLookupTable", "DeactivateLookupTable", "closeLookupTable", "CloseLookupTable", "recipient", "COMPUTE_BUDGET_INSTRUCTION_LAYOUTS", "Object", "freeze", "RequestUnits", "index", "layout", "struct", "u8", "u32", "RequestHeapFrame", "SetComputeUnitLimit", "SetComputeUnitPrice", "u64", "ComputeBudgetProgram", "constructor", "requestUnits", "params", "type", "data", "encodeData", "TransactionInstruction", "keys", "programId", "requestHeapFrame", "setComputeUnitLimit", "setComputeUnitPrice", "microLamports", "BigInt", "PublicKey", "PRIVATE_KEY_BYTES", "PUBLIC_KEY_BYTES", "SIGNATURE_BYTES", "ED25519_INSTRUCTION_LAYOUT", "u16", "Ed25519Program", "createInstructionWithPublicKey", "publicKey", "message", "signature", "instructionIndex", "assert", "length", "publicKeyOffset", "span", "signatureOffset", "messageDataOffset", "numSignatures", "instructionData", "Buffer", "alloc", "encode", "padding", "signatureInstructionIndex", "publicKeyInstructionIndex", "messageDataSize", "messageInstructionIndex", "fill", "createInstructionWithPrivateKey", "privateKey", "keypair", "Keypair", "fromSecretKey", "toBytes", "nacl", "sign", "detached", "secretKey", "error", "Error", "publicKeyCreate", "ecdsaSign", "secp256k1", "ETHEREUM_ADDRESS_BYTES", "SIGNATURE_OFFSETS_SERIALIZED_SIZE", "SECP256K1_INSTRUCTION_LAYOUT", "blob", "Secp256k1Program", "publicKeyToEthAddress", "from", "sha3", "keccak_256", "update", "toBuffer", "digest", "slice", "recoveryId", "createInstructionWithEthAddress", "ethAddress", "rawAddress", "startsWith", "substr", "dataStart", "ethAddressOffset", "ethAddressInstructionIndex", "pkey", "messageHash", "recid", "STAKE_CONFIG_ID", "Lockup", "constructor", "unixTimestamp", "epoch", "custodian", "default", "PublicKey", "STAKE_INSTRUCTION_LAYOUTS", "Object", "freeze", "Initialize", "index", "layout", "struct", "u32", "Layout", "Authorize", "Delegate", "Split", "ns64", "Withdraw", "Deactivate", "Merge", "AuthorizeWithSeed", "StakeAuthorizationLayout", "Staker", "Withdrawer", "StakeProgram", "constructor", "initialize", "params", "stakePubkey", "authorized", "lockup", "maybeLockup", "Lockup", "default", "type", "data", "encodeData", "staker", "toBuffer", "withdrawer", "unixTimestamp", "epoch", "custodian", "instructionData", "keys", "pubkey", "isSigner", "isWritable", "SYSVAR_RENT_PUBKEY", "programId", "TransactionInstruction", "createAccountWithSeed", "transaction", "Transaction", "add", "SystemProgram", "fromPubkey", "newAccountPubkey", "basePubkey", "seed", "lamports", "space", "createAccount", "delegate", "authorizedPubkey", "votePubkey", "SYSVAR_CLOCK_PUBKEY", "SYSVAR_STAKE_HISTORY_PUBKEY", "STAKE_CONFIG_ID", "authorize", "newAuthorizedPubkey", "stakeAuthorizationType", "custodianPubkey", "newAuthorized", "push", "authorizeWithSeed", "authorityBase", "authoritySeed", "authorityOwner", "splitInstruction", "splitStakePubkey", "split", "splitWithSeed", "allocate", "accountPubkey", "merge", "sourceStakePubKey", "withdraw", "toPubkey", "deactivate", "PublicKey", "VOTE_INSTRUCTION_LAYOUTS", "Object", "freeze", "InitializeAccount", "index", "layout", "struct", "u32", "Layout", "Authorize", "Withdraw", "ns64", "VoteAuthorizationLayout", "Voter", "Withdrawer", "VoteProgram", "constructor", "initializeAccount", "params", "votePubkey", "nodePubkey", "voteInit", "type", "data", "encodeData", "toBuffer", "authorizedVoter", "authorizedWithdrawer", "commission", "instructionData", "keys", "pubkey", "isSigner", "isWritable", "SYSVAR_RENT_PUBKEY", "SYSVAR_CLOCK_PUBKEY", "programId", "TransactionInstruction", "createAccount", "transaction", "Transaction", "add", "SystemProgram", "fromPubkey", "newAccountPubkey", "lamports", "space", "authorize", "authorizedPubkey", "newAuthorizedPubkey", "voteAuthorizationType", "newAuthorized", "withdraw", "authorizedWithdrawerPubkey", "toPubkey", "PublicKey", "VALIDATOR_INFO_KEY", "InfoString", "pick", "name", "string", "website", "optional", "details", "keybaseUsername", "VOTE_PROGRAM_ID", "PublicKey", "VoteAccountLayout", "struct", "Layout", "u8", "nu64", "seq", "u32", "offset", "TOKEN_PROGRAM_ID", "PublicKey", "TOKEN_2022_PROGRAM_ID", "ASSOCIATED_TOKEN_PROGRAM_ID", "NATIVE_MINT", "NATIVE_MINT_2022", "programSupportsExtensions", "programId", "import_buffer_layout", "encodeDecode", "layout", "decode", "encode", "import_buffer_layout", "import_bigint_buffer", "bigInt", "length", "property", "layout", "encode", "decode", "encodeDecode", "bigIntLayout", "buffer", "offset", "src", "bigIntBE", "u64", "u64be", "u128", "u128be", "u192", "u192be", "u256", "u256be", "isNumeric", "mathceil", "mathfloor", "bignumberError", "tooManyDigits", "BASE", "LOG_BASE", "MAX_SAFE_INTEGER", "POWS_TEN", "SQRT_BASE", "MAX", "clone", "configObject", "div", "convertBase", "parseNumeric", "P", "BigNumber", "ONE", "DECIMAL_PLACES", "ROUNDING_MODE", "TO_EXP_NEG", "TO_EXP_POS", "MIN_EXP", "MAX_EXP", "CRYPTO", "MODULO_MODE", "POW_PRECISION", "FORMAT", "ALPHABET", "alphabetHasNormalDecimalDigits", "v", "b", "alphabet", "c", "caseChanged", "e", "i", "isNum", "len", "str", "x", "intCheck", "round", "obj", "p", "n", "s", "out", "maxOrMin", "pow2_53", "random53bitInt", "dp", "a", "k", "rand", "args", "sum", "decimal", "toBaseOut", "baseIn", "baseOut", "j", "arr", "arrL", "sign", "callerIsToString", "d", "r", "xc", "y", "rm", "toFixedPoint", "coeffToString", "multiply", "base", "m", "temp", "xlo", "xhi", "carry", "klo", "khi", "compare", "aL", "bL", "cmp", "subtract", "more", "prod", "prodL", "q", "qc", "rem", "remL", "rem0", "xi", "xL", "yc0", "yL", "yz", "yc", "bitFloor", "format", "id", "c0", "ne", "toExponential", "method", "normalise", "basePrefix", "dotAfter", "dotBefore", "isInfinityOrNaN", "whitespaceOrPlus", "p1", "p2", "sd", "ni", "rd", "pows10", "valueOf", "half", "isModExp", "nIsBig", "nIsNeg", "nIsOdd", "isOdd", "t", "xLTy", "xe", "ye", "xcL", "ycL", "ylo", "yhi", "zc", "sqrtBase", "rep", "g1", "g2", "groupSeparator", "intPart", "fractionPart", "isNeg", "intDigits", "md", "d0", "d1", "d2", "exp", "n0", "n1", "z", "l", "min", "max", "name", "zs", "bignumber_default", "WAD", "bignumber_default", "import_buffer_layout", "bool", "property", "layout", "encode", "decode", "encodeDecode", "boolLayout", "buffer", "offset", "src", "import_buffer_layout", "publicKey", "property", "layout", "encode", "decode", "encodeDecode", "publicKeyLayout", "buffer", "offset", "src", "PublicKey", "TokenError", "message", "TokenAccountNotFoundError", "TokenInvalidAccountError", "TokenInvalidAccountOwnerError", "TokenInvalidAccountSizeError", "TokenInvalidMintError", "TokenInvalidOwnerError", "TokenOwnerOffCurveError", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionKeysError", "TokenInvalidInstructionDataError", "TokenInvalidInstructionTypeError", "TokenUnsupportedInstructionError", "TokenInstruction", "amountToUiAmountInstructionData", "u64", "createAmountToUiAmountInstruction", "mint", "amount", "programId", "TOKEN_PROGRAM_ID", "keys", "data", "TransactionInstruction", "decodeAmountToUiAmountInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeAmountToUiAmountInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "amountToUiAmount", "connection", "payer", "mint", "amount", "programId", "TOKEN_PROGRAM_ID", "transaction", "Transaction", "createAmountToUiAmountInstruction", "returnData", "err", "import_buffer_layout", "addSigners", "keys", "ownerOrAuthority", "multiSigners", "signer", "approveInstructionData", "u64", "createApproveInstruction", "account", "delegate", "owner", "amount", "multiSigners", "programId", "TOKEN_PROGRAM_ID", "keys", "addSigners", "data", "TransactionInstruction", "decodeApproveInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeApproveInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "getSigners", "signerOrMultisig", "multiSigners", "PublicKey", "approve", "connection", "payer", "account", "delegate", "owner", "amount", "multiSigners", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "ownerPublicKey", "signers", "getSigners", "transaction", "Transaction", "createApproveInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "approveCheckedInstructionData", "u64", "createApproveCheckedInstruction", "account", "mint", "delegate", "owner", "amount", "decimals", "multiSigners", "programId", "TOKEN_PROGRAM_ID", "keys", "addSigners", "data", "TransactionInstruction", "decodeApproveCheckedInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeApproveCheckedInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "approveChecked", "connection", "payer", "mint", "account", "delegate", "owner", "amount", "decimals", "multiSigners", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "ownerPublicKey", "signers", "getSigners", "transaction", "Transaction", "createApproveCheckedInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "burnInstructionData", "u64", "createBurnInstruction", "account", "mint", "owner", "amount", "multiSigners", "programId", "TOKEN_PROGRAM_ID", "keys", "addSigners", "data", "TransactionInstruction", "decodeBurnInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeBurnInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "burn", "connection", "payer", "account", "mint", "owner", "amount", "multiSigners", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "ownerPublicKey", "signers", "getSigners", "transaction", "Transaction", "createBurnInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "burnCheckedInstructionData", "u64", "createBurnCheckedInstruction", "account", "mint", "owner", "amount", "decimals", "multiSigners", "programId", "TOKEN_PROGRAM_ID", "keys", "addSigners", "data", "TransactionInstruction", "decodeBurnCheckedInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeBurnCheckedInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "burnChecked", "connection", "payer", "account", "mint", "owner", "amount", "decimals", "multiSigners", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "ownerPublicKey", "signers", "getSigners", "transaction", "Transaction", "createBurnCheckedInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "closeAccountInstructionData", "createCloseAccountInstruction", "account", "destination", "authority", "multiSigners", "programId", "TOKEN_PROGRAM_ID", "keys", "addSigners", "data", "TransactionInstruction", "decodeCloseAccountInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeCloseAccountInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "closeAccount", "connection", "payer", "account", "destination", "authority", "multiSigners", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "authorityPublicKey", "signers", "getSigners", "transaction", "Transaction", "createCloseAccountInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "AccountType", "ACCOUNT_TYPE_SIZE", "import_buffer_layout", "MultisigLayout", "bool", "publicKey", "MULTISIG_SIZE", "getMultisig", "connection", "address", "commitment", "programId", "TOKEN_PROGRAM_ID", "info", "unpackMultisig", "TokenAccountNotFoundError", "TokenInvalidAccountOwnerError", "TokenInvalidAccountSizeError", "multisig", "getMinimumBalanceForRentExemptMultisig", "AccountState", "AccountLayout", "publicKey", "u64", "ACCOUNT_SIZE", "getAccount", "connection", "address", "commitment", "programId", "TOKEN_PROGRAM_ID", "info", "unpackAccount", "getMultipleAccounts", "addresses", "infos", "i", "getMinimumBalanceForRentExemptAccount", "getMinimumBalanceForRentExemptAccountWithExtensions", "extensions", "accountLen", "getAccountLen", "TokenAccountNotFoundError", "TokenInvalidAccountOwnerError", "TokenInvalidAccountSizeError", "rawAccount", "tlvData", "MULTISIG_SIZE", "TokenInvalidAccountError", "ACCOUNT_TYPE_SIZE", "import_buffer_layout", "MintLayout", "publicKey", "u64", "bool", "MINT_SIZE", "getMint", "connection", "address", "commitment", "programId", "TOKEN_PROGRAM_ID", "info", "unpackMint", "TokenAccountNotFoundError", "TokenInvalidAccountOwnerError", "TokenInvalidAccountSizeError", "rawMint", "tlvData", "ACCOUNT_SIZE", "MULTISIG_SIZE", "TokenInvalidMintError", "ACCOUNT_TYPE_SIZE", "getMinimumBalanceForRentExemptMint", "getMinimumBalanceForRentExemptMintWithExtensions", "extensions", "mintLen", "getMintLen", "getAssociatedTokenAddress", "mint", "owner", "allowOwnerOffCurve", "associatedTokenProgramId", "ASSOCIATED_TOKEN_PROGRAM_ID", "PublicKey", "TokenOwnerOffCurveError", "getAssociatedTokenAddressSync", "import_buffer_layout", "DefaultAccountStateInstruction", "defaultAccountStateInstructionData", "createInitializeDefaultAccountStateInstruction", "mint", "accountState", "programId", "TOKEN_2022_PROGRAM_ID", "programSupportsExtensions", "TokenUnsupportedInstructionError", "keys", "data", "TransactionInstruction", "createUpdateDefaultAccountStateInstruction", "freezeAuthority", "multiSigners", "signer", "initializeDefaultAccountState", "connection", "payer", "mint", "state", "confirmOptions", "programId", "TOKEN_2022_PROGRAM_ID", "transaction", "Transaction", "createInitializeDefaultAccountStateInstruction", "sendAndConfirmTransaction", "updateDefaultAccountState", "freezeAuthority", "multiSigners", "freezeAuthorityPublicKey", "signers", "getSigners", "createUpdateDefaultAccountStateInstruction", "import_buffer_layout", "DefaultAccountStateLayout", "DEFAULT_ACCOUNT_STATE_SIZE", "getDefaultAccountState", "mint", "extensionData", "getExtensionData", "import_buffer_layout", "ImmutableOwnerLayout", "IMMUTABLE_OWNER_SIZE", "getImmutableOwner", "account", "extensionData", "getExtensionData", "import_buffer_layout", "InterestBearingMintConfigStateLayout", "publicKey", "INTEREST_BEARING_MINT_CONFIG_STATE_SIZE", "getInterestBearingMintConfigState", "mint", "extensionData", "getExtensionData", "import_buffer_layout", "MemoTransferInstruction", "memoTransferInstructionData", "createEnableRequiredMemoTransfersInstruction", "account", "authority", "multiSigners", "programId", "TOKEN_2022_PROGRAM_ID", "createMemoTransferInstruction", "createDisableRequiredMemoTransfersInstruction", "enable", "programSupportsExtensions", "TokenUnsupportedInstructionError", "keys", "signer", "data", "TransactionInstruction", "enableRequiredMemoTransfers", "connection", "payer", "account", "owner", "multiSigners", "confirmOptions", "programId", "TOKEN_2022_PROGRAM_ID", "ownerPublicKey", "signers", "getSigners", "transaction", "Transaction", "createEnableRequiredMemoTransfersInstruction", "sendAndConfirmTransaction", "disableRequiredMemoTransfers", "createDisableRequiredMemoTransfersInstruction", "import_buffer_layout", "MemoTransferLayout", "bool", "MEMO_TRANSFER_SIZE", "getMemoTransfer", "account", "extensionData", "getExtensionData", "import_buffer_layout", "MintCloseAuthorityLayout", "publicKey", "MINT_CLOSE_AUTHORITY_SIZE", "getMintCloseAuthority", "mint", "extensionData", "getExtensionData", "import_buffer_layout", "NonTransferableLayout", "NON_TRANSFERABLE_SIZE", "getNonTransferable", "mint", "extensionData", "getExtensionData", "import_buffer_layout", "TransferFeeInstruction", "initializeTransferFeeConfigInstructionData", "publicKey", "u64", "createInitializeTransferFeeConfigInstruction", "mint", "transferFeeConfigAuthority", "withdrawWithheldAuthority", "transferFeeBasisPoints", "maximumFee", "programId", "TOKEN_2022_PROGRAM_ID", "programSupportsExtensions", "TokenUnsupportedInstructionError", "keys", "data", "PublicKey", "TransactionInstruction", "decodeInitializeTransferFeeConfigInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeInitializeTransferFeeConfigInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "transferFeeInstruction", "transferFeeConfigAuthorityOption", "withdrawWithheldAuthorityOption", "transferCheckedWithFeeInstructionData", "createTransferCheckedWithFeeInstruction", "source", "destination", "authority", "amount", "decimals", "fee", "multiSigners", "signer", "decodeTransferCheckedWithFeeInstruction", "signers", "decodeTransferCheckedWithFeeInstructionUnchecked", "withdrawWithheldTokensFromMintInstructionData", "createWithdrawWithheldTokensFromMintInstruction", "decodeWithdrawWithheldTokensFromMintInstruction", "decodeWithdrawWithheldTokensFromMintInstructionUnchecked", "withdrawWithheldTokensFromAccountsInstructionData", "createWithdrawWithheldTokensFromAccountsInstruction", "sources", "decodeWithdrawWithheldTokensFromAccountsInstruction", "decodeWithdrawWithheldTokensFromAccountsInstructionUnchecked", "numTokenAccounts", "harvestWithheldTokensToMintInstructionData", "createHarvestWithheldTokensToMintInstruction", "decodeHarvestWithheldTokensToMintInstruction", "decodeHarvestWithheldTokensToMintInstructionUnchecked", "transferCheckedWithFee", "connection", "payer", "source", "mint", "destination", "owner", "amount", "decimals", "fee", "multiSigners", "confirmOptions", "programId", "TOKEN_2022_PROGRAM_ID", "ownerPublicKey", "signers", "getSigners", "transaction", "Transaction", "createTransferCheckedWithFeeInstruction", "sendAndConfirmTransaction", "withdrawWithheldTokensFromMint", "authority", "authorityPublicKey", "createWithdrawWithheldTokensFromMintInstruction", "withdrawWithheldTokensFromAccounts", "sources", "createWithdrawWithheldTokensFromAccountsInstruction", "harvestWithheldTokensToMint", "createHarvestWithheldTokensToMintInstruction", "import_buffer_layout", "MAX_FEE_BASIS_POINTS", "ONE_IN_BASIS_POINTS", "transferFeeLayout", "property", "u64", "TransferFeeConfigLayout", "publicKey", "TRANSFER_FEE_CONFIG_SIZE", "TransferFeeAmountLayout", "TRANSFER_FEE_AMOUNT_SIZE", "getTransferFeeConfig", "mint", "extensionData", "getExtensionData", "getTransferFeeAmount", "account", "ExtensionType", "TYPE_SIZE", "LENGTH_SIZE", "getTypeLen", "e", "TRANSFER_FEE_CONFIG_SIZE", "TRANSFER_FEE_AMOUNT_SIZE", "MINT_CLOSE_AUTHORITY_SIZE", "DEFAULT_ACCOUNT_STATE_SIZE", "IMMUTABLE_OWNER_SIZE", "MEMO_TRANSFER_SIZE", "NON_TRANSFERABLE_SIZE", "INTEREST_BEARING_MINT_CONFIG_STATE_SIZE", "getAccountTypeOfMintType", "getLen", "extensionTypes", "baseSize", "accountLength", "ACCOUNT_SIZE", "ACCOUNT_TYPE_SIZE", "element", "a", "b", "MULTISIG_SIZE", "getMintLen", "MINT_SIZE", "getAccountLen", "getExtensionData", "extension", "tlvData", "extensionTypeIndex", "entryType", "entryLength", "typeIndex", "getExtensionTypes", "getAccountLenForMint", "mint", "accountExtensions", "import_buffer_layout", "initializeAccountInstructionData", "createInitializeAccountInstruction", "account", "mint", "owner", "programId", "TOKEN_PROGRAM_ID", "keys", "SYSVAR_RENT_PUBKEY", "data", "TransactionInstruction", "decodeInitializeAccountInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "rent", "decodeInitializeAccountInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "createAssociatedTokenAccountInstruction", "payer", "associatedToken", "owner", "mint", "programId", "TOKEN_PROGRAM_ID", "associatedTokenProgramId", "ASSOCIATED_TOKEN_PROGRAM_ID", "buildAssociatedTokenAccountInstruction", "createAssociatedTokenAccountIdempotentInstruction", "instructionData", "keys", "SystemProgram", "TransactionInstruction", "createAssociatedTokenAccount", "connection", "payer", "mint", "owner", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "associatedTokenProgramId", "ASSOCIATED_TOKEN_PROGRAM_ID", "associatedToken", "getAssociatedTokenAddress", "transaction", "Transaction", "createAssociatedTokenAccountInstruction", "sendAndConfirmTransaction", "createAccount", "connection", "payer", "mint", "owner", "keypair", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "createAssociatedTokenAccount", "mintState", "getMint", "space", "getAccountLenForMint", "lamports", "transaction", "Transaction", "SystemProgram", "createInitializeAccountInstruction", "sendAndConfirmTransaction", "createAssociatedTokenAccountIdempotent", "connection", "payer", "mint", "owner", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "associatedTokenProgramId", "ASSOCIATED_TOKEN_PROGRAM_ID", "associatedToken", "getAssociatedTokenAddress", "transaction", "Transaction", "createAssociatedTokenAccountIdempotentInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "initializeMint2InstructionData", "publicKey", "createInitializeMint2Instruction", "mint", "decimals", "mintAuthority", "freezeAuthority", "programId", "TOKEN_PROGRAM_ID", "keys", "data", "PublicKey", "TransactionInstruction", "decodeInitializeMint2Instruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeInitializeMint2InstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "freezeAuthorityOption", "createMint", "connection", "payer", "mintAuthority", "freezeAuthority", "decimals", "keypair", "Keypair", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "lamports", "getMinimumBalanceForRentExemptMint", "transaction", "Transaction", "SystemProgram", "MINT_SIZE", "createInitializeMint2Instruction", "sendAndConfirmTransaction", "import_buffer_layout", "initializeMultisigInstructionData", "createInitializeMultisigInstruction", "account", "signers", "m", "programId", "TOKEN_PROGRAM_ID", "keys", "SYSVAR_RENT_PUBKEY", "signer", "data", "TransactionInstruction", "decodeInitializeMultisigInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "rent", "decodeInitializeMultisigInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "createMultisig", "connection", "payer", "signers", "m", "keypair", "Keypair", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "lamports", "getMinimumBalanceForRentExemptMultisig", "transaction", "Transaction", "SystemProgram", "MULTISIG_SIZE", "createInitializeMultisigInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "createNativeMintInstructionData", "createCreateNativeMintInstruction", "payer", "nativeMintId", "NATIVE_MINT_2022", "programId", "TOKEN_2022_PROGRAM_ID", "programSupportsExtensions", "TokenUnsupportedInstructionError", "keys", "SystemProgram", "data", "TransactionInstruction", "createNativeMint", "connection", "payer", "confirmOptions", "nativeMint", "NATIVE_MINT_2022", "programId", "TOKEN_2022_PROGRAM_ID", "transaction", "Transaction", "createCreateNativeMintInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "syncNativeInstructionData", "createSyncNativeInstruction", "account", "programId", "TOKEN_PROGRAM_ID", "keys", "data", "TransactionInstruction", "decodeSyncNativeInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeSyncNativeInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "createWrappedNativeAccount", "connection", "payer", "owner", "amount", "keypair", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "nativeMint", "NATIVE_MINT", "createAccount", "associatedToken", "getAssociatedTokenAddress", "ASSOCIATED_TOKEN_PROGRAM_ID", "transaction", "Transaction", "createAssociatedTokenAccountInstruction", "SystemProgram", "createSyncNativeInstruction", "sendAndConfirmTransaction", "lamports", "getMinimumBalanceForRentExemptAccount", "ACCOUNT_SIZE", "createInitializeAccountInstruction", "import_buffer_layout", "freezeAccountInstructionData", "createFreezeAccountInstruction", "account", "mint", "authority", "multiSigners", "programId", "TOKEN_PROGRAM_ID", "keys", "addSigners", "data", "TransactionInstruction", "decodeFreezeAccountInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeFreezeAccountInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "freezeAccount", "connection", "payer", "account", "mint", "authority", "multiSigners", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "authorityPublicKey", "signers", "getSigners", "transaction", "Transaction", "createFreezeAccountInstruction", "sendAndConfirmTransaction", "getOrCreateAssociatedTokenAccount", "connection", "payer", "mint", "owner", "allowOwnerOffCurve", "commitment", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "associatedTokenProgramId", "ASSOCIATED_TOKEN_PROGRAM_ID", "associatedToken", "getAssociatedTokenAddress", "account", "getAccount", "error", "TokenAccountNotFoundError", "TokenInvalidAccountOwnerError", "transaction", "Transaction", "createAssociatedTokenAccountInstruction", "sendAndConfirmTransaction", "TokenInvalidMintError", "TokenInvalidOwnerError", "import_buffer_layout", "mintToInstructionData", "u64", "createMintToInstruction", "mint", "destination", "authority", "amount", "multiSigners", "programId", "TOKEN_PROGRAM_ID", "keys", "addSigners", "data", "TransactionInstruction", "decodeMintToInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeMintToInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "mintTo", "connection", "payer", "mint", "destination", "authority", "amount", "multiSigners", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "authorityPublicKey", "signers", "getSigners", "transaction", "Transaction", "createMintToInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "mintToCheckedInstructionData", "u64", "createMintToCheckedInstruction", "mint", "destination", "authority", "amount", "decimals", "multiSigners", "programId", "TOKEN_PROGRAM_ID", "keys", "addSigners", "data", "TransactionInstruction", "decodeMintToCheckedInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeMintToCheckedInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "mintToChecked", "connection", "payer", "mint", "destination", "authority", "amount", "decimals", "multiSigners", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "authorityPublicKey", "signers", "getSigners", "transaction", "Transaction", "createMintToCheckedInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "revokeInstructionData", "createRevokeInstruction", "account", "owner", "multiSigners", "programId", "TOKEN_PROGRAM_ID", "keys", "addSigners", "data", "TransactionInstruction", "decodeRevokeInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeRevokeInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "revoke", "connection", "payer", "account", "owner", "multiSigners", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "ownerPublicKey", "signers", "getSigners", "transaction", "Transaction", "createRevokeInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "AuthorityType", "setAuthorityInstructionData", "publicKey", "createSetAuthorityInstruction", "account", "currentAuthority", "authorityType", "newAuthority", "multiSigners", "programId", "TOKEN_PROGRAM_ID", "keys", "addSigners", "data", "PublicKey", "TransactionInstruction", "decodeSetAuthorityInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeSetAuthorityInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "newAuthorityOption", "setAuthority", "connection", "payer", "account", "currentAuthority", "authorityType", "newAuthority", "multiSigners", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "currentAuthorityPublicKey", "signers", "getSigners", "transaction", "Transaction", "createSetAuthorityInstruction", "sendAndConfirmTransaction", "syncNative", "connection", "payer", "account", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "transaction", "Transaction", "createSyncNativeInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "thawAccountInstructionData", "createThawAccountInstruction", "account", "mint", "authority", "multiSigners", "programId", "TOKEN_PROGRAM_ID", "keys", "addSigners", "data", "TransactionInstruction", "decodeThawAccountInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeThawAccountInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "thawAccount", "connection", "payer", "account", "mint", "authority", "multiSigners", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "authorityPublicKey", "signers", "getSigners", "transaction", "Transaction", "createThawAccountInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "transferInstructionData", "u64", "createTransferInstruction", "source", "destination", "owner", "amount", "multiSigners", "programId", "TOKEN_PROGRAM_ID", "keys", "addSigners", "data", "TransactionInstruction", "decodeTransferInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeTransferInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "transfer", "connection", "payer", "source", "destination", "owner", "amount", "multiSigners", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "ownerPublicKey", "signers", "getSigners", "transaction", "Transaction", "createTransferInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "transferCheckedInstructionData", "u64", "createTransferCheckedInstruction", "source", "mint", "destination", "owner", "amount", "decimals", "multiSigners", "programId", "TOKEN_PROGRAM_ID", "keys", "addSigners", "data", "TransactionInstruction", "decodeTransferCheckedInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeTransferCheckedInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "transferChecked", "connection", "payer", "source", "mint", "destination", "owner", "amount", "decimals", "multiSigners", "confirmOptions", "programId", "TOKEN_PROGRAM_ID", "ownerPublicKey", "signers", "getSigners", "transaction", "Transaction", "createTransferCheckedInstruction", "sendAndConfirmTransaction", "import_buffer_layout", "createUiAmountToAmountInstruction", "mint", "amount", "programId", "TOKEN_PROGRAM_ID", "keys", "buf", "uiAmountToAmountInstructionData", "data", "TransactionInstruction", "decodeUiAmountToAmountInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeUiAmountToAmountInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "uiAmountToAmount", "connection", "payer", "mint", "amount", "programId", "TOKEN_PROGRAM_ID", "transaction", "Transaction", "createUiAmountToAmountInstruction", "returnData", "err", "data", "u64", "import_buffer_layout", "initializeMintInstructionData", "publicKey", "createInitializeMintInstruction", "mint", "decimals", "mintAuthority", "freezeAuthority", "programId", "TOKEN_PROGRAM_ID", "keys", "SYSVAR_RENT_PUBKEY", "data", "PublicKey", "TransactionInstruction", "decodeInitializeMintInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "rent", "decodeInitializeMintInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "freezeAuthorityOption", "import_buffer_layout", "InterestBearingMintInstruction", "interestBearingMintInitializeInstructionData", "publicKey", "interestBearingMintUpdateRateInstructionData", "createInitializeInterestBearingMintInstruction", "mint", "rateAuthority", "rate", "programId", "TOKEN_2022_PROGRAM_ID", "keys", "data", "TransactionInstruction", "createUpdateRateInterestBearingMintInstruction", "multiSigners", "addSigners", "createInterestBearingMint", "connection", "payer", "mintAuthority", "freezeAuthority", "rateAuthority", "rate", "decimals", "keypair", "Keypair", "confirmOptions", "programId", "TOKEN_2022_PROGRAM_ID", "mintLen", "getMintLen", "lamports", "transaction", "Transaction", "SystemProgram", "createInitializeInterestBearingMintInstruction", "createInitializeMintInstruction", "sendAndConfirmTransaction", "updateRateInterestBearingMint", "mint", "multiSigners", "rateAuthorityPublicKey", "signers", "getSigners", "createUpdateRateInterestBearingMintInstruction", "import_buffer_layout", "import_buffer_layout", "initializeAccount2InstructionData", "publicKey", "createInitializeAccount2Instruction", "account", "mint", "owner", "programId", "TOKEN_PROGRAM_ID", "keys", "SYSVAR_RENT_PUBKEY", "data", "TransactionInstruction", "decodeInitializeAccount2Instruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "rent", "decodeInitializeAccount2InstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "import_buffer_layout", "initializeAccount3InstructionData", "publicKey", "createInitializeAccount3Instruction", "account", "mint", "owner", "programId", "TOKEN_PROGRAM_ID", "keys", "data", "TransactionInstruction", "decodeInitializeAccount3Instruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeInitializeAccount3InstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "decodeInstruction", "instruction", "programId", "TOKEN_PROGRAM_ID", "TokenInvalidInstructionDataError", "type", "decodeInitializeMintInstruction", "decodeInitializeAccountInstruction", "decodeInitializeMultisigInstruction", "decodeTransferInstruction", "decodeApproveInstruction", "decodeRevokeInstruction", "decodeSetAuthorityInstruction", "decodeMintToInstruction", "decodeBurnInstruction", "decodeCloseAccountInstruction", "decodeFreezeAccountInstruction", "decodeThawAccountInstruction", "decodeTransferCheckedInstruction", "decodeApproveCheckedInstruction", "decodeMintToCheckedInstruction", "decodeBurnCheckedInstruction", "decodeInitializeAccount2Instruction", "decodeSyncNativeInstruction", "decodeInitializeAccount3Instruction", "decodeInitializeMint2Instruction", "decodeAmountToUiAmountInstruction", "decodeUiAmountToAmountInstruction", "TokenInvalidInstructionTypeError", "isInitializeMintInstruction", "decoded", "isInitializeAccountInstruction", "isInitializeMultisigInstruction", "isTransferInstruction", "isApproveInstruction", "isRevokeInstruction", "isSetAuthorityInstruction", "isMintToInstruction", "isBurnInstruction", "isCloseAccountInstruction", "isFreezeAccountInstruction", "isThawAccountInstruction", "isTransferCheckedInstruction", "isApproveCheckedInstruction", "isMintToCheckedInstruction", "isBurnCheckedInstruction", "isInitializeAccount2Instruction", "isSyncNativeInstruction", "isInitializeAccount3Instruction", "isInitializeMint2Instruction", "isAmountToUiAmountInstruction", "isUiamountToAmountInstruction", "import_buffer_layout", "initializeImmutableOwnerInstructionData", "createInitializeImmutableOwnerInstruction", "account", "programId", "keys", "data", "TransactionInstruction", "decodeInitializeImmutableOwnerInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeInitializeImmutableOwnerInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "import_buffer_layout", "initializeMintCloseAuthorityInstructionData", "publicKey", "createInitializeMintCloseAuthorityInstruction", "mint", "closeAuthority", "programId", "programSupportsExtensions", "TokenUnsupportedInstructionError", "keys", "data", "PublicKey", "TransactionInstruction", "decodeInitializeMintCloseAuthorityInstruction", "instruction", "TokenInvalidInstructionProgramError", "TokenInvalidInstructionDataError", "decodeInitializeMintCloseAuthorityInstructionUnchecked", "TokenInvalidInstructionTypeError", "TokenInvalidInstructionKeysError", "closeAuthorityOption", "import_buffer_layout", "createReallocateInstruction", "account", "payer", "extensionTypes", "owner", "multiSigners", "programId", "TOKEN_2022_PROGRAM_ID", "programSupportsExtensions", "TokenUnsupportedInstructionError", "baseKeys", "SystemProgram", "keys", "addSigners", "reallocateInstructionData", "data", "TransactionInstruction", "import_buffer_layout", "initializeNonTransferableMintInstructionData", "createInitializeNonTransferableMintInstruction", "mint", "programId", "programSupportsExtensions", "TokenUnsupportedInstructionError", "keys", "data", "TransactionInstruction"] +} diff --git a/static/js/toastify.custom.js b/static/js/toastify.custom.js new file mode 100644 index 00000000..f2786ddc --- /dev/null +++ b/static/js/toastify.custom.js @@ -0,0 +1,64 @@ +const toastOptions = { + duration: 4000, + gravity: 'bottom', + position: 'right', + stopOnFocus: true, +}; + +const style = { + borderRadius: '5px', + color: '#ffffff', + fontWeight: 'bold', +}; + +Toastify.error = function (text, options = {}) { + const toast = Toastify({ + ...toastOptions, + text, + style: { ...style, background: '#ff5252' }, + ...options, + }); + + toast.showToast(); + + return toast; +}; + +Toastify.success = function (text, options = {}) { + const toast = Toastify({ + ...toastOptions, + text, + style: { ...style, background: '#4caf50' }, + ...options, + }); + + toast.showToast(); + + return toast; +}; + +Toastify.warning = function (text, options = {}) { + const toast = Toastify({ + ...toastOptions, + text, + style: { ...style, background: '#ffc107' }, + ...options, + }); + + toast.showToast(); + + return toast; +}; + +Toastify.info = function (text, options = {}) { + const toast = Toastify({ + ...toastOptions, + text, + style: { ...style, background: '#2196f3' }, + ...options, + }); + + toast.showToast(); + + return toast; +}; diff --git a/static/js/toastify.js b/static/js/toastify.js new file mode 100644 index 00000000..5ccc62b1 --- /dev/null +++ b/static/js/toastify.js @@ -0,0 +1,8 @@ +/*! + * Toastify js 1.12.0 + * https://github.com/apvarun/toastify-js + * @license MIT licensed + * + * Copyright (C) 2018 Varun A P + */ +!function(t,o){"object"==typeof module&&module.exports?module.exports=o():t.Toastify=o()}(this,(function(t){var o=function(t){return new o.lib.init(t)};function i(t,o){return o.offset[t]?isNaN(o.offset[t])?o.offset[t]:o.offset[t]+"px":"0px"}function s(t,o){return!(!t||"string"!=typeof o)&&!!(t.className&&t.className.trim().split(/\s+/gi).indexOf(o)>-1)}return o.defaults={oldestFirst:!0,text:"Toastify is awesome!",node:void 0,duration:3e3,selector:void 0,callback:function(){},destination:void 0,newWindow:!1,close:!1,gravity:"toastify-top",positionLeft:!1,position:"",backgroundColor:"",avatar:"",className:"",stopOnFocus:!0,onClick:function(){},offset:{x:0,y:0},escapeMarkup:!0,ariaLive:"polite",style:{background:""}},o.lib=o.prototype={toastify:"1.12.0",constructor:o,init:function(t){return t||(t={}),this.options={},this.toastElement=null,this.options.text=t.text||o.defaults.text,this.options.node=t.node||o.defaults.node,this.options.duration=0===t.duration?0:t.duration||o.defaults.duration,this.options.selector=t.selector||o.defaults.selector,this.options.callback=t.callback||o.defaults.callback,this.options.destination=t.destination||o.defaults.destination,this.options.newWindow=t.newWindow||o.defaults.newWindow,this.options.close=t.close||o.defaults.close,this.options.gravity="bottom"===t.gravity?"toastify-bottom":o.defaults.gravity,this.options.positionLeft=t.positionLeft||o.defaults.positionLeft,this.options.position=t.position||o.defaults.position,this.options.backgroundColor=t.backgroundColor||o.defaults.backgroundColor,this.options.avatar=t.avatar||o.defaults.avatar,this.options.className=t.className||o.defaults.className,this.options.stopOnFocus=void 0===t.stopOnFocus?o.defaults.stopOnFocus:t.stopOnFocus,this.options.onClick=t.onClick||o.defaults.onClick,this.options.offset=t.offset||o.defaults.offset,this.options.escapeMarkup=void 0!==t.escapeMarkup?t.escapeMarkup:o.defaults.escapeMarkup,this.options.ariaLive=t.ariaLive||o.defaults.ariaLive,this.options.style=t.style||o.defaults.style,t.backgroundColor&&(this.options.style.background=t.backgroundColor),this},buildToast:function(){if(!this.options)throw"Toastify is not initialized";var t=document.createElement("div");for(var o in t.className="toastify on "+this.options.className,this.options.position?t.className+=" toastify-"+this.options.position:!0===this.options.positionLeft?(t.className+=" toastify-left",console.warn("Property `positionLeft` will be depreciated in further versions. Please use `position` instead.")):t.className+=" toastify-right",t.className+=" "+this.options.gravity,this.options.backgroundColor&&console.warn('DEPRECATION NOTICE: "backgroundColor" is being deprecated. Please use the "style.background" property.'),this.options.style)t.style[o]=this.options.style[o];if(this.options.ariaLive&&t.setAttribute("aria-live",this.options.ariaLive),this.options.node&&this.options.node.nodeType===Node.ELEMENT_NODE)t.appendChild(this.options.node);else if(this.options.escapeMarkup?t.innerText=this.options.text:t.innerHTML=this.options.text,""!==this.options.avatar){var s=document.createElement("img");s.src=this.options.avatar,s.className="toastify-avatar","left"==this.options.position||!0===this.options.positionLeft?t.appendChild(s):t.insertAdjacentElement("afterbegin",s)}if(!0===this.options.close){var e=document.createElement("button");e.type="button",e.setAttribute("aria-label","Close"),e.className="toast-close",e.innerHTML="✖",e.addEventListener("click",function(t){t.stopPropagation(),this.removeElement(this.toastElement),window.clearTimeout(this.toastElement.timeOutValue)}.bind(this));var n=window.innerWidth>0?window.innerWidth:screen.width;("left"==this.options.position||!0===this.options.positionLeft)&&n>360?t.insertAdjacentElement("afterbegin",e):t.appendChild(e)}if(this.options.stopOnFocus&&this.options.duration>0){var a=this;t.addEventListener("mouseover",(function(o){window.clearTimeout(t.timeOutValue)})),t.addEventListener("mouseleave",(function(){t.timeOutValue=window.setTimeout((function(){a.removeElement(t)}),a.options.duration)}))}if(void 0!==this.options.destination&&t.addEventListener("click",function(t){t.stopPropagation(),!0===this.options.newWindow?window.open(this.options.destination,"_blank"):window.location=this.options.destination}.bind(this)),"function"==typeof this.options.onClick&&void 0===this.options.destination&&t.addEventListener("click",function(t){t.stopPropagation(),this.options.onClick()}.bind(this)),"object"==typeof this.options.offset){var l=i("x",this.options),r=i("y",this.options),p="left"==this.options.position?l:"-"+l,d="toastify-top"==this.options.gravity?r:"-"+r;t.style.transform="translate("+p+","+d+")"}return t},showToast:function(){var t;if(this.toastElement=this.buildToast(),!(t="string"==typeof this.options.selector?document.getElementById(this.options.selector):this.options.selector instanceof HTMLElement||"undefined"!=typeof ShadowRoot&&this.options.selector instanceof ShadowRoot?this.options.selector:document.body))throw"Root element is not defined";var i=o.defaults.oldestFirst?t.firstChild:t.lastChild;return t.insertBefore(this.toastElement,i),o.reposition(),this.options.duration>0&&(this.toastElement.timeOutValue=window.setTimeout(function(){this.removeElement(this.toastElement)}.bind(this),this.options.duration)),this},hideToast:function(){this.toastElement.timeOutValue&&clearTimeout(this.toastElement.timeOutValue),this.removeElement(this.toastElement)},removeElement:function(t){t.className=t.className.replace(" on",""),window.setTimeout(function(){this.options.node&&this.options.node.parentNode&&this.options.node.parentNode.removeChild(this.options.node),t.parentNode&&t.parentNode.removeChild(t),this.options.callback.call(t),o.reposition()}.bind(this),400)}},o.reposition=function(){for(var t,o={top:15,bottom:15},i={top:15,bottom:15},e={top:15,bottom:15},n=document.getElementsByClassName("toastify"),a=0;a0?window.innerWidth:screen.width)<=360?(n[a].style[t]=e[t]+"px",e[t]+=l+15):!0===s(n[a],"toastify-left")?(n[a].style[t]=o[t]+"px",o[t]+=l+15):(n[a].style[t]=i[t]+"px",i[t]+=l+15)}return this},o.lib.init.prototype=o.lib,o})); \ No newline at end of file diff --git a/static/sass/_utopia_all.scss b/static/sass/_utopia_all.scss index 3952c3f4..f3d0dbf6 100644 --- a/static/sass/_utopia_all.scss +++ b/static/sass/_utopia_all.scss @@ -2055,4 +2055,22 @@ blockquote.tiktok-embed { } } +} + +// Futuria Crypto features +.solana-btn { + display: inline-flex; + align-items: center; + + + img.solana-logo { + height: 16px; + margin-left: 8px; + } +} + +.show-solana-info { + text-decoration: underline; + margin-left: 8px; + cursor: pointer; } \ No newline at end of file From f4f6f070981b97bc7baa5c164b04e006b253a658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?An=C3=ADbal=20Pacheco?= Date: Mon, 5 Dec 2022 02:07:55 -0300 Subject: [PATCH 2/5] minor improvements only in changed files --- portal/apps/core/admin.py | 18 ++++++++++--- portal/apps/core/models.py | 4 +-- .../apps/core/templates/article/detail.html | 26 +++++++++---------- portal/apps/thedaily/context_processors.py | 11 ++++---- .../thedaily/templatetags/thedaily_tags.py | 1 + portal/apps/thedaily/views.py | 7 ++--- portal/migration_settings.py | 3 +-- portal/settings.py | 2 +- static/sass/_utopia_all.scss | 3 +-- 9 files changed, 42 insertions(+), 33 deletions(-) diff --git a/portal/apps/core/admin.py b/portal/apps/core/admin.py index 4cf9a2da..83c85707 100644 --- a/portal/apps/core/admin.py +++ b/portal/apps/core/admin.py @@ -27,7 +27,9 @@ from django.contrib.messages import constants as messages from django.contrib.admin import ModelAdmin, TabularInline, site, widgets from django.contrib.admin.options import get_ul_class -from django.forms import ModelForm, ValidationError, ChoiceField, RadioSelect, TypedChoiceField, Field, Textarea, Widget +from django.forms import ( + ModelForm, ValidationError, ChoiceField, RadioSelect, TypedChoiceField, Field, Textarea, Widget +) from django.forms.models import BaseInlineFormSet, inlineformset_factory from django.utils import timezone from django.forms.fields import CharField, IntegerField @@ -289,11 +291,11 @@ class ArticleEditionInline(TabularInline): class SolanaSignatureWidget(Widget): template_name = 'admin/core/article/solana_signature.html' - + def __init__(self, *args, **kwargs): kwargs['attrs'] = {'readonly': True} super(SolanaSignatureWidget, self).__init__(*args, **kwargs) - + def get_context(self, name, value, attrs=None): return {'widget': { 'name': name, @@ -317,7 +319,15 @@ def clean(self, value): class ArticleAdminModelForm(ModelForm): body = CharField(widget=MarkdownWidget()) - solana_signature_address = SolanaSignatureField(u"Firma con Solana", label='Firma con Solana', required=False, help_text='Podés firmar esta nota con Solana desde tu wallet.
¿Qué es Solana?') + solana_signature_address = SolanaSignatureField( + "Firma con Solana", + label='Firma con Solana', + required=False, + help_text=( + 'Podés firmar esta nota con Solana desde tu wallet. ' + '¿Qué es Solana?' + ), + ) headline = CharField(label='Título', widget=TextInput(attrs={'style': 'width:600px'})) slug = CharField( label='Slug', diff --git a/portal/apps/core/models.py b/portal/apps/core/models.py index ad6f5523..8361376b 100755 --- a/portal/apps/core/models.py +++ b/portal/apps/core/models.py @@ -976,7 +976,7 @@ class ArticleBase(Model, CT): views = PositiveIntegerField('vistas', default=0, db_index=True) allow_comments = BooleanField('Habilitar comentarios', default=True) ipfs_upload = BooleanField('Publicar en IPFS', default=True) - ipfs_cid = TextField('id de IPFS', + ipfs_cid = TextField('id de IPFS', blank=True, null=True, help_text='CID de la nota en IPFS', @@ -1044,7 +1044,7 @@ def save(self, *args, **kwargs): setattr(self, attr, add_punctuation(getattr(self, attr, ''))) self.slug = slugify(cleanhtml(ldmarkup(self.headline))) - + now = datetime.now() if self.solana_signature_address: diff --git a/portal/apps/core/templates/article/detail.html b/portal/apps/core/templates/article/detail.html index 95027822..393f6188 100644 --- a/portal/apps/core/templates/article/detail.html +++ b/portal/apps/core/templates/article/detail.html @@ -76,7 +76,7 @@ {% if article.photo %} {% if header_display == 'FW' %} -
{# closed in line 243 #} +
{# closed in line 255 #}
@@ -107,7 +107,7 @@
- {# missing close div here is closed correctly in line 243 #} + {# missing close div here is closed correctly in line 255 #} {% else %}
@@ -233,7 +233,6 @@

{{ article.headline|ldmarkup:article.id|ble - @@ -244,7 +243,7 @@

{{ article.headline|ldmarkup:article.id|ble {% if article.solana_signature %}

- Este artículo fue firmado en Solana por el autor + Este artículo fue firmado en Solana por el autor Mostrar info

@@ -253,7 +252,7 @@

{{ article.headline|ldmarkup:article.id|ble {% endif %} {% endif %}

- {% if article.photo and header_display == 'FW' %}

{# opened in line 86 #}{% endif %} + {% if article.photo and header_display == 'FW' %}
{# opened in line 79 #}{% endif %} {% if article.has_deck or article.has_lead %} {% if article.has_deck %} @@ -306,17 +305,16 @@

{{ article.deck|ldmarkup:article.id|bleac
{{ article.body|ldmarkup:article.id|truncatehtml:100 }}
- {% include 'article/paywall/pw_auth_wo_credits.html' %} - {% endif %} {% endif %} + {% endif %} {% endif %} {% endif %} {# END signupwall #} - {% if not request.signupwall or user|has_bought_article:article %}{# closed in line 574 #} + {% if not request.signupwall or user|has_bought_article:article %}{# closed in line 566 #}
{% block article_body_content %}{{ article.body|ldmarkup:article.id }}{% endblock %} @@ -564,7 +562,7 @@

{{ article.deck|ldmarkup:article.id|bleac

{% endif %} - {% endif %}{# opened in line 326 #} + {% endif %}{# opened in line 318 #} {% else %}{# restricted content message #} @@ -581,7 +579,7 @@

{{ article.deck|ldmarkup:article.id|bleac