diff --git a/AGENTS.md b/AGENTS.md index abaeeb4..542373c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -36,6 +36,7 @@ just revision "msg" # новая alembic-миграция из изме | Модель данных / миграции (`models/`, `alembic/`) | architecture.md §Домен, [conventions.md](docs/ai/conventions.md) | | Аналитика / метрики | architecture.md §Аналитика, [conventions.md](docs/ai/conventions.md) §Деньги | | API / Flutter-клиент | architecture.md §API, `openapi/openapi.json` | +| Offline-кэш экрана (фаза 5) | [offline-cache.md](docs/ai/offline-cache.md) — контракт `Cached` + `CacheInterceptor` | | Деплой | `docker-compose.yml`, `deploy/Caddyfile`, [ops.md](docs/ai/ops.md) | ## Обязательные ограничения diff --git a/app/lib/core/api/api_client.dart b/app/lib/core/api/api_client.dart index 3eec9d5..a0d0e00 100644 --- a/app/lib/core/api/api_client.dart +++ b/app/lib/core/api/api_client.dart @@ -3,9 +3,22 @@ import 'package:fintracker_api/fintracker_api.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../auth/auth_controller.dart'; +import '../cache/cache_interceptor.dart'; +import '../cache/response_cache.dart'; import '../config.dart'; -/// Authenticated client: bearer header on every call, one transparent refresh on 401. +/// One sqlite-backed cache of the last successful GET per endpoint+params, +/// shared by every screen. See `docs/ai/offline-cache.md`. +final responseCacheDbProvider = Provider((ref) { + final db = ResponseCacheDatabase(); + ref.onDispose(db.close); + return db; +}); + +/// Authenticated client: bearer header on every call, one transparent refresh +/// on 401, and — since [CacheInterceptor] is added last, so it sees a request +/// only after auth has already handled it — the last cached answer when the +/// network itself is unreachable. final apiProvider = Provider((ref) { final dio = Dio(BaseOptions( baseUrl: apiBaseUrl(), @@ -14,6 +27,7 @@ final apiProvider = Provider((ref) { )); dio.interceptors.add(DateQueryInterceptor()); dio.interceptors.add(_AuthInterceptor(ref)); + dio.interceptors.add(CacheInterceptor(ref.watch(responseCacheDbProvider))); return FintrackerApi(dio: dio, interceptors: const []); }); diff --git a/app/lib/core/cache/cache_interceptor.dart b/app/lib/core/cache/cache_interceptor.dart new file mode 100644 index 0000000..81c93d2 --- /dev/null +++ b/app/lib/core/cache/cache_interceptor.dart @@ -0,0 +1,63 @@ +import 'dart:async'; + +import 'package:dio/dio.dart'; + +import 'response_cache.dart'; + +/// Persists every successful GET body by endpoint+params, and serves the last +/// one back when the network itself is unreachable — see +/// `docs/ai/offline-cache.md` for the whole contract. +/// +/// Mutations (anything but GET) are never cached and never served stale: a +/// failed POST/PATCH/DELETE must surface as an error, not as an invented +/// success. A response resolved from the cache carries `extra['fetchedAt']` +/// (a [DateTime]); a live response carries no such key. That is the one flag +/// a screen needs to decide whether to show a [StaleBanner]. +class CacheInterceptor extends Interceptor { + CacheInterceptor(this._db); + + final ResponseCacheDatabase _db; + + /// Failure shapes that mean "no network", as opposed to a real server error + /// (4xx/5xx) or a bug in this client — those must keep failing loudly. + static const _offlineTypes = { + DioExceptionType.connectionError, + DioExceptionType.connectionTimeout, + DioExceptionType.receiveTimeout, + DioExceptionType.sendTimeout, + }; + + @override + void onResponse(Response response, ResponseInterceptorHandler handler) { + if (response.requestOptions.method == 'GET' && response.statusCode == 200) { + // Never block the UI on the write: the caller already has its data. + unawaited(_db.put(requestKey(response.requestOptions), response.data)); + } + handler.next(response); + } + + @override + Future onError(DioException err, ErrorInterceptorHandler handler) async { + if (err.requestOptions.method != 'GET' || !_offlineTypes.contains(err.type)) { + return handler.next(err); + } + final cached = await _db.get(requestKey(err.requestOptions)); + if (cached == null) return handler.next(err); + handler.resolve( + Response( + requestOptions: err.requestOptions, + data: cached.body, + statusCode: 200, + extra: {'fetchedAt': cached.fetchedAt}, + ), + ); + } + + /// `path?sorted=query` — deliberately excludes the host, so switching the API + /// origin (dev vs. prod) does not orphan a device's cache. + static String requestKey(RequestOptions options) { + final params = options.queryParameters.entries.toList()..sort((a, b) => a.key.compareTo(b.key)); + final query = params.map((e) => '${e.key}=${e.value}').join('&'); + return '${options.path}?$query'; + } +} diff --git a/app/lib/core/cache/cached.dart b/app/lib/core/cache/cached.dart new file mode 100644 index 0000000..4622a79 --- /dev/null +++ b/app/lib/core/cache/cached.dart @@ -0,0 +1,31 @@ +import 'package:dio/dio.dart'; + +/// A value from the API, or the last one [CacheInterceptor] had on file for the +/// same endpoint+params when the live request failed. `fetchedAt` is null for +/// a live answer — that is the one bit a screen needs to decide whether to +/// show a `StaleBanner`. See `docs/ai/offline-cache.md`. +class Cached { + const Cached(this.data, {this.fetchedAt}); + + final T data; + final DateTime? fetchedAt; +} + +extension CachedResponseX on Response { + /// Wraps this response's data with the staleness [CacheInterceptor] recorded + /// in `extra['fetchedAt']`. A provider that wants offline support returns + /// `r.cached` instead of `r.data!`. + Cached get cached => Cached(data as T, fetchedAt: extra['fetchedAt'] as DateTime?); +} + +/// The oldest of several fetch times, or null if none of them is stale. +/// Screens with several cached providers show one banner for the lot rather +/// than one per tile. +DateTime? oldestFetch(Iterable fetchedAt) { + DateTime? oldest; + for (final at in fetchedAt) { + if (at == null) continue; + if (oldest == null || at.isBefore(oldest)) oldest = at; + } + return oldest; +} diff --git a/app/lib/core/cache/response_cache.dart b/app/lib/core/cache/response_cache.dart new file mode 100644 index 0000000..95e04d3 --- /dev/null +++ b/app/lib/core/cache/response_cache.dart @@ -0,0 +1,71 @@ +import 'dart:convert'; + +import 'package:drift/drift.dart'; +import 'package:drift_flutter/drift_flutter.dart'; + +part 'response_cache.g.dart'; + +/// The last successful body of one GET, keyed by endpoint+params exactly as +/// [CacheInterceptor] builds the key. See `docs/ai/offline-cache.md` for the +/// whole contract this table is part of. +class CachedResponses extends Table { + TextColumn get requestKey => text()(); + TextColumn get body => text()(); + DateTimeColumn get fetchedAt => dateTime()(); + + @override + Set get primaryKey => {requestKey}; +} + +/// A cached body plus when it was fetched — what [CacheInterceptor] needs to +/// rebuild a synthetic [Response] when the network itself is unreachable. +/// +/// Not named `CachedResponse`: drift already generates a row class with that +/// name for the `CachedResponses` table above. +class CacheEntry { + const CacheEntry(this.body, this.fetchedAt); + final Object? body; + final DateTime fetchedAt; +} + +@DriftDatabase(tables: [CachedResponses]) +class ResponseCacheDatabase extends _$ResponseCacheDatabase { + ResponseCacheDatabase() : super(_openConnection()); + ResponseCacheDatabase.forTesting(super.executor); + + @override + int get schemaVersion => 1; + + /// Replaces whatever was cached for [requestKey] — one row per endpoint+params, + /// never a history. + Future put(String requestKey, Object? body) => into(cachedResponses).insertOnConflictUpdate( + CachedResponsesCompanion.insert( + requestKey: requestKey, + body: jsonEncode(body), + fetchedAt: DateTime.now(), + ), + ); + + /// The body last stored for [requestKey], or null if this endpoint+params was + /// never fetched successfully on this device. + Future get(String requestKey) async { + final row = await (select( + cachedResponses, + )..where((t) => t.requestKey.equals(requestKey))).getSingleOrNull(); + if (row == null) return null; + return CacheEntry(jsonDecode(row.body), row.fetchedAt); + } +} + +/// One sqlite file via native FFI on Android/iOS/desktop; wasm+OPFS (falling +/// back to IndexedDB) on web — `driftDatabase` from `package:drift_flutter` +/// picks the right backend, `web/sqlite3.wasm` and `web/drift_worker.js` are +/// the compiled assets it loads there (regenerate with `just app-web-assets` +/// whenever the `drift`/`sqlite3` package versions change). +QueryExecutor _openConnection() => driftDatabase( + name: 'response_cache', + web: DriftWebOptions( + sqlite3Wasm: Uri.parse('sqlite3.wasm'), + driftWorker: Uri.parse('drift_worker.js'), + ), + ); diff --git a/app/lib/core/cache/response_cache.g.dart b/app/lib/core/cache/response_cache.g.dart new file mode 100644 index 0000000..4b3fe6c --- /dev/null +++ b/app/lib/core/cache/response_cache.g.dart @@ -0,0 +1,478 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'response_cache.dart'; + +// ignore_for_file: type=lint +class $CachedResponsesTable extends CachedResponses + with TableInfo<$CachedResponsesTable, CachedResponse> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $CachedResponsesTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _requestKeyMeta = const VerificationMeta( + 'requestKey', + ); + @override + late final GeneratedColumn requestKey = GeneratedColumn( + 'request_key', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _bodyMeta = const VerificationMeta('body'); + @override + late final GeneratedColumn body = GeneratedColumn( + 'body', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _fetchedAtMeta = const VerificationMeta( + 'fetchedAt', + ); + @override + late final GeneratedColumn fetchedAt = GeneratedColumn( + 'fetched_at', + aliasedName, + false, + type: DriftSqlType.dateTime, + requiredDuringInsert: true, + ); + @override + List get $columns => [requestKey, body, fetchedAt]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'cached_responses'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('request_key')) { + context.handle( + _requestKeyMeta, + requestKey.isAcceptableOrUnknown(data['request_key']!, _requestKeyMeta), + ); + } else if (isInserting) { + context.missing(_requestKeyMeta); + } + if (data.containsKey('body')) { + context.handle( + _bodyMeta, + body.isAcceptableOrUnknown(data['body']!, _bodyMeta), + ); + } else if (isInserting) { + context.missing(_bodyMeta); + } + if (data.containsKey('fetched_at')) { + context.handle( + _fetchedAtMeta, + fetchedAt.isAcceptableOrUnknown(data['fetched_at']!, _fetchedAtMeta), + ); + } else if (isInserting) { + context.missing(_fetchedAtMeta); + } + return context; + } + + @override + Set get $primaryKey => {requestKey}; + @override + CachedResponse map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return CachedResponse( + requestKey: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}request_key'], + )!, + body: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}body'], + )!, + fetchedAt: attachedDatabase.typeMapping.read( + DriftSqlType.dateTime, + data['${effectivePrefix}fetched_at'], + )!, + ); + } + + @override + $CachedResponsesTable createAlias(String alias) { + return $CachedResponsesTable(attachedDatabase, alias); + } +} + +class CachedResponse extends DataClass implements Insertable { + final String requestKey; + final String body; + final DateTime fetchedAt; + const CachedResponse({ + required this.requestKey, + required this.body, + required this.fetchedAt, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['request_key'] = Variable(requestKey); + map['body'] = Variable(body); + map['fetched_at'] = Variable(fetchedAt); + return map; + } + + CachedResponsesCompanion toCompanion(bool nullToAbsent) { + return CachedResponsesCompanion( + requestKey: Value(requestKey), + body: Value(body), + fetchedAt: Value(fetchedAt), + ); + } + + factory CachedResponse.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return CachedResponse( + requestKey: serializer.fromJson(json['requestKey']), + body: serializer.fromJson(json['body']), + fetchedAt: serializer.fromJson(json['fetchedAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'requestKey': serializer.toJson(requestKey), + 'body': serializer.toJson(body), + 'fetchedAt': serializer.toJson(fetchedAt), + }; + } + + CachedResponse copyWith({ + String? requestKey, + String? body, + DateTime? fetchedAt, + }) => CachedResponse( + requestKey: requestKey ?? this.requestKey, + body: body ?? this.body, + fetchedAt: fetchedAt ?? this.fetchedAt, + ); + CachedResponse copyWithCompanion(CachedResponsesCompanion data) { + return CachedResponse( + requestKey: data.requestKey.present + ? data.requestKey.value + : this.requestKey, + body: data.body.present ? data.body.value : this.body, + fetchedAt: data.fetchedAt.present ? data.fetchedAt.value : this.fetchedAt, + ); + } + + @override + String toString() { + return (StringBuffer('CachedResponse(') + ..write('requestKey: $requestKey, ') + ..write('body: $body, ') + ..write('fetchedAt: $fetchedAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(requestKey, body, fetchedAt); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is CachedResponse && + other.requestKey == this.requestKey && + other.body == this.body && + other.fetchedAt == this.fetchedAt); +} + +class CachedResponsesCompanion extends UpdateCompanion { + final Value requestKey; + final Value body; + final Value fetchedAt; + final Value rowid; + const CachedResponsesCompanion({ + this.requestKey = const Value.absent(), + this.body = const Value.absent(), + this.fetchedAt = const Value.absent(), + this.rowid = const Value.absent(), + }); + CachedResponsesCompanion.insert({ + required String requestKey, + required String body, + required DateTime fetchedAt, + this.rowid = const Value.absent(), + }) : requestKey = Value(requestKey), + body = Value(body), + fetchedAt = Value(fetchedAt); + static Insertable custom({ + Expression? requestKey, + Expression? body, + Expression? fetchedAt, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (requestKey != null) 'request_key': requestKey, + if (body != null) 'body': body, + if (fetchedAt != null) 'fetched_at': fetchedAt, + if (rowid != null) 'rowid': rowid, + }); + } + + CachedResponsesCompanion copyWith({ + Value? requestKey, + Value? body, + Value? fetchedAt, + Value? rowid, + }) { + return CachedResponsesCompanion( + requestKey: requestKey ?? this.requestKey, + body: body ?? this.body, + fetchedAt: fetchedAt ?? this.fetchedAt, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (requestKey.present) { + map['request_key'] = Variable(requestKey.value); + } + if (body.present) { + map['body'] = Variable(body.value); + } + if (fetchedAt.present) { + map['fetched_at'] = Variable(fetchedAt.value); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('CachedResponsesCompanion(') + ..write('requestKey: $requestKey, ') + ..write('body: $body, ') + ..write('fetchedAt: $fetchedAt, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +abstract class _$ResponseCacheDatabase extends GeneratedDatabase { + _$ResponseCacheDatabase(QueryExecutor e) : super(e); + $ResponseCacheDatabaseManager get managers => + $ResponseCacheDatabaseManager(this); + late final $CachedResponsesTable cachedResponses = $CachedResponsesTable( + this, + ); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [cachedResponses]; +} + +typedef $$CachedResponsesTableCreateCompanionBuilder = + CachedResponsesCompanion Function({ + required String requestKey, + required String body, + required DateTime fetchedAt, + Value rowid, + }); +typedef $$CachedResponsesTableUpdateCompanionBuilder = + CachedResponsesCompanion Function({ + Value requestKey, + Value body, + Value fetchedAt, + Value rowid, + }); + +class $$CachedResponsesTableFilterComposer + extends Composer<_$ResponseCacheDatabase, $CachedResponsesTable> { + $$CachedResponsesTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get requestKey => $composableBuilder( + column: $table.requestKey, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get body => $composableBuilder( + column: $table.body, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get fetchedAt => $composableBuilder( + column: $table.fetchedAt, + builder: (column) => ColumnFilters(column), + ); +} + +class $$CachedResponsesTableOrderingComposer + extends Composer<_$ResponseCacheDatabase, $CachedResponsesTable> { + $$CachedResponsesTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get requestKey => $composableBuilder( + column: $table.requestKey, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get body => $composableBuilder( + column: $table.body, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get fetchedAt => $composableBuilder( + column: $table.fetchedAt, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$CachedResponsesTableAnnotationComposer + extends Composer<_$ResponseCacheDatabase, $CachedResponsesTable> { + $$CachedResponsesTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get requestKey => $composableBuilder( + column: $table.requestKey, + builder: (column) => column, + ); + + GeneratedColumn get body => + $composableBuilder(column: $table.body, builder: (column) => column); + + GeneratedColumn get fetchedAt => + $composableBuilder(column: $table.fetchedAt, builder: (column) => column); +} + +class $$CachedResponsesTableTableManager + extends + RootTableManager< + _$ResponseCacheDatabase, + $CachedResponsesTable, + CachedResponse, + $$CachedResponsesTableFilterComposer, + $$CachedResponsesTableOrderingComposer, + $$CachedResponsesTableAnnotationComposer, + $$CachedResponsesTableCreateCompanionBuilder, + $$CachedResponsesTableUpdateCompanionBuilder, + ( + CachedResponse, + BaseReferences< + _$ResponseCacheDatabase, + $CachedResponsesTable, + CachedResponse + >, + ), + CachedResponse, + PrefetchHooks Function() + > { + $$CachedResponsesTableTableManager( + _$ResponseCacheDatabase db, + $CachedResponsesTable table, + ) : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$CachedResponsesTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$CachedResponsesTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$CachedResponsesTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value requestKey = const Value.absent(), + Value body = const Value.absent(), + Value fetchedAt = const Value.absent(), + Value rowid = const Value.absent(), + }) => CachedResponsesCompanion( + requestKey: requestKey, + body: body, + fetchedAt: fetchedAt, + rowid: rowid, + ), + createCompanionCallback: + ({ + required String requestKey, + required String body, + required DateTime fetchedAt, + Value rowid = const Value.absent(), + }) => CachedResponsesCompanion.insert( + requestKey: requestKey, + body: body, + fetchedAt: fetchedAt, + rowid: rowid, + ), + withReferenceMapper: (p0) => p0 + .map( + (e) => ( + e.readTable<$CachedResponsesTable, CachedResponse>(table), + BaseReferences< + _$ResponseCacheDatabase, + $CachedResponsesTable, + CachedResponse + >(db, table, e), + ), + ) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$CachedResponsesTableProcessedTableManager = + ProcessedTableManager< + _$ResponseCacheDatabase, + $CachedResponsesTable, + CachedResponse, + $$CachedResponsesTableFilterComposer, + $$CachedResponsesTableOrderingComposer, + $$CachedResponsesTableAnnotationComposer, + $$CachedResponsesTableCreateCompanionBuilder, + $$CachedResponsesTableUpdateCompanionBuilder, + ( + CachedResponse, + BaseReferences< + _$ResponseCacheDatabase, + $CachedResponsesTable, + CachedResponse + >, + ), + CachedResponse, + PrefetchHooks Function() + >; + +class $ResponseCacheDatabaseManager { + final _$ResponseCacheDatabase _db; + $ResponseCacheDatabaseManager(this._db); + $$CachedResponsesTableTableManager get cachedResponses => + $$CachedResponsesTableTableManager(_db, _db.cachedResponses); +} diff --git a/app/lib/core/widgets/stale_banner.dart b/app/lib/core/widgets/stale_banner.dart new file mode 100644 index 0000000..ea13a01 --- /dev/null +++ b/app/lib/core/widgets/stale_banner.dart @@ -0,0 +1,36 @@ +import 'package:flutter/material.dart'; + +import '../utils/ru_date.dart'; + +/// "Нет соединения — данные на …": shown instead of pretending a screen built +/// from the offline cache is current. Pass the oldest `fetchedAt` among the +/// providers a screen watches (`core/cache/cached.dart`'s `oldestFetch`). +class StaleBanner extends StatelessWidget { + const StaleBanner({required this.fetchedAt, super.key}); + + final DateTime fetchedAt; + + @override + Widget build(BuildContext context) { + final scheme = Theme.of(context).colorScheme; + final at = fetchedAt.toLocal(); + final time = '${at.hour.toString().padLeft(2, '0')}:${at.minute.toString().padLeft(2, '0')}'; + return Container( + margin: const EdgeInsets.only(bottom: 12), + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8), + decoration: BoxDecoration(color: scheme.errorContainer, borderRadius: BorderRadius.circular(8)), + child: Row( + children: [ + Icon(Icons.cloud_off, size: 18, color: scheme.onErrorContainer), + const SizedBox(width: 8), + Expanded( + child: Text( + 'Нет соединения — данные на ${ruDate(at)} $time', + style: TextStyle(color: scheme.onErrorContainer), + ), + ), + ], + ), + ); + } +} diff --git a/app/lib/features/home/home_page.dart b/app/lib/features/home/home_page.dart index 887d3a7..2dbc34e 100644 --- a/app/lib/features/home/home_page.dart +++ b/app/lib/features/home/home_page.dart @@ -7,11 +7,13 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import '../../core/auth/auth_controller.dart'; +import '../../core/cache/cached.dart'; import '../../core/theme/chart_colors.dart'; import '../../core/utils/ru_date.dart'; import '../../core/widgets/async_value_view.dart'; import '../../core/widgets/empty_state.dart'; import '../../core/widgets/money_text.dart'; +import '../../core/widgets/stale_banner.dart'; import '../../core/api/api_client.dart'; import 'providers.dart'; @@ -109,6 +111,17 @@ class _HomePageState extends ConsumerState { final dataQuality = ref.watch(dataQualityProvider); final portfolio = ref.watch(portfolioSummaryHomeProvider); + final stale = oldestFetch([ + breakdown.valueOrNull?.fetchedAt, + series.valueOrNull?.fetchedAt, + thisMonth.valueOrNull?.fetchedAt, + last12.valueOrNull?.fetchedAt, + runway.valueOrNull?.fetchedAt, + status.valueOrNull?.fetchedAt, + dataQuality.valueOrNull?.fetchedAt, + portfolio.valueOrNull?.fetchedAt, + ]); + return Scaffold( appBar: AppBar( title: const Text('Обзор'), @@ -128,13 +141,15 @@ class _HomePageState extends ConsumerState { child: ListView( padding: const EdgeInsets.all(16), children: [ + if (stale != null) StaleBanner(fetchedAt: stale), Row( children: [ Expanded( child: AsyncValueView( value: status, onRetry: () => ref.invalidate(metricsStatusProvider), - data: (log) { + data: (cached) { + final log = cached.data; final at = log?.finishedAt ?? log?.startedAt; final text = at == null ? 'Данные ещё не пересчитывались' @@ -145,15 +160,18 @@ class _HomePageState extends ConsumerState { ), AsyncValueView( value: dataQuality, - data: (rows) => ActionChip( - avatar: Icon( - rows.isEmpty ? Icons.check_circle_outline : Icons.warning_amber_outlined, - size: 18, - color: rows.isEmpty ? Colors.green : _severityColor(rows.first.severity), - ), - label: Text(rows.isEmpty ? 'ок' : '${rows.length} замечаний'), - onPressed: rows.isEmpty ? null : () => _showDataQuality(rows), - ), + data: (cached) { + final rows = cached.data; + return ActionChip( + avatar: Icon( + rows.isEmpty ? Icons.check_circle_outline : Icons.warning_amber_outlined, + size: 18, + color: rows.isEmpty ? Colors.green : _severityColor(rows.first.severity), + ), + label: Text(rows.isEmpty ? 'ок' : '${rows.length} замечаний'), + onPressed: rows.isEmpty ? null : () => _showDataQuality(rows), + ); + }, ), ], ), @@ -161,7 +179,7 @@ class _HomePageState extends ConsumerState { AsyncValueView( value: breakdown, onRetry: () => ref.invalidate(netWorthBreakdownProvider), - data: (b) => _NetWorthTiles(breakdown: b), + data: (cached) => _NetWorthTiles(breakdown: cached.data), ), const SizedBox(height: 12), Row( @@ -170,7 +188,7 @@ class _HomePageState extends ConsumerState { child: AsyncValueView( value: thisMonth, onRetry: () => ref.invalidate(cashflowThisMonthProvider), - data: (m) => _MonthTiles(month: m), + data: (cached) => _MonthTiles(month: cached.data), ), ), ], @@ -179,13 +197,14 @@ class _HomePageState extends ConsumerState { AsyncValueView( value: portfolio, onRetry: () => ref.invalidate(portfolioSummaryHomeProvider), - data: (s) => s == null ? const SizedBox.shrink() : _PortfolioTiles(summary: s), + data: (cached) => + cached.data == null ? const SizedBox.shrink() : _PortfolioTiles(summary: cached.data!), ), const SizedBox(height: 12), AsyncValueView( value: runway, onRetry: () => ref.invalidate(runwayProvider), - data: (r) => _RunwayTile(runway: r), + data: (cached) => _RunwayTile(runway: cached.data), ), const SizedBox(height: 24), LayoutBuilder( @@ -196,9 +215,9 @@ class _HomePageState extends ConsumerState { child: AsyncValueView( value: series, onRetry: () => ref.invalidate(netWorthSeriesProvider), - data: (rows) => rows.isEmpty + data: (cached) => cached.data.isEmpty ? const EmptyState(icon: Icons.show_chart, message: 'Пока нет данных.') - : _NetWorthChart(rows: rows), + : _NetWorthChart(rows: cached.data), ), ); final cashflowChart = _ChartCard( @@ -206,9 +225,9 @@ class _HomePageState extends ConsumerState { child: AsyncValueView( value: last12, onRetry: () => ref.invalidate(cashflowLast12Provider), - data: (rows) => rows.isEmpty + data: (cached) => cached.data.isEmpty ? const EmptyState(icon: Icons.bar_chart, message: 'Пока нет данных.') - : _IncomeExpenseChart(rows: rows), + : _IncomeExpenseChart(rows: cached.data), ), ); if (wide) { diff --git a/app/lib/features/home/providers.dart b/app/lib/features/home/providers.dart index 7810fd6..49a948b 100644 --- a/app/lib/features/home/providers.dart +++ b/app/lib/features/home/providers.dart @@ -3,54 +3,58 @@ import 'package:fintracker_api/fintracker_api.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../core/api/api_client.dart'; +import '../../core/cache/cached.dart'; -final netWorthBreakdownProvider = FutureProvider.autoDispose((ref) async { +/// Every provider below returns `Cached`, not `T`: `HomePage` reads +/// `.data` for the tiles and `.fetchedAt` (via `oldestFetch`) for the one +/// offline banner at the top. See `docs/ai/offline-cache.md`. +final netWorthBreakdownProvider = FutureProvider.autoDispose>((ref) async { final r = await ref.watch(apiProvider).getNetworthApi().networthBreakdown(); - return r.data!; + return r.cached; }); /// Daily net worth for the last 365 days. -final netWorthSeriesProvider = FutureProvider.autoDispose>((ref) async { +final netWorthSeriesProvider = FutureProvider.autoDispose>>((ref) async { final now = DateTime.now(); final r = await ref.watch(apiProvider).getNetworthApi().networthSeries( from: now.subtract(const Duration(days: 365)), to: now, ); - return r.data ?? const []; + return Cached(r.data ?? const [], fetchedAt: r.extra['fetchedAt'] as DateTime?); }); /// The current (partial) month's cashflow, or null before any data exists. -final cashflowThisMonthProvider = FutureProvider.autoDispose((ref) async { +final cashflowThisMonthProvider = FutureProvider.autoDispose>((ref) async { final r = await ref.watch(apiProvider).getCashflowApi().cashflowMonthly(months: 1); final rows = r.data ?? const []; - return rows.isEmpty ? null : rows.last; + return Cached(rows.isEmpty ? null : rows.last, fetchedAt: r.extra['fetchedAt'] as DateTime?); }); /// The last 12 months, for the income-vs-expense bar chart. -final cashflowLast12Provider = FutureProvider.autoDispose>((ref) async { +final cashflowLast12Provider = FutureProvider.autoDispose>>((ref) async { final r = await ref.watch(apiProvider).getCashflowApi().cashflowMonthly(months: 12); - return r.data ?? const []; + return Cached(r.data ?? const [], fetchedAt: r.extra['fetchedAt'] as DateTime?); }); -final runwayProvider = FutureProvider.autoDispose((ref) async { +final runwayProvider = FutureProvider.autoDispose>((ref) async { final r = await ref.watch(apiProvider).getCashflowApi().cashflowRunway(); - return r.data!; + return r.cached; }); /// When the metric tables were last rebuilt; null before the first refresh. -final metricsStatusProvider = FutureProvider.autoDispose((ref) async { +final metricsStatusProvider = FutureProvider.autoDispose>((ref) async { try { final r = await ref.watch(apiProvider).getMetricsApi().metricsStatus(); - return r.data; + return r.cached; } on DioException catch (e) { - if (e.response?.statusCode == 404) return null; + if (e.response?.statusCode == 404) return const Cached(null); rethrow; } }); -final dataQualityProvider = FutureProvider.autoDispose>((ref) async { +final dataQualityProvider = FutureProvider.autoDispose>>((ref) async { final r = await ref.watch(apiProvider).getMetricsApi().metricsDataQuality(); - return r.data ?? const []; + return Cached(r.data ?? const [], fetchedAt: r.extra['fetchedAt'] as DateTime?); }); /// Every dashboard provider, refreshed together after a manual @@ -68,12 +72,12 @@ void invalidateHomeProviders(WidgetRef ref) { /// The investment side of the dashboard: one scope-wide summary, `all` by default. /// Null when the ledger is empty, which is the normal state before a broker sync. -final portfolioSummaryHomeProvider = FutureProvider.autoDispose((ref) async { +final portfolioSummaryHomeProvider = FutureProvider.autoDispose>((ref) async { try { final r = await ref.watch(apiProvider).getAnalyticsApi().analyticsSummary(); - return r.data; + return r.cached; } on DioException catch (e) { - if (e.response?.statusCode == 404) return null; + if (e.response?.statusCode == 404) return const Cached(null); rethrow; } }); diff --git a/app/pubspec.lock b/app/pubspec.lock index 3870532..0a08c17 100644 --- a/app/pubspec.lock +++ b/app/pubspec.lock @@ -1,6 +1,22 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: fdcd9f70f9eb80df3bc5ed0fa67280df2595fd481948df8a9ab082e6a40ad04b + url: "https://pub.dev" + source: hosted + version: "108.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: a51c769bff3b6dfbe9d60199b8606d808290702a296bef0c26a4ca391d414e46 + url: "https://pub.dev" + source: hosted + version: "14.4.0" args: dependency: transitive description: @@ -25,6 +41,54 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" + build: + dependency: transitive + description: + name: build + sha256: "8a5c5761af8e31748bba3c82f68925ace40f3225c3eea25be9beb57eca7cd7a8" + url: "https://pub.dev" + source: hosted + version: "4.0.11" + build_config: + dependency: transitive + description: + name: build_config + sha256: d466ed2dc9c6cd1d169948879b84ee061eb5e22c64a7c6089879c6296d272a8d + url: "https://pub.dev" + source: hosted + version: "1.3.3" + build_daemon: + dependency: transitive + description: + name: build_daemon + sha256: e1d40ef3f7934986d5da2271b1ba07794921ce263e44d622fb6c406d76589e33 + url: "https://pub.dev" + source: hosted + version: "4.1.6" + build_runner: + dependency: "direct dev" + description: + name: build_runner + sha256: "894c243f6bc32015fec466ce30a6925bd537a77a426ee5bf481120477eb3de67" + url: "https://pub.dev" + source: hosted + version: "2.16.1" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: f87ea98192116f7093cb214551ce1929caae0681fdba282b3d8b4462adee7bb7 + url: "https://pub.dev" + source: hosted + version: "8.13.0" characters: dependency: transitive description: @@ -33,6 +97,30 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.1" + charcode: + dependency: transitive + description: + name: charcode + sha256: fb0f1107cac15a5ea6ef0a6ef71a807b9e4267c713bb93e00e92d737cc8dbd8a + url: "https://pub.dev" + source: hosted + version: "1.4.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" + url: "https://pub.dev" + source: hosted + version: "2.0.4" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: "71e43f1976c3eae2d9468a5b4d6600bf8cae61508b87f27fa1799228935d48ab" + url: "https://pub.dev" + source: hosted + version: "0.5.2" clock: dependency: transitive description: @@ -57,6 +145,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.19.1" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" copy_with_extension: dependency: transitive description: @@ -81,6 +177,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.7" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "82ade9fc4273f29ed673e33166944465225b4f7fc5d4aaef48605cc751c18fc1" + url: "https://pub.dev" + source: hosted + version: "3.1.13" dbus: dependency: transitive description: @@ -113,6 +217,30 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.2" + drift: + dependency: "direct main" + description: + name: drift + sha256: e3b6352aa02e60bed6ffc3cc9894c421578dad5fbef21b1f7f57cdc0e4edabcb + url: "https://pub.dev" + source: hosted + version: "2.35.0" + drift_dev: + dependency: "direct dev" + description: + name: drift_dev + sha256: fbad5c1e3a73820cdb1f32161eb2f40bb5e5f03c0c1a3d236595725aec7efc6d + url: "https://pub.dev" + source: hosted + version: "2.35.0" + drift_flutter: + dependency: "direct main" + description: + name: drift_flutter + sha256: "91acf4bee7c3c84467cba46455aa70e5292a3b889f4582645d74f2e5a8c106f2" + url: "https://pub.dev" + source: hosted + version: "0.3.1" equatable: dependency: transitive description: @@ -160,6 +288,14 @@ packages: relative: true source: path version: "0.1.0" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" + source: hosted + version: "1.1.1" fl_chart: dependency: "direct main" description: @@ -260,6 +396,14 @@ packages: description: flutter source: sdk version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: "218aeb56050c714f62a3182775320dfa04602b55074873e24e31bbd39bda96fb" + url: "https://pub.dev" + source: hosted + version: "2.2.0" go_router: dependency: "direct main" description: @@ -268,6 +412,14 @@ packages: url: "https://pub.dev" source: hosted version: "14.8.1" + graphs: + dependency: transitive + description: + name: graphs + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" + url: "https://pub.dev" + source: hosted + version: "2.3.2" hooks: dependency: transitive description: @@ -276,6 +428,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.2" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 + url: "https://pub.dev" + source: hosted + version: "3.2.2" http_parser: dependency: transitive description: @@ -292,6 +452,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.20.3" + io: + dependency: transitive + description: + name: io + sha256: "2635216ca6a737e60de577ffa1a48a0bec76ca8a62917cfc1bb88c14c570646f" + url: "https://pub.dev" + source: hosted + version: "1.1.0" jni: dependency: transitive description: @@ -404,6 +572,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.0" + native_toolchain_c: + dependency: transitive + description: + name: native_toolchain_c + sha256: f9c168717100ae6d9fee9ffb0be379bf1f8b26b0f6bcbd4fdddcd931993a6a72 + url: "https://pub.dev" + source: hosted + version: "0.19.2" objective_c: dependency: transitive description: @@ -429,7 +605,7 @@ packages: source: hosted version: "1.9.1" path_provider: - dependency: transitive + dependency: "direct main" description: name: path_provider sha256: a7f4874f987173da295a61c181b8ee71dab59b332a486b391babf26a1b884825 @@ -500,6 +676,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" + pool: + dependency: transitive + description: + name: pool + sha256: "4177f68c237ea2128d1bee66ac17b2ce05ba3dbaafcbdd54c5d40a39d0b6b11c" + url: "https://pub.dev" + source: hosted + version: "1.5.3" pub_semver: dependency: transitive description: @@ -508,6 +692,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.1" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: c38b81cbf34450b67e0265d73433569d12e34782e30ed769c9cc99c9d5f2e796 + url: "https://pub.dev" + source: hosted + version: "1.6.0" rational: dependency: transitive description: @@ -516,6 +708,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.3" + recase: + dependency: transitive + description: + name: recase + sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213 + url: "https://pub.dev" + source: hosted + version: "4.1.0" record_use: dependency: transitive description: @@ -588,11 +788,35 @@ packages: url: "https://pub.dev" source: hosted version: "2.4.1" + shelf: + dependency: transitive + description: + name: shelf + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 + url: "https://pub.dev" + source: hosted + version: "1.4.2" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" + url: "https://pub.dev" + source: hosted + version: "3.0.0" sky_engine: dependency: transitive description: flutter source: sdk version: "0.0.0" + source_gen: + dependency: transitive + description: + name: source_gen + sha256: "11b6047da8e4eb6c643ccac3d0fda3f9c9e11651695f7da24a85ade8aff15a44" + url: "https://pub.dev" + source: hosted + version: "4.3.0" source_span: dependency: transitive description: @@ -601,6 +825,38 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.2" + sqlcipher_flutter_libs: + dependency: transitive + description: + name: sqlcipher_flutter_libs + sha256: "38d62d659d2fb8739bf25a42c9a350d1fdd6c29a5a61f13a946778ec75d27929" + url: "https://pub.dev" + source: hosted + version: "0.7.0+eol" + sqlite3: + dependency: transitive + description: + name: sqlite3 + sha256: "4c7fe79840389aaeaf05fd093f795b631b5a98e2bd28d54e555c100f4a9c7a1c" + url: "https://pub.dev" + source: hosted + version: "3.5.2" + sqlite3_flutter_libs: + dependency: transitive + description: + name: sqlite3_flutter_libs + sha256: "3ed7553eee7bb368f8950f58ba29f634e06e813c029aff6a0d60862b96de8454" + url: "https://pub.dev" + source: hosted + version: "0.6.0+eol" + sqlparser: + dependency: transitive + description: + name: sqlparser + sha256: "772bb2f6f5bce0631a60f26b57d6e8882e1105c22345b05c163ee6ee5d7ba32d" + url: "https://pub.dev" + source: hosted + version: "0.45.0" stack_trace: dependency: transitive description: @@ -625,6 +881,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: a00e5f18bffc764f923e7dec1038527f7fe7a1791361a7117f0358193f13d53a + url: "https://pub.dev" + source: hosted + version: "2.1.2" string_scanner: dependency: transitive description: @@ -673,6 +937,14 @@ packages: url: "https://pub.dev" source: hosted version: "15.3.0" + watcher: + dependency: transitive + description: + name: watcher + sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635" + url: "https://pub.dev" + source: hosted + version: "1.2.1" web: dependency: transitive description: @@ -681,6 +953,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 + url: "https://pub.dev" + source: hosted + version: "3.0.3" win32: dependency: transitive description: @@ -713,6 +1001,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.4" + yaml_edit: + dependency: transitive + description: + name: yaml_edit + sha256: "07c9e63ba42519745182b88ca12264a7ba2484d8239958778dfe4d44fe760488" + url: "https://pub.dev" + source: hosted + version: "2.2.4" sdks: dart: ">=3.13.3 <4.0.0" flutter: ">=3.44.0" diff --git a/app/pubspec.yaml b/app/pubspec.yaml index afe1cfc..3c555b2 100644 --- a/app/pubspec.yaml +++ b/app/pubspec.yaml @@ -22,11 +22,16 @@ dependencies: fl_chart: ^0.69.0 shared_preferences: ^2.3.4 file_picker: ^11.0.3 + drift: ^2.35.0 + drift_flutter: ^0.3.1 + path_provider: ^2.1.6 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^6.0.0 + drift_dev: ^2.35.0 + build_runner: ^2.16.1 flutter: uses-material-design: true diff --git a/app/test/cache_interceptor_test.dart b/app/test/cache_interceptor_test.dart new file mode 100644 index 0000000..f350855 --- /dev/null +++ b/app/test/cache_interceptor_test.dart @@ -0,0 +1,122 @@ +import 'package:dio/dio.dart'; +import 'package:drift/native.dart'; +import 'package:fintracker_app/core/cache/cache_interceptor.dart'; +import 'package:fintracker_app/core/cache/response_cache.dart'; +import 'package:flutter_test/flutter_test.dart'; + +/// `onResponse`/`onError` complete synchronously in `CacheInterceptor` — no +/// real Dio transport needed, same approach as `date_query_interceptor_test.dart`. +class _ResponseCapture extends ResponseInterceptorHandler { + Response? passed; + @override + void next(Response response) => passed = response; +} + +class _ErrorCapture extends ErrorInterceptorHandler { + Response? resolvedResponse; + DioException? forwarded; + + @override + void resolve(Response response) => resolvedResponse = response; + + @override + void next(DioException error) => forwarded = error; +} + +RequestOptions _request(String method, String path, [Map query = const {}]) => + RequestOptions(path: path, method: method, queryParameters: query); + +DioException _offline(RequestOptions options) => + DioException(requestOptions: options, type: DioExceptionType.connectionError); + +void main() { + late ResponseCacheDatabase db; + late CacheInterceptor interceptor; + + setUp(() { + db = ResponseCacheDatabase.forTesting(NativeDatabase.memory()); + interceptor = CacheInterceptor(db); + }); + + tearDown(() => db.close()); + + test('a successful GET is written to the cache', () async { + final options = _request('GET', '/networth/breakdown'); + + interceptor.onResponse( + Response(requestOptions: options, statusCode: 200, data: {'totalRub': '100'}), + _ResponseCapture(), + ); + await pumpEventQueue(); // the write is fire-and-forget + + final cached = await db.get(CacheInterceptor.requestKey(options)); + expect(cached?.body, {'totalRub': '100'}); + }); + + test('a connection error is answered from the cache, with fetchedAt set', () async { + final options = _request('GET', '/networth/breakdown'); + await db.put(CacheInterceptor.requestKey(options), {'totalRub': '100'}); + + final handler = _ErrorCapture(); + await interceptor.onError(_offline(options), handler); + + expect(handler.resolvedResponse?.data, {'totalRub': '100'}); + expect(handler.resolvedResponse?.extra['fetchedAt'], isA()); + expect(handler.forwarded, isNull); + }); + + test('a connection error with nothing cached still fails', () async { + final options = _request('GET', '/networth/breakdown', {'never': 'asked'}); + final failure = _offline(options); + final handler = _ErrorCapture(); + + await interceptor.onError(failure, handler); + + expect(handler.resolvedResponse, isNull); + expect(handler.forwarded, same(failure)); + }); + + test('a real server error is never masked by a cached answer', () async { + final options = _request('GET', '/networth/breakdown'); + await db.put(CacheInterceptor.requestKey(options), {'totalRub': '100'}); + + final serverError = DioException( + requestOptions: options, + type: DioExceptionType.badResponse, + response: Response(requestOptions: options, statusCode: 500), + ); + final handler = _ErrorCapture(); + await interceptor.onError(serverError, handler); + + expect(handler.resolvedResponse, isNull); + expect(handler.forwarded, same(serverError)); + }); + + test('a failed mutation is never served from the cache', () async { + final options = _request('POST', '/links'); + final failure = _offline(options); + final handler = _ErrorCapture(); + + await interceptor.onError(failure, handler); + + expect(handler.resolvedResponse, isNull); + expect(handler.forwarded, same(failure)); + }); + + test('query parameters are part of the cache key', () async { + final page1 = _request('GET', '/events', {'page': 1}); + final page2 = _request('GET', '/events', {'page': 2}); + await db.put(CacheInterceptor.requestKey(page1), 'page1'); + + final handler = _ErrorCapture(); + await interceptor.onError(_offline(page2), handler); + + expect(handler.resolvedResponse, isNull); // page=2 was never cached + }); + + test('the key ignores query parameter order', () { + final a = _request('GET', '/events', {'a': 1, 'b': 2}); + final b = _request('GET', '/events', {'b': 2, 'a': 1}); + expect(CacheInterceptor.requestKey(a), CacheInterceptor.requestKey(b)); + }); +} diff --git a/app/test/home_page_test.dart b/app/test/home_page_test.dart index 36342af..6fafe6c 100644 --- a/app/test/home_page_test.dart +++ b/app/test/home_page_test.dart @@ -1,4 +1,5 @@ import 'package:fintracker_api/fintracker_api.dart'; +import 'package:fintracker_app/core/cache/cached.dart'; import 'package:fintracker_app/core/widgets/money_text.dart'; import 'package:fintracker_app/features/home/home_page.dart'; import 'package:fintracker_app/features/home/providers.dart'; @@ -6,9 +7,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; -void main() { - testWidgets('Обзор renders stat tiles from a net worth breakdown', (tester) async { - final breakdown = NetWorthBreakdown( +NetWorthBreakdown _breakdown() => NetWorthBreakdown( accounts: const [], byCurrency: const {'RUB': '123456.78'}, d: DateTime(2026, 9, 17), @@ -20,22 +19,33 @@ void main() { totalRub: '123456.78', ); +RunwayOut _runway() => RunwayOut( + asOf: DateTime(2026, 9, 17), + avgBaseline3mRub: '0', + liquidReserveRub: '0', + runwayMonths: null, + ); + +// Every provider HomePage watches needs an override — including +// portfolioSummaryHomeProvider, easy to forget since it renders nothing on an +// empty ledger. Without it, HomePage falls through to the real apiProvider, +// which now also opens a real ResponseCacheDatabase (see docs/ai/offline-cache.md). +List _overrides({DateTime? staleAt}) => [ + netWorthBreakdownProvider.overrideWith((ref) => Cached(_breakdown(), fetchedAt: staleAt)), + netWorthSeriesProvider.overrideWith((ref) => Cached(const [], fetchedAt: staleAt)), + cashflowThisMonthProvider.overrideWith((ref) => Cached(null, fetchedAt: staleAt)), + cashflowLast12Provider.overrideWith((ref) => Cached(const [], fetchedAt: staleAt)), + runwayProvider.overrideWith((ref) => Cached(_runway(), fetchedAt: staleAt)), + metricsStatusProvider.overrideWith((ref) => Cached(null, fetchedAt: staleAt)), + dataQualityProvider.overrideWith((ref) => Cached(const [], fetchedAt: staleAt)), + portfolioSummaryHomeProvider.overrideWith((ref) => Cached(null, fetchedAt: staleAt)), + ]; + +void main() { + testWidgets('Обзор renders stat tiles from a net worth breakdown', (tester) async { await tester.pumpWidget( ProviderScope( - overrides: [ - netWorthBreakdownProvider.overrideWith((ref) => breakdown), - netWorthSeriesProvider.overrideWith((ref) => const []), - cashflowThisMonthProvider.overrideWith((ref) => null), - cashflowLast12Provider.overrideWith((ref) => const []), - runwayProvider.overrideWith((ref) => RunwayOut( - asOf: DateTime(2026, 9, 17), - avgBaseline3mRub: '0', - liquidReserveRub: '0', - runwayMonths: null, - )), - metricsStatusProvider.overrideWith((ref) => null), - dataQualityProvider.overrideWith((ref) => const []), - ], + overrides: _overrides(), child: const MaterialApp(home: HomePage()), ), ); @@ -47,5 +57,18 @@ void main() { expect(find.text(MoneyText.format('3000', 'RUB')), findsOneWidget); expect(find.text('Долги'), findsOneWidget); expect(find.text(MoneyText.format('1000', 'RUB')), findsOneWidget); + expect(find.textContaining('Нет соединения'), findsNothing); + }); + + testWidgets('shows the offline banner when the dashboard came from the cache', (tester) async { + await tester.pumpWidget( + ProviderScope( + overrides: _overrides(staleAt: DateTime(2026, 9, 10, 8, 30)), + child: const MaterialApp(home: HomePage()), + ), + ); + await tester.pumpAndSettle(); + + expect(find.textContaining('Нет соединения — данные на 10.09.2026 08:30'), findsOneWidget); }); } diff --git a/app/web/drift_worker.js b/app/web/drift_worker.js new file mode 100644 index 0000000..1f35972 --- /dev/null +++ b/app/web/drift_worker.js @@ -0,0 +1,14492 @@ +(function dartProgram(){function copyProperties(a,b){var s=Object.keys(a) +for(var r=0;r=0)return true +if(typeof version=="function"&&version.length==0){var q=version() +if(/^\d+\.\d+\.\d+\.\d+$/.test(q))return true}}catch(p){}return false}() +function inherit(a,b){a.prototype.constructor=a +a.prototype["$i"+a.name]=a +if(b!=null){if(z){Object.setPrototypeOf(a.prototype,b.prototype) +return}var s=Object.create(b.prototype) +copyProperties(a.prototype,s) +a.prototype=s}}function inheritMany(a,b){for(var s=0;s4294967295)throw A.c(A.a5(a,0,4294967295,"length",null)) +return J.uZ(new Array(a),b)}, +qu(a,b){if(a<0)throw A.c(A.T("Length must be a non-negative integer: "+a,null)) +return A.k(new Array(a),b.h("y<0>"))}, +uZ(a,b){var s=A.k(a,b.h("y<0>")) +s.$flags=1 +return s}, +v_(a,b){var s=t.bP +return J.uk(s.a(a),s.a(b))}, +qv(a){if(a<256)switch(a){case 9:case 10:case 11:case 12:case 13:case 32:case 133:case 160:return!0 +default:return!1}switch(a){case 5760:case 8192:case 8193:case 8194:case 8195:case 8196:case 8197:case 8198:case 8199:case 8200:case 8201:case 8202:case 8232:case 8233:case 8239:case 8287:case 12288:case 65279:return!0 +default:return!1}}, +v0(a,b){var s,r +for(s=a.length;b0;b=r){r=b-1 +if(!(r>>0===b&&b").u(c).h("fM<1,2>")) +return new A.d5(a,b.h("@<0>").u(c).h("d5<1,2>"))}, +qw(a){return new A.dT("Field '"+a+"' has been assigned during initialization.")}, +qx(a){return new A.dT("Field '"+a+"' has not been initialized.")}, +v2(a){return new A.dT("Field '"+a+"' has already been initialized.")}, +ou(a){var s,r=a^48 +if(r<=9)return r +s=a|32 +if(97<=s&&s<=102)return s-87 +return-1}, +cO(a,b){a=a+b&536870911 +a=a+((a&524287)<<10)&536870911 +return a^a>>>6}, +pc(a){a=a+((a&67108863)<<3)&536870911 +a^=a>>>11 +return a+((a&16383)<<15)&536870911}, +dB(a,b,c){return a}, +pN(a){var s,r +for(s=$.bh.length,r=0;rc)A.J(A.a5(b,0,c,"start",null))}return new A.df(a,b,c,d.h("df<0>"))}, +ig(a,b,c,d){if(t.W.b(a))return new A.d8(a,b,c.h("@<0>").u(d).h("d8<1,2>")) +return new A.aS(a,b,c.h("@<0>").u(d).h("aS<1,2>"))}, +pd(a,b,c){var s="takeCount" +A.cp(b,s,t.S) +A.al(b,s) +if(t.W.b(a))return new A.f_(a,b,c.h("f_<0>")) +return new A.dg(a,b,c.h("dg<0>"))}, +qT(a,b,c){var s="count" +if(t.W.b(a)){A.cp(b,s,t.S) +A.al(b,s) +return new A.dO(a,b,c.h("dO<0>"))}A.cp(b,s,t.S) +A.al(b,s) +return new A.cc(a,b,c.h("cc<0>"))}, +uX(a,b,c){return new A.d7(a,b,c.h("d7<0>"))}, +aE(){return new A.aU("No element")}, +qs(){return new A.aU("Too few elements")}, +cU:function cU(){}, +eT:function eT(a,b){this.a=a +this.$ti=b}, +d5:function d5(a,b){this.a=a +this.$ti=b}, +fM:function fM(a,b){this.a=a +this.$ti=b}, +fI:function fI(){}, +as:function as(a,b){this.a=a +this.$ti=b}, +dT:function dT(a){this.a=a}, +hH:function hH(a){this.a=a}, +oB:function oB(){}, +lu:function lu(){}, +w:function w(){}, +P:function P(){}, +df:function df(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.$ti=d}, +bb:function bb(a,b,c){var _=this +_.a=a +_.b=b +_.c=0 +_.d=null +_.$ti=c}, +aS:function aS(a,b,c){this.a=a +this.b=b +this.$ti=c}, +d8:function d8(a,b,c){this.a=a +this.b=b +this.$ti=c}, +dd:function dd(a,b,c){var _=this +_.a=null +_.b=a +_.c=b +_.$ti=c}, +K:function K(a,b,c){this.a=a +this.b=b +this.$ti=c}, +b3:function b3(a,b,c){this.a=a +this.b=b +this.$ti=c}, +bC:function bC(a,b,c){this.a=a +this.b=b +this.$ti=c}, +f2:function f2(a,b,c){this.a=a +this.b=b +this.$ti=c}, +f3:function f3(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=null +_.$ti=d}, +dg:function dg(a,b,c){this.a=a +this.b=b +this.$ti=c}, +f_:function f_(a,b,c){this.a=a +this.b=b +this.$ti=c}, +fw:function fw(a,b,c){this.a=a +this.b=b +this.$ti=c}, +cc:function cc(a,b,c){this.a=a +this.b=b +this.$ti=c}, +dO:function dO(a,b,c){this.a=a +this.b=b +this.$ti=c}, +fp:function fp(a,b,c){this.a=a +this.b=b +this.$ti=c}, +fq:function fq(a,b,c){this.a=a +this.b=b +this.$ti=c}, +fr:function fr(a,b,c){var _=this +_.a=a +_.b=b +_.c=!1 +_.$ti=c}, +d9:function d9(a){this.$ti=a}, +f0:function f0(a){this.$ti=a}, +fA:function fA(a,b){this.a=a +this.$ti=b}, +fB:function fB(a,b){this.a=a +this.$ti=b}, +c1:function c1(a,b,c){this.a=a +this.b=b +this.$ti=c}, +d7:function d7(a,b,c){this.a=a +this.b=b +this.$ti=c}, +db:function db(a,b,c){var _=this +_.a=a +_.b=b +_.c=-1 +_.$ti=c}, +aO:function aO(){}, +cQ:function cQ(){}, +e8:function e8(){}, +fn:function fn(a,b){this.a=a +this.$ti=b}, +iG:function iG(a){this.a=a}, +hm:function hm(){}, +uD(){throw A.c(A.aa("Cannot modify unmodifiable Map"))}, +tu(a){var s=A.tt(a) +if(s!=null)return s +return"minified:"+a}, +yg(a,b){var s +if(b!=null){s=b.x +if(s!=null)return s}return t.dX.b(a)}, +x(a){var s +if(typeof a=="string")return a +if(typeof a=="number"){if(a!==0)return""+a}else if(!0===a)return"true" +else if(!1===a)return"false" +else if(a==null)return"null" +s=J.bi(a) +return s}, +fk(a){var s,r=$.qE +if(r==null)r=$.qE=Symbol("identityHashCode") +s=a[r] +if(s==null){s=Math.random()*0x3fffffff|0 +a[r]=s}return s}, +qL(a,b){var s,r,q,p,o,n=null,m=/^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i.exec(a) +if(m==null)return n +if(3>=m.length)return A.b(m,3) +s=m[3] +if(b==null){if(s!=null)return parseInt(a,10) +if(m[2]!=null)return parseInt(a,16) +return n}if(b<2||b>36)throw A.c(A.a5(b,2,36,"radix",n)) +if(b===10&&s!=null)return parseInt(a,10) +if(b<10||s==null){r=b<=10?47+b:86+b +q=m[1] +for(p=q.length,o=0;or)return n}return parseInt(a,b)}, +iw(a){var s,r,q,p +if(a instanceof A.h)return A.aY(A.aK(a),null) +s=J.dC(a) +if(s===B.aw||s===B.az||t.cx.b(a)){r=B.L(a) +if(r!=="Object"&&r!=="")return r +q=a.constructor +if(typeof q=="function"){p=q.name +if(typeof p=="string"&&p!=="Object"&&p!=="")return p}}return A.aY(A.aK(a),null)}, +qM(a){var s,r,q +if(a==null||typeof a=="number"||A.cm(a))return J.bi(a) +if(typeof a=="string")return JSON.stringify(a) +if(a instanceof A.aN)return a.i(0) +if(a instanceof A.ck)return a.fZ(!0) +s=$.u7() +for(r=0;r<1;++r){q=s[r].kP(a) +if(q!=null)return q}return"Instance of '"+A.iw(a)+"'"}, +vc(){if(!!self.location)return self.location.href +return null}, +qD(a){var s,r,q,p,o=a.length +if(o<=500)return String.fromCharCode.apply(null,a) +for(s="",r=0;r65535)return A.vg(a)}return A.qD(a)}, +vh(a,b,c){var s,r,q,p +if(c<=500&&b===0&&c===a.length)return String.fromCharCode.apply(null,a) +for(s=b,r="";s>>0,s&1023|56320)}}throw A.c(A.a5(a,0,1114111,null,null))}, +aT(a){if(a.date===void 0)a.date=new Date(a.a) +return a.date}, +qK(a){return a.c?A.aT(a).getUTCFullYear()+0:A.aT(a).getFullYear()+0}, +qI(a){return a.c?A.aT(a).getUTCMonth()+1:A.aT(a).getMonth()+1}, +qF(a){return a.c?A.aT(a).getUTCDate()+0:A.aT(a).getDate()+0}, +qG(a){return a.c?A.aT(a).getUTCHours()+0:A.aT(a).getHours()+0}, +qH(a){return a.c?A.aT(a).getUTCMinutes()+0:A.aT(a).getMinutes()+0}, +qJ(a){return a.c?A.aT(a).getUTCSeconds()+0:A.aT(a).getSeconds()+0}, +ve(a){return a.c?A.aT(a).getUTCMilliseconds()+0:A.aT(a).getMilliseconds()+0}, +vf(a){return B.c.ac((a.c?A.aT(a).getUTCDay()+0:A.aT(a).getDay()+0)+6,7)+1}, +vd(a){var s=a.$thrownJsError +if(s==null)return null +return A.ae(s)}, +fl(a,b){var s +if(a.$thrownJsError==null){s=new Error() +A.ah(a,s) +a.$thrownJsError=s +s.stack=b.i(0)}}, +ya(a){throw A.c(A.dA(a))}, +b(a,b){if(a==null)J.aD(a) +throw A.c(A.ht(a,b))}, +ht(a,b){var s,r="index" +if(!A.bZ(b))return new A.bt(!0,b,r,null) +s=A.d(J.aD(a)) +if(b<0||b>=s)return A.i1(b,s,a,null,r) +return A.lp(b,r)}, +y1(a,b,c){if(a>c)return A.a5(a,0,c,"start",null) +if(b!=null)if(bc)return A.a5(b,a,c,"end",null) +return new A.bt(!0,b,"end",null)}, +dA(a){return new A.bt(!0,a,null,null)}, +c(a){return A.ah(a,new Error())}, +ah(a,b){var s +if(a==null)a=new A.ce() +b.dartException=a +s=A.yG +if("defineProperty" in Object){Object.defineProperty(b,"message",{get:s}) +b.name=""}else b.toString=s +return b}, +yG(){return J.bi(this.dartException)}, +J(a,b){throw A.ah(a,b==null?new Error():b)}, +E(a,b,c){var s +if(b==null)b=0 +if(c==null)c=0 +s=Error() +A.J(A.wR(a,b,c),s)}, +wR(a,b,c){var s,r,q,p,o,n,m,l,k +if(typeof b=="string")s=b +else{r="[]=;add;removeWhere;retainWhere;removeRange;setRange;setInt8;setInt16;setInt32;setUint8;setUint16;setUint32;setFloat32;setFloat64".split(";") +q=r.length +p=b +if(p>q){c=p/q|0 +p%=q}s=r[p]}o=typeof c=="string"?c:"modify;remove from;add to".split(";")[c] +n=t.j.b(a)?"list":"ByteData" +m=a.$flags|0 +l="a " +if((m&4)!==0)k="constant " +else if((m&2)!==0){k="unmodifiable " +l="an "}else k=(m&1)!==0?"fixed-length ":"" +return new A.fx("'"+s+"': Cannot "+o+" "+l+k+n)}, +Z(a){throw A.c(A.ay(a))}, +cf(a){var s,r,q,p,o,n +a=A.tr(a.replace(String({}),"$receiver$")) +s=a.match(/\\\$[a-zA-Z]+\\\$/g) +if(s==null)s=A.k([],t.s) +r=s.indexOf("\\$arguments\\$") +q=s.indexOf("\\$argumentsExpr\\$") +p=s.indexOf("\\$expr\\$") +o=s.indexOf("\\$method\\$") +n=s.indexOf("\\$receiver\\$") +return new A.m7(a.replace(new RegExp("\\\\\\$arguments\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$","g"),"((?:x|[^x])*)"),r,q,p,o,n)}, +m8(a){return function($expr$){var $argumentsExpr$="$arguments$" +try{$expr$.$method$($argumentsExpr$)}catch(s){return s.message}}(a)}, +r1(a){return function($expr$){try{$expr$.$method$}catch(s){return s.message}}(a)}, +p3(a,b){var s=b==null,r=s?null:b.method +return new A.ib(a,r,s?null:b.receiver)}, +S(a){var s +if(a==null)return new A.iq(a) +if(a instanceof A.f1){s=a.a +return A.d1(a,s==null?A.a2(s):s)}if(typeof a!=="object")return a +if("dartException" in a)return A.d1(a,a.dartException) +return A.xA(a)}, +d1(a,b){if(t.T.b(b))if(b.$thrownJsError==null)b.$thrownJsError=a +return b}, +xA(a){var s,r,q,p,o,n,m,l,k,j,i,h,g +if(!("message" in a))return a +s=a.message +if("number" in a&&typeof a.number=="number"){r=a.number +q=r&65535 +if((B.c.L(r,16)&8191)===10)switch(q){case 438:return A.d1(a,A.p3(A.x(s)+" (Error "+q+")",null)) +case 445:case 5007:A.x(s) +return A.d1(a,new A.fg())}}if(a instanceof TypeError){p=$.tD() +o=$.tE() +n=$.tF() +m=$.tG() +l=$.tJ() +k=$.tK() +j=$.tI() +$.tH() +i=$.tM() +h=$.tL() +g=p.aA(s) +if(g!=null)return A.d1(a,A.p3(A.v(s),g)) +else{g=o.aA(s) +if(g!=null){g.method="call" +return A.d1(a,A.p3(A.v(s),g))}else if(n.aA(s)!=null||m.aA(s)!=null||l.aA(s)!=null||k.aA(s)!=null||j.aA(s)!=null||m.aA(s)!=null||i.aA(s)!=null||h.aA(s)!=null){A.v(s) +return A.d1(a,new A.fg())}}return A.d1(a,new A.iK(typeof s=="string"?s:""))}if(a instanceof RangeError){if(typeof s=="string"&&s.indexOf("call stack")!==-1)return new A.ft() +s=function(b){try{return String(b)}catch(f){}return null}(a) +return A.d1(a,new A.bt(!1,null,null,typeof s=="string"?s.replace(/^RangeError:\s*/,""):s))}if(typeof InternalError=="function"&&a instanceof InternalError)if(typeof s=="string"&&s==="too much recursion")return new A.ft() +return a}, +ae(a){var s +if(a instanceof A.f1)return a.b +if(a==null)return new A.h7(a) +s=a.$cachedTrace +if(s!=null)return s +s=new A.h7(a) +if(typeof a==="object")a.$cachedTrace=s +return s}, +pP(a){if(a==null)return J.aM(a) +if(typeof a=="object")return A.fk(a) +return J.aM(a)}, +y3(a,b){var s,r,q,p=a.length +for(s=0;s=0 +else if(b instanceof A.cy){s=B.a.K(a,c) +return b.b.test(s)}else return!J.oO(b,B.a.K(a,c)).gC(0)}, +pJ(a){if(a.indexOf("$",0)>=0)return a.replace(/\$/g,"$$$$") +return a}, +yC(a,b,c,d){var s=b.fq(a,d) +if(s==null)return a +return A.pU(a,s.b.index,s.gbz(),c)}, +tr(a){if(/[[\]{}()*+?.\\^$|]/.test(a))return a.replace(/[[\]{}()*+?.\\^$|]/g,"\\$&") +return a}, +bH(a,b,c){var s +if(typeof b=="string")return A.yB(a,b,c) +if(b instanceof A.cy){s=b.gfD() +s.lastIndex=0 +return a.replace(s,A.pJ(c))}return A.yA(a,b,c)}, +yA(a,b,c){var s,r,q,p +for(s=J.oO(b,a),s=s.gv(s),r=0,q="";s.k();){p=s.gn() +q=q+a.substring(r,p.gcC())+c +r=p.gbz()}s=q+a.substring(r) +return s.charCodeAt(0)==0?s:s}, +yB(a,b,c){var s,r,q +if(b===""){if(a==="")return c +s=a.length +for(r=c,q=0;q=0)return a.split(b).join(c) +return a.replace(new RegExp(A.tr(b),"g"),A.pJ(c))}, +yD(a,b,c,d){var s,r,q,p +if(typeof b=="string"){s=a.indexOf(b,d) +if(s<0)return a +return A.pU(a,s,s+b.length,c)}if(b instanceof A.cy)return d===0?a.replace(b.b,A.pJ(c)):A.yC(a,b,c,d) +r=J.ui(b,a,d) +q=r.gv(r) +if(!q.k())return a +p=q.gn() +return B.a.aO(a,p.gcC(),p.gbz(),c)}, +pU(a,b,c,d){return a.substring(0,b)+d+a.substring(c)}, +am:function am(a,b){this.a=a +this.b=b}, +cW:function cW(a,b){this.a=a +this.b=b}, +h5:function h5(a,b){this.a=a +this.b=b}, +eV:function eV(){}, +d6:function d6(a,b,c){this.a=a +this.b=b +this.$ti=c}, +dt:function dt(a,b){this.a=a +this.$ti=b}, +fW:function fW(a,b,c){var _=this +_.a=a +_.b=b +_.c=0 +_.d=null +_.$ti=c}, +i3:function i3(){}, +dQ:function dQ(a,b){this.a=a +this.$ti=b}, +fo:function fo(){}, +m7:function m7(a,b,c,d,e,f){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f}, +fg:function fg(){}, +ib:function ib(a,b,c){this.a=a +this.b=b +this.c=c}, +iK:function iK(a){this.a=a}, +iq:function iq(a){this.a=a}, +f1:function f1(a,b){this.a=a +this.b=b}, +h7:function h7(a){this.a=a +this.b=null}, +aN:function aN(){}, +hF:function hF(){}, +hG:function hG(){}, +iH:function iH(){}, +iE:function iE(){}, +dJ:function dJ(a,b){this.a=a +this.b=b}, +iA:function iA(a){this.a=a}, +c2:function c2(a){var _=this +_.a=0 +_.f=_.e=_.d=_.c=_.b=null +_.r=0 +_.$ti=a}, +la:function la(a){this.a=a}, +ld:function ld(a,b){var _=this +_.a=a +_.b=b +_.d=_.c=null}, +c3:function c3(a,b){this.a=a +this.$ti=b}, +fa:function fa(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=null +_.$ti=d}, +fb:function fb(a,b){this.a=a +this.$ti=b}, +c4:function c4(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=null +_.$ti=d}, +f8:function f8(a,b){this.a=a +this.$ti=b}, +f9:function f9(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=null +_.$ti=d}, +ov:function ov(a){this.a=a}, +ow:function ow(a){this.a=a}, +ox:function ox(a){this.a=a}, +ck:function ck(){}, +cV:function cV(){}, +cy:function cy(a,b){var _=this +_.a=a +_.b=b +_.e=_.d=_.c=null}, +em:function em(a){this.b=a}, +j1:function j1(a,b,c){this.a=a +this.b=b +this.c=c}, +j2:function j2(a,b,c){var _=this +_.a=a +_.b=b +_.c=c +_.d=null}, +e7:function e7(a,b){this.a=a +this.c=b}, +jy:function jy(a,b,c){this.a=a +this.b=b +this.c=c}, +jz:function jz(a,b,c){var _=this +_.a=a +_.b=b +_.c=c +_.d=null}, +yF(a){throw A.ah(A.qw(a),new Error())}, +C(){throw A.ah(A.qx(""),new Error())}, +jL(){throw A.ah(A.v2(""),new Error())}, +pW(){throw A.ah(A.qw(""),new Error())}, +mU(a){var s=new A.mT(a) +return s.b=s}, +mT:function mT(a){this.a=a +this.b=null}, +wP(a){return a}, +hn(a,b,c){}, +ho(a){var s,r,q +if(t.iy.b(a))return a +s=J.ac(a) +r=A.bm(s.gm(a),null,!1,t.z) +for(q=0;q>>0!==a||a>=c)throw A.c(A.ht(b,a))}, +cY(a,b,c){var s +if(!(a>>>0!==a))s=b>>>0!==b||a>b||b>c +else s=!0 +if(s)throw A.c(A.y1(a,b,c)) +return b}, +cC:function cC(){}, +dV:function dV(){}, +fd:function fd(){}, +jD:function jD(a){this.a=a}, +fc:function fc(){}, +aG:function aG(){}, +cD:function cD(){}, +bd:function bd(){}, +ih:function ih(){}, +ii:function ii(){}, +ij:function ij(){}, +dW:function dW(){}, +ik:function ik(){}, +il:function il(){}, +im:function im(){}, +fe:function fe(){}, +cE:function cE(){}, +h1:function h1(){}, +h2:function h2(){}, +h3:function h3(){}, +h4:function h4(){}, +p7(a,b){var s=b.c +return s==null?b.c=A.hf(a,"D",[b.x]):s}, +qS(a){var s=a.w +if(s===6||s===7)return A.qS(a.x) +return s===11||s===12}, +vr(a){return a.as}, +ai(a){return A.nM(v.typeUniverse,a,!1)}, +yf(a,b){var s,r,q,p,o +if(a==null)return null +s=b.y +r=a.Q +if(r==null)r=a.Q=new Map() +q=b.as +p=r.get(q) +if(p!=null)return p +o=A.cZ(v.typeUniverse,a.x,s,0) +r.set(q,o) +return o}, +cZ(a1,a2,a3,a4){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0=a2.w +switch(a0){case 5:case 1:case 2:case 3:case 4:return a2 +case 6:s=a2.x +r=A.cZ(a1,s,a3,a4) +if(r===s)return a2 +return A.rr(a1,r,!0) +case 7:s=a2.x +r=A.cZ(a1,s,a3,a4) +if(r===s)return a2 +return A.rq(a1,r,!0) +case 8:q=a2.y +p=A.eG(a1,q,a3,a4) +if(p===q)return a2 +return A.hf(a1,a2.x,p) +case 9:o=a2.x +n=A.cZ(a1,o,a3,a4) +m=a2.y +l=A.eG(a1,m,a3,a4) +if(n===o&&l===m)return a2 +return A.pr(a1,n,l) +case 10:k=a2.x +j=a2.y +i=A.eG(a1,j,a3,a4) +if(i===j)return a2 +return A.rs(a1,k,i) +case 11:h=a2.x +g=A.cZ(a1,h,a3,a4) +f=a2.y +e=A.xx(a1,f,a3,a4) +if(g===h&&e===f)return a2 +return A.rp(a1,g,e) +case 12:d=a2.y +a4+=d.length +c=A.eG(a1,d,a3,a4) +o=a2.x +n=A.cZ(a1,o,a3,a4) +if(c===d&&n===o)return a2 +return A.ps(a1,n,c,!0) +case 13:b=a2.x +if(b=p)return A.b(q,0) +s=A.hh(v.typeUniverse,A.pC(q[0]),"@<0>") +for(r=1;r=0)p+=" "+r[q];++q}return p+"})"}, +rU(a3,a4,a5){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1=", ",a2=null +if(a5!=null){s=a5.length +if(a4==null)a4=A.k([],t.s) +else a2=a4.length +r=a4.length +for(q=s;q>0;--q)B.b.l(a4,"T"+(r+q)) +for(p=t.X,o="<",n="",q=0;q=0))return A.b(a4,l) +o=o+n+a4[l] +k=a5[q] +j=k.w +if(!(j===2||j===3||j===4||j===5||k===p))o+=" extends "+A.aY(k,a4)}o+=">"}else o="" +p=a3.x +i=a3.y +h=i.a +g=h.length +f=i.b +e=f.length +d=i.c +c=d.length +b=A.aY(p,a4) +for(a="",a0="",q=0;q0){a+=a0+"[" +for(a0="",q=0;q0){a+=a0+"{" +for(a0="",q=0;q "+b}, +aY(a,b){var s,r,q,p,o,n,m,l=a.w +if(l===5)return"erased" +if(l===2)return"dynamic" +if(l===3)return"void" +if(l===1)return"Never" +if(l===4)return"any" +if(l===6){s=a.x +r=A.aY(s,b) +q=s.w +return(q===11||q===12?"("+r+")":r)+"?"}if(l===7)return"FutureOr<"+A.aY(a.x,b)+">" +if(l===8){p=A.xz(a.x) +o=a.y +return o.length>0?p+("<"+A.t3(o,b)+">"):p}if(l===10)return A.xj(a,b) +if(l===11)return A.rU(a,b,null) +if(l===12)return A.rU(a.x,b,a.y) +if(l===13){n=a.x +m=b.length +n=m-1-n +if(!(n>=0&&n0)p+="<"+A.he(c)+">" +s=a.eC.get(p) +if(s!=null)return s +r=new A.bw(null,null) +r.w=8 +r.x=b +r.y=c +if(c.length>0)r.c=c[0] +r.as=p +q=A.cX(a,r) +a.eC.set(p,q) +return q}, +pr(a,b,c){var s,r,q,p,o,n +if(b.w===9){s=b.x +r=b.y.concat(c)}else{r=c +s=b}q=s.as+(";<"+A.he(r)+">") +p=a.eC.get(q) +if(p!=null)return p +o=new A.bw(null,null) +o.w=9 +o.x=s +o.y=r +o.as=q +n=A.cX(a,o) +a.eC.set(q,n) +return n}, +rs(a,b,c){var s,r,q="+"+(b+"("+A.he(c)+")"),p=a.eC.get(q) +if(p!=null)return p +s=new A.bw(null,null) +s.w=10 +s.x=b +s.y=c +s.as=q +r=A.cX(a,s) +a.eC.set(q,r) +return r}, +rp(a,b,c){var s,r,q,p,o,n=b.as,m=c.a,l=m.length,k=c.b,j=k.length,i=c.c,h=i.length,g="("+A.he(m) +if(j>0){s=l>0?",":"" +g+=s+"["+A.he(k)+"]"}if(h>0){s=l>0?",":"" +g+=s+"{"+A.wf(i)+"}"}r=n+(g+")") +q=a.eC.get(r) +if(q!=null)return q +p=new A.bw(null,null) +p.w=11 +p.x=b +p.y=c +p.as=r +o=A.cX(a,p) +a.eC.set(r,o) +return o}, +ps(a,b,c,d){var s,r=b.as+("<"+A.he(c)+">"),q=a.eC.get(r) +if(q!=null)return q +s=A.wh(a,b,c,r,d) +a.eC.set(r,s) +return s}, +wh(a,b,c,d,e){var s,r,q,p,o,n,m,l +if(e){s=c.length +r=A.nU(s) +for(q=0,p=0;p0){n=A.cZ(a,b,r,0) +m=A.eG(a,c,r,0) +return A.ps(a,n,m,c!==m)}}l=new A.bw(null,null) +l.w=12 +l.x=b +l.y=c +l.as=d +return A.cX(a,l)}, +w3(a,b,c,d){return{u:a,e:b,r:c,s:[],p:0,n:d}}, +w9(a){var s,r,q,p,o,n,m,l=a.r,k=a.s +for(s=l.length,r=0;r=48&&q<=57)r=A.w5(r+1,q,l,k) +else if((((q|32)>>>0)-97&65535)<26||q===95||q===36||q===124)r=A.rl(a,r,l,k,!1) +else if(q===46)r=A.rl(a,r,l,k,!0) +else{++r +switch(q){case 44:break +case 58:k.push(!1) +break +case 33:k.push(!0) +break +case 59:k.push(A.dv(a.u,a.e,k.pop())) +break +case 94:k.push(A.wj(a.u,k.pop())) +break +case 35:k.push(A.hg(a.u,5,"#")) +break +case 64:k.push(A.hg(a.u,2,"@")) +break +case 126:k.push(A.hg(a.u,3,"~")) +break +case 60:k.push(a.p) +a.p=k.length +break +case 62:A.w7(a,k) +break +case 38:A.w6(a,k) +break +case 63:p=a.u +k.push(A.rr(p,A.dv(p,a.e,k.pop()),a.n)) +break +case 47:p=a.u +k.push(A.rq(p,A.dv(p,a.e,k.pop()),a.n)) +break +case 40:k.push(-3) +k.push(a.p) +a.p=k.length +break +case 41:A.w4(a,k) +break +case 91:k.push(a.p) +a.p=k.length +break +case 93:o=k.splice(a.p) +A.rm(a.u,a.e,o) +a.p=k.pop() +k.push(o) +k.push(-1) +break +case 123:k.push(a.p) +a.p=k.length +break +case 125:o=k.splice(a.p) +A.wa(a.u,a.e,o) +a.p=k.pop() +k.push(o) +k.push(-2) +break +case 43:n=l.indexOf("(",r) +k.push(l.substring(r,n)) +k.push(-4) +k.push(a.p) +a.p=k.length +r=n+1 +break +default:throw"Bad character "+q}}}m=k.pop() +return A.dv(a.u,a.e,m)}, +w5(a,b,c,d){var s,r,q=b-48 +for(s=c.length;a=48&&r<=57))break +q=q*10+(r-48)}d.push(q) +return a}, +rl(a,b,c,d,e){var s,r,q,p,o,n,m=b+1 +for(s=c.length;m>>0)-97&65535)<26||r===95||r===36||r===124))q=r>=48&&r<=57 +else q=!0 +if(!q)break}}p=c.substring(b,m) +if(e){s=a.u +o=a.e +if(o.w===9)o=o.x +n=A.wn(s,o.x)[p] +if(n==null)A.J('No "'+p+'" in "'+A.vr(o)+'"') +d.push(A.hh(s,o,n))}else d.push(p) +return m}, +w7(a,b){var s,r=a.u,q=A.rk(a,b),p=b.pop() +if(typeof p=="string")b.push(A.hf(r,p,q)) +else{s=A.dv(r,a.e,p) +switch(s.w){case 11:b.push(A.ps(r,s,q,a.n)) +break +default:b.push(A.pr(r,s,q)) +break}}}, +w4(a,b){var s,r,q,p=a.u,o=b.pop(),n=null,m=null +if(typeof o=="number")switch(o){case-1:n=b.pop() +break +case-2:m=b.pop() +break +default:b.push(o) +break}else b.push(o) +s=A.rk(a,b) +o=b.pop() +switch(o){case-3:o=b.pop() +if(n==null)n=p.sEA +if(m==null)m=p.sEA +r=A.dv(p,a.e,o) +q=new A.jg() +q.a=s +q.b=n +q.c=m +b.push(A.rp(p,r,q)) +return +case-4:b.push(A.rs(p,b.pop(),s)) +return +default:throw A.c(A.eO("Unexpected state under `()`: "+A.x(o)))}}, +w6(a,b){var s=b.pop() +if(0===s){b.push(A.hg(a.u,1,"0&")) +return}if(1===s){b.push(A.hg(a.u,4,"1&")) +return}throw A.c(A.eO("Unexpected extended operation "+A.x(s)))}, +rk(a,b){var s=b.splice(a.p) +A.rm(a.u,a.e,s) +a.p=b.pop() +return s}, +dv(a,b,c){if(typeof c=="string")return A.hf(a,c,a.sEA) +else if(typeof c=="number"){b.toString +return A.w8(a,b,c)}else return c}, +rm(a,b,c){var s,r=c.length +for(s=0;sn)return!1 +m=n-o +l=s.b +k=r.b +j=l.length +i=k.length +if(o+j=d)return!1 +a1=f[b] +b+=3 +if(a00?new Array(q):v.typeUniverse.sEA +for(o=0;o0?new Array(a):v.typeUniverse.sEA}, +bw:function bw(a,b){var _=this +_.a=a +_.b=b +_.r=_.f=_.d=_.c=null +_.w=0 +_.as=_.Q=_.z=_.y=_.x=null}, +jg:function jg(){this.c=this.b=this.a=null}, +nL:function nL(a){this.a=a}, +je:function je(){}, +ex:function ex(a){this.a=a}, +vP(){var s,r,q +if(self.scheduleImmediate!=null)return A.xD() +if(self.MutationObserver!=null&&self.document!=null){s={} +r=self.document.createElement("div") +q=self.document.createElement("span") +s.a=null +new self.MutationObserver(A.d0(new A.mF(s),1)).observe(r,{childList:true}) +return new A.mE(s,r,q)}else if(self.setImmediate!=null)return A.xE() +return A.xF()}, +vQ(a){self.scheduleImmediate(A.d0(new A.mG(t.M.a(a)),0))}, +vR(a){self.setImmediate(A.d0(new A.mH(t.M.a(a)),0))}, +vS(a){A.pe(B.N,t.M.a(a))}, +pe(a,b){var s=B.c.M(a.a,1000) +return A.wc(s<0?0:s,b)}, +wc(a,b){var s=new A.hd() +s.i3(a,b) +return s}, +wd(a,b){var s=new A.hd() +s.i4(a,b) +return s}, +q(a){return new A.fD(new A.t($.u,a.h("t<0>")),a.h("fD<0>"))}, +p(a,b){a.$2(0,null) +b.b=!0 +return b.a}, +e(a,b){A.wF(a,b)}, +o(a,b){b.O(a)}, +n(a,b){b.by(A.S(a),A.ae(a))}, +wF(a,b){var s,r,q=new A.o6(b),p=new A.o7(b) +if(a instanceof A.t)a.fX(q,p,t.z) +else{s=t.z +if(a instanceof A.t)a.b0(q,p,s) +else{r=new A.t($.u,t.j_) +r.a=8 +r.c=a +r.fX(q,p,s)}}}, +r(a){var s=function(b,c){return function(d,e){while(true){try{b(d,e) +break}catch(r){e=r +d=c}}}}(a,1) +return $.u.cl(new A.ol(s),t.H,t.S,t.z)}, +ro(a,b,c){return 0}, +hA(a){var s +if(t.T.b(a)){s=a.gaP() +if(s!=null)return s}return B.u}, +oX(a,b){var s,r,q,p,o,n,m,l=null +try{l=a.$0()}catch(q){s=A.S(q) +r=A.ae(q) +p=new A.t($.u,b.h("t<0>")) +o=s +n=r +m=A.eE(o,n) +if(m==null)o=new A.a_(o,n==null?A.hA(o):n) +else o=m +p.aS(o) +return p}return b.h("D<0>").b(l)?l:A.dn(l,b)}, +bl(a,b){var s=a==null?b.a(a):a,r=new A.t($.u,b.h("t<0>")) +r.b4(s) +return r}, +qo(a,b){var s +if(!b.b(null))throw A.c(A.an(null,"computation","The type parameter is not nullable")) +s=new A.t($.u,b.h("t<0>")) +A.vA(a,new A.kZ(null,s,b)) +return s}, +qp(a,b){var s,r,q,p,o,n,m,l,k,j,i={},h=null,g=!1,f=new A.t($.u,b.h("t>")) +i.a=null +i.b=0 +i.c=i.d=null +s=new A.l0(i,h,g,f) +try{for(n=J.a7(a),m=t.P;n.k();){r=n.gn() +q=i.b +r.b0(new A.l_(i,q,f,b,h,g),s,m);++i.b}n=i.b +if(n===0){n=f +n.bO(A.k([],b.h("y<0>"))) +return n}i.a=A.bm(n,null,!1,b.h("0?"))}catch(l){p=A.S(l) +o=A.ae(l) +if(i.b===0||g){n=f +m=p +k=o +j=A.eE(m,k) +if(j==null)m=new A.a_(m,k==null?A.hA(m):k) +else m=j +n.aS(m) +return n}else{i.d=p +i.c=o}}return f}, +qn(a,b,c,d,e){var s,r,q +d.h("t<0>").a(a) +s=d.h("0/(h,X)").a(new A.kU(e,c,b,d)) +r=$.u +q=new A.t(r,d.h("t<0>")) +if(r!==B.d)s=r.cl(s,d.h("0/"),t.K,t.l) +a.bN(new A.bD(q,2,null,s,a.$ti.h("@<1>").u(d).h("bD<1,2>"))) +return q}, +uU(a,b){var s,r,q,p=A.k([],b.h("y>")) +for(s=a.length,r=b.h("fU<0>"),q=0;q")),b.h("m<0>")) +s=new A.t($.u,b.h("t>")) +A.w1(p,new A.kV(new A.a6(s,b.h("a6>")),p,b)) +return s}, +xd(a){return a!=null}, +w1(a,b){var s,r={},q=r.a=r.b=0,p=new A.n6(r,a,b) +for(s=a.length;q")) +c.a(a) +s.a=8 +s.c=a +return s}, +dn(a,b){var s=new A.t($.u,b.h("t<0>")) +b.a(a) +s.a=8 +s.c=a +return s}, +nc(a,b,c){var s,r,q,p,o={},n=o.a=a +for(s=t.j_;r=n.a,(r&4)!==0;n=a){a=s.a(n.c) +o.a=a}if(n===b){s=A.lP() +b.aS(new A.a_(new A.bt(!0,n,null,"Cannot complete a future with itself"),s)) +return}q=b.a&1 +s=n.a=r|q +if((s&24)===0){p=t.d.a(b.c) +b.a=b.a&1|4 +b.c=n +n.fF(p) +return}if(!c)if(b.c==null)n=(s&16)===0||q!==0 +else n=!1 +else n=!0 +if(n){p=b.bV() +b.cG(o.a) +A.dp(b,p) +return}b.a^=2 +b.b.b2(new A.nd(o,b))}, +dp(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d={},c=d.a=a +for(s=t.u,r=t.d;;){q={} +p=c.a +o=(p&16)===0 +n=!o +if(b==null){if(n&&(p&1)===0){m=s.a(c.c) +c.b.ca(m.a,m.b)}return}q.a=b +l=b.a +for(c=b;l!=null;c=l,l=k){c.a=null +A.dp(d.a,c) +q.a=l +k=l.a}p=d.a +j=p.c +q.b=n +q.c=j +if(o){i=c.c +i=(i&1)!==0||(i&15)===8}else i=!0 +if(i){h=c.b.b +if(n){c=p.b +c=!(c===h||c.gaK()===h.gaK())}else c=!1 +if(c){c=d.a +m=s.a(c.c) +c.b.ca(m.a,m.b) +return}g=$.u +if(g!==h)$.u=h +else g=null +c=q.a.c +if((c&15)===8)new A.nh(q,d,n).$0() +else if(o){if((c&1)!==0)new A.ng(q,j).$0()}else if((c&2)!==0)new A.nf(d,q).$0() +if(g!=null)$.u=g +c=q.c +if(c instanceof A.t){p=q.a.$ti +p=p.h("D<2>").b(c)||!p.y[1].b(c)}else p=!1 +if(p){f=q.a.b +if((c.a&24)!==0){e=r.a(f.c) +f.c=null +b=f.cO(e) +f.a=c.a&30|f.a&1 +f.c=c.c +d.a=c +continue}else A.nc(c,f,!0) +return}}f=q.a.b +e=r.a(f.c) +f.c=null +b=f.cO(e) +c=q.b +p=q.c +if(!c){f.$ti.c.a(p) +f.a=8 +f.c=p}else{s.a(p) +f.a=f.a&1|16 +f.c=p}d.a=f +c=f}}, +xl(a,b){if(t.ng.b(a))return b.cl(a,t.z,t.K,t.l) +if(t.mq.b(a))return b.bE(a,t.z,t.K) +throw A.c(A.an(a,"onError",u.c))}, +xc(){var s,r +for(s=$.eF;s!=null;s=$.eF){$.hq=null +r=s.b +$.eF=r +if(r==null)$.hp=null +s.a.$0()}}, +xw(){$.pz=!0 +try{A.xc()}finally{$.hq=null +$.pz=!1 +if($.eF!=null)$.pZ().$1(A.tb())}}, +t5(a){var s=new A.j3(a),r=$.hp +if(r==null){$.eF=$.hp=s +if(!$.pz)$.pZ().$1(A.tb())}else $.hp=r.b=s}, +xt(a){var s,r,q,p=$.eF +if(p==null){A.t5(a) +$.hq=$.hp +return}s=new A.j3(a) +r=$.hq +if(r==null){s.b=p +$.eF=$.hq=s}else{q=r.b +s.b=q +$.hq=r.b=s +if(q==null)$.hp=s}}, +pR(a){var s,r=null,q=$.u +if(B.d===q){A.oi(r,r,B.d,a) +return}if(B.d===q.ge9().a)s=B.d.gaK()===q.gaK() +else s=!1 +if(s){A.oi(r,r,q,q.aB(a,t.H)) +return}s=$.u +s.b2(s.c5(a))}, +yX(a,b){return new A.dx(A.dB(a,"stream",t.K),b.h("dx<0>"))}, +fu(a,b,c,d){var s=null +return c?new A.ew(b,s,s,a,d.h("ew<0>")):new A.ed(b,s,s,a,d.h("ed<0>"))}, +jI(a){var s,r,q +if(a==null)return +try{a.$0()}catch(q){s=A.S(q) +r=A.ae(q) +$.u.ca(s,r)}}, +w_(a,b,c,d,e,f){var s=$.u,r=e?1:0,q=c!=null?32:0,p=A.j7(s,b,f),o=A.j8(s,c),n=d==null?A.ta():d +return new A.ch(a,p,o,s.aB(n,t.H),s,r|q,f.h("ch<0>"))}, +j7(a,b,c){var s=b==null?A.xH():b +return a.bE(s,t.H,c)}, +j8(a,b){if(b==null)b=A.xI() +if(t.b9.b(b))return a.cl(b,t.z,t.K,t.l) +if(t.i6.b(b))return a.bE(b,t.z,t.K) +throw A.c(A.T("handleError callback must take either an Object (the error), or both an Object (the error) and a StackTrace.",null))}, +xe(a){}, +xg(a,b){A.a2(a) +t.l.a(b) +$.u.ca(a,b)}, +xf(){}, +xr(a,b,c,d){var s,r,q,p +try{b.$1(a.$0())}catch(p){s=A.S(p) +r=A.ae(p) +q=A.eE(s,r) +if(q!=null)c.$2(q.a,q.b) +else c.$2(s,r)}}, +wM(a,b,c){var s=a.I() +if(s!==$.d2())s.ak(new A.o9(b,c)) +else b.V(c)}, +wN(a,b){return new A.o8(a,b)}, +rN(a,b,c){var s=a.I() +if(s!==$.d2())s.ak(new A.oa(b,c)) +else b.b5(c)}, +wb(a,b,c){return new A.er(new A.nF(null,null,a,c,b),b.h("@<0>").u(c).h("er<1,2>"))}, +vA(a,b){var s=$.u +if(s===B.d)return s.eo(a,b) +return s.eo(a,s.c5(b))}, +ts(a,b,c,d){return A.xs(a,c,b,d)}, +xs(a,b,c,d){return $.u.hh(c,b).bd(a,d)}, +xp(a,b,c,d,e){A.hr(d,e)}, +hr(a,b){A.xt(new A.of(a,b))}, +og(a,b,c,d,e){var s,r +t.g9.a(a) +t.kz.a(b) +t.x.a(c) +e.h("0()").a(d) +r=$.u +if(r===c)return d.$0() +$.u=c +s=r +try{r=d.$0() +return r}finally{$.u=s}}, +oh(a,b,c,d,e,f,g){var s,r +t.g9.a(a) +t.kz.a(b) +t.x.a(c) +f.h("@<0>").u(g).h("1(2)").a(d) +g.a(e) +r=$.u +if(r===c)return d.$1(e) +$.u=c +s=r +try{r=d.$1(e) +return r}finally{$.u=s}}, +pB(a,b,c,d,e,f,g,h,i){var s,r +t.g9.a(a) +t.kz.a(b) +t.x.a(c) +g.h("@<0>").u(h).u(i).h("1(2,3)").a(d) +h.a(e) +i.a(f) +r=$.u +if(r===c)return d.$2(e,f) +$.u=c +s=r +try{r=d.$2(e,f) +return r}finally{$.u=s}}, +t1(a,b,c,d,e){var s=t.x +s.a(a) +t.ju.a(b) +s.a(c) +return e.h("0()").a(d)}, +t2(a,b,c,d,e,f){var s=t.x +s.a(a) +t.ju.a(b) +s.a(c) +return e.h("@<0>").u(f).h("1(2)").a(d)}, +t0(a,b,c,d,e,f,g){var s=t.x +s.a(a) +t.ju.a(b) +s.a(c) +return e.h("@<0>").u(f).u(g).h("1(2,3)").a(d)}, +xo(a,b,c,d,e){var s=t.x +s.a(a) +t.ju.a(b) +s.a(c) +A.a2(d) +t.fw.a(e) +return null}, +oi(a,b,c,d){var s,r +t.M.a(d) +if(B.d!==c){s=B.d.gaK() +r=c.gaK() +d=s!==r?c.c5(d):c.d0(d,t.H)}A.t5(d)}, +xn(a,b,c,d,e){e=c.d0(t.M.a(e),t.H) +return A.pe(d,e)}, +xm(a,b,c,d,e){var s +e=c.lu(t.my.a(e),t.H,t.hU) +s=d.glx() +return A.wd(s.ls(0,0)?0:s,e)}, +xq(a,b,c,d){A.tp(d)}, +t_(a,b,c,d,e){var s,r,q,p +if(e!=null){s=t.X +r=A.uW(s,s) +r.ag(0,e)}else r=null +s=new A.ja(c.gfP(),c.gfR(),c.gfQ(),c.gfL(),c.gfM(),c.gfK(),c.gfp(),c.ge9(),c.gfk(),c.gfj(),c.gfG(),c.gft(),c.ge_(),c.gei(),c) +if(d!=null){q=d.x +if(q!=null)s.w=new A.jG(s,q) +p=d.a +if(p!=null)s.as=new A.jF(s,p)}if(r!=null)s.at=new A.jH(s,r) +return s}, +mF:function mF(a){this.a=a}, +mE:function mE(a,b,c){this.a=a +this.b=b +this.c=c}, +mG:function mG(a){this.a=a}, +mH:function mH(a){this.a=a}, +hd:function hd(){this.c=0}, +nK:function nK(a,b){this.a=a +this.b=b}, +nJ:function nJ(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +fD:function fD(a,b){this.a=a +this.b=!1 +this.$ti=b}, +o6:function o6(a){this.a=a}, +o7:function o7(a){this.a=a}, +ol:function ol(a){this.a=a}, +hc:function hc(a,b){var _=this +_.a=a +_.e=_.d=_.c=_.b=null +_.$ti=b}, +ev:function ev(a,b){this.a=a +this.$ti=b}, +a_:function a_(a,b){this.a=a +this.b=b}, +fH:function fH(a,b){this.a=a +this.$ti=b}, +bY:function bY(a,b,c,d,e,f,g){var _=this +_.ay=0 +_.CW=_.ch=null +_.w=a +_.a=b +_.b=c +_.c=d +_.d=e +_.e=f +_.r=_.f=null +_.$ti=g}, +dk:function dk(){}, +hb:function hb(a,b,c){var _=this +_.a=a +_.b=b +_.c=0 +_.r=_.f=_.e=_.d=null +_.$ti=c}, +nG:function nG(a,b){this.a=a +this.b=b}, +nI:function nI(a,b,c){this.a=a +this.b=b +this.c=c}, +nH:function nH(a){this.a=a}, +kZ:function kZ(a,b,c){this.a=a +this.b=b +this.c=c}, +l0:function l0(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +l_:function l_(a,b,c,d,e,f){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f}, +kU:function kU(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +kV:function kV(a,b,c){this.a=a +this.b=b +this.c=c}, +fj:function fj(a,b,c){this.c=a +this.d=b +this.$ti=c}, +fU:function fU(a,b){var _=this +_.a=a +_.c=_.b=null +_.$ti=b}, +n7:function n7(a,b){this.a=a +this.b=b}, +n8:function n8(a,b){this.a=a +this.b=b}, +n6:function n6(a,b,c){this.a=a +this.b=b +this.c=c}, +dl:function dl(){}, +ad:function ad(a,b){this.a=a +this.$ti=b}, +a6:function a6(a,b){this.a=a +this.$ti=b}, +bD:function bD(a,b,c,d,e){var _=this +_.a=null +_.b=a +_.c=b +_.d=c +_.e=d +_.$ti=e}, +t:function t(a,b){var _=this +_.a=0 +_.b=a +_.c=null +_.$ti=b}, +n9:function n9(a,b){this.a=a +this.b=b}, +ne:function ne(a,b){this.a=a +this.b=b}, +nd:function nd(a,b){this.a=a +this.b=b}, +nb:function nb(a,b){this.a=a +this.b=b}, +na:function na(a,b){this.a=a +this.b=b}, +nh:function nh(a,b,c){this.a=a +this.b=b +this.c=c}, +ni:function ni(a,b){this.a=a +this.b=b}, +nj:function nj(a){this.a=a}, +ng:function ng(a,b){this.a=a +this.b=b}, +nf:function nf(a,b){this.a=a +this.b=b}, +j3:function j3(a){this.a=a +this.b=null}, +N:function N(){}, +lW:function lW(a,b){this.a=a +this.b=b}, +lX:function lX(a,b){this.a=a +this.b=b}, +lU:function lU(a){this.a=a}, +lV:function lV(a,b,c){this.a=a +this.b=b +this.c=c}, +lS:function lS(a,b,c){this.a=a +this.b=b +this.c=c}, +lT:function lT(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +lQ:function lQ(a,b){this.a=a +this.b=b}, +lR:function lR(a,b,c){this.a=a +this.b=b +this.c=c}, +fv:function fv(){}, +dw:function dw(){}, +nE:function nE(a){this.a=a}, +nD:function nD(a){this.a=a}, +jA:function jA(){}, +j4:function j4(){}, +ed:function ed(a,b,c,d,e){var _=this +_.a=null +_.b=0 +_.c=null +_.d=a +_.e=b +_.f=c +_.r=d +_.$ti=e}, +ew:function ew(a,b,c,d,e){var _=this +_.a=null +_.b=0 +_.c=null +_.d=a +_.e=b +_.f=c +_.r=d +_.$ti=e}, +aC:function aC(a,b){this.a=a +this.$ti=b}, +ch:function ch(a,b,c,d,e,f,g){var _=this +_.w=a +_.a=b +_.b=c +_.c=d +_.d=e +_.e=f +_.r=_.f=null +_.$ti=g}, +dy:function dy(a,b){this.a=a +this.$ti=b}, +a0:function a0(){}, +mS:function mS(a,b,c){this.a=a +this.b=b +this.c=c}, +mR:function mR(a){this.a=a}, +es:function es(){}, +cj:function cj(){}, +ci:function ci(a,b){this.b=a +this.a=null +this.$ti=b}, +ef:function ef(a,b){this.b=a +this.c=b +this.a=null}, +jc:function jc(){}, +bE:function bE(a){var _=this +_.a=0 +_.c=_.b=null +_.$ti=a}, +nv:function nv(a,b){this.a=a +this.b=b}, +eg:function eg(a,b){var _=this +_.a=1 +_.b=a +_.c=null +_.$ti=b}, +dx:function dx(a,b){var _=this +_.a=null +_.b=a +_.c=!1 +_.$ti=b}, +o9:function o9(a,b){this.a=a +this.b=b}, +o8:function o8(a,b){this.a=a +this.b=b}, +oa:function oa(a,b){this.a=a +this.b=b}, +fS:function fS(){}, +eh:function eh(a,b,c,d,e,f,g){var _=this +_.w=a +_.x=null +_.a=b +_.b=c +_.c=d +_.d=e +_.e=f +_.r=_.f=null +_.$ti=g}, +h0:function h0(a,b,c){this.b=a +this.a=b +this.$ti=c}, +fN:function fN(a,b){this.a=a +this.$ti=b}, +ep:function ep(a,b,c,d,e,f){var _=this +_.w=$ +_.x=null +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.r=_.f=null +_.$ti=f}, +et:function et(){}, +fG:function fG(a,b,c){this.a=a +this.b=b +this.$ti=c}, +ej:function ej(a,b,c,d,e){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.$ti=e}, +er:function er(a,b){this.a=a +this.$ti=b}, +nF:function nF(a,b,c,d,e){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e}, +o2:function o2(a,b){this.a=a +this.b=b}, +o4:function o4(a,b){this.a=a +this.b=b}, +o3:function o3(a,b){this.a=a +this.b=b}, +o0:function o0(a,b){this.a=a +this.b=b}, +o1:function o1(a,b){this.a=a +this.b=b}, +o_:function o_(a,b){this.a=a +this.b=b}, +nX:function nX(a,b){this.a=a +this.b=b}, +jG:function jG(a,b){this.a=a +this.b=b}, +nW:function nW(a,b){this.a=a +this.b=b}, +nV:function nV(){}, +nZ:function nZ(a,b){this.a=a +this.b=b}, +nY:function nY(a,b){this.a=a +this.b=b}, +jF:function jF(a,b){this.a=a +this.b=b}, +jH:function jH(a,b){this.a=a +this.b=b}, +eA:function eA(){}, +ja:function ja(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f +_.r=g +_.w=h +_.x=i +_.y=j +_.z=k +_.Q=l +_.as=m +_.at=n +_.ax=null +_.ay=o}, +mY:function mY(a,b,c){this.a=a +this.b=b +this.c=c}, +mX:function mX(a,b){this.a=a +this.b=b}, +mZ:function mZ(a,b,c){this.a=a +this.b=b +this.c=c}, +ju:function ju(){}, +nz:function nz(a,b,c){this.a=a +this.b=b +this.c=c}, +ny:function ny(a,b){this.a=a +this.b=b}, +nA:function nA(a,b,c){this.a=a +this.b=b +this.c=c}, +eB:function eB(a){this.a=a}, +of:function of(a,b){this.a=a +this.b=b}, +fC:function fC(a,b,c,d,e,f,g,h,i,j,k,l,m){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f +_.r=g +_.w=h +_.x=i +_.y=j +_.z=k +_.Q=l +_.as=m}, +uW(a,b){return new A.dq(a.h("@<0>").u(b).h("dq<1,2>"))}, +rj(a,b){var s=a[b] +return s===a?null:s}, +pp(a,b,c){if(c==null)a[b]=a +else a[b]=c}, +po(){var s=Object.create(null) +A.pp(s,"",s) +delete s[""] +return s}, +v3(a,b){return new A.c2(a.h("@<0>").u(b).h("c2<1,2>"))}, +v4(a,b,c){return b.h("@<0>").u(c).h("qy<1,2>").a(A.y3(a,new A.c2(b.h("@<0>").u(c).h("c2<1,2>"))))}, +az(a,b){return new A.c2(a.h("@<0>").u(b).h("c2<1,2>"))}, +p4(a){return new A.fX(a.h("fX<0>"))}, +pq(){var s=Object.create(null) +s[""]=s +delete s[""] +return s}, +jn(a,b,c){var s=new A.du(a,b,c.h("du<0>")) +s.c=a.e +return s}, +p5(a){var s,r +if(A.pN(a))return"{...}" +s=new A.aI("") +try{r={} +B.b.l($.bh,a) +s.a+="{" +r.a=!0 +a.av(0,new A.li(r,s)) +s.a+="}"}finally{if(0>=$.bh.length)return A.b($.bh,-1) +$.bh.pop()}r=s.a +return r.charCodeAt(0)==0?r:r}, +dq:function dq(a){var _=this +_.a=0 +_.e=_.d=_.c=_.b=null +_.$ti=a}, +nl:function nl(a){this.a=a}, +nk:function nk(a){this.a=a}, +ek:function ek(a){var _=this +_.a=0 +_.e=_.d=_.c=_.b=null +_.$ti=a}, +dr:function dr(a,b){this.a=a +this.$ti=b}, +fV:function fV(a,b,c){var _=this +_.a=a +_.b=b +_.c=0 +_.d=null +_.$ti=c}, +fX:function fX(a){var _=this +_.a=0 +_.f=_.e=_.d=_.c=_.b=null +_.r=0 +_.$ti=a}, +jm:function jm(a){this.a=a +this.c=this.b=null}, +du:function du(a,b,c){var _=this +_.a=a +_.b=b +_.d=_.c=null +_.$ti=c}, +cA:function cA(a){var _=this +_.b=_.a=0 +_.c=null +_.$ti=a}, +fY:function fY(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=null +_.d=c +_.e=!1 +_.$ti=d}, +ao:function ao(){}, +A:function A(){}, +V:function V(){}, +lh:function lh(a){this.a=a}, +li:function li(a,b){this.a=a +this.b=b}, +fZ:function fZ(a,b){this.a=a +this.$ti=b}, +h_:function h_(a,b,c){var _=this +_.a=a +_.b=b +_.c=null +_.$ti=c}, +e1:function e1(){}, +h6:function h6(){}, +wA(a,b,c){var s,r,q,p,o=c-b +if(o<=4096)s=$.tW() +else s=new Uint8Array(o) +for(r=J.ac(a),q=0;q=16)return null +r=r*16+o}n=h-1 +if(!(h>=0&&h=0&&s=16)return null +r=r*16+o}m=n-1 +if(!(n>=0&&n=j)return A.b(i,0) +l=i[0]===0}else l=!1 +if(l)return $.bs() +l=A.b4(j,i) +return new A.ab(l===0?!1:c,i,l)}, +vZ(a,b){var s,r,q,p,o,n +if(a==="")return null +s=$.tQ().a9(a) +if(s==null)return null +r=s.b +q=r.length +if(1>=q)return A.b(r,1) +p=r[1]==="-" +if(4>=q)return A.b(r,4) +o=r[4] +n=r[3] +if(5>=q)return A.b(r,5) +if(o!=null)return A.vW(o,p) +if(n!=null)return A.vX(n,2,p) +return null}, +b4(a,b){var s,r=b.length +for(;;){if(a>0){s=a-1 +if(!(s=0&&q>>0)+(r[6]>>>4)-1075 +n=new Uint16Array(4) +n[0]=(r[1]<<8>>>0)+r[0] +n[1]=(r[3]<<8>>>0)+r[2] +n[2]=(r[5]<<8>>>0)+r[4] +n[3]=r[6]&15|16 +m=new A.ab(!1,n,4) +if(o<0)l=m.bj(0,-o) +else l=o>0?m.aG(0,o):m +if(s)return l.al(0) +return l}, +pm(a,b,c,d){var s,r,q,p,o +if(b===0)return 0 +if(c===0&&d===a)return b +for(s=b-1,r=a.length,q=d.$flags|0;s>=0;--s){p=s+c +if(!(s=0&&p=0;--s){q&2&&A.E(d) +if(!(s=0;--s){if(!(s=0&&n>>0 +p=B.c.aG((o&i)>>>0,k)}q&2&&A.E(d) +if(!(l>=0&&l=0;){r&2&&A.E(d) +if(!(q=0&&r=0&&m>>0,k) +q&2&&A.E(d) +if(!(p>>0 +s=B.c.bj(n,l)}q&2&&A.E(d) +if(!(r>=0&&r=0;--s){if(!(s=0&&o=0&&b=0&&o=0;e=l,c=o){o=c+1 +if(!(c=0&&e=0&&e=0&&c=0&&r>>0,a) +if(q>65535)return 65535 +return q}, +uK(a){throw A.c(A.an(a,"object","Expandos are not allowed on strings, numbers, bools, records or null"))}, +n4(a,b){var s=$.tS() +s=s==null?null:new s(A.d0(A.yJ(a,b),1)) +return new A.fR(s,b.h("fR<0>"))}, +bG(a,b){var s=A.qL(a,b) +if(s!=null)return s +throw A.c(A.at(a,null,null))}, +uJ(a,b){a=A.ah(a,new Error()) +if(a==null)a=A.a2(a) +a.stack=b.i(0) +throw a}, +bm(a,b,c,d){var s,r=c?J.qu(a,d):J.qt(a,d) +if(a!==0&&b!=null)for(s=0;s")) +for(s=J.a7(a);s.k();)B.b.l(r,c.a(s.gn())) +r.$flags=1 +return r}, +au(a,b){var s,r +if(Array.isArray(a))return A.k(a.slice(0),b.h("y<0>")) +s=A.k([],b.h("y<0>")) +for(r=J.a7(a);r.k();)B.b.l(s,r.gn()) +return s}, +b_(a,b){var s=A.v6(a,!1,b) +s.$flags=3 +return s}, +qW(a,b,c){var s,r,q,p,o +A.al(b,"start") +s=c==null +r=!s +if(r){q=c-b +if(q<0)throw A.c(A.a5(c,b,null,"end",null)) +if(q===0)return""}if(Array.isArray(a)){p=a +o=p.length +if(s)c=o +return A.qN(b>0||c0)a=J.eM(a,b) +s=A.au(a,t.S) +return A.qN(s)}, +qV(a){return A.b1(a)}, +vy(a,b,c){var s=a.length +if(b>=s)return"" +return A.vh(a,b,c==null||c>s?s:c)}, +R(a,b,c,d,e){return new A.cy(a,A.p1(a,d,b,e,c,""))}, +pb(a,b,c){var s=J.a7(b) +if(!s.k())return a +if(c.length===0){do a+=A.x(s.gn()) +while(s.k())}else{a+=A.x(s.gn()) +while(s.k())a=a+c+A.x(s.gn())}return a}, +iP(){var s,r,q=A.vc() +if(q==null)throw A.c(A.aa("'Uri.base' is not supported")) +s=$.r6 +if(s!=null&&q===$.r5)return s +r=A.bU(q) +$.r6=r +$.r5=q +return r}, +wy(a,b,c,d){var s,r,q,p,o,n="0123456789ABCDEF" +if(c===B.j){s=$.tT() +s=s.b.test(b)}else s=!1 +if(s)return b +r=B.i.a4(b) +for(s=r.length,q=0,p="";q>>4&15]+n[o&15]}return p.charCodeAt(0)==0?p:p}, +lP(){return A.ae(new Error())}, +qg(a,b,c){var s="microsecond" +if(b>999)throw A.c(A.a5(b,0,999,s,null)) +if(a<-864e13||a>864e13)throw A.c(A.a5(a,-864e13,864e13,"millisecondsSinceEpoch",null)) +if(a===864e13&&b!==0)throw A.c(A.an(b,s,"Time including microseconds is outside valid range")) +A.dB(c,"isUtc",t.y) +return a}, +uE(a){var s=Math.abs(a),r=a<0?"-":"" +if(s>=1000)return""+a +if(s>=100)return r+"0"+s +if(s>=10)return r+"00"+s +return r+"000"+s}, +qf(a){if(a>=100)return""+a +if(a>=10)return"0"+a +return"00"+a}, +hQ(a){if(a>=10)return""+a +return"0"+a}, +qh(a,b){return new A.bj(a+1000*b)}, +oT(a,b,c){var s,r +for(s=0;s<5;++s){r=a[s] +if(r.b===b)return r}throw A.c(A.an(b,"name","No enum value with that name"))}, +uI(a,b){var s,r,q=A.az(t.N,b) +for(s=0;s<2;++s){r=a[s] +q.q(0,r.b,r)}return q}, +hX(a){if(typeof a=="number"||A.cm(a)||a==null)return J.bi(a) +if(typeof a=="string")return JSON.stringify(a) +return A.qM(a)}, +qk(a,b){A.dB(a,"error",t.K) +A.dB(b,"stackTrace",t.l) +A.uJ(a,b)}, +eO(a){return new A.hz(a)}, +T(a,b){return new A.bt(!1,null,b,a)}, +an(a,b,c){return new A.bt(!0,a,b,c)}, +cp(a,b,c){return a}, +lp(a,b){return new A.e_(null,null,!0,a,b,"Value not in range")}, +a5(a,b,c,d,e){return new A.e_(b,c,!0,a,d,"Invalid value")}, +qQ(a,b,c,d){if(ac)throw A.c(A.a5(a,b,c,d,null)) +return a}, +vl(a,b,c,d){if(0>a||a>=d)A.J(A.i1(a,d,b,null,c)) +return a}, +bv(a,b,c){if(0>a||a>c)throw A.c(A.a5(a,0,c,"start",null)) +if(b!=null){if(a>b||b>c)throw A.c(A.a5(b,a,c,"end",null)) +return b}return c}, +al(a,b){if(a<0)throw A.c(A.a5(a,0,null,b,null)) +return a}, +qr(a,b){var s=b.b +return new A.f5(s,!0,a,null,"Index out of range")}, +i1(a,b,c,d,e){return new A.f5(b,!0,a,e,"Index out of range")}, +aa(a){return new A.fx(a)}, +r2(a){return new A.iJ(a)}, +F(a){return new A.aU(a)}, +ay(a){return new A.hK(a)}, +kL(a){return new A.jf(a)}, +at(a,b,c){return new A.aP(a,b,c)}, +uY(a,b,c){var s,r +if(A.pN(a)){if(b==="("&&c===")")return"(...)" +return b+"..."+c}s=A.k([],t.s) +B.b.l($.bh,a) +try{A.xb(a,s)}finally{if(0>=$.bh.length)return A.b($.bh,-1) +$.bh.pop()}r=A.pb(b,t.e7.a(s),", ")+c +return r.charCodeAt(0)==0?r:r}, +p_(a,b,c){var s,r +if(A.pN(a))return b+"..."+c +s=new A.aI(b) +B.b.l($.bh,a) +try{r=s +r.a=A.pb(r.a,a,", ")}finally{if(0>=$.bh.length)return A.b($.bh,-1) +$.bh.pop()}s.a+=c +r=s.a +return r.charCodeAt(0)==0?r:r}, +xb(a,b){var s,r,q,p,o,n,m,l=a.gv(a),k=0,j=0 +for(;;){if(!(k<80||j<3))break +if(!l.k())return +s=A.x(l.gn()) +B.b.l(b,s) +k+=s.length+2;++j}if(!l.k()){if(j<=5)return +if(0>=b.length)return A.b(b,-1) +r=b.pop() +if(0>=b.length)return A.b(b,-1) +q=b.pop()}else{p=l.gn();++j +if(!l.k()){if(j<=4){B.b.l(b,A.x(p)) +return}r=A.x(p) +if(0>=b.length)return A.b(b,-1) +q=b.pop() +k+=r.length+2}else{o=l.gn();++j +for(;l.k();p=o,o=n){n=l.gn();++j +if(j>100){for(;;){if(!(k>75&&j>3))break +if(0>=b.length)return A.b(b,-1) +k-=b.pop().length+2;--j}B.b.l(b,"...") +return}}q=A.x(p) +r=A.x(o) +k+=r.length+q.length+4}}if(j>b.length+2){k+=5 +m="..."}else m=null +for(;;){if(!(k>80&&b.length>3))break +if(0>=b.length)return A.b(b,-1) +k-=b.pop().length+2 +if(m==null){k+=5 +m="..."}}if(m!=null)B.b.l(b,m) +B.b.l(b,q) +B.b.l(b,r)}, +fh(a,b,c,d){var s +if(B.f===c){s=J.aM(a) +b=J.aM(b) +return A.pc(A.cO(A.cO($.oM(),s),b))}if(B.f===d){s=J.aM(a) +b=J.aM(b) +c=J.aM(c) +return A.pc(A.cO(A.cO(A.cO($.oM(),s),b),c))}s=J.aM(a) +b=J.aM(b) +c=J.aM(c) +d=J.aM(d) +d=A.pc(A.cO(A.cO(A.cO(A.cO($.oM(),s),b),c),d)) +return d}, +yu(a){var s=A.x(a),r=$.xi +if(r==null)A.tp(s) +else r.$1(s)}, +r4(a){var s,r=null,q=new A.aI(""),p=A.k([-1],t.t) +A.vI(r,r,r,q,p) +B.b.l(p,q.a.length) +q.a+="," +A.vH(256,B.ag.ke(a),q) +s=q.a +return new A.iN(s.charCodeAt(0)==0?s:s,p,r).geW()}, +bU(a5){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1,a2,a3=null,a4=a5.length +if(a4>=5){if(4>=a4)return A.b(a5,4) +s=((a5.charCodeAt(4)^58)*3|a5.charCodeAt(0)^100|a5.charCodeAt(1)^97|a5.charCodeAt(2)^116|a5.charCodeAt(3)^97)>>>0 +if(s===0)return A.r3(a4=14)B.b.q(r,7,a4) +q=r[1] +if(q>=0)if(A.t4(a5,0,q,20,r)===20)r[7]=q +p=r[2]+1 +o=r[3] +n=r[4] +m=r[5] +l=r[6] +if(lq+3)){i=o>0 +if(!(i&&o+1===n)){if(!B.a.D(a5,"\\",n))if(p>0)h=B.a.D(a5,"\\",p-1)||B.a.D(a5,"\\",p-2) +else h=!1 +else h=!0 +if(!h){if(!(mn+2&&B.a.D(a5,"/..",m-3) +else h=!0 +if(!h)if(q===4){if(B.a.D(a5,"file",0)){if(p<=0){if(!B.a.D(a5,"/",n)){g="file:///" +s=3}else{g="file://" +s=2}a5=g+B.a.t(a5,n,a4) +m+=s +l+=s +a4=a5.length +p=7 +o=7 +n=7}else if(n===m){++l +f=m+1 +a5=B.a.aO(a5,n,m,"/");++a4 +m=f}j="file"}else if(B.a.D(a5,"http",0)){if(i&&o+3===n&&B.a.D(a5,"80",o+1)){l-=3 +e=n-3 +m-=3 +a5=B.a.aO(a5,o,n,"") +a4-=3 +n=e}j="http"}}else if(q===5&&B.a.D(a5,"https",0)){if(i&&o+4===n&&B.a.D(a5,"443",o+1)){l-=4 +e=n-4 +m-=4 +a5=B.a.aO(a5,o,n,"") +a4-=3 +n=e}j="https"}k=!h}}}}if(k)return new A.bo(a40)j=A.nQ(a5,0,q) +else{if(q===0)A.ey(a5,0,"Invalid empty scheme") +j=""}d=a3 +if(p>0){c=q+3 +b=c=c)n=0 +else{if(!(q>=0&&q=0&&b=0&&r=97&&o<=102)continue +if(p===46){if(q-1===b)return new A.aP(n,a,q) +r=q +break}return new A.aP("Unexpected character",a,q-1)}if(r-1===b)return new A.aP(n,a,r) +return new A.aP("Missing '.' in IPvFuture address",a,r)}if(r===c)return new A.aP("Missing address in IPvFuture address, host, cursor",null,null) +for(;;){if(!(r>=0&&r=0&&a4=a5)j=0 +else{if(!(n=97&&f<=102)g=f-87 +else break A +k=h}if(nm){if(j===46){if(k){if(p<=6){A.vJ(a3,m,a5,s,p*2) +p+=2 +n=a5 +break}a2.$2(a1,m)}break}o=p*2 +e=B.c.L(l,8) +if(!(o<16))return A.b(s,o) +s[o]=e;++o +if(!(o<16))return A.b(s,o) +s[o]=l&255;++p +if(j===58){if(p<8){++n +m=n +l=0 +k=!0 +continue}a2.$2(a1,n)}break}if(j===58){if(q<0){d=p+1;++n +q=p +p=d +m=n +continue}a2.$2("only one wildcard `::` is allowed",n)}if(q!==p-1)a2.$2("missing part",n) +break}if(n0){a=c*2 +a0=16-b*2 +B.e.N(s,a0,16,s,a) +B.e.es(s,a,a0,0)}}return s}, +hj(a,b,c,d,e,f,g){return new A.hi(a,b,c,d,e,f,g)}, +ax(a,b,c,d){var s,r,q,p,o,n,m,l,k=null +d=d==null?"":A.nQ(d,0,d.length) +s=A.rD(k,0,0) +a=A.rA(a,0,a==null?0:a.length,!1) +r=A.rC(k,0,0,k) +q=A.rz(k,0,0) +p=A.nP(k,d) +o=d==="file" +if(a==null)n=s.length!==0||p!=null||o +else n=!1 +if(n)a="" +n=a==null +m=!n +b=A.rB(b,0,b==null?0:b.length,c,d,m) +l=d.length===0 +if(l&&n&&!B.a.A(b,"/"))b=A.pv(b,!l||m) +else b=A.dz(b) +return A.hj(d,s,n&&B.a.A(b,"//")?"":a,p,b,r,q)}, +rw(a){if(a==="http")return 80 +if(a==="https")return 443 +return 0}, +ey(a,b,c){throw A.c(A.at(c,a,b))}, +rv(a,b){return b?A.wu(a,!1):A.wt(a,!1)}, +wp(a,b){var s,r,q +for(s=a.length,r=0;r")),r=r.h("P.E");s.k();){q=s.d +if(q==null)q=r.a(q) +if(B.a.H(q,A.R('["*/:<>?\\\\|]',!0,!1,!1,!1)))if(b)throw A.c(A.T("Illegal character in path",null)) +else throw A.c(A.aa("Illegal character in path: "+q))}}, +wq(a,b){var s,r="Illegal drive letter " +if(!(65<=a&&a<=90))s=97<=a&&a<=122 +else s=!0 +if(s)return +if(b)throw A.c(A.T(r+A.qV(a),null)) +else throw A.c(A.aa(r+A.qV(a)))}, +wt(a,b){var s=null,r=A.k(a.split("/"),t.s) +if(B.a.A(a,"/"))return A.ax(s,s,r,"file") +else return A.ax(s,s,r,s)}, +wu(a,b){var s,r,q,p,o,n="\\",m=null,l="file" +if(B.a.A(a,"\\\\?\\"))if(B.a.D(a,"UNC\\",4))a=B.a.aO(a,0,7,n) +else{a=B.a.K(a,4) +s=a.length +r=!0 +if(s>=3){if(1>=s)return A.b(a,1) +if(a.charCodeAt(1)===58){if(2>=s)return A.b(a,2) +s=a.charCodeAt(2)!==92}else s=r}else s=r +if(s)throw A.c(A.an(a,"path","Windows paths with \\\\?\\ prefix must be absolute"))}else a=A.bH(a,"/",n) +s=a.length +if(s>1&&a.charCodeAt(1)===58){if(0>=s)return A.b(a,0) +A.wq(a.charCodeAt(0),!0) +if(s!==2){if(2>=s)return A.b(a,2) +s=a.charCodeAt(2)!==92}else s=!0 +if(s)throw A.c(A.an(a,"path","Windows paths with drive letter must be absolute")) +q=A.k(a.split(n),t.s) +A.nN(q,!0,1) +return A.ax(m,m,q,l)}if(B.a.A(a,n))if(B.a.D(a,n,1)){p=B.a.aY(a,n,2) +s=p<0 +o=s?B.a.K(a,2):B.a.t(a,2,p) +q=A.k((s?"":B.a.K(a,p+1)).split(n),t.s) +A.nN(q,!0,0) +return A.ax(o,m,q,l)}else{q=A.k(a.split(n),t.s) +A.nN(q,!0,0) +return A.ax(m,m,q,l)}else{q=A.k(a.split(n),t.s) +A.nN(q,!0,0) +return A.ax(m,m,q,m)}}, +nP(a,b){if(a!=null&&a===A.rw(b))return null +return a}, +rA(a,b,c,d){var s,r,q,p,o,n,m,l,k +if(a==null)return null +if(b===c)return"" +s=a.length +if(!(b>=0&&b=0&&r=b&&o=b&&s=0&&r=o){if(h==null)h=new A.aI("") +if(q=0&&r=n){if(p==null)p=new A.aI("") +if(q")).az(0,"/")}else if(d!=null)throw A.c(A.T("Both path and pathSegments specified",null)) +else r=A.hk(a,b,c,128,!0,!0) +if(r.length===0){if(q)return"/"}else if(p&&!B.a.A(r,"/"))r="/"+r +return A.wv(r,e,f)}, +wv(a,b,c){var s=b.length===0 +if(s&&!c&&!B.a.A(a,"/")&&!B.a.A(a,"\\"))return A.pv(a,!s||c) +return A.dz(a)}, +rC(a,b,c,d){if(a!=null)return A.hk(a,b,c,256,!0,!1) +return null}, +rz(a,b,c){if(a==null)return null +return A.hk(a,b,c,256,!0,!1)}, +pu(a,b,c){var s,r,q,p,o,n,m=u.v,l=b+2,k=a.length +if(l>=k)return"%" +s=b+1 +if(!(s>=0&&s=0))return A.b(a,l) +q=a.charCodeAt(l) +p=A.ou(r) +o=A.ou(q) +if(p<0||o<0)return"%" +n=p*16+o +if(n<127){if(!(n>=0))return A.b(m,n) +l=(m.charCodeAt(n)&1)!==0}else l=!1 +if(l)return A.b1(c&&65<=n&&90>=n?(n|32)>>>0:n) +if(r>=97||q>=97)return B.a.t(a,b,b+3).toUpperCase() +return null}, +pt(a){var s,r,q,p,o,n,m,l,k="0123456789ABCDEF" +if(a<=127){s=new Uint8Array(3) +s[0]=37 +r=a>>>4 +if(!(r<16))return A.b(k,r) +s[1]=k.charCodeAt(r) +s[2]=k.charCodeAt(a&15)}else{if(a>2047)if(a>65535){q=240 +p=4}else{q=224 +p=3}else{q=192 +p=2}r=3*p +s=new Uint8Array(r) +for(o=0;--p,p>=0;q=128){n=B.c.jk(a,6*p)&63|q +if(!(o>>4 +if(!(l<16))return A.b(k,l) +if(!(m=0&&q=m)return A.b(s,-1) +s.pop() +if(s.length===0)B.b.l(s,"")}p=!0}else{p="."===n +if(!p)B.b.l(s,n)}}if(p)B.b.l(s,"") +return B.b.az(s,"/")}, +pv(a,b){var s,r,q,p,o,n +if(!A.rE(a))return!b?A.rx(a):a +s=A.k([],t.s) +for(r=a.split("/"),q=r.length,p=!1,o=0;o=s.length)return A.b(s,-1) +s.pop()}else B.b.l(s,"..") +p=!0}else{p="."===n +if(!p)B.b.l(s,n.length===0&&s.length===0?"./":n)}}if(s.length===0)return"./" +if(p)B.b.l(s,"") +if(!b){if(0>=s.length)return A.b(s,0) +B.b.q(s,0,A.rx(s[0]))}return B.b.az(s,"/")}, +rx(a){var s,r,q,p=u.v,o=a.length +if(o>=2&&A.ry(a.charCodeAt(0)))for(s=1;s127)throw A.c(A.T("Illegal percent encoding in URI",null)) +if(r===37){if(n+3>o)throw A.c(A.T("Truncated URI",null)) +B.b.l(p,A.ws(a,n+1)) +n+=2}else B.b.l(p,r)}}return d.d2(p)}, +ry(a){var s=a|32 +return 97<=s&&s<=122}, +vI(a,b,c,d,e){d.a=d.a}, +r3(a,b,c){var s,r,q,p,o,n,m,l,k="Invalid MIME type",j=A.k([b-1],t.t) +for(s=a.length,r=b,q=-1,p=null;rb)throw A.c(A.at(k,a,r)) +while(p!==44){B.b.l(j,r);++r +for(o=-1;r=0))return A.b(a,r) +p=a.charCodeAt(r) +if(p===61){if(o<0)o=r}else if(p===59||p===44)break}if(o>=0)B.b.l(j,o) +else{n=B.b.gE(j) +if(p!==44||r!==n+7||!B.a.D(a,"base64",n+1))throw A.c(A.at("Expecting '='",a,r)) +break}}B.b.l(j,r) +m=r+1 +if((j.length&1)===1)a=B.ah.kw(a,m,s) +else{l=A.rF(a,m,s,256,!0,!1) +if(l!=null)a=B.a.aO(a,m,s,l)}return new A.iN(a,j,c)}, +vH(a,b,c){var s,r,q,p,o,n="0123456789ABCDEF" +for(s=b.length,r=0,q=0;q>>4 +if(!(o<16))return A.b(n,o) +o=A.b1(n.charCodeAt(o)) +c.a+=o +o=A.b1(n.charCodeAt(p&15)) +c.a+=o}}if((r&4294967040)!==0)for(q=0;q255)throw A.c(A.an(p,"non-byte value",null))}}, +t4(a,b,c,d,e){var s,r,q,p,o,n='\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe3\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x0e\x03\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xea\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\n\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xeb\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\xeb\xeb\xeb\x8b\xeb\xeb\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\xeb\x83\xeb\xeb\x8b\xeb\x8b\xeb\xcd\x8b\xeb\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x92\x83\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\x8b\xeb\x8b\xeb\x8b\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xebD\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x12D\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\xe5\xe5\xe5\x05\xe5D\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe8\x8a\xe5\xe5\x05\xe5\x05\xe5\xcd\x05\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x8a\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05f\x05\xe5\x05\xe5\xac\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\xe5\xe5\xe5\x05\xe5D\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\xe5\x8a\xe5\xe5\x05\xe5\x05\xe5\xcd\x05\xe5\x05\x05\x05\x05\x05\x05\x05\x05\x05\x8a\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05f\x05\xe5\x05\xe5\xac\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7D\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\xe7\xe7\xe7\xe7\xe7\xe7\xcd\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\xe7\x07\x07\x07\x07\x07\x07\x07\x07\x07\xe7\xe7\xe7\xe7\xe7\xac\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7D\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\xe7\xe7\xe7\xe7\xe7\xe7\xcd\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\xe7\x8a\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\xe7\xe7\xe7\xe7\xe7\xac\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\x05\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x10\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x12\n\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\v\n\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xec\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\xec\xec\xec\f\xec\xec\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\f\xec\xec\xec\xec\f\xec\f\xec\xcd\f\xec\f\f\f\f\f\f\f\f\f\xec\f\f\f\f\f\f\f\f\f\f\xec\f\xec\f\xec\f\xed\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\xed\xed\xed\r\xed\xed\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\xed\xed\xed\xed\r\xed\r\xed\xed\r\xed\r\r\r\r\r\r\r\r\r\xed\r\r\r\r\r\r\r\r\r\r\xed\r\xed\r\xed\r\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xea\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x0f\xea\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe1\xe1\x01\xe1\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\xe1\xe9\xe1\xe1\x01\xe1\x01\xe1\xcd\x01\xe1\x01\x01\x01\x01\x01\x01\x01\x01\x01\t\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01"\x01\xe1\x01\xe1\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x11\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xe9\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\v\t\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\x13\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xeb\xeb\v\xeb\xeb\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\xeb\xea\xeb\xeb\v\xeb\v\xeb\xcd\v\xeb\v\v\v\v\v\v\v\v\v\xea\v\v\v\v\v\v\v\v\v\v\xeb\v\xeb\v\xeb\xac\xf5\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\xf5\x15\xf5\x15\x15\xf5\x15\x15\x15\x15\x15\x15\x15\x15\x15\x15\xf5\xf5\xf5\xf5\xf5\xf5' +for(s=a.length,r=b;r95)q=31 +p=d*96+q +if(!(p<2112))return A.b(n,p) +o=n.charCodeAt(p) +d=o&31 +B.b.q(e,o>>>5,r)}return d}, +rn(a){if(a.b===7&&B.a.A(a.a,"package")&&a.c<=0)return A.t6(a.a,a.e,a.f) +return-1}, +t6(a,b,c){var s,r,q,p +for(s=a.length,r=b,q=0;r=0&&r=1)return a.$1(b) +return a.$0()}, +wI(a,b,c,d){t.Y.a(a) +A.d(d) +if(d>=2)return a.$2(b,c) +if(d===1)return a.$1(b) +return a.$0()}, +wJ(a,b,c,d,e){t.Y.a(a) +A.d(e) +if(e>=3)return a.$3(b,c,d) +if(e===2)return a.$2(b,c) +if(e===1)return a.$1(b) +return a.$0()}, +wK(a,b,c,d,e,f){t.Y.a(a) +A.d(f) +if(f>=4)return a.$4(b,c,d,e) +if(f===3)return a.$3(b,c,d) +if(f===2)return a.$2(b,c) +if(f===1)return a.$1(b) +return a.$0()}, +wL(a,b,c,d,e,f,g){t.Y.a(a) +A.d(g) +if(g>=5)return a.$5(b,c,d,e,f) +if(g===4)return a.$4(b,c,d,e) +if(g===3)return a.$3(b,c,d) +if(g===2)return a.$2(b,c) +if(g===1)return a.$1(b) +return a.$0()}, +rZ(a){return a==null||A.cm(a)||typeof a=="number"||typeof a=="string"||t.jx.b(a)||t.ev.b(a)||t.fi.b(a)||t.m6.b(a)||t.hM.b(a)||t.bW.b(a)||t.mC.b(a)||t.pk.b(a)||t.kI.b(a)||t.lo.b(a)||t.fW.b(a)}, +yh(a){if(A.rZ(a))return a +return new A.oz(new A.ek(t.mp)).$1(a)}, +pD(a,b,c,d){return d.a(a[b].apply(a,c))}, +tc(a,b,c){var s,r +if(b==null)return c.a(new a()) +if(b instanceof Array)switch(b.length){case 0:return c.a(new a()) +case 1:return c.a(new a(b[0])) +case 2:return c.a(new a(b[0],b[1])) +case 3:return c.a(new a(b[0],b[1],b[2])) +case 4:return c.a(new a(b[0],b[1],b[2],b[3]))}s=[null] +B.b.ag(s,b) +r=a.bind.apply(a,s) +String(r) +return c.a(new r())}, +a3(a,b){var s=new A.t($.u,b.h("t<0>")),r=new A.ad(s,b.h("ad<0>")) +a.then(A.d0(new A.oE(r,b),1),A.d0(new A.oF(r),1)) +return s}, +rY(a){return a==null||typeof a==="boolean"||typeof a==="number"||typeof a==="string"||a instanceof Int8Array||a instanceof Uint8Array||a instanceof Uint8ClampedArray||a instanceof Int16Array||a instanceof Uint16Array||a instanceof Int32Array||a instanceof Uint32Array||a instanceof Float32Array||a instanceof Float64Array||a instanceof ArrayBuffer||a instanceof DataView}, +td(a){if(A.rY(a))return a +return new A.op(new A.ek(t.mp)).$1(a)}, +oz:function oz(a){this.a=a}, +oE:function oE(a,b){this.a=a +this.b=b}, +oF:function oF(a){this.a=a}, +op:function op(a){this.a=a}, +tk(a,b,c){A.pF(c,t.o,"T","max") +return Math.max(c.a(a),c.a(b))}, +yy(a){return Math.sqrt(a)}, +yx(a){return Math.sin(a)}, +xZ(a){return Math.cos(a)}, +yE(a){return Math.tan(a)}, +xB(a){return Math.acos(a)}, +xC(a){return Math.asin(a)}, +xV(a){return Math.atan(a)}, +jl:function jl(a){this.a=a}, +dN:function dN(){}, +hR:function hR(a){this.$ti=a}, +ie:function ie(a){this.$ti=a}, +io:function io(){}, +iL:function iL(){}, +uF(a,b){var s=new A.eZ(a,b,A.az(t.S,t.eV),A.fu(null,null,!0,t.o5),new A.ad(new A.t($.u,t.D),t.h)) +s.hX(a,!1,b) +return s}, +eZ:function eZ(a,b,c,d,e){var _=this +_.a=a +_.c=b +_.d=0 +_.e=c +_.f=d +_.r=!1 +_.w=e}, +kB:function kB(a){this.a=a}, +kC:function kC(a,b){this.a=a +this.b=b}, +jp:function jp(a,b){this.a=a +this.b=b}, +hL:function hL(){}, +hT:function hT(a){this.a=a}, +hS:function hS(){}, +kD:function kD(a){this.a=a}, +kE:function kE(a){this.a=a}, +cB:function cB(){}, +av:function av(a,b){this.a=a +this.b=b}, +by:function by(a,b){this.a=a +this.b=b}, +b0:function b0(a){this.a=a}, +bL:function bL(a,b,c){this.a=a +this.b=b +this.c=c}, +c_:function c_(a){this.a=a}, +dX:function dX(a,b){this.a=a +this.b=b}, +cN:function cN(a,b){this.a=a +this.b=b}, +cv:function cv(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +cG:function cG(a){this.a=a}, +bM:function bM(a,b){this.a=a +this.b=b}, +c9:function c9(a,b){this.a=a +this.b=b}, +cI:function cI(a,b){this.a=a +this.b=b}, +cu:function cu(a,b){this.a=a +this.b=b}, +cK:function cK(a){this.a=a}, +cH:function cH(a,b){this.a=a +this.b=b}, +ca:function ca(a){this.a=a}, +bQ:function bQ(a){this.a=a}, +vs(a,b,c){var s=null,r=t.S,q=A.k([],t.t) +r=new A.iB(a,!1,!0,A.az(r,t.q),A.az(r,t.gU),q,new A.hb(s,s,t.ex),A.p4(t.d0),new A.ad(new A.t($.u,t.D),t.h),A.fu(s,s,!1,t.bC)) +r.hZ(a,!1,!0) +return r}, +iB:function iB(a,b,c,d,e,f,g,h,i,j){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.f=_.e=0 +_.r=e +_.w=f +_.x=g +_.y=!1 +_.z=h +_.Q=i +_.as=j}, +lz:function lz(a){this.a=a}, +lA:function lA(a,b){this.a=a +this.b=b}, +lB:function lB(a,b){this.a=a +this.b=b}, +lv:function lv(a,b){this.a=a +this.b=b}, +lw:function lw(a,b){this.a=a +this.b=b}, +ly:function ly(a,b){this.a=a +this.b=b}, +lx:function lx(a){this.a=a}, +eo:function eo(a,b,c){this.a=a +this.b=b +this.c=c}, +j_:function j_(a){this.a=a}, +mB:function mB(a,b){this.a=a +this.b=b}, +mC:function mC(a,b){this.a=a +this.b=b}, +mz:function mz(){}, +mv:function mv(a,b){this.a=a +this.b=b}, +mw:function mw(){}, +mx:function mx(){}, +mu:function mu(){}, +mA:function mA(){}, +my:function my(){}, +di:function di(a,b){this.a=a +this.b=b}, +bS:function bS(a,b){this.a=a +this.b=b}, +yv(a,b){var s,r,q={} +q.a=s +q.a=null +s=new A.cq(new A.a6(new A.t($.u,b.h("t<0>")),b.h("a6<0>")),A.k([],t.f7),b.h("cq<0>")) +q.a=s +r=t.X +A.ts(new A.oG(q,a,b),null,A.v4([B.X,s],r,r),t.H) +return q.a}, +pE(){var s=$.u.j(0,B.X) +if(s instanceof A.cq&&s.c)throw A.c(B.w)}, +oG:function oG(a,b,c){this.a=a +this.b=b +this.c=c}, +cq:function cq(a,b,c){var _=this +_.a=a +_.b=b +_.c=!1 +_.$ti=c}, +eR:function eR(){}, +aA:function aA(){}, +eQ:function eQ(a,b){this.a=a +this.b=b}, +dI:function dI(a,b){this.a=a +this.b=b}, +rR(a){return"SAVEPOINT s"+A.d(a)}, +rP(a){return"RELEASE s"+A.d(a)}, +rQ(a){return"ROLLBACK TO s"+A.d(a)}, +eW:function eW(){}, +ln:function ln(){}, +m6:function m6(){}, +lj:function lj(){}, +dL:function dL(){}, +ff:function ff(){}, +hV:function hV(){}, +bX:function bX(){}, +mI:function mI(a,b,c){this.a=a +this.b=b +this.c=c}, +mN:function mN(a,b,c){this.a=a +this.b=b +this.c=c}, +mL:function mL(a,b,c){this.a=a +this.b=b +this.c=c}, +mM:function mM(a,b,c){this.a=a +this.b=b +this.c=c}, +mK:function mK(a,b,c){this.a=a +this.b=b +this.c=c}, +mJ:function mJ(a,b){this.a=a +this.b=b}, +jB:function jB(){}, +h8:function h8(a,b,c,d,e,f,g,h,i){var _=this +_.y=a +_.z=null +_.Q=b +_.as=c +_.at=d +_.ax=e +_.ay=f +_.ch=g +_.e=h +_.a=i +_.b=0 +_.d=_.c=!1}, +nB:function nB(a){this.a=a}, +nC:function nC(a){this.a=a}, +eX:function eX(){}, +kA:function kA(a,b){this.a=a +this.b=b}, +kz:function kz(a){this.a=a}, +j5:function j5(a,b){var _=this +_.e=a +_.a=b +_.b=0 +_.d=_.c=!1}, +fQ:function fQ(a,b,c){var _=this +_.e=a +_.f=null +_.r=b +_.a=c +_.b=0 +_.d=_.c=!1}, +n1:function n1(a,b){this.a=a +this.b=b}, +qP(a,b){var s,r,q,p=A.az(t.N,t.S) +for(s=a.length,r=0;r3)throw A.c("Expected two or three arguments to regexp") +s=a.j(0,0) +q=a.j(0,1) +if(s==null||q==null)return null +if(typeof s!="string"||typeof q!="string")throw A.c("Expected two strings as parameters to regexp") +if(g===3){p=a.j(0,2) +if(A.bZ(p)){k=(p&1)===1 +j=(p&2)!==2 +i=(p&4)===4 +h=(p&8)===8}}r=null +try{o=k +n=j +m=i +r=A.R(s,n,h,o,m)}catch(l){if(A.S(l) instanceof A.aP)throw A.c("Invalid regex") +else throw l}o=r.b +return o.test(q)}, +wQ(a){var s,r,q=a.a.b +if(q<2||q>3)throw A.c("Expected 2 or 3 arguments to moor_contains") +s=a.j(0,0) +r=a.j(0,1) +if(s==null||r==null)return null +if(typeof s!="string"||typeof r!="string")throw A.c("First two args to contains must be strings") +return q===3&&a.j(0,2)===1?B.a.H(s,r):B.a.H(s.toLowerCase(),r.toLowerCase())}, +kK:function kK(){}, +oj:function oj(a){this.a=a}, +ic:function ic(a){var _=this +_.a=$ +_.b=!1 +_.d=null +_.e=a}, +lb:function lb(a,b){this.a=a +this.b=b}, +lc:function lc(a,b){this.a=a +this.b=b}, +bN:function bN(){this.a=null}, +le:function le(a,b,c,d,e){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e}, +lf:function lf(a,b,c){this.a=a +this.b=b +this.c=c}, +lg:function lg(a,b){this.a=a +this.b=b}, +vO(a,b,c,d){var s,r=null,q=new A.iF(t.b2),p=t.X,o=A.fu(r,r,!1,p),n=A.fu(r,r,!1,p),m=A.j(n),l=A.j(o),k=A.qq(new A.aC(n,m.h("aC<1>")),new A.dy(o,l.h("dy<1>")),!0,p) +q.a=k +p=A.qq(new A.aC(o,l.h("aC<1>")),new A.dy(n,m.h("dy<1>")),!0,p) +q.b=p +s=new A.j_(A.p6(c)) +a.onmessage=A.bF(new A.mr(b,q,d,s)) +k=k.b +k===$&&A.C() +new A.aC(k,A.j(k).h("aC<1>")).eI(new A.ms(d,s,a),new A.mt(b,a)) +return p}, +mr:function mr(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +ms:function ms(a,b,c){this.a=a +this.b=b +this.c=c}, +mt:function mt(a,b){this.a=a +this.b=b}, +kw:function kw(a,b,c){var _=this +_.a=a +_.b=b +_.c=c +_.d=null}, +ky:function ky(a){this.a=a}, +kx:function kx(a,b){this.a=a +this.b=b}, +p6(a){var s +A:{if(a<=0){s=B.q +break A}if(1===a){s=B.aM +break A}if(2===a){s=B.aN +break A}if(3===a){s=B.aO +break A}if(a>3){s=B.r +break A}s=A.J(A.eO(null))}return s}, +qO(a){if("v" in a)return A.p6(A.d(A.L(a.v))) +else return B.q}, +pf(a){var s,r,q,p,o,n,m,l,k,j=A.v(a.type),i=a.payload +A:{if("Error"===j){s=new A.ec(A.v(A.i(i))) +break A}if("ServeDriftDatabase"===j){A.i(i) +r=A.qO(i) +s=A.bU(A.v(i.sqlite)) +q=A.i(i.port) +p=A.oT(B.aB,A.v(i.storage),t.cy) +o=A.v(i.database) +n=A.bq(i.initPort) +m=r.c +l=m<2||A.aJ(i.migrations) +s=new A.cJ(s,q,p,o,n,r,l,m<3||A.aJ(i.new_serialization)) +break A}if("StartFileSystemServer"===j){s=new A.e3(A.i(i)) +break A}if("RequestCompatibilityCheck"===j){s=new A.de(A.v(i)) +break A}if("DedicatedWorkerCompatibilityResult"===j){A.i(i) +k=A.k([],t.I) +if("existing" in i)B.b.ag(k,A.qj(t.c.a(i.existing))) +s=A.aJ(i.supportsNestedWorkers) +q=A.aJ(i.canAccessOpfs) +p=A.aJ(i.supportsSharedArrayBuffers) +o=A.aJ(i.supportsIndexedDb) +n=A.aJ(i.indexedDbExists) +m=A.aJ(i.opfsExists) +m=new A.dM(s,q,p,o,k,A.qO(i),n,m) +s=m +break A}if("SharedWorkerCompatibilityResult"===j){s=A.vt(t.c.a(i)) +break A}if("DeleteDatabase"===j){s=i==null?A.a2(i):i +t.c.a(s) +q=$.pY() +if(0<0||0>=s.length)return A.b(s,0) +q=q.j(0,A.v(s[0])) +q.toString +if(1<0||1>=s.length)return A.b(s,1) +s=new A.eY(new A.am(q,A.v(s[1]))) +break A}s=A.J(A.T("Unknown type "+j,null))}return s}, +vt(a){var s,r,q=new A.lJ(a) +if(a.length>5){if(5<0||5>=a.length)return A.b(a,5) +s=A.qj(t.c.a(a[5])) +if(a.length>6){if(6<0||6>=a.length)return A.b(a,6) +r=A.p6(A.d(A.L(a[6])))}else r=B.q}else{s=B.A +r=B.q}return new A.cb(q.$1(0),q.$1(1),q.$1(2),s,r,q.$1(3),q.$1(4))}, +qj(a){var s,r,q=A.k([],t.I),p=B.b.bx(a,t.m),o=p.$ti +p=new A.bb(p,p.gm(0),o.h("bb")) +o=o.h("A.E") +while(p.k()){s=p.d +if(s==null)s=o.a(s) +r=$.pY().j(0,A.v(s.l)) +r.toString +B.b.l(q,new A.am(r,A.v(s.n)))}return q}, +qi(a){var s,r,q,p,o=A.k([],t.kG) +for(s=a.length,r=0;r"))) +while(i.k()){l=i.gn() +if(A.v(l.name)===a){q=!0 +s=1 +break A}}q=!1 +s=1 +break +case 8:k=A.i(n.open(a,1)) +k.onupgradeneeded=A.bF(new A.om(g,k)) +s=10 +return A.e(A.k5(k,t.m),$async$eJ) +case 10:j=c +if(g.a==null)g.a=!0 +j.close() +s=g.a===!1?11:12 +break +case 11:s=13 +return A.e(A.k5(A.i(n.deleteDatabase(a)),t.X),$async$eJ) +case 13:case 12:p=2 +s=6 +break +case 4:p=3 +f=o.pop() +s=6 +break +case 3:s=2 +break +case 6:i=g.a +q=i===!0 +s=1 +break +case 1:return A.o(q,r) +case 2:return A.n(o.at(-1),r)}}) +return A.p($async$eJ,r)}, +oq(a){var s=0,r=A.q(t.H),q +var $async$oq=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:q=v.G +s="indexedDB" in q?2:3 +break +case 2:s=4 +return A.e(A.k5(A.i(A.i(q.indexedDB).deleteDatabase(a)),t.X),$async$oq) +case 4:case 3:return A.o(null,r)}}) +return A.p($async$oq,r)}, +jK(){var s=null +return A.yt()}, +yt(){var s=0,r=A.q(t.mU),q,p=2,o=[],n,m,l,k,j,i,h +var $async$jK=A.r(function(a,b){if(a===1){o.push(b) +s=p}for(;;)switch(s){case 0:j=null +i=A.pT() +if(i==null){q=null +s=1 +break}m=t.m +s=3 +return A.e(A.a3(A.i(i.getDirectory()),m),$async$jK) +case 3:n=b +p=5 +l=j +if(l==null)l={} +s=8 +return A.e(A.a3(A.i(n.getDirectoryHandle("drift_db",l)),m),$async$jK) +case 8:m=b +q=m +s=1 +break +p=2 +s=7 +break +case 5:p=4 +h=o.pop() +q=null +s=1 +break +s=7 +break +case 4:s=2 +break +case 7:case 1:return A.o(q,r) +case 2:return A.n(o.at(-1),r)}}) +return A.p($async$jK,r)}, +eL(){var s=0,r=A.q(t.bF),q,p=2,o=[],n=[],m,l,k,j,i,h,g,f +var $async$eL=A.r(function(a,b){if(a===1){o.push(b) +s=p}for(;;)switch(s){case 0:s=3 +return A.e(A.jK(),$async$eL) +case 3:g=b +if(g==null){q=B.z +s=1 +break}j=t.om +if(!(t.aQ.a(v.G.Symbol.asyncIterator) in g))A.J(A.T("Target object does not implement the async iterable interface",null)) +m=new A.h0(j.h("B(N.T)").a(new A.oC()),new A.eP(g,j),j.h("h0")) +l=A.k([],t.s) +j=new A.dx(A.dB(m,"stream",t.K),t.hT) +p=4 +i=t.m +case 7:s=9 +return A.e(j.k(),$async$eL) +case 9:if(!b){s=8 +break}k=j.gn() +s=A.v(k.kind)==="directory"?10:11 +break +case 10:p=13 +s=16 +return A.e(A.a3(A.i(k.getFileHandle("database")),i),$async$eL) +case 16:J.oN(l,A.v(k.name)) +p=4 +s=15 +break +case 13:p=12 +f=o.pop() +s=15 +break +case 12:s=4 +break +case 15:case 11:s=7 +break +case 8:n.push(6) +s=5 +break +case 4:n=[2] +case 5:p=2 +s=17 +return A.e(j.I(),$async$eL) +case 17:s=n.pop() +break +case 6:q=l +s=1 +break +case 1:return A.o(q,r) +case 2:return A.n(o.at(-1),r)}}) +return A.p($async$eL,r)}, +hs(a){return A.y0(a)}, +y0(a){var s=0,r=A.q(t.H),q,p=2,o=[],n,m,l,k,j +var $async$hs=A.r(function(b,c){if(b===1){o.push(c) +s=p}for(;;)switch(s){case 0:k=A.pT() +if(k==null){s=1 +break}m=t.m +s=3 +return A.e(A.a3(A.i(k.getDirectory()),m),$async$hs) +case 3:n=c +p=5 +s=8 +return A.e(A.a3(A.i(n.getDirectoryHandle("drift_db")),m),$async$hs) +case 8:n=c +s=9 +return A.e(A.a3(A.i(n.removeEntry(a,{recursive:!0})),t.X),$async$hs) +case 9:p=2 +s=7 +break +case 5:p=4 +j=o.pop() +s=7 +break +case 4:s=2 +break +case 7:case 1:return A.o(q,r) +case 2:return A.n(o.at(-1),r)}}) +return A.p($async$hs,r)}, +k5(a,b){var s=new A.t($.u,b.h("t<0>")),r=new A.a6(s,b.h("a6<0>")),q=t.v,p=t.m +A.aX(a,"success",q.a(new A.k8(r,a,b)),!1,p) +A.aX(a,"error",q.a(new A.k9(r,a)),!1,p) +A.aX(a,"blocked",q.a(new A.ka(r,a)),!1,p) +return s}, +uq(a,b,c){var s=$.u,r=new A.t(s,t.D),q=new A.a6(r,t.F),p={},o=t.X +A.qn(A.a3(A.i(a.request(b,p,A.oc(s.d0(new A.jQ(q,c),t.m)))),o),new A.jR(q),null,o,t.K) +return r}, +on:function on(){}, +om:function om(a,b){this.a=a +this.b=b}, +oC:function oC(){}, +hU:function hU(a,b){this.a=a +this.b=b}, +kJ:function kJ(a,b){this.a=a +this.b=b}, +kG:function kG(a){this.a=a}, +kF:function kF(a){this.a=a}, +kH:function kH(a,b,c){this.a=a +this.b=b +this.c=c}, +kI:function kI(a,b,c){this.a=a +this.b=b +this.c=c}, +j9:function j9(a,b){this.a=a +this.b=b}, +e0:function e0(a,b,c){var _=this +_.a=a +_.b=b +_.c=0 +_.d=c}, +lt:function lt(a){this.a=a}, +mi:function mi(a,b){this.a=a +this.b=b}, +k8:function k8(a,b,c){this.a=a +this.b=b +this.c=c}, +k9:function k9(a,b){this.a=a +this.b=b}, +ka:function ka(a,b){this.a=a +this.b=b}, +jQ:function jQ(a,b){this.a=a +this.b=b}, +jR:function jR(a){this.a=a}, +lD:function lD(a,b){this.a=a +this.b=null +this.c=b}, +lI:function lI(a){this.a=a}, +lE:function lE(a,b){this.a=a +this.b=b}, +lH:function lH(a,b,c){this.a=a +this.b=b +this.c=c}, +lF:function lF(a){this.a=a}, +lG:function lG(a,b,c){this.a=a +this.b=b +this.c=c}, +bV:function bV(a,b){this.a=a +this.b=b}, +bB:function bB(a,b){this.a=a +this.b=b}, +iV:function iV(a,b,c,d,e){var _=this +_.e=a +_.f=null +_.r=b +_.w=c +_.x=d +_.a=e +_.b=0 +_.d=_.c=!1}, +jE:function jE(a,b,c,d,e,f,g){var _=this +_.Q=a +_.as=b +_.at=c +_.b=null +_.d=_.c=!1 +_.e=d +_.f=e +_.r=f +_.x=g +_.y=$ +_.a=!1}, +qe(a){return new A.hM(a,".")}, +pA(a){return a}, +t7(a,b){var s,r,q,p,o,n,m,l +for(s=b.length,r=1;r=1;s=q){q=s-1 +if(b[q]!=null)break}p=new A.aI("") +o=a+"(" +p.a=o +n=A.M(b) +m=n.h("df<1>") +l=new A.df(b,0,s,m) +l.i_(b,0,s,n.c) +m=o+new A.K(l,m.h("l(P.E)").a(new A.ok()),m.h("K")).az(0,", ") +p.a=m +p.a=m+("): part "+(r-1)+" was null, but part "+r+" was not.") +throw A.c(A.T(p.i(0),null))}}, +hM:function hM(a,b){this.a=a +this.b=b}, +ke:function ke(){}, +kf:function kf(){}, +ok:function ok(){}, +dR:function dR(){}, +dY(a,b){var s,r,q,p,o,n,m=b.hH(a) +b.aZ(a) +if(m!=null)a=B.a.K(a,m.length) +s=t.s +r=A.k([],s) +q=A.k([],s) +s=a.length +if(s!==0){if(0>=s)return A.b(a,0) +p=b.aw(a.charCodeAt(0))}else p=!1 +if(p){if(0>=s)return A.b(a,0) +B.b.l(q,a[0]) +o=1}else{B.b.l(q,"") +o=0}for(n=o;n")),r=new A.a6(s,b.h("a6<0>")),q=t.v,p=t.m +A.aX(a,"success",q.a(new A.k6(r,a,b)),!1,p) +A.aX(a,"error",q.a(new A.k7(r,a)),!1,p) +return s}, +uC(a,b){var s=new A.t($.u,b.h("t<0>")),r=new A.a6(s,b.h("a6<0>")),q=t.v,p=t.m +A.aX(a,"success",q.a(new A.kb(r,a,b)),!1,p) +A.aX(a,"error",q.a(new A.kc(r,a)),!1,p) +A.aX(a,"blocked",q.a(new A.kd(r)),!1,p) +return s}, +dm:function dm(a,b){var _=this +_.c=_.b=_.a=null +_.d=a +_.$ti=b}, +mV:function mV(a,b){this.a=a +this.b=b}, +mW:function mW(a,b){this.a=a +this.b=b}, +k6:function k6(a,b,c){this.a=a +this.b=b +this.c=c}, +k7:function k7(a,b){this.a=a +this.b=b}, +kb:function kb(a,b,c){this.a=a +this.b=b +this.c=c}, +kc:function kc(a,b){this.a=a +this.b=b}, +kd:function kd(a){this.a=a}, +mm:function mm(a){this.a=a}, +mn:function mn(a){this.a=a}, +mp(a,b,c){var s=0,r=A.q(t.es),q,p,o +var $async$mp=A.r(function(d,e){if(d===1)return A.n(e,r) +for(;;)switch(s){case 0:p=v.G +o=A +s=3 +return A.e(A.a3(A.i(p.fetch(A.i(new p.URL(a,A.v(A.i(p.location).href))),null)),t.m),$async$mp) +case 3:q=o.mo(e,c) +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$mp,r)}, +mo(a,b){var s=0,r=A.q(t.es),q,p,o,n,m +var $async$mo=A.r(function(c,d){if(c===1)return A.n(d,r) +for(;;)switch(s){case 0:p=new A.hO(A.az(t.S,t.ie)) +o=A +n=A +m=A +s=3 +return A.e(new A.mm(p).dd(a),$async$mo) +case 3:q=new o.fz(new n.iY(m.vN(d,p))) +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$mo,r)}, +fz:function fz(a){this.a=a}, +eb:function eb(a,b,c,d){var _=this +_.d=a +_.e=b +_.b=c +_.a=d}, +iX:function iX(a,b){this.a=a +this.b=b +this.c=0}, +qR(a){var s=A.d(a.byteLength) +if(s!==8)throw A.c(A.T("Must be 8 in length",null)) +return new A.ls(A.i8(t.g.a(v.G.Int32Array),a,null,null,t.jS))}, +qz(a){var s=v.G +return new A.c6(a,A.i(new s.DataView(a,65536,2048)),A.i8(t.g.a(s.Uint8Array),a,null,null,t._))}, +v7(a){return B.h}, +v8(a){return new A.a1(a.bq(0),a.bq(8),a.bq(16))}, +v9(a){return new A.bc(B.j.d2(new Uint8Array(A.ho(A.p9(a.a,28,A.d(a.b.getInt32(24)))))),a.bq(0),a.bq(8),a.bq(16))}, +ls:function ls(a){this.b=a}, +c6:function c6(a,b,c){this.a=a +this.b=b +this.c=c}, +ag:function ag(a,b,c,d,e){var _=this +_.c=a +_.d=b +_.a=c +_.b=d +_.$ti=e}, +c5:function c5(){}, +bk:function bk(){}, +a1:function a1(a,b,c){this.a=a +this.b=b +this.c=c}, +bc:function bc(a,b,c,d){var _=this +_.d=a +_.a=b +_.b=c +_.c=d}, +iU(a){var s=0,r=A.q(t.d4),q,p,o,n,m,l +var $async$iU=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:n=t.m +s=3 +return A.e(A.a3(A.i(A.pS().getDirectory()),n),$async$iU) +case 3:m=c +l=A.pQ(A.v(a.root)) +p=J.a7(l.a),o=new A.bC(p,l.b,l.$ti.h("bC<1>")) +case 4:if(!o.k()){s=5 +break}s=6 +return A.e(A.a3(A.i(m.getDirectoryHandle(p.gn(),{create:!0})),n),$async$iU) +case 6:m=c +s=4 +break +case 5:n=t.ei +q=new A.fy(A.qR(A.i(a.synchronizationBuffer)),A.qz(A.i(a.communicationBuffer)),m,A.az(t.S,n),A.p4(n)) +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$iU,r)}, +jq:function jq(a,b,c){this.a=a +this.b=b +this.c=c}, +fy:function fy(a,b,c,d,e){var _=this +_.a=a +_.b=b +_.c=c +_.d=0 +_.e=!1 +_.f=d +_.r=e}, +en:function en(a,b,c,d,e,f,g){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f +_.r=g +_.w=!1 +_.x=null}, +w2(a){var s=new A.ds(a,new A.a6(new A.t($.u,t.D),t.F),A.i(a.objectStore("files")),A.i(a.objectStore("blocks"))) +s.i1(a) +return s}, +i2(a,b){var s=0,r=A.q(t.cF),q,p,o,n,m,l +var $async$i2=A.r(function(c,d){if(c===1)return A.n(d,r) +for(;;)switch(s){case 0:p=t.N +o=new A.jV(a) +n=A.oZ(null) +m=$.hu() +l=new A.dP(o,n,new A.cA(t.e),A.p4(p),A.az(p,t.S),m,"indexeddb") +l.r=!1 +s=3 +return A.e(o.de(),$async$i2) +case 3:s=4 +return A.e(l.bU(),$async$i2) +case 4:q=l +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$i2,r)}, +jV:function jV(a){this.a=null +this.b=a}, +jY:function jY(a){this.a=a}, +jX:function jX(a,b,c){this.a=a +this.b=b +this.c=c}, +jW:function jW(a){this.a=a}, +ds:function ds(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=!1 +_.d=c +_.e=d}, +no:function no(a){this.a=a}, +np:function np(a){this.a=a}, +nn:function nn(a){this.a=a}, +nq:function nq(a,b,c){this.a=a +this.b=b +this.c=c}, +ns:function ns(a,b){this.a=a +this.b=b}, +nr:function nr(a,b){this.a=a +this.b=b}, +n2:function n2(a,b,c){this.a=a +this.b=b +this.c=c}, +n3:function n3(a,b){this.a=a +this.b=b}, +jo:function jo(a,b){this.a=a +this.b=b}, +dP:function dP(a,b,c,d,e,f,g){var _=this +_.d=a +_.f=_.e=!1 +_.r=!0 +_.w=b +_.x=c +_.y=d +_.z=e +_.b=f +_.a=g}, +l4:function l4(a,b,c){this.a=a +this.b=b +this.c=c}, +l5:function l5(){}, +l3:function l3(a,b){this.a=a +this.b=b}, +ji:function ji(a,b,c){this.a=a +this.b=b +this.c=c}, +nm:function nm(a,b){this.a=a +this.b=b}, +aw:function aw(){}, +fT:function fT(a,b){var _=this +_.w=a +_.d=b +_.c=_.b=_.a=null}, +fL:function fL(a,b,c){var _=this +_.w=a +_.x=b +_.d=c +_.c=_.b=_.a=null}, +ee:function ee(a,b,c){var _=this +_.w=a +_.x=b +_.d=c +_.c=_.b=_.a=null}, +ez:function ez(a,b,c,d,e){var _=this +_.w=a +_.x=b +_.y=c +_.z=d +_.d=e +_.c=_.b=_.a=null}, +iC(a,b){var s=0,r=A.q(t.mt),q,p,o,n,m,l,k,j +var $async$iC=A.r(function(c,d){if(c===1)return A.n(d,r) +for(;;)switch(s){case 0:j=A.pS() +if(j==null)throw A.c(A.cR(1)) +p=t.m +s=3 +return A.e(A.a3(A.i(j.getDirectory()),p),$async$iC) +case 3:o=d +n=A.pQ(a),m=J.a7(n.a),n=new A.bC(m,n.b,n.$ti.h("bC<1>")),l=null +case 4:if(!n.k()){s=6 +break}s=7 +return A.e(A.a3(A.i(o.getDirectoryHandle(m.gn(),{create:!0})),p),$async$iC) +case 7:k=d +case 5:l=o,o=k +s=4 +break +case 6:q=new A.am(l,o) +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$iC,r)}, +lN(a){var s=0,r=A.q(t.m),q +var $async$lN=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:s=3 +return A.e(A.iC(a,!0),$async$lN) +case 3:q=c.b +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$lN,r)}, +lL(a){var s=0,r=A.q(t.g_),q,p +var $async$lL=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:if(A.pS()==null)throw A.c(A.cR(1)) +p=A +s=3 +return A.e(A.lN(a),$async$lL) +case 3:q=p.lK(c,!1,"simple-opfs") +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$lL,r)}, +lK(a,b,c){var s=0,r=A.q(t.g_),q,p,o,n +var $async$lK=A.r(function(d,e){if(d===1)return A.n(e,r) +for(;;)switch(s){case 0:p=A.oZ(null) +o=$.hu() +n=new A.e2(p,o,c) +s=3 +return A.e(n.bC(a,!1),$async$lK) +case 3:q=n +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$lK,r)}, +da:function da(a,b,c){this.c=a +this.a=b +this.b=c}, +e2:function e2(a,b,c){var _=this +_.d=null +_.e=a +_.b=b +_.a=c}, +lM:function lM(a,b){this.a=a +this.b=b}, +jx:function jx(a,b,c){var _=this +_.a=a +_.b=b +_.c=c +_.d=0}, +nu:function nu(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +vN(a,b){var s=A.i(A.i(a.exports).memory) +b.b!==$&&A.jL() +b.b=s +s=new A.md(s,b,A.i(a.exports)) +s.i0(a,b) +return s}, +ph(a,b){var s=A.c8(t.a.a(a.buffer),b,null),r=s.length,q=0 +for(;;){if(!(q")),r.h("a4(1)").a(A.yI()),r.h("aS<1,a4>")),t.i))}if(!B.a.H(a,q))return new A.bJ(A.b_(A.k([A.r0(a)],t.ms),t.i)) +return new A.bJ(A.b_(new A.K(A.k(a.split(q),t.s),t.df.a(A.yH()),t.fg),t.i))}, +bJ:function bJ(a){this.a=a}, +k_:function k_(){}, +k4:function k4(){}, +k3:function k3(){}, +k1:function k1(){}, +k2:function k2(a){this.a=a}, +k0:function k0(a){this.a=a}, +uT(a){return A.qm(A.v(a))}, +qm(a){return A.hZ(a,new A.kT(a))}, +uS(a){return A.uP(A.v(a))}, +uP(a){return A.hZ(a,new A.kR(a))}, +uM(a){return A.hZ(a,new A.kO(a))}, +uQ(a){return A.uN(A.v(a))}, +uN(a){return A.hZ(a,new A.kP(a))}, +uR(a){return A.uO(A.v(a))}, +uO(a){return A.hZ(a,new A.kQ(a))}, +i_(a){if(B.a.H(a,$.ty()))return A.bU(a) +else if(B.a.H(a,$.tz()))return A.rv(a,!0) +else if(B.a.A(a,"/"))return A.rv(a,!1) +if(B.a.H(a,"\\"))return $.uh().hA(a) +return A.bU(a)}, +hZ(a,b){var s,r +try{s=b.$0() +return s}catch(r){if(A.S(r) instanceof A.aP)return new A.bT(A.ax(null,"unparsed",null,null),a) +else throw r}}, +O:function O(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +kT:function kT(a){this.a=a}, +kR:function kR(a){this.a=a}, +kS:function kS(a){this.a=a}, +kO:function kO(a){this.a=a}, +kP:function kP(a){this.a=a}, +kQ:function kQ(a){this.a=a}, +id:function id(a){this.a=a +this.b=$}, +r_(a){if(t.i.b(a))return a +if(a instanceof A.bJ)return a.hz() +return new A.id(new A.m2(a))}, +r0(a){var s,r,q +try{if(a.length===0){r=A.qX(A.k([],t.d7),null) +return r}if(B.a.H(a,$.uc())){r=A.vD(a) +return r}if(B.a.H(a,"\tat ")){r=A.vC(a) +return r}if(B.a.H(a,$.u0())||B.a.H(a,$.tZ())){r=A.vB(a) +return r}if(B.a.H(a,u.q)){r=A.uw(a).hz() +return r}if(B.a.H(a,$.u3())){r=A.qY(a) +return r}r=A.qZ(a) +return r}catch(q){r=A.S(q) +if(r instanceof A.aP){s=r +throw A.c(A.at(s.a+"\nStack trace:\n"+a,null,null))}else throw q}}, +vF(a){return A.qZ(A.v(a))}, +qZ(a){var s=A.b_(A.vG(a),t.B) +return new A.a4(s)}, +vG(a){var s,r=B.a.eV(a),q=$.q2(),p=t.U,o=new A.b3(A.k(A.bH(r,q,"").split("\n"),t.s),t.Q.a(new A.m3()),p) +if(!o.gv(0).k())return A.k([],t.d7) +r=A.pd(o,o.gm(0)-1,p.h("f.E")) +q=A.j(r) +q=A.ig(r,q.h("O(f.E)").a(A.y6()),q.h("f.E"),t.B) +s=A.au(q,A.j(q).h("f.E")) +if(!B.a.eq(o.gE(0),".da"))B.b.l(s,A.qm(o.gE(0))) +return s}, +vD(a){var s=t.dD,r=t.B +r=A.b_(A.ig(new A.fq(A.k(a.split("\n"),t.s),t.Q.a(new A.m1()),s),s.h("O(f.E)").a(A.tf()),s.h("f.E"),r),r) +return new A.a4(r)}, +vC(a){var s=A.b_(new A.aS(new A.b3(A.k(a.split("\n"),t.s),t.Q.a(new A.m0()),t.U),t.lU.a(A.tf()),t.i4),t.B) +return new A.a4(s)}, +vB(a){var s=A.b_(new A.aS(new A.b3(A.k(B.a.eV(a).split("\n"),t.s),t.Q.a(new A.lZ()),t.U),t.lU.a(A.y4()),t.i4),t.B) +return new A.a4(s)}, +vE(a){return A.qY(A.v(a))}, +qY(a){var s=a.length===0?A.k([],t.d7):new A.aS(new A.b3(A.k(B.a.eV(a).split("\n"),t.s),t.Q.a(new A.m_()),t.U),t.lU.a(A.y5()),t.i4) +s=A.b_(s,t.B) +return new A.a4(s)}, +qX(a,b){var s=A.b_(a,t.B) +return new A.a4(s)}, +a4:function a4(a){this.a=a}, +m2:function m2(a){this.a=a}, +m3:function m3(){}, +m1:function m1(){}, +m0:function m0(){}, +lZ:function lZ(){}, +m_:function m_(){}, +m5:function m5(){}, +m4:function m4(a){this.a=a}, +bT:function bT(a,b){this.a=a +this.w=b}, +eU:function eU(a){var _=this +_.b=_.a=$ +_.c=null +_.d=!1 +_.$ti=a}, +fK:function fK(a,b,c){this.a=a +this.b=b +this.$ti=c}, +fJ:function fJ(a,b,c){this.b=a +this.a=b +this.$ti=c}, +qq(a,b,c,d){var s,r={} +r.a=a +s=new A.f4(d.h("f4<0>")) +s.hY(b,!0,r,d) +return s}, +f4:function f4(a){var _=this +_.b=_.a=$ +_.c=null +_.d=!1 +_.$ti=a}, +l2:function l2(a,b,c){this.a=a +this.b=b +this.c=c}, +l1:function l1(a){this.a=a}, +ei:function ei(a,b,c,d,e){var _=this +_.a=a +_.b=b +_.c=c +_.e=_.d=!1 +_.r=_.f=null +_.w=d +_.$ti=e}, +iF:function iF(a){this.b=this.a=$ +this.$ti=a}, +e5:function e5(){}, +cg:function cg(){}, +jj:function jj(){}, +bz:function bz(a,b){this.a=a +this.b=b}, +aX(a,b,c,d,e){var s +if(c==null)s=null +else{s=A.t8(new A.n_(c),t.m) +s=s==null?null:A.bF(s)}s=new A.fP(a,b,s,!1,e.h("fP<0>")) +s.eb() +return s}, +t8(a,b){var s=$.u +if(s===B.d)return a +return s.em(a,b)}, +oU:function oU(a,b){this.a=a +this.$ti=b}, +fO:function fO(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.$ti=d}, +fP:function fP(a,b,c,d,e){var _=this +_.a=0 +_.b=a +_.c=b +_.d=c +_.e=d +_.$ti=e}, +n_:function n_(a){this.a=a}, +n0:function n0(a){this.a=a}, +tt(a){return v.mangledGlobalNames[a]}, +tp(a){if(typeof dartPrint=="function"){dartPrint(a) +return}if(typeof console=="object"&&typeof console.log!="undefined"){console.log(a) +return}if(typeof print=="function"){print(a) +return}throw"Unable to print message: "+String(a)}, +ia(a,b,c,d,e,f){var s +if(c==null)return a[b]() +else if(d==null)return a[b](c) +else if(e==null)return a[b](c,d) +else{s=a[b](c,d,e) +return s}}, +i8(a,b,c,d,e){var s=[b] +if(c!=null)s.push(c) +if(d!=null)s.push(d) +return e.a(A.tc(a,s,t.m))}, +pI(){var s,r,q,p,o=null +try{o=A.iP()}catch(s){if(t.mA.b(A.S(s))){r=$.ob +if(r!=null)return r +throw s}else throw s}if(J.b8(o,$.rO)){r=$.ob +r.toString +return r}$.rO=o +if($.pX()===$.hv())r=$.ob=o.hx(".").i(0) +else{q=o.eU() +p=q.length-1 +r=$.ob=p===0?q:B.a.t(q,0,p)}return r}, +ti(a){var s +if(!(a>=65&&a<=90))s=a>=97&&a<=122 +else s=!0 +return s}, +te(a,b){var s,r,q=null,p=a.length,o=b+2 +if(p=0&&b=0&&s0)throw A.c(A.kL("BigInt value exceeds the range of 64 bits")) +return a}, +vp(a){var s,r,q=a.a,p=a.b,o=q.d,n=A.d(o.sqlite3_value_type(p)) +A:{s=null +if(1===n){q=A.d(A.L(v.G.Number(t.C.a(o.sqlite3_value_int64(p))))) +break A}if(2===n){q=A.L(o.sqlite3_value_double(p)) +break A}if(3===n){r=A.d(o.sqlite3_value_bytes(p)) +q=A.cT(q.b,A.d(o.sqlite3_value_text(p)),r) +break A}if(4===n){r=A.d(o.sqlite3_value_bytes(p)) +q=A.r8(q.b,A.d(o.sqlite3_value_blob(p)),r) +break A}q=s +break A}return q}, +oY(a,b){var s,r,q,p="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012346789" +for(s=b,r=0;r<16;++r,s=q){q=a.hp(61) +if(!(q<61))return A.b(p,q) +q=s+A.b1(p.charCodeAt(q))}return s.charCodeAt(0)==0?s:s}, +lr(a){var s=0,r=A.q(t.lo),q +var $async$lr=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:s=3 +return A.e(A.a3(A.i(a.arrayBuffer()),t.a),$async$lr) +case 3:q=c +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$lr,r)}, +p9(a,b,c){return A.i8(t.g.a(v.G.Uint8Array),a,b,c,t._)}, +ut(a,b){v.G.Atomics.notify(a,b,1/0)}, +pS(){var s=A.i(v.G.navigator) +if("storage" in s)return A.i(s.storage) +return null}, +oV(a,b,c){var s=A.d(a.read(b,c)) +return s}, +oW(a,b,c){var s=A.d(a.write(b,c)) +return s}, +ql(a,b){return A.a3(A.i(a.removeEntry(b,{recursive:!1})),t.X)}, +yj(){var s=v.G +if(A.p0(s,"DedicatedWorkerGlobalScope"))new A.kw(s,new A.bN(),new A.hU(A.az(t.N,t.ih),null)).R() +else if(A.p0(s,"SharedWorkerGlobalScope"))new A.lD(s,new A.hU(A.az(t.N,t.ih),null)).R()}},B={} +var w=[A,J,B] +var $={} +A.p2.prototype={} +J.i5.prototype={ +T(a,b){return a===b}, +gB(a){return A.fk(a)}, +i(a){return"Instance of '"+A.iw(a)+"'"}, +gS(a){return A.cn(A.py(this))}} +J.i7.prototype={ +i(a){return String(a)}, +gB(a){return a?519018:218159}, +gS(a){return A.cn(t.y)}, +$iU:1, +$iI:1} +J.f7.prototype={ +T(a,b){return null==b}, +i(a){return"null"}, +gB(a){return 0}, +$iU:1, +$iQ:1} +J.a8.prototype={$iB:1} +J.cz.prototype={ +gB(a){return 0}, +i(a){return String(a)}} +J.iu.prototype={} +J.dh.prototype={} +J.b9.prototype={ +i(a){var s=a[$.tx()] +if(s==null)s=a[$.dE()] +if(s==null)return this.hS(a) +return"JavaScript function for "+J.bi(s)}, +$ic0:1} +J.aQ.prototype={ +gB(a){return 0}, +i(a){return String(a)}} +J.dc.prototype={ +gB(a){return 0}, +i(a){return String(a)}} +J.y.prototype={ +bx(a,b){return new A.as(a,A.M(a).h("@<1>").u(b).h("as<1,2>"))}, +l(a,b){A.M(a).c.a(b) +a.$flags&1&&A.E(a,29) +a.push(b)}, +dh(a,b){var s +a.$flags&1&&A.E(a,"removeAt",1) +s=a.length +if(b>=s)throw A.c(A.lp(b,null)) +return a.splice(b,1)[0]}, +d8(a,b,c){var s +A.M(a).c.a(c) +a.$flags&1&&A.E(a,"insert",2) +s=a.length +if(b>s)throw A.c(A.lp(b,null)) +a.splice(b,0,c)}, +eB(a,b,c){var s,r +A.M(a).h("f<1>").a(c) +a.$flags&1&&A.E(a,"insertAll",2) +A.qQ(b,0,a.length,"index") +if(!t.W.b(c))c=J.jP(c) +s=J.aD(c) +a.length=a.length+s +r=b+s +this.N(a,r,a.length,a,b) +this.ad(a,b,r,c)}, +ht(a){a.$flags&1&&A.E(a,"removeLast",1) +if(a.length===0)throw A.c(A.ht(a,-1)) +return a.pop()}, +G(a,b){var s +a.$flags&1&&A.E(a,"remove",1) +for(s=0;s").a(b) +a.$flags&1&&A.E(a,"addAll",2) +if(Array.isArray(b)){this.i6(a,b) +return}for(s=J.a7(b);s.k();)a.push(s.gn())}, +i6(a,b){var s,r +t.dG.a(b) +s=b.length +if(s===0)return +if(a===b)throw A.c(A.ay(a)) +for(r=0;r").u(c).h("K<1,2>"))}, +az(a,b){var s,r=A.bm(a.length,"",!1,t.N) +for(s=0;s=0&&bs)throw A.c(A.a5(b,0,s,"start",null)) +if(cs)throw A.c(A.a5(c,b,s,"end",null)) +if(b===c)return A.k([],A.M(a)) +return A.k(a.slice(b,c),A.M(a))}, +cA(a,b,c){A.bv(b,c,a.length) +return A.bx(a,b,c,A.M(a).c)}, +gF(a){if(a.length>0)return a[0] +throw A.c(A.aE())}, +gE(a){var s=a.length +if(s>0)return a[s-1] +throw A.c(A.aE())}, +N(a,b,c,d,e){var s,r,q,p,o +A.M(a).h("f<1>").a(d) +a.$flags&2&&A.E(a,5) +A.bv(b,c,a.length) +s=c-b +if(s===0)return +A.al(e,"skipCount") +if(t.j.b(d)){r=d +q=e}else{r=J.eM(d,e).aE(0,!1) +q=0}p=J.ac(r) +if(q+s>p.gm(r))throw A.c(A.qs()) +if(q=0;--o)a[b+o]=p.j(r,q+o) +else for(o=0;o0){a[0]=q +a[1]=r}return}p=0 +if(n.c.b(null))for(o=0;o0)this.ja(a,p)}, +hN(a){return this.hO(a,null)}, +ja(a,b){var s,r=a.length +for(;s=r-1,r>0;r=s)if(a[s]===null){a[s]=void 0;--b +if(b===0)break}}, +da(a,b){var s,r=a.length,q=r-1 +if(q<0)return-1 +q=0;--s){if(!(s"))}, +gB(a){return A.fk(a)}, +gm(a){return a.length}, +j(a,b){if(!(b>=0&&b=0&&b=p){r.d=null +return!1}r.d=q[s] +r.c=s+1 +return!0}, +$iH:1} +J.dS.prototype={ +ah(a,b){var s +A.rL(b) +if(ab)return 1 +else if(a===b){if(a===0){s=this.geF(b) +if(this.geF(a)===s)return 0 +if(this.geF(a))return-1 +return 1}return 0}else if(isNaN(a)){if(isNaN(b))return 0 +return 1}else return-1}, +geF(a){return a===0?1/a<0:a<0}, +kO(a){var s +if(a>=-2147483648&&a<=2147483647)return a|0 +if(isFinite(a)){s=a<0?Math.ceil(a):Math.floor(a) +return s+0}throw A.c(A.aa(""+a+".toInt()"))}, +jG(a){var s,r +if(a>=0){if(a<=2147483647){s=a|0 +return a===s?s:s+1}}else if(a>=-2147483648)return a|0 +r=Math.ceil(a) +if(isFinite(r))return r +throw A.c(A.aa(""+a+".ceil()"))}, +i(a){if(a===0&&1/a<0)return"-0.0" +else return""+a}, +gB(a){var s,r,q,p,o=a|0 +if(a===o)return o&536870911 +s=Math.abs(a) +r=Math.log(s)/0.6931471805599453|0 +q=Math.pow(2,r) +p=s<1?s/q:q/s +return((p*9007199254740992|0)+(p*3542243181176521|0))*599197+r*1259&536870911}, +ac(a,b){var s=a%b +if(s===0)return 0 +if(s>0)return s +return s+b}, +f7(a,b){if((a|0)===a)if(b>=1||b<-1)return a/b|0 +return this.fV(a,b)}, +M(a,b){return(a|0)===a?a/b|0:this.fV(a,b)}, +fV(a,b){var s=a/b +if(s>=-2147483648&&s<=2147483647)return s|0 +if(s>0){if(s!==1/0)return Math.floor(s)}else if(s>-1/0)return Math.ceil(s) +throw A.c(A.aa("Result of truncating division is "+A.x(s)+": "+A.x(a)+" ~/ "+b))}, +aG(a,b){if(b<0)throw A.c(A.dA(b)) +return b>31?0:a<>>0}, +bj(a,b){var s +if(b<0)throw A.c(A.dA(b)) +if(a>0)s=this.ea(a,b) +else{s=b>31?31:b +s=a>>s>>>0}return s}, +L(a,b){var s +if(a>0)s=this.ea(a,b) +else{s=b>31?31:b +s=a>>s>>>0}return s}, +jk(a,b){if(0>b)throw A.c(A.dA(b)) +return this.ea(a,b)}, +ea(a,b){return b>31?0:a>>>b}, +gS(a){return A.cn(t.o)}, +$iaL:1, +$iG:1, +$iar:1} +J.f6.prototype={ +gh6(a){var s,r=a<0?-a-1:a,q=r +for(s=32;q>=4294967296;){q=this.M(q,4294967296) +s+=32}return s-Math.clz32(q)}, +gS(a){return A.cn(t.S)}, +$iU:1, +$ia:1} +J.i9.prototype={ +gS(a){return A.cn(t.b)}, +$iU:1} +J.cx.prototype={ +cX(a,b,c){var s=b.length +if(c>s)throw A.c(A.a5(c,0,s,null,null)) +return new A.jy(b,a,c)}, +ek(a,b){return this.cX(a,b,0)}, +hn(a,b,c){var s,r,q,p,o=null +if(c<0||c>b.length)throw A.c(A.a5(c,0,b.length,o,o)) +s=a.length +r=b.length +if(c+s>r)return o +for(q=0;q=0&&pr)return!1 +return b===this.K(a,r-s)}, +hw(a,b,c){A.qQ(0,0,a.length,"startIndex") +return A.yD(a,b,c,0)}, +bK(a,b){var s +if(typeof b=="string")return A.k(a.split(b),t.s) +else{if(b instanceof A.cy){s=b.e +s=!(s==null?b.e=b.ik():s)}else s=!1 +if(s)return A.k(a.split(b.b),t.s) +else return this.is(a,b)}}, +aO(a,b,c,d){var s=A.bv(b,c,a.length) +return A.pU(a,b,s,d)}, +is(a,b){var s,r,q,p,o,n,m=A.k([],t.s) +for(s=J.oO(b,a),s=s.gv(s),r=0,q=1;s.k();){p=s.gn() +o=p.gcC() +n=p.gbz() +q=n-o +if(q===0&&r===o)continue +B.b.l(m,this.t(a,r,o)) +r=n}if(r0)B.b.l(m,this.K(a,r)) +return m}, +D(a,b,c){var s +if(c<0||c>a.length)throw A.c(A.a5(c,0,a.length,null,null)) +if(typeof b=="string"){s=c+b.length +if(s>a.length)return!1 +return b===a.substring(c,s)}return J.un(b,a,c)!=null}, +A(a,b){return this.D(a,b,0)}, +t(a,b,c){return a.substring(b,A.bv(b,c,a.length))}, +K(a,b){return this.t(a,b,null)}, +eV(a){var s,r,q,p=a.trim(),o=p.length +if(o===0)return p +if(0>=o)return A.b(p,0) +if(p.charCodeAt(0)===133){s=J.v0(p,1) +if(s===o)return""}else s=0 +r=o-1 +if(!(r>=0))return A.b(p,r) +q=p.charCodeAt(r)===133?J.v1(p,r):o +if(s===0&&q===o)return p +return p.substring(s,q)}, +bJ(a,b){var s,r +if(0>=b)return"" +if(b===1||a.length===0)return a +if(b!==b>>>0)throw A.c(B.as) +for(s=a,r="";;){if((b&1)===1)r=s+r +b=b>>>1 +if(b===0)break +s+=s}return r}, +kC(a,b,c){var s=b-a.length +if(s<=0)return a +return this.bJ(c,s)+a}, +hq(a,b){var s=b-a.length +if(s<=0)return a +return a+this.bJ(" ",s)}, +aY(a,b,c){var s +if(c<0||c>a.length)throw A.c(A.a5(c,0,a.length,null,null)) +s=a.indexOf(b,c) +return s}, +ki(a,b){return this.aY(a,b,0)}, +hm(a,b,c){var s,r +if(c==null)c=a.length +else if(c<0||c>a.length)throw A.c(A.a5(c,0,a.length,null,null)) +s=b.length +r=a.length +if(c+s>r)c=r-s +return a.lastIndexOf(b,c)}, +da(a,b){return this.hm(a,b,null)}, +H(a,b){return A.yz(a,b,0)}, +ah(a,b){var s +A.v(b) +if(a===b)s=0 +else s=a>6}r=r+((r&67108863)<<3)&536870911 +r^=r>>11 +return r+((r&16383)<<15)&536870911}, +gS(a){return A.cn(t.N)}, +gm(a){return a.length}, +j(a,b){if(!(b>=0&&b"))}, +gm(a){return J.aD(this.gaq())}, +gC(a){return J.oP(this.gaq())}, +U(a,b){var s=A.j(this) +return A.eS(J.eM(this.gaq(),b),s.c,s.y[1])}, +aj(a,b){var s=A.j(this) +return A.eS(J.jO(this.gaq(),b),s.c,s.y[1])}, +J(a,b){return A.j(this).y[1].a(J.jM(this.gaq(),b))}, +gF(a){return A.j(this).y[1].a(J.jN(this.gaq()))}, +gE(a){return A.j(this).y[1].a(J.oQ(this.gaq()))}, +i(a){return J.bi(this.gaq())}} +A.eT.prototype={ +k(){return this.a.k()}, +gn(){return this.$ti.y[1].a(this.a.gn())}, +$iH:1} +A.d5.prototype={ +gaq(){return this.a}} +A.fM.prototype={$iw:1} +A.fI.prototype={ +j(a,b){return this.$ti.y[1].a(J.aZ(this.a,b))}, +q(a,b,c){var s=this.$ti +J.q3(this.a,b,s.c.a(s.y[1].a(c)))}, +cA(a,b,c){var s=this.$ti +return A.eS(J.um(this.a,b,c),s.c,s.y[1])}, +N(a,b,c,d,e){var s=this.$ti +J.uo(this.a,b,c,A.eS(s.h("f<2>").a(d),s.y[1],s.c),e)}, +ad(a,b,c,d){return this.N(0,b,c,d,0)}, +$iw:1, +$im:1} +A.as.prototype={ +bx(a,b){return new A.as(this.a,this.$ti.h("@<1>").u(b).h("as<1,2>"))}, +gaq(){return this.a}} +A.dT.prototype={ +i(a){return"LateInitializationError: "+this.a}} +A.hH.prototype={ +gm(a){return this.a.length}, +j(a,b){var s=this.a +if(!(b>=0&&b"))}, +gC(a){return this.gm(this)===0}, +gF(a){if(this.gm(this)===0)throw A.c(A.aE()) +return this.J(0,0)}, +gE(a){var s=this +if(s.gm(s)===0)throw A.c(A.aE()) +return s.J(0,s.gm(s)-1)}, +az(a,b){var s,r,q,p=this,o=p.gm(p) +if(b.length!==0){if(o===0)return"" +s=A.x(p.J(0,0)) +if(o!==p.gm(p))throw A.c(A.ay(p)) +for(r=s,q=1;q").u(c).h("K<1,2>"))}, +ev(a,b,c,d){var s,r,q,p=this +d.a(b) +A.j(p).u(d).h("1(1,P.E)").a(c) +s=p.gm(p) +for(r=b,q=0;qs)throw A.c(A.a5(r,0,s,"start",null))}}, +giz(){var s=J.aD(this.a),r=this.c +if(r==null||r>s)return s +return r}, +gjm(){var s=J.aD(this.a),r=this.b +if(r>s)return s +return r}, +gm(a){var s,r=J.aD(this.a),q=this.b +if(q>=r)return 0 +s=this.c +if(s==null||s>=r)return r-q +return s-q}, +J(a,b){var s=this,r=s.gjm()+b +if(b<0||r>=s.giz())throw A.c(A.i1(b,s.gm(0),s,null,"index")) +return J.jM(s.a,r)}, +U(a,b){var s,r,q=this +A.al(b,"count") +s=q.b+b +r=q.c +if(r!=null&&s>=r)return new A.d9(q.$ti.h("d9<1>")) +return A.bx(q.a,s,r,q.$ti.c)}, +aj(a,b){var s,r,q,p=this +A.al(b,"count") +s=p.c +r=p.b +q=r+b +if(s==null)return A.bx(p.a,r,q,p.$ti.c) +else{if(s=o){r.d=null +return!1}r.d=p.J(q,s);++r.c +return!0}, +$iH:1} +A.aS.prototype={ +gv(a){var s=this.a +return new A.dd(s.gv(s),this.b,A.j(this).h("dd<1,2>"))}, +gm(a){var s=this.a +return s.gm(s)}, +gC(a){var s=this.a +return s.gC(s)}, +gF(a){var s=this.a +return this.b.$1(s.gF(s))}, +gE(a){var s=this.a +return this.b.$1(s.gE(s))}, +J(a,b){var s=this.a +return this.b.$1(s.J(s,b))}} +A.d8.prototype={$iw:1} +A.dd.prototype={ +k(){var s=this,r=s.b +if(r.k()){s.a=s.c.$1(r.gn()) +return!0}s.a=null +return!1}, +gn(){var s=this.a +return s==null?this.$ti.y[1].a(s):s}, +$iH:1} +A.K.prototype={ +gm(a){return J.aD(this.a)}, +J(a,b){return this.b.$1(J.jM(this.a,b))}} +A.b3.prototype={ +gv(a){return new A.bC(J.a7(this.a),this.b,this.$ti.h("bC<1>"))}, +bb(a,b,c){var s=this.$ti +return new A.aS(this,s.u(c).h("1(2)").a(b),s.h("@<1>").u(c).h("aS<1,2>"))}} +A.bC.prototype={ +k(){var s,r +for(s=this.a,r=this.b;s.k();)if(r.$1(s.gn()))return!0 +return!1}, +gn(){return this.a.gn()}, +$iH:1} +A.f2.prototype={ +gv(a){return new A.f3(J.a7(this.a),this.b,B.K,this.$ti.h("f3<1,2>"))}} +A.f3.prototype={ +gn(){var s=this.d +return s==null?this.$ti.y[1].a(s):s}, +k(){var s,r,q=this,p=q.c +if(p==null)return!1 +for(s=q.a,r=q.b;!p.k();){q.d=null +if(s.k()){q.c=null +p=J.a7(r.$1(s.gn())) +q.c=p}else return!1}q.d=q.c.gn() +return!0}, +$iH:1} +A.dg.prototype={ +gv(a){var s=this.a +return new A.fw(s.gv(s),this.b,A.j(this).h("fw<1>"))}} +A.f_.prototype={ +gm(a){var s=this.a,r=s.gm(s) +s=this.b +if(r>s)return s +return r}, +$iw:1} +A.fw.prototype={ +k(){if(--this.b>=0)return this.a.k() +this.b=-1 +return!1}, +gn(){if(this.b<0){this.$ti.c.a(null) +return null}return this.a.gn()}, +$iH:1} +A.cc.prototype={ +U(a,b){A.cp(b,"count",t.S) +A.al(b,"count") +return new A.cc(this.a,this.b+b,A.j(this).h("cc<1>"))}, +gv(a){var s=this.a +return new A.fp(s.gv(s),this.b,A.j(this).h("fp<1>"))}} +A.dO.prototype={ +gm(a){var s=this.a,r=s.gm(s)-this.b +if(r>=0)return r +return 0}, +U(a,b){A.cp(b,"count",t.S) +A.al(b,"count") +return new A.dO(this.a,this.b+b,this.$ti)}, +$iw:1} +A.fp.prototype={ +k(){var s,r +for(s=this.a,r=0;r"))}} +A.fr.prototype={ +k(){var s,r,q=this +if(!q.c){q.c=!0 +for(s=q.a,r=q.b;s.k();)if(!r.$1(s.gn()))return!0}return q.a.k()}, +gn(){return this.a.gn()}, +$iH:1} +A.d9.prototype={ +gv(a){return B.K}, +gC(a){return!0}, +gm(a){return 0}, +gF(a){throw A.c(A.aE())}, +gE(a){throw A.c(A.aE())}, +J(a,b){throw A.c(A.a5(b,0,0,"index",null))}, +bb(a,b,c){this.$ti.u(c).h("1(2)").a(b) +return new A.d9(c.h("d9<0>"))}, +U(a,b){A.al(b,"count") +return this}, +aj(a,b){A.al(b,"count") +return this}} +A.f0.prototype={ +k(){return!1}, +gn(){throw A.c(A.aE())}, +$iH:1} +A.fA.prototype={ +gv(a){return new A.fB(J.a7(this.a),this.$ti.h("fB<1>"))}} +A.fB.prototype={ +k(){var s,r +for(s=this.a,r=this.$ti.c;s.k();)if(r.b(s.gn()))return!0 +return!1}, +gn(){return this.$ti.c.a(this.a.gn())}, +$iH:1} +A.c1.prototype={ +gm(a){return J.aD(this.a)}, +gC(a){return J.oP(this.a)}, +gF(a){return new A.am(this.b,J.jN(this.a))}, +J(a,b){return new A.am(b+this.b,J.jM(this.a,b))}, +aj(a,b){A.cp(b,"count",t.S) +A.al(b,"count") +return new A.c1(J.jO(this.a,b),this.b,A.j(this).h("c1<1>"))}, +U(a,b){A.cp(b,"count",t.S) +A.al(b,"count") +return new A.c1(J.eM(this.a,b),b+this.b,A.j(this).h("c1<1>"))}, +gv(a){return new A.db(J.a7(this.a),this.b,A.j(this).h("db<1>"))}} +A.d7.prototype={ +gE(a){var s,r=this.a,q=J.ac(r),p=q.gm(r) +if(p<=0)throw A.c(A.aE()) +s=q.gE(r) +if(p!==q.gm(r))throw A.c(A.ay(this)) +return new A.am(p-1+this.b,s)}, +aj(a,b){A.cp(b,"count",t.S) +A.al(b,"count") +return new A.d7(J.jO(this.a,b),this.b,this.$ti)}, +U(a,b){A.cp(b,"count",t.S) +A.al(b,"count") +return new A.d7(J.eM(this.a,b),this.b+b,this.$ti)}, +$iw:1} +A.db.prototype={ +k(){if(++this.c>=0&&this.a.k())return!0 +this.c=-2 +return!1}, +gn(){var s=this.c +return s>=0?new A.am(this.b+s,this.a.gn()):A.J(A.aE())}, +$iH:1} +A.aO.prototype={} +A.cQ.prototype={ +q(a,b,c){A.j(this).h("cQ.E").a(c) +throw A.c(A.aa("Cannot modify an unmodifiable list"))}, +N(a,b,c,d,e){A.j(this).h("f").a(d) +throw A.c(A.aa("Cannot modify an unmodifiable list"))}, +ad(a,b,c,d){return this.N(0,b,c,d,0)}} +A.e8.prototype={} +A.fn.prototype={ +gm(a){return J.aD(this.a)}, +J(a,b){var s=this.a,r=J.ac(s) +return r.J(s,r.gm(s)-1-b)}} +A.iG.prototype={ +gB(a){var s=this._hashCode +if(s!=null)return s +s=664597*B.a.gB(this.a)&536870911 +this._hashCode=s +return s}, +i(a){return'Symbol("'+this.a+'")'}, +T(a,b){if(b==null)return!1 +return b instanceof A.iG&&this.a===b.a}} +A.hm.prototype={} +A.am.prototype={$r:"+(1,2)",$s:1} +A.cW.prototype={$r:"+file,outFlags(1,2)",$s:2} +A.h5.prototype={$r:"+result,resultCode(1,2)",$s:3} +A.eV.prototype={ +i(a){return A.p5(this)}, +q(a,b,c){var s=A.j(this) +s.c.a(b) +s.y[1].a(c) +A.uD()}, +gd4(){return new A.ev(this.kf(),A.j(this).h("ev>"))}, +kf(){var s=this +return function(){var r=0,q=1,p=[],o,n,m,l,k +return function $async$gd4(a,b,c){if(b===1){p.push(c) +r=q}for(;;)switch(r){case 0:o=s.gX(),o=o.gv(o),n=A.j(s),m=n.y[1],n=n.h("aR<1,2>") +case 2:if(!o.k()){r=3 +break}l=o.gn() +k=s.j(0,l) +r=4 +return a.b=new A.aR(l,k==null?m.a(k):k,n),1 +case 4:r=2 +break +case 3:return 0 +case 1:return a.c=p.at(-1),3}}}}, +$iak:1} +A.d6.prototype={ +gm(a){return this.b.length}, +gfA(){var s=this.$keys +if(s==null){s=Object.keys(this.a) +this.$keys=s}return s}, +a_(a){if(typeof a!="string")return!1 +if("__proto__"===a)return!1 +return this.a.hasOwnProperty(a)}, +j(a,b){if(!this.a_(b))return null +return this.b[this.a[b]]}, +av(a,b){var s,r,q,p +this.$ti.h("~(1,2)").a(b) +s=this.gfA() +r=this.b +for(q=s.length,p=0;p"))}, +gbI(){return new A.dt(this.b,this.$ti.h("dt<2>"))}} +A.dt.prototype={ +gm(a){return this.a.length}, +gC(a){return 0===this.a.length}, +gv(a){var s=this.a +return new A.fW(s,s.length,this.$ti.h("fW<1>"))}} +A.fW.prototype={ +gn(){var s=this.d +return s==null?this.$ti.c.a(s):s}, +k(){var s=this,r=s.c +if(r>=s.b){s.d=null +return!1}s.d=s.a[r] +s.c=r+1 +return!0}, +$iH:1} +A.i3.prototype={ +T(a,b){if(b==null)return!1 +return b instanceof A.dQ&&this.a.T(0,b.a)&&A.pL(this)===A.pL(b)}, +gB(a){return A.fh(this.a,A.pL(this),B.f,B.f)}, +i(a){var s=B.b.az([A.cn(this.$ti.c)],", ") +return this.a.i(0)+" with "+("<"+s+">")}} +A.dQ.prototype={ +$2(a,b){return this.a.$1$2(a,b,this.$ti.y[0])}, +$4(a,b,c,d){return this.a.$1$4(a,b,c,d,this.$ti.y[0])}, +$S(){return A.yf(A.oo(this.a),this.$ti)}} +A.fo.prototype={} +A.m7.prototype={ +aA(a){var s,r,q=this,p=new RegExp(q.a).exec(a) +if(p==null)return null +s=Object.create(null) +r=q.b +if(r!==-1)s.arguments=p[r+1] +r=q.c +if(r!==-1)s.argumentsExpr=p[r+1] +r=q.d +if(r!==-1)s.expr=p[r+1] +r=q.e +if(r!==-1)s.method=p[r+1] +r=q.f +if(r!==-1)s.receiver=p[r+1] +return s}} +A.fg.prototype={ +i(a){return"Null check operator used on a null value"}} +A.ib.prototype={ +i(a){var s,r=this,q="NoSuchMethodError: method not found: '",p=r.b +if(p==null)return"NoSuchMethodError: "+r.a +s=r.c +if(s==null)return q+p+"' ("+r.a+")" +return q+p+"' on '"+s+"' ("+r.a+")"}} +A.iK.prototype={ +i(a){var s=this.a +return s.length===0?"Error":"Error: "+s}} +A.iq.prototype={ +i(a){return"Throw of null ('"+(this.a===null?"null":"undefined")+"' from JavaScript)"}, +$iaf:1} +A.f1.prototype={} +A.h7.prototype={ +i(a){var s,r=this.b +if(r!=null)return r +r=this.a +s=r!==null&&typeof r==="object"?r.stack:null +return this.b=s==null?"":s}, +$iX:1} +A.aN.prototype={ +i(a){var s=this.constructor,r=s==null?null:s.name +return"Closure '"+A.tu(r==null?"unknown":r)+"'"}, +$ic0:1, +glq(){return this}, +$C:"$1", +$R:1, +$D:null} +A.hF.prototype={$C:"$0",$R:0} +A.hG.prototype={$C:"$2",$R:2} +A.iH.prototype={} +A.iE.prototype={ +i(a){var s=this.$static_name +if(s==null)return"Closure of unknown static method" +return"Closure '"+A.tu(s)+"'"}} +A.dJ.prototype={ +T(a,b){if(b==null)return!1 +if(this===b)return!0 +if(!(b instanceof A.dJ))return!1 +return this.$_target===b.$_target&&this.a===b.a}, +gB(a){return(A.pP(this.a)^A.fk(this.$_target))>>>0}, +i(a){return"Closure '"+this.$_name+"' of "+("Instance of '"+A.iw(this.a)+"'")}} +A.iA.prototype={ +i(a){return"RuntimeError: "+this.a}} +A.c2.prototype={ +gm(a){return this.a}, +gC(a){return this.a===0}, +gX(){return new A.c3(this,A.j(this).h("c3<1>"))}, +gbI(){return new A.fb(this,A.j(this).h("fb<2>"))}, +gd4(){return new A.f8(this,A.j(this).h("f8<1,2>"))}, +a_(a){var s,r +if(typeof a=="string"){s=this.b +if(s==null)return!1 +return s[a]!=null}else if(typeof a=="number"&&(a&0x3fffffff)===a){r=this.c +if(r==null)return!1 +return r[a]!=null}else return this.kj(a)}, +kj(a){var s=this.d +if(s==null)return!1 +return this.d9(this.f9(s,a),a)>=0}, +ag(a,b){A.j(this).h("ak<1,2>").a(b).av(0,new A.la(this))}, +j(a,b){var s,r,q,p,o=null +if(typeof b=="string"){s=this.b +if(s==null)return o +r=s[b] +q=r==null?o:r.b +return q}else if(typeof b=="number"&&(b&0x3fffffff)===b){p=this.c +if(p==null)return o +r=p[b] +q=r==null?o:r.b +return q}else return this.kk(b)}, +kk(a){var s,r,q=this.d +if(q==null)return null +s=this.f9(q,a) +r=this.d9(s,a) +if(r<0)return null +return s[r].b}, +q(a,b,c){var s,r,q=this,p=A.j(q) +p.c.a(b) +p.y[1].a(c) +if(typeof b=="string"){s=q.b +q.f8(s==null?q.b=q.e2():s,b,c)}else if(typeof b=="number"&&(b&0x3fffffff)===b){r=q.c +q.f8(r==null?q.c=q.e2():r,b,c)}else q.km(b,c)}, +km(a,b){var s,r,q,p,o=this,n=A.j(o) +n.c.a(a) +n.y[1].a(b) +s=o.d +if(s==null)s=o.d=o.e2() +r=o.eD(a) +q=s[r] +if(q==null)s[r]=[o.dA(a,b)] +else{p=o.d9(q,a) +if(p>=0)q[p].b=b +else q.push(o.dA(a,b))}}, +hr(a,b){var s,r,q=this,p=A.j(q) +p.c.a(a) +p.h("2()").a(b) +if(q.a_(a)){s=q.j(0,a) +return s==null?p.y[1].a(s):s}r=b.$0() +q.q(0,a,r) +return r}, +G(a,b){var s=this +if(typeof b=="string")return s.fa(s.b,b) +else if(typeof b=="number"&&(b&0x3fffffff)===b)return s.fa(s.c,b) +else return s.kl(b)}, +kl(a){var s,r,q,p,o=this,n=o.d +if(n==null)return null +s=o.eD(a) +r=n[s] +q=o.d9(r,a) +if(q<0)return null +p=r.splice(q,1)[0] +o.fb(p) +if(r.length===0)delete n[s] +return p.b}, +c6(a){var s=this +if(s.a>0){s.b=s.c=s.d=s.e=s.f=null +s.a=0 +s.dz()}}, +av(a,b){var s,r,q=this +A.j(q).h("~(1,2)").a(b) +s=q.e +r=q.r +while(s!=null){b.$2(s.a,s.b) +if(r!==q.r)throw A.c(A.ay(q)) +s=s.c}}, +f8(a,b,c){var s,r=A.j(this) +r.c.a(b) +r.y[1].a(c) +s=a[b] +if(s==null)a[b]=this.dA(b,c) +else s.b=c}, +fa(a,b){var s +if(a==null)return null +s=a[b] +if(s==null)return null +this.fb(s) +delete a[b] +return s.b}, +dz(){this.r=this.r+1&1073741823}, +dA(a,b){var s=this,r=A.j(s),q=new A.ld(r.c.a(a),r.y[1].a(b)) +if(s.e==null)s.e=s.f=q +else{r=s.f +r.toString +q.d=r +s.f=r.c=q}++s.a +s.dz() +return q}, +fb(a){var s=this,r=a.d,q=a.c +if(r==null)s.e=q +else r.c=q +if(q==null)s.f=r +else q.d=r;--s.a +s.dz()}, +eD(a){return J.aM(a)&1073741823}, +f9(a,b){return a[this.eD(b)]}, +d9(a,b){var s,r +if(a==null)return-1 +s=a.length +for(r=0;r"]=s +delete s[""] +return s}, +$iqy:1} +A.la.prototype={ +$2(a,b){var s=this.a,r=A.j(s) +s.q(0,r.c.a(a),r.y[1].a(b))}, +$S(){return A.j(this.a).h("~(1,2)")}} +A.ld.prototype={} +A.c3.prototype={ +gm(a){return this.a.a}, +gC(a){return this.a.a===0}, +gv(a){var s=this.a +return new A.fa(s,s.r,s.e,this.$ti.h("fa<1>"))}} +A.fa.prototype={ +gn(){return this.d}, +k(){var s,r=this,q=r.a +if(r.b!==q.r)throw A.c(A.ay(q)) +s=r.c +if(s==null){r.d=null +return!1}else{r.d=s.a +r.c=s.c +return!0}}, +$iH:1} +A.fb.prototype={ +gm(a){return this.a.a}, +gC(a){return this.a.a===0}, +gv(a){var s=this.a +return new A.c4(s,s.r,s.e,this.$ti.h("c4<1>"))}} +A.c4.prototype={ +gn(){return this.d}, +k(){var s,r=this,q=r.a +if(r.b!==q.r)throw A.c(A.ay(q)) +s=r.c +if(s==null){r.d=null +return!1}else{r.d=s.b +r.c=s.c +return!0}}, +$iH:1} +A.f8.prototype={ +gm(a){return this.a.a}, +gC(a){return this.a.a===0}, +gv(a){var s=this.a +return new A.f9(s,s.r,s.e,this.$ti.h("f9<1,2>"))}} +A.f9.prototype={ +gn(){var s=this.d +s.toString +return s}, +k(){var s,r=this,q=r.a +if(r.b!==q.r)throw A.c(A.ay(q)) +s=r.c +if(s==null){r.d=null +return!1}else{r.d=new A.aR(s.a,s.b,r.$ti.h("aR<1,2>")) +r.c=s.c +return!0}}, +$iH:1} +A.ov.prototype={ +$1(a){return this.a(a)}, +$S:60} +A.ow.prototype={ +$2(a,b){return this.a(a,b)}, +$S:51} +A.ox.prototype={ +$1(a){return this.a(A.v(a))}, +$S:52} +A.ck.prototype={ +i(a){return this.fZ(!1)}, +fZ(a){var s,r,q,p,o,n=this.iB(),m=this.fv(),l=(a?"Record ":"")+"(" +for(s=n.length,r="",q=0;q0;){--q;--s +B.b.q(k,q,r[s])}}return A.b_(k,t.K)}} +A.cV.prototype={ +fv(){return[this.a,this.b]}, +T(a,b){if(b==null)return!1 +return b instanceof A.cV&&this.$s===b.$s&&J.b8(this.a,b.a)&&J.b8(this.b,b.b)}, +gB(a){return A.fh(this.$s,this.a,this.b,B.f)}} +A.cy.prototype={ +i(a){return"RegExp/"+this.a+"/"+this.b.flags}, +gfD(){var s=this,r=s.c +if(r!=null)return r +r=s.b +return s.c=A.p1(s.a,r.multiline,!r.ignoreCase,r.unicode,r.dotAll,"g")}, +giN(){var s=this,r=s.d +if(r!=null)return r +r=s.b +return s.d=A.p1(s.a,r.multiline,!r.ignoreCase,r.unicode,r.dotAll,"y")}, +ik(){var s,r=this.a +if(!B.a.H(r,"("))return!1 +s=this.b.unicode?"u":"" +return new RegExp("(?:)|"+r,s).exec("").length>1}, +a9(a){var s=this.b.exec(a) +if(s==null)return null +return new A.em(s)}, +cX(a,b,c){var s=b.length +if(c>s)throw A.c(A.a5(c,0,s,null,null)) +return new A.j1(this,b,c)}, +ek(a,b){return this.cX(0,b,0)}, +fq(a,b){var s,r=this.gfD() +if(r==null)r=A.a2(r) +r.lastIndex=b +s=r.exec(a) +if(s==null)return null +return new A.em(s)}, +iA(a,b){var s,r=this.giN() +if(r==null)r=A.a2(r) +r.lastIndex=b +s=r.exec(a) +if(s==null)return null +return new A.em(s)}, +hn(a,b,c){if(c<0||c>b.length)throw A.c(A.a5(c,0,b.length,null,null)) +return this.iA(b,c)}, +$ill:1, +$ivq:1} +A.em.prototype={ +gcC(){return this.b.index}, +gbz(){var s=this.b +return s.index+s[0].length}, +j(a,b){var s=this.b +if(!(b=0&&q=55296&&q<=56319){if(!(n>=0))return A.b(l,n) +s=l.charCodeAt(n) +s=s>=56320&&s<=57343}}}o=(s?o+1:o)+1}m.c=o +return!0}}m.b=m.d=null +return!1}, +$iH:1} +A.e7.prototype={ +gbz(){return this.a+this.c.length}, +j(a,b){if(b!==0)throw A.c(A.lp(b,null)) +return this.c}, +$idU:1, +gcC(){return this.a}} +A.jy.prototype={ +gv(a){return new A.jz(this.a,this.b,this.c)}, +gF(a){var s=this.b,r=this.a.indexOf(s,this.c) +if(r>=0)return new A.e7(r,s) +throw A.c(A.aE())}} +A.jz.prototype={ +k(){var s,r,q=this,p=q.c,o=q.b,n=o.length,m=q.a,l=m.length +if(p+n>l){q.d=null +return!1}s=m.indexOf(o,p) +if(s<0){q.c=l+1 +q.d=null +return!1}r=s+n +q.d=new A.e7(s,o) +q.c=r===q.c?r+1:r +return!0}, +gn(){var s=this.d +s.toString +return s}, +$iH:1} +A.mT.prototype={ +af(){var s=this.b +if(s===this)throw A.c(A.qx(this.a)) +return s}} +A.cC.prototype={ +gS(a){return B.aY}, +h4(a,b,c){A.hn(a,b,c) +return c==null?new Uint8Array(a,b):new Uint8Array(a,b,c)}, +jC(a,b,c){var s +A.hn(a,b,c) +s=new DataView(a,b) +return s}, +h3(a){return this.jC(a,0,null)}, +$iU:1, +$icC:1, +$id4:1} +A.dV.prototype={$idV:1} +A.fd.prototype={ +gaX(a){if(((a.$flags|0)&2)!==0)return new A.jD(a.buffer) +else return a.buffer}, +iL(a,b,c,d){var s=A.a5(b,0,c,d,null) +throw A.c(s)}, +fh(a,b,c,d){if(b>>>0!==b||b>c)this.iL(a,b,c,d)}} +A.jD.prototype={ +h4(a,b,c){var s=A.c8(this.a,b,c) +s.$flags=3 +return s}, +h3(a){var s=A.qA(this.a,0,null) +s.$flags=3 +return s}, +$id4:1} +A.fc.prototype={ +gS(a){return B.aZ}, +$iU:1, +$ioR:1} +A.aG.prototype={ +gm(a){return a.length}, +fS(a,b,c,d,e){var s,r,q=a.length +this.fh(a,b,q,"start") +this.fh(a,c,q,"end") +if(b>c)throw A.c(A.a5(b,0,c,null,null)) +s=c-b +if(e<0)throw A.c(A.T(e,null)) +r=d.length +if(r-e0){s=Date.now()-r.c +if(s>(p+1)*o)p=B.c.f7(s,o)}q.c=p +r.d.$1(q)}, +$S:3} +A.fD.prototype={ +O(a){var s,r=this,q=r.$ti +q.h("1/?").a(a) +if(a==null)a=q.c.a(a) +if(!r.b)r.a.b4(a) +else{s=r.a +if(q.h("D<1>").b(a))s.fg(a) +else s.bO(a)}}, +by(a,b){var s=this.a +if(this.b)s.V(new A.a_(a,b)) +else s.aS(new A.a_(a,b))}, +$ihJ:1} +A.o6.prototype={ +$1(a){return this.a.$2(0,a)}, +$S:18} +A.o7.prototype={ +$2(a,b){this.a.$2(1,new A.f1(a,t.l.a(b)))}, +$S:71} +A.ol.prototype={ +$2(a,b){this.a(A.d(a),b)}, +$S:126} +A.hc.prototype={ +gn(){var s=this.b +return s==null?this.$ti.c.a(s):s}, +jb(a,b){var s,r,q +a=A.d(a) +b=b +s=this.a +for(;;)try{r=s(this,a,b) +return r}catch(q){b=q +a=1}}, +k(){var s,r,q,p,o=this,n=null,m=0 +for(;;){s=o.d +if(s!=null)try{if(s.k()){o.b=s.gn() +return!0}else o.d=null}catch(r){n=r +m=1 +o.d=null}q=o.jb(m,n) +if(1===q)return!0 +if(0===q){o.b=null +p=o.e +if(p==null||p.length===0){o.a=A.ro +return!1}if(0>=p.length)return A.b(p,-1) +o.a=p.pop() +m=0 +n=null +continue}if(2===q){m=0 +n=null +continue}if(3===q){n=o.c +o.c=null +p=o.e +if(p==null||p.length===0){o.b=null +o.a=A.ro +throw n +return!1}if(0>=p.length)return A.b(p,-1) +o.a=p.pop() +m=1 +continue}throw A.c(A.F("sync*"))}return!1}, +lt(a){var s,r,q=this +if(a instanceof A.ev){s=a.a() +r=q.e +if(r==null)r=q.e=[] +B.b.l(r,q.a) +q.a=s +return 2}else{q.d=J.a7(a) +return 2}}, +$iH:1} +A.ev.prototype={ +gv(a){return new A.hc(this.a(),this.$ti.h("hc<1>"))}} +A.a_.prototype={ +i(a){return A.x(this.a)}, +$iW:1, +gaP(){return this.b}} +A.fH.prototype={} +A.bY.prototype={ +an(){}, +ao(){}, +scL(a){this.ch=this.$ti.h("bY<1>?").a(a)}, +se4(a){this.CW=this.$ti.h("bY<1>?").a(a)}} +A.dk.prototype={ +gbQ(){return this.c<4}, +fN(a){var s,r +A.j(this).h("bY<1>").a(a) +s=a.CW +r=a.ch +if(s==null)this.d=r +else s.scL(r) +if(r==null)this.e=s +else r.se4(s) +a.se4(a) +a.scL(a)}, +fT(a,b,c,d){var s,r,q,p,o,n,m,l,k=this,j=A.j(k) +j.h("~(1)?").a(a) +t.Z.a(c) +if((k.c&4)!==0){s=$.u +j=new A.eg(s,j.h("eg<1>")) +A.pR(j.gfE()) +if(c!=null)j.c=s.aB(c,t.H) +return j}s=$.u +r=d?1:0 +q=b!=null?32:0 +p=A.j7(s,a,j.c) +o=A.j8(s,b) +n=c==null?A.ta():c +j=j.h("bY<1>") +m=new A.bY(k,p,o,s.aB(n,t.H),s,r|q,j) +m.CW=m +m.ch=m +j.a(m) +m.ay=k.c&1 +l=k.e +k.e=m +m.scL(null) +m.se4(l) +if(l==null)k.d=m +else l.scL(m) +if(k.d==k.e)A.jI(k.a) +return m}, +fH(a){var s=this,r=A.j(s) +a=r.h("bY<1>").a(r.h("aV<1>").a(a)) +if(a.ch===a)return null +r=a.ay +if((r&2)!==0)a.ay=r|4 +else{s.fN(a) +if((s.c&2)===0&&s.d==null)s.dE()}return null}, +fI(a){A.j(this).h("aV<1>").a(a)}, +fJ(a){A.j(this).h("aV<1>").a(a)}, +bM(){if((this.c&4)!==0)return new A.aU("Cannot add new events after calling close") +return new A.aU("Cannot add new events while doing an addStream")}, +l(a,b){var s=this +A.j(s).c.a(b) +if(!s.gbQ())throw A.c(s.bM()) +s.b6(b)}, +a2(a,b){var s +if(!this.gbQ())throw A.c(this.bM()) +s=A.oe(a,b) +this.b8(s.a,s.b)}, +p(){var s,r,q=this +if((q.c&4)!==0){s=q.r +s.toString +return s}if(!q.gbQ())throw A.c(q.bM()) +q.c|=4 +r=q.r +if(r==null)r=q.r=new A.t($.u,t.D) +q.b7() +return r}, +dS(a){var s,r,q,p,o=this +A.j(o).h("~(a0<1>)").a(a) +s=o.c +if((s&2)!==0)throw A.c(A.F(u.o)) +r=o.d +if(r==null)return +q=s&1 +o.c=s^3 +while(r!=null){s=r.ay +if((s&1)===q){r.ay=s|2 +a.$1(r) +s=r.ay^=1 +p=r.ch +if((s&4)!==0)o.fN(r) +r.ay&=4294967293 +r=p}else r=r.ch}o.c&=4294967293 +if(o.d==null)o.dE()}, +dE(){if((this.c&4)!==0){var s=this.r +if((s.a&30)===0)s.b4(null)}A.jI(this.b)}, +$iaj:1, +$ibn:1, +$ie6:1, +$iha:1, +$ib6:1, +$ib5:1} +A.hb.prototype={ +gbQ(){return A.dk.prototype.gbQ.call(this)&&(this.c&2)===0}, +bM(){if((this.c&2)!==0)return new A.aU(u.o) +return this.hU()}, +b6(a){var s,r=this +r.$ti.c.a(a) +s=r.d +if(s==null)return +if(s===r.e){r.c|=2 +s.aQ(a) +r.c&=4294967293 +if(r.d==null)r.dE() +return}r.dS(new A.nG(r,a))}, +b8(a,b){if(this.d==null)return +this.dS(new A.nI(this,a,b))}, +b7(){var s=this +if(s.d!=null)s.dS(new A.nH(s)) +else s.r.b4(null)}} +A.nG.prototype={ +$1(a){this.a.$ti.h("a0<1>").a(a).aQ(this.b)}, +$S(){return this.a.$ti.h("~(a0<1>)")}} +A.nI.prototype={ +$1(a){this.a.$ti.h("a0<1>").a(a).a7(this.b,this.c)}, +$S(){return this.a.$ti.h("~(a0<1>)")}} +A.nH.prototype={ +$1(a){this.a.$ti.h("a0<1>").a(a).bl()}, +$S(){return this.a.$ti.h("~(a0<1>)")}} +A.kZ.prototype={ +$0(){this.c.a(null) +this.b.b5(null)}, +$S:0} +A.l0.prototype={ +$2(a,b){var s,r,q=this +A.a2(a) +t.l.a(b) +s=q.a +r=--s.b +if(s.a!=null){s.a=null +s.d=a +s.c=b +if(r===0||q.c)q.d.V(new A.a_(a,b))}else if(r===0&&!q.c){r=s.d +r.toString +s=s.c +s.toString +q.d.V(new A.a_(r,s))}}, +$S:7} +A.l_.prototype={ +$1(a){var s,r,q,p,o,n,m,l,k=this,j=k.d +j.a(a) +o=k.a +s=--o.b +r=o.a +if(r!=null){J.q3(r,k.b,a) +if(J.b8(s,0)){q=A.k([],j.h("y<0>")) +for(o=r,n=o.length,m=0;m")) +for(r=l.b,q=r.length,p=0;p")) +for(m=r.length,p=0;p,m>")))}}, +$S:5} +A.fj.prototype={ +i(a){var s,r,q="ParallelWaitError",p=this.c +if(p==null){p=this.d +s=p<=1 +if(s)return q +return"ParallelWaitError("+p+" errors)"}s=this.d +r=s>1 +if(r)s="("+s+" errors)" +else s="" +return q+s+": "+A.x(p.a)}, +gaP(){var s=this.c +s=s==null?null:s.b +return s==null?A.W.prototype.gaP.call(this):s}} +A.fU.prototype={ +jr(a){t.lt.a(a) +this.a.b0(new A.n7(this,a),new A.n8(this,a),t.P)}} +A.n7.prototype={ +$1(a){var s=this.a +s.b=s.$ti.c.a(a) +this.b.$1(0)}, +$S(){return this.a.$ti.h("Q(1)")}} +A.n8.prototype={ +$2(a,b){A.a2(a) +t.l.a(b) +this.a.c=new A.a_(a,b) +this.b.$1(1)}, +$S:22} +A.n6.prototype={ +$1(a){var s=this.a,r=s.a+=a +if(++s.b===this.b.length)this.c.$1(r)}, +$S:5} +A.dl.prototype={ +by(a,b){A.a2(a) +t.fw.a(b) +if((this.a.a&30)!==0)throw A.c(A.F("Future already completed")) +this.V(A.oe(a,b))}, +a3(a){return this.by(a,null)}, +$ihJ:1} +A.ad.prototype={ +O(a){var s,r=this.$ti +r.h("1/?").a(a) +s=this.a +if((s.a&30)!==0)throw A.c(A.F("Future already completed")) +s.b4(r.h("1/").a(a))}, +ai(){return this.O(null)}, +V(a){this.a.aS(a)}} +A.a6.prototype={ +O(a){var s,r=this.$ti +r.h("1/?").a(a) +s=this.a +if((s.a&30)!==0)throw A.c(A.F("Future already completed")) +s.b5(r.h("1/").a(a))}, +ai(){return this.O(null)}, +V(a){this.a.V(a)}} +A.bD.prototype={ +kv(a){if((this.c&15)!==6)return!0 +return this.b.b.cq(t.iW.a(this.d),a.a,t.y,t.K)}, +kh(a){var s,r=this,q=r.e,p=null,o=t.z,n=t.K,m=a.a,l=r.b.b +if(t.ng.b(q))p=l.eS(q,m,a.b,o,n,t.l) +else p=l.cq(t.mq.a(q),m,o,n) +try{o=r.$ti.h("2/").a(p) +return o}catch(s){if(t.do.b(A.S(s))){if((r.c&1)!==0)throw A.c(A.T("The error handler of Future.then must return a value of the returned future's type","onError")) +throw A.c(A.T("The error handler of Future.catchError must return a value of the future's type","onError"))}else throw s}}} +A.t.prototype={ +b0(a,b,c){var s,r,q,p=this.$ti +p.u(c).h("1/(2)").a(a) +s=$.u +if(s===B.d){if(b!=null&&!t.ng.b(b)&&!t.mq.b(b))throw A.c(A.an(b,"onError",u.c))}else{a=s.bE(a,c.h("0/"),p.c) +if(b!=null)b=A.xl(b,s)}r=new A.t($.u,c.h("t<0>")) +q=b==null?1:3 +this.bN(new A.bD(r,q,a,b,p.h("@<1>").u(c).h("bD<1,2>"))) +return r}, +bH(a,b){return this.b0(a,null,b)}, +fX(a,b,c){var s,r=this.$ti +r.u(c).h("1/(2)").a(a) +s=new A.t($.u,c.h("t<0>")) +this.bN(new A.bD(s,19,a,b,r.h("@<1>").u(c).h("bD<1,2>"))) +return s}, +ak(a){var s,r,q +t.mY.a(a) +s=this.$ti +r=$.u +q=new A.t(r,s) +if(r!==B.d)a=r.aB(a,t.z) +this.bN(new A.bD(q,8,a,null,s.h("bD<1,1>"))) +return q}, +ji(a){this.a=this.a&1|16 +this.c=a}, +cG(a){this.a=a.a&30|this.a&1 +this.c=a.c}, +bN(a){var s,r=this,q=r.a +if(q<=3){a.a=t.d.a(r.c) +r.c=a}else{if((q&4)!==0){s=t.j_.a(r.c) +if((s.a&24)===0){s.bN(a) +return}r.cG(s)}r.b.b2(new A.n9(r,a))}}, +fF(a){var s,r,q,p,o,n,m=this,l={} +l.a=a +if(a==null)return +s=m.a +if(s<=3){r=t.d.a(m.c) +m.c=a +if(r!=null){q=a.a +for(p=a;q!=null;p=q,q=o)o=q.a +p.a=r}}else{if((s&4)!==0){n=t.j_.a(m.c) +if((n.a&24)===0){n.fF(a) +return}m.cG(n)}l.a=m.cO(a) +m.b.b2(new A.ne(l,m))}}, +bV(){var s=t.d.a(this.c) +this.c=null +return this.cO(s)}, +cO(a){var s,r,q +for(s=a,r=null;s!=null;r=s,s=q){q=s.a +s.a=r}return r}, +b5(a){var s,r=this,q=r.$ti +q.h("1/").a(a) +if(q.h("D<1>").b(a))A.nc(a,r,!0) +else{s=r.bV() +q.c.a(a) +r.a=8 +r.c=a +A.dp(r,s)}}, +bO(a){var s,r=this +r.$ti.c.a(a) +s=r.bV() +r.a=8 +r.c=a +A.dp(r,s)}, +ii(a){var s,r,q,p=this +if((a.a&16)!==0){s=p.b +r=a.b +s=!(s===r||s.gaK()===r.gaK())}else s=!1 +if(s)return +q=p.bV() +p.cG(a) +A.dp(p,q)}, +V(a){var s=this.bV() +this.ji(a) +A.dp(this,s)}, +ih(a,b){A.a2(a) +t.l.a(b) +this.V(new A.a_(a,b))}, +b4(a){var s=this.$ti +s.h("1/").a(a) +if(s.h("D<1>").b(a)){this.fg(a) +return}this.ff(a)}, +ff(a){var s=this +s.$ti.c.a(a) +s.a^=2 +s.b.b2(new A.nb(s,a))}, +fg(a){A.nc(this.$ti.h("D<1>").a(a),this,!1) +return}, +aS(a){this.a^=2 +this.b.b2(new A.na(this,a))}, +$iD:1} +A.n9.prototype={ +$0(){A.dp(this.a,this.b)}, +$S:0} +A.ne.prototype={ +$0(){A.dp(this.b,this.a.a)}, +$S:0} +A.nd.prototype={ +$0(){A.nc(this.a.a,this.b,!0)}, +$S:0} +A.nb.prototype={ +$0(){this.a.bO(this.b)}, +$S:0} +A.na.prototype={ +$0(){this.a.V(this.b)}, +$S:0} +A.nh.prototype={ +$0(){var s,r,q,p,o,n,m,l,k=this,j=null +try{q=k.a.a +j=q.b.b.bd(t.mY.a(q.d),t.z)}catch(p){s=A.S(p) +r=A.ae(p) +if(k.c&&t.u.a(k.b.a.c).a===s){q=k.a +q.c=t.u.a(k.b.a.c)}else{q=s +o=r +if(o==null)o=A.hA(q) +n=k.a +n.c=new A.a_(q,o) +q=n}q.b=!0 +return}if(j instanceof A.t&&(j.a&24)!==0){if((j.a&16)!==0){q=k.a +q.c=t.u.a(j.c) +q.b=!0}return}if(j instanceof A.t){m=k.b.a +l=new A.t(m.b,m.$ti) +j.b0(new A.ni(l,m),new A.nj(l),t.H) +q=k.a +q.c=l +q.b=!1}}, +$S:0} +A.ni.prototype={ +$1(a){this.a.ii(this.b)}, +$S:39} +A.nj.prototype={ +$2(a,b){A.a2(a) +t.l.a(b) +this.a.V(new A.a_(a,b))}, +$S:22} +A.ng.prototype={ +$0(){var s,r,q,p,o,n,m,l +try{q=this.a +p=q.a +o=p.$ti +n=o.c +m=n.a(this.b) +q.c=p.b.b.cq(o.h("2/(1)").a(p.d),m,o.h("2/"),n)}catch(l){s=A.S(l) +r=A.ae(l) +q=s +p=r +if(p==null)p=A.hA(q) +o=this.a +o.c=new A.a_(q,p) +o.b=!0}}, +$S:0} +A.nf.prototype={ +$0(){var s,r,q,p,o,n,m,l=this +try{s=t.u.a(l.a.a.c) +p=l.b +if(p.a.kv(s)&&p.a.e!=null){p.c=p.a.kh(s) +p.b=!1}}catch(o){r=A.S(o) +q=A.ae(o) +p=t.u.a(l.a.a.c) +if(p.a===r){n=l.b +n.c=p +p=n}else{p=r +n=q +if(n==null)n=A.hA(p) +m=l.b +m.c=new A.a_(p,n) +p=m}p.b=!0}}, +$S:0} +A.j3.prototype={} +A.N.prototype={ +gm(a){var s={},r=new A.t($.u,t.hy) +s.a=0 +this.P(new A.lW(s,this),!0,new A.lX(s,r),r.gdJ()) +return r}, +gF(a){var s=new A.t($.u,A.j(this).h("t")),r=this.P(null,!0,new A.lU(s),s.gdJ()) +r.cg(new A.lV(this,r,s)) +return s}, +eu(a,b){var s,r,q=this,p=A.j(q) +p.h("I(N.T)").a(b) +s=new A.t($.u,p.h("t")) +r=q.P(null,!0,new A.lS(q,null,s),s.gdJ()) +r.cg(new A.lT(q,b,r,s)) +return s}} +A.lW.prototype={ +$1(a){A.j(this.b).h("N.T").a(a);++this.a.a}, +$S(){return A.j(this.b).h("~(N.T)")}} +A.lX.prototype={ +$0(){this.b.b5(this.a.a)}, +$S:0} +A.lU.prototype={ +$0(){var s,r=A.lP(),q=new A.aU("No element") +A.fl(q,r) +s=A.eE(q,r) +if(s==null)s=new A.a_(q,r) +this.a.V(s)}, +$S:0} +A.lV.prototype={ +$1(a){A.rN(this.b,this.c,A.j(this.a).h("N.T").a(a))}, +$S(){return A.j(this.a).h("~(N.T)")}} +A.lS.prototype={ +$0(){var s,r=A.lP(),q=new A.aU("No element") +A.fl(q,r) +s=A.eE(q,r) +if(s==null)s=new A.a_(q,r) +this.c.V(s)}, +$S:0} +A.lT.prototype={ +$1(a){var s,r,q=this +A.j(q.a).h("N.T").a(a) +s=q.c +r=q.d +A.xr(new A.lQ(q.b,a),new A.lR(s,r,a),A.wN(s,r),t.y)}, +$S(){return A.j(this.a).h("~(N.T)")}} +A.lQ.prototype={ +$0(){return this.a.$1(this.b)}, +$S:28} +A.lR.prototype={ +$1(a){if(A.aJ(a))A.rN(this.a,this.b,this.c)}, +$S:81} +A.fv.prototype={$icd:1} +A.dw.prototype={ +giZ(){var s,r=this +if((r.b&8)===0)return A.j(r).h("bE<1>?").a(r.a) +s=A.j(r) +return s.h("bE<1>?").a(s.h("h9<1>").a(r.a).gee())}, +dP(){var s,r,q=this +if((q.b&8)===0){s=q.a +if(s==null)s=q.a=new A.bE(A.j(q).h("bE<1>")) +return A.j(q).h("bE<1>").a(s)}r=A.j(q) +s=r.h("h9<1>").a(q.a).gee() +return r.h("bE<1>").a(s)}, +gaR(){var s=this.a +if((this.b&8)!==0)s=t.gL.a(s).gee() +return A.j(this).h("ch<1>").a(s)}, +dC(){if((this.b&4)!==0)return new A.aU("Cannot add event after closing") +return new A.aU("Cannot add event while adding a stream")}, +fn(){var s=this.c +if(s==null)s=this.c=(this.b&2)!==0?$.d2():new A.t($.u,t.D) +return s}, +l(a,b){var s,r=this,q=A.j(r) +q.c.a(b) +s=r.b +if(s>=4)throw A.c(r.dC()) +if((s&1)!==0)r.b6(b) +else if((s&3)===0)r.dP().l(0,new A.ci(b,q.h("ci<1>")))}, +a2(a,b){var s,r,q=this +A.a2(a) +t.fw.a(b) +if(q.b>=4)throw A.c(q.dC()) +s=A.oe(a,b) +a=s.a +b=s.b +r=q.b +if((r&1)!==0)q.b8(a,b) +else if((r&3)===0)q.dP().l(0,new A.ef(a,b))}, +jA(a){return this.a2(a,null)}, +p(){var s=this,r=s.b +if((r&4)!==0)return s.fn() +if(r>=4)throw A.c(s.dC()) +r=s.b=r|4 +if((r&1)!==0)s.b7() +else if((r&3)===0)s.dP().l(0,B.x) +return s.fn()}, +fT(a,b,c,d){var s,r,q,p=this,o=A.j(p) +o.h("~(1)?").a(a) +t.Z.a(c) +if((p.b&3)!==0)throw A.c(A.F("Stream has already been listened to.")) +s=A.w_(p,a,b,c,d,o.c) +r=p.giZ() +if(((p.b|=1)&8)!==0){q=o.h("h9<1>").a(p.a) +q.see(s) +q.bc()}else p.a=s +s.jj(r) +s.dT(new A.nE(p)) +return s}, +fH(a){var s,r,q,p,o,n,m,l,k=this,j=A.j(k) +j.h("aV<1>").a(a) +s=null +if((k.b&8)!==0)s=j.h("h9<1>").a(k.a).I() +k.a=null +k.b=k.b&4294967286|2 +r=k.r +if(r!=null)if(s==null)try{q=r.$0() +if(q instanceof A.t)s=q}catch(n){p=A.S(n) +o=A.ae(n) +m=new A.t($.u,t.D) +j=A.a2(p) +l=t.l.a(o) +m.aS(new A.a_(j,l)) +s=m}else s=s.ak(r) +j=new A.nD(k) +if(s!=null)s=s.ak(j) +else j.$0() +return s}, +fI(a){var s=this,r=A.j(s) +r.h("aV<1>").a(a) +if((s.b&8)!==0)r.h("h9<1>").a(s.a).bD() +A.jI(s.e)}, +fJ(a){var s=this,r=A.j(s) +r.h("aV<1>").a(a) +if((s.b&8)!==0)r.h("h9<1>").a(s.a).bc() +A.jI(s.f)}, +skx(a){this.d=t.Z.a(a)}, +sky(a){this.f=t.Z.a(a)}, +$iaj:1, +$ibn:1, +$ie6:1, +$iha:1, +$ib6:1, +$ib5:1} +A.nE.prototype={ +$0(){A.jI(this.a.d)}, +$S:0} +A.nD.prototype={ +$0(){var s=this.a.c +if(s!=null&&(s.a&30)===0)s.b4(null)}, +$S:0} +A.jA.prototype={ +b6(a){this.$ti.c.a(a) +this.gaR().aQ(a)}, +b8(a,b){this.gaR().a7(a,b)}, +b7(){this.gaR().bl()}} +A.j4.prototype={ +b6(a){var s=this.$ti +s.c.a(a) +this.gaR().bk(new A.ci(a,s.h("ci<1>")))}, +b8(a,b){this.gaR().bk(new A.ef(a,b))}, +b7(){this.gaR().bk(B.x)}} +A.ed.prototype={} +A.ew.prototype={} +A.aC.prototype={ +gB(a){return(A.fk(this.a)^892482866)>>>0}, +T(a,b){if(b==null)return!1 +if(this===b)return!0 +return b instanceof A.aC&&b.a===this.a}} +A.ch.prototype={ +cM(){return this.w.fH(this)}, +an(){this.w.fI(this)}, +ao(){this.w.fJ(this)}} +A.dy.prototype={ +l(a,b){this.a.l(0,this.$ti.c.a(b))}, +a2(a,b){this.a.a2(a,b)}, +p(){return this.a.p()}, +$iaj:1, +$ibn:1} +A.a0.prototype={ +jj(a){var s=this +A.j(s).h("bE?").a(a) +if(a==null)return +s.r=a +if(a.c!=null){s.e=(s.e|128)>>>0 +a.cB(s)}}, +cg(a){var s=A.j(this) +this.a=A.j7(this.d,s.h("~(a0.T)?").a(a),s.h("a0.T"))}, +eN(a){var s=this +s.e=(s.e&4294967263)>>>0 +s.b=A.j8(s.d,a)}, +bD(){var s,r,q=this,p=q.e +if((p&8)!==0)return +s=(p+256|4)>>>0 +q.e=s +if(p<256){r=q.r +if(r!=null)if(r.a===1)r.a=3}if((p&4)===0&&(s&64)===0)q.dT(q.gbR())}, +bc(){var s=this,r=s.e +if((r&8)!==0)return +if(r>=256){r=s.e=r-256 +if(r<256)if((r&128)!==0&&s.r.c!=null)s.r.cB(s) +else{r=(r&4294967291)>>>0 +s.e=r +if((r&64)===0)s.dT(s.gbS())}}}, +I(){var s=this,r=(s.e&4294967279)>>>0 +s.e=r +if((r&8)===0)s.dF() +r=s.f +return r==null?$.d2():r}, +dF(){var s,r=this,q=r.e=(r.e|8)>>>0 +if((q&128)!==0){s=r.r +if(s.a===1)s.a=3}if((q&64)===0)r.r=null +r.f=r.cM()}, +aQ(a){var s,r=this,q=A.j(r) +q.h("a0.T").a(a) +s=r.e +if((s&8)!==0)return +if(s<64)r.b6(a) +else r.bk(new A.ci(a,q.h("ci")))}, +a7(a,b){var s +if(t.T.b(a))A.fl(a,b) +s=this.e +if((s&8)!==0)return +if(s<64)this.b8(a,b) +else this.bk(new A.ef(a,b))}, +bl(){var s=this,r=s.e +if((r&8)!==0)return +r=(r|2)>>>0 +s.e=r +if(r<64)s.b7() +else s.bk(B.x)}, +an(){}, +ao(){}, +cM(){return null}, +bk(a){var s,r=this,q=r.r +if(q==null)q=r.r=new A.bE(A.j(r).h("bE")) +q.l(0,a) +s=r.e +if((s&128)===0){s=(s|128)>>>0 +r.e=s +if(s<256)q.cB(r)}}, +b6(a){var s,r=this,q=A.j(r).h("a0.T") +q.a(a) +s=r.e +r.e=(s|64)>>>0 +r.d.cr(r.a,a,q) +r.e=(r.e&4294967231)>>>0 +r.dG((s&4)!==0)}, +b8(a,b){var s,r=this,q=r.e,p=new A.mS(r,a,b) +if((q&1)!==0){r.e=(q|16)>>>0 +r.dF() +s=r.f +if(s!=null&&s!==$.d2())s.ak(p) +else p.$0()}else{p.$0() +r.dG((q&4)!==0)}}, +b7(){var s,r=this,q=new A.mR(r) +r.dF() +r.e=(r.e|16)>>>0 +s=r.f +if(s!=null&&s!==$.d2())s.ak(q) +else q.$0()}, +dT(a){var s,r=this +t.M.a(a) +s=r.e +r.e=(s|64)>>>0 +a.$0() +r.e=(r.e&4294967231)>>>0 +r.dG((s&4)!==0)}, +dG(a){var s,r,q=this,p=q.e +if((p&128)!==0&&q.r.c==null){p=q.e=(p&4294967167)>>>0 +s=!1 +if((p&4)!==0)if(p<256){s=q.r +s=s==null?null:s.c==null +s=s!==!1}if(s){p=(p&4294967291)>>>0 +q.e=p}}for(;;a=r){if((p&8)!==0){q.r=null +return}r=(p&4)!==0 +if(a===r)break +q.e=(p^64)>>>0 +if(r)q.an() +else q.ao() +p=(q.e&4294967231)>>>0 +q.e=p}if((p&128)!==0&&p<256)q.r.cB(q)}, +$iaV:1, +$ib6:1, +$ib5:1} +A.mS.prototype={ +$0(){var s,r,q,p=this.a,o=p.e +if((o&8)!==0&&(o&16)===0)return +p.e=(o|64)>>>0 +s=p.b +o=this.b +r=t.K +q=p.d +if(t.b9.b(s))q.hy(s,o,this.c,r,t.l) +else q.cr(t.i6.a(s),o,r) +p.e=(p.e&4294967231)>>>0}, +$S:0} +A.mR.prototype={ +$0(){var s=this.a,r=s.e +if((r&16)===0)return +s.e=(r|74)>>>0 +s.d.cp(s.c) +s.e=(s.e&4294967231)>>>0}, +$S:0} +A.es.prototype={ +P(a,b,c,d){var s=A.j(this) +s.h("~(1)?").a(a) +t.Z.a(c) +return this.a.fT(s.h("~(1)?").a(a),d,c,b===!0)}, +b_(a,b,c){return this.P(a,null,b,c)}, +kq(a){return this.P(a,null,null,null)}, +eI(a,b){return this.P(a,null,b,null)}} +A.cj.prototype={ +scf(a){this.a=t.lT.a(a)}, +gcf(){return this.a}} +A.ci.prototype={ +eQ(a){this.$ti.h("b5<1>").a(a).b6(this.b)}} +A.ef.prototype={ +eQ(a){a.b8(this.b,this.c)}} +A.jc.prototype={ +eQ(a){a.b7()}, +gcf(){return null}, +scf(a){throw A.c(A.F("No events after a done."))}, +$icj:1} +A.bE.prototype={ +cB(a){var s,r=this +r.$ti.h("b5<1>").a(a) +s=r.a +if(s===1)return +if(s>=1){r.a=1 +return}A.pR(new A.nv(r,a)) +r.a=1}, +l(a,b){var s=this,r=s.c +if(r==null)s.b=s.c=b +else{r.scf(b) +s.c=b}}} +A.nv.prototype={ +$0(){var s,r,q,p=this.a,o=p.a +p.a=0 +if(o===3)return +s=p.$ti.h("b5<1>").a(this.b) +r=p.b +q=r.gcf() +p.b=q +if(q==null)p.c=null +r.eQ(s)}, +$S:0} +A.eg.prototype={ +cg(a){this.$ti.h("~(1)?").a(a)}, +eN(a){}, +bD(){var s=this.a +if(s>=0)this.a=s+2}, +bc(){var s=this,r=s.a-2 +if(r<0)return +if(r===0){s.a=1 +A.pR(s.gfE())}else s.a=r}, +I(){this.a=-1 +this.c=null +return $.d2()}, +iV(){var s,r=this,q=r.a-1 +if(q===0){r.a=-1 +s=r.c +if(s!=null){r.c=null +r.b.cp(s)}}else r.a=q}, +$iaV:1} +A.dx.prototype={ +gn(){var s=this +if(s.c)return s.$ti.c.a(s.b) +return s.$ti.c.a(null)}, +k(){var s,r=this,q=r.a +if(q!=null){if(r.c){s=new A.t($.u,t.k) +r.b=s +r.c=!1 +q.bc() +return s}throw A.c(A.F("Already waiting for next."))}return r.iK()}, +iK(){var s,r,q=this,p=q.b +if(p!=null){q.$ti.h("N<1>").a(p) +s=new A.t($.u,t.k) +q.b=s +r=p.P(q.giP(),!0,q.giR(),q.giT()) +if(q.b!=null)q.a=r +return s}return $.tA()}, +I(){var s=this,r=s.a,q=s.b +s.b=null +if(r!=null){s.a=null +if(!s.c)t.k.a(q).b4(!1) +else s.c=!1 +return r.I()}return $.d2()}, +iQ(a){var s,r,q=this +q.$ti.c.a(a) +if(q.a==null)return +s=t.k.a(q.b) +q.b=a +q.c=!0 +s.b5(!0) +if(q.c){r=q.a +if(r!=null)r.bD()}}, +iU(a,b){var s,r,q=this +A.a2(a) +t.l.a(b) +s=q.a +r=t.k.a(q.b) +q.b=q.a=null +if(s!=null)r.V(new A.a_(a,b)) +else r.aS(new A.a_(a,b))}, +iS(){var s=this,r=s.a,q=t.k.a(s.b) +s.b=s.a=null +if(r!=null)q.bO(!1) +else q.ff(!1)}} +A.o9.prototype={ +$0(){return this.a.V(this.b)}, +$S:0} +A.o8.prototype={ +$2(a,b){t.l.a(b) +A.wM(this.a,this.b,new A.a_(a,b))}, +$S:7} +A.oa.prototype={ +$0(){return this.a.b5(this.b)}, +$S:0} +A.fS.prototype={ +P(a,b,c,d){var s,r,q,p,o,n=this.$ti +n.h("~(2)?").a(a) +t.Z.a(c) +s=$.u +r=b===!0?1:0 +q=d!=null?32:0 +p=A.j7(s,a,n.y[1]) +o=A.j8(s,d) +n=new A.eh(this,p,o,s.aB(c,t.H),s,r|q,n.h("eh<1,2>")) +n.x=this.a.b_(n.gdU(),n.gdW(),n.gdY()) +return n}, +b_(a,b,c){return this.P(a,null,b,c)}} +A.eh.prototype={ +aQ(a){this.$ti.y[1].a(a) +if((this.e&2)!==0)return +this.dw(a)}, +a7(a,b){if((this.e&2)!==0)return +this.f5(a,b)}, +an(){var s=this.x +if(s!=null)s.bD()}, +ao(){var s=this.x +if(s!=null)s.bc()}, +cM(){var s=this.x +if(s!=null){this.x=null +return s.I()}return null}, +dV(a){this.w.iF(this.$ti.c.a(a),this)}, +dZ(a,b){var s +t.l.a(b) +s=a==null?A.a2(a):a +this.w.$ti.h("b6<2>").a(this).a7(s,b)}, +dX(){this.w.$ti.h("b6<2>").a(this).bl()}} +A.h0.prototype={ +iF(a,b){var s,r,q,p,o,n,m,l=this.$ti +l.c.a(a) +l.h("b6<2>").a(b) +s=null +try{s=this.b.$1(a)}catch(p){r=A.S(p) +q=A.ae(p) +o=r +n=q +m=A.eE(o,n) +if(m!=null){o=m.a +n=m.b}b.a7(o,n) +return}b.aQ(s)}} +A.fN.prototype={ +l(a,b){var s=this.a +b=s.$ti.y[1].a(this.$ti.c.a(b)) +if((s.e&2)!==0)A.J(A.F("Stream is already closed")) +s.dw(b)}, +a2(a,b){this.a.a7(a,b)}, +p(){var s=this.a +if((s.e&2)!==0)A.J(A.F("Stream is already closed")) +s.f6()}, +$iaj:1} +A.ep.prototype={ +aQ(a){this.$ti.y[1].a(a) +if((this.e&2)!==0)throw A.c(A.F("Stream is already closed")) +this.dw(a)}, +a7(a,b){t.l.a(b) +if((this.e&2)!==0)throw A.c(A.F("Stream is already closed")) +this.f5(a,b)}, +bl(){if((this.e&2)!==0)throw A.c(A.F("Stream is already closed")) +this.f6()}, +an(){var s=this.x +if(s!=null)s.bD()}, +ao(){var s=this.x +if(s!=null)s.bc()}, +cM(){var s=this.x +if(s!=null){this.x=null +return s.I()}return null}, +dV(a){var s,r,q,p +this.$ti.c.a(a) +try{q=this.w +q===$&&A.C() +q.l(0,a)}catch(p){s=A.S(p) +r=A.ae(p) +this.a7(s,r)}}, +dZ(a,b){var s,r,q,p +A.a2(a) +t.l.a(b) +try{q=this.w +q===$&&A.C() +q.a2(a,b)}catch(p){s=A.S(p) +r=A.ae(p) +if(s===a)this.a7(a,b) +else this.a7(s,r)}}, +dX(){var s,r,q,p +try{this.x=null +q=this.w +q===$&&A.C() +q.p()}catch(p){s=A.S(p) +r=A.ae(p) +this.a7(s,r)}}} +A.et.prototype={ +el(a){var s=this.$ti +return new A.fG(this.a,s.h("N<1>").a(a),s.h("fG<1,2>"))}} +A.fG.prototype={ +P(a,b,c,d){var s,r,q,p,o,n,m=this.$ti +m.h("~(2)?").a(a) +t.Z.a(c) +s=$.u +r=b===!0?1:0 +q=d!=null?32:0 +p=A.j7(s,a,m.y[1]) +o=A.j8(s,d) +n=new A.ep(p,o,s.aB(c,t.H),s,r|q,m.h("ep<1,2>")) +n.w=m.h("aj<1>").a(this.a.$1(new A.fN(n,m.h("fN<2>")))) +n.x=this.b.b_(n.gdU(),n.gdW(),n.gdY()) +return n}, +b_(a,b,c){return this.P(a,null,b,c)}} +A.ej.prototype={ +l(a,b){var s,r=this.$ti +r.c.a(b) +s=this.d +if(s==null)throw A.c(A.F("Sink is closed")) +b=s.$ti.c.a(r.y[1].a(b)) +s.a.aQ(b)}, +a2(a,b){var s=this.d +if(s==null)throw A.c(A.F("Sink is closed")) +s.a2(a,b)}, +p(){var s=this.d +if(s==null)return +this.d=null +this.c.$1(s)}, +$iaj:1} +A.er.prototype={ +el(a){return this.hV(this.$ti.h("N<1>").a(a))}} +A.nF.prototype={ +$1(a){var s=this,r=s.d +return new A.ej(s.a,s.b,s.c,r.h("aj<0>").a(a),s.e.h("@<0>").u(r).h("ej<1,2>"))}, +$S(){return this.e.h("@<0>").u(this.d).h("ej<1,2>(aj<2>)")}} +A.o2.prototype={} +A.o4.prototype={} +A.o3.prototype={} +A.o0.prototype={} +A.o1.prototype={} +A.o_.prototype={} +A.nX.prototype={} +A.jG.prototype={} +A.nW.prototype={} +A.nV.prototype={} +A.nZ.prototype={} +A.nY.prototype={} +A.jF.prototype={ +kg(a,b,c,d,e){return this.b.$5(a,b,c,d,e)}} +A.jH.prototype={} +A.eA.prototype={ +bT(a,b,c){var s,r,q,p,o,n,m,l +t.l.a(c) +s=this.ge_() +r=s.a +if(r===B.d){A.hr(b,c) +return}m=r.geO() +m.toString +q=m +p=$.u +try{$.u=q +s.kg(r,r.ga8(),a,b,c) +$.u=p}catch(l){o=A.S(l) +n=A.ae(l) +$.u=p +m=b===o?c:n +q.bT(r,o,m)}}, +$iz:1} +A.ja.prototype={ +gfe(){var s=this.ax +return s==null?this.ax=new A.eB(this):s}, +ga8(){return this.ay.gfe()}, +gaK(){return this.as.a}, +cp(a){var s,r,q +t.M.a(a) +try{this.bd(a,t.H)}catch(q){s=A.S(q) +r=A.ae(q) +this.bT(this,A.a2(s),t.l.a(r))}}, +cr(a,b,c){var s,r,q +c.h("~(0)").a(a) +c.a(b) +try{this.cq(a,b,t.H,c)}catch(q){s=A.S(q) +r=A.ae(q) +this.bT(this,A.a2(s),t.l.a(r))}}, +hy(a,b,c,d,e){var s,r,q +d.h("@<0>").u(e).h("~(1,2)").a(a) +d.a(b) +e.a(c) +try{this.eS(a,b,c,t.H,d,e)}catch(q){s=A.S(q) +r=A.ae(q) +this.bT(this,A.a2(s),t.l.a(r))}}, +d0(a,b){return new A.mY(this,this.aB(b.h("0()").a(a),b),b)}, +c5(a){return new A.mX(this,this.aB(t.M.a(a),t.H))}, +em(a,b){return new A.mZ(this,this.bE(b.h("~(0)").a(a),t.H,b),b)}, +j(a,b){var s,r,q=this.at +if(q===B.H)return null +s=q.b +r=s.j(0,b) +return r!=null||s.a_(b)?r:this.j4(q,b)}, +j4(a,b){var s,r,q +for(s=a,r=null;;){s=s.a.geO().gei() +if(s===B.H)break +q=s.b +r=q.j(0,b) +if(r!=null||q.a_(b)){a.b.q(0,b,r) +break}}return r}, +ca(a,b){this.bT(this,a,t.l.a(b))}, +hh(a,b){var s=this.Q,r=s.a +return s.b.$5(r,r.ga8(),this,a,b)}, +bd(a,b){var s,r +b.h("0()").a(a) +s=this.a +r=s.a +return s.b.$1$4(r,r.ga8(),this,a,b)}, +cq(a,b,c,d){var s,r +c.h("@<0>").u(d).h("1(2)").a(a) +d.a(b) +s=this.b +r=s.a +return s.b.$2$5(r,r.ga8(),this,a,b,c,d)}, +eS(a,b,c,d,e,f){var s,r +d.h("@<0>").u(e).u(f).h("1(2,3)").a(a) +e.a(b) +f.a(c) +s=this.c +r=s.a +return s.b.$3$6(r,r.ga8(),this,a,b,c,d,e,f)}, +aB(a,b){var s,r +b.h("0()").a(a) +s=this.d +r=s.a +return s.b.$1$4(r,r.ga8(),this,a,b)}, +bE(a,b,c){var s,r +b.h("@<0>").u(c).h("1(2)").a(a) +s=this.e +r=s.a +return s.b.$2$4(r,r.ga8(),this,a,b,c)}, +cl(a,b,c,d){var s,r +b.h("@<0>").u(c).u(d).h("1(2,3)").a(a) +s=this.f +r=s.a +return s.b.$3$4(r,r.ga8(),this,a,b,c,d)}, +hd(a,b){var s=this.r,r=s.a +if(r===B.d)return null +return s.b.$5(r,r.ga8(),this,a,b)}, +b2(a){var s,r +t.M.a(a) +s=this.w +r=s.a +return s.b.$4(r,r.ga8(),this,a)}, +eo(a,b){var s,r +t.M.a(b) +s=this.x +r=s.a +return s.b.$5(r,r.ga8(),this,a,b)}, +gfP(){return this.a}, +gfR(){return this.b}, +gfQ(){return this.c}, +gfL(){return this.d}, +gfM(){return this.e}, +gfK(){return this.f}, +gfp(){return this.r}, +ge9(){return this.w}, +gfk(){return this.x}, +gfj(){return this.y}, +gfG(){return this.z}, +gft(){return this.Q}, +ge_(){return this.as}, +gei(){return this.at}, +geO(){return this.ay}} +A.mY.prototype={ +$0(){return this.a.bd(this.b,this.c)}, +$S(){return this.c.h("0()")}} +A.mX.prototype={ +$0(){return this.a.cp(this.b)}, +$S:0} +A.mZ.prototype={ +$1(a){var s=this.c +return this.a.cr(this.b,s.a(a),s)}, +$S(){return this.c.h("~(0)")}} +A.ju.prototype={ +gfP(){return B.bu}, +gfR(){return B.bt}, +gfQ(){return B.bs}, +gfL(){return B.bq}, +gfM(){return B.br}, +gfK(){return B.bp}, +gfp(){return B.bl}, +ge9(){return B.bv}, +gfk(){return B.bk}, +gfj(){return B.at}, +gfG(){return B.bo}, +gft(){return B.bm}, +ge_(){return B.bn}, +gei(){return B.H}, +geO(){return null}, +gfe(){var s=$.nx +return s==null?$.nx=new A.eB(this):s}, +ga8(){var s=$.nx +return s==null?$.nx=new A.eB(this):s}, +gaK(){return this}, +cp(a){var s,r,q +t.M.a(a) +try{if(B.d===$.u){a.$0() +return}A.og(null,null,this,a,t.H)}catch(q){s=A.S(q) +r=A.ae(q) +A.hr(A.a2(s),t.l.a(r))}}, +cr(a,b,c){var s,r,q +c.h("~(0)").a(a) +c.a(b) +try{if(B.d===$.u){a.$1(b) +return}A.oh(null,null,this,a,b,t.H,c)}catch(q){s=A.S(q) +r=A.ae(q) +A.hr(A.a2(s),t.l.a(r))}}, +hy(a,b,c,d,e){var s,r,q +d.h("@<0>").u(e).h("~(1,2)").a(a) +d.a(b) +e.a(c) +try{if(B.d===$.u){a.$2(b,c) +return}A.pB(null,null,this,a,b,c,t.H,d,e)}catch(q){s=A.S(q) +r=A.ae(q) +A.hr(A.a2(s),t.l.a(r))}}, +d0(a,b){return new A.nz(this,b.h("0()").a(a),b)}, +c5(a){return new A.ny(this,t.M.a(a))}, +em(a,b){return new A.nA(this,b.h("~(0)").a(a),b)}, +j(a,b){return null}, +ca(a,b){A.hr(a,t.l.a(b))}, +hh(a,b){return A.t_(null,null,this,a,b)}, +bd(a,b){b.h("0()").a(a) +if($.u===B.d)return a.$0() +return A.og(null,null,this,a,b)}, +cq(a,b,c,d){c.h("@<0>").u(d).h("1(2)").a(a) +d.a(b) +if($.u===B.d)return a.$1(b) +return A.oh(null,null,this,a,b,c,d)}, +eS(a,b,c,d,e,f){d.h("@<0>").u(e).u(f).h("1(2,3)").a(a) +e.a(b) +f.a(c) +if($.u===B.d)return a.$2(b,c) +return A.pB(null,null,this,a,b,c,d,e,f)}, +aB(a,b){return b.h("0()").a(a)}, +bE(a,b,c){return b.h("@<0>").u(c).h("1(2)").a(a)}, +cl(a,b,c,d){return b.h("@<0>").u(c).u(d).h("1(2,3)").a(a)}, +hd(a,b){return null}, +b2(a){A.oi(null,null,this,t.M.a(a))}, +eo(a,b){return A.pe(a,t.M.a(b))}} +A.nz.prototype={ +$0(){return this.a.bd(this.b,this.c)}, +$S(){return this.c.h("0()")}} +A.ny.prototype={ +$0(){return this.a.cp(this.b)}, +$S:0} +A.nA.prototype={ +$1(a){var s=this.c +return this.a.cr(this.b,s.a(a),s)}, +$S(){return this.c.h("~(0)")}} +A.eB.prototype={$iY:1} +A.of.prototype={ +$0(){A.qk(this.a,this.b)}, +$S:0} +A.fC.prototype={} +A.dq.prototype={ +gm(a){return this.a}, +gC(a){return this.a===0}, +gX(){return new A.dr(this,A.j(this).h("dr<1>"))}, +gbI(){var s=A.j(this) +return A.ig(new A.dr(this,s.h("dr<1>")),new A.nl(this),s.c,s.y[1])}, +a_(a){var s,r +if(typeof a=="string"&&a!=="__proto__"){s=this.b +return s==null?!1:s[a]!=null}else if(typeof a=="number"&&(a&1073741823)===a){r=this.c +return r==null?!1:r[a]!=null}else return this.io(a)}, +io(a){var s=this.d +if(s==null)return!1 +return this.aT(this.fu(s,a),a)>=0}, +ag(a,b){A.j(this).h("ak<1,2>").a(b).av(0,new A.nk(this))}, +j(a,b){var s,r,q +if(typeof b=="string"&&b!=="__proto__"){s=this.b +r=s==null?null:A.rj(s,b) +return r}else if(typeof b=="number"&&(b&1073741823)===b){q=this.c +r=q==null?null:A.rj(q,b) +return r}else return this.iD(b)}, +iD(a){var s,r,q=this.d +if(q==null)return null +s=this.fu(q,a) +r=this.aT(s,a) +return r<0?null:s[r+1]}, +q(a,b,c){var s,r,q=this,p=A.j(q) +p.c.a(b) +p.y[1].a(c) +if(typeof b=="string"&&b!=="__proto__"){s=q.b +q.fd(s==null?q.b=A.po():s,b,c)}else if(typeof b=="number"&&(b&1073741823)===b){r=q.c +q.fd(r==null?q.c=A.po():r,b,c)}else q.jh(b,c)}, +jh(a,b){var s,r,q,p,o=this,n=A.j(o) +n.c.a(a) +n.y[1].a(b) +s=o.d +if(s==null)s=o.d=A.po() +r=o.dK(a) +q=s[r] +if(q==null){A.pp(s,r,[a,b]);++o.a +o.e=null}else{p=o.aT(q,a) +if(p>=0)q[p+1]=b +else{q.push(a,b);++o.a +o.e=null}}}, +av(a,b){var s,r,q,p,o,n,m=this,l=A.j(m) +l.h("~(1,2)").a(b) +s=m.fi() +for(r=s.length,q=l.c,l=l.y[1],p=0;p"))}} +A.fV.prototype={ +gn(){var s=this.d +return s==null?this.$ti.c.a(s):s}, +k(){var s=this,r=s.b,q=s.c,p=s.a +if(r!==p.e)throw A.c(A.ay(p)) +else if(q>=r.length){s.d=null +return!1}else{s.d=r[q] +s.c=q+1 +return!0}}, +$iH:1} +A.fX.prototype={ +gv(a){var s=this,r=new A.du(s,s.r,s.$ti.h("du<1>")) +r.c=s.e +return r}, +gm(a){return this.a}, +gC(a){return this.a===0}, +H(a,b){var s,r +if(b!=="__proto__"){s=this.b +if(s==null)return!1 +return t.nF.a(s[b])!=null}else{r=this.im(b) +return r}}, +im(a){var s=this.d +if(s==null)return!1 +return this.aT(s[B.a.gB(a)&1073741823],a)>=0}, +gF(a){var s=this.e +if(s==null)throw A.c(A.F("No elements")) +return this.$ti.c.a(s.a)}, +gE(a){var s=this.f +if(s==null)throw A.c(A.F("No elements")) +return this.$ti.c.a(s.a)}, +l(a,b){var s,r,q=this +q.$ti.c.a(b) +if(typeof b=="string"&&b!=="__proto__"){s=q.b +return q.fc(s==null?q.b=A.pq():s,b)}else if(typeof b=="number"&&(b&1073741823)===b){r=q.c +return q.fc(r==null?q.c=A.pq():r,b)}else return q.i5(b)}, +i5(a){var s,r,q,p=this +p.$ti.c.a(a) +s=p.d +if(s==null)s=p.d=A.pq() +r=J.aM(a)&1073741823 +q=s[r] +if(q==null)s[r]=[p.e3(a)] +else{if(p.aT(q,a)>=0)return!1 +q.push(p.e3(a))}return!0}, +G(a,b){var s +if(typeof b=="string"&&b!=="__proto__")return this.j9(this.b,b) +else{s=this.j8(b) +return s}}, +j8(a){var s,r,q,p,o=this.d +if(o==null)return!1 +s=J.aM(a)&1073741823 +r=o[s] +q=this.aT(r,a) +if(q<0)return!1 +p=r.splice(q,1)[0] +if(0===r.length)delete o[s] +this.h0(p) +return!0}, +fc(a,b){this.$ti.c.a(b) +if(t.nF.a(a[b])!=null)return!1 +a[b]=this.e3(b) +return!0}, +j9(a,b){var s +if(a==null)return!1 +s=t.nF.a(a[b]) +if(s==null)return!1 +this.h0(s) +delete a[b] +return!0}, +fC(){this.r=this.r+1&1073741823}, +e3(a){var s,r=this,q=new A.jm(r.$ti.c.a(a)) +if(r.e==null)r.e=r.f=q +else{s=r.f +s.toString +q.c=s +r.f=s.b=q}++r.a +r.fC() +return q}, +h0(a){var s=this,r=a.c,q=a.b +if(r==null)s.e=q +else r.b=q +if(q==null)s.f=r +else q.c=r;--s.a +s.fC()}, +aT(a,b){var s,r +if(a==null)return-1 +s=a.length +for(r=0;r"))}, +gm(a){return this.b}, +c6(a){var s,r,q=this;++q.a +if(q.b===0)return +s=q.c +s.toString +r=s +do{s=r.b +s.toString +r.se0(null) +r.sbn(null) +r.sbm(null) +if(s!==q.c){r=s +continue}else break}while(!0) +q.c=null +q.b=0}, +gF(a){var s +if(this.b===0)throw A.c(A.F("No such element")) +s=this.c +s.toString +return s}, +gE(a){var s +if(this.b===0)throw A.c(A.F("No such element")) +s=this.c.c +s.toString +return s}, +gC(a){return this.b===0}, +cH(a,b,c){var s=this,r=s.$ti +r.h("1?").a(a) +r.c.a(b) +if(b.a!=null)throw A.c(A.F("LinkedListEntry is already in a LinkedList"));++s.a +b.se0(s) +if(s.b===0){b.sbm(b) +b.sbn(b) +s.c=b;++s.b +return}r=a.c +r.toString +b.sbn(r) +b.sbm(a) +r.sbm(b) +a.sbn(b);++s.b}, +ec(a){var s,r,q=this +q.$ti.c.a(a);++q.a +a.b.sbn(a.c) +s=a.c +r=a.b +s.sbm(r);--q.b +a.sbn(null) +a.sbm(null) +a.se0(null) +if(q.b===0)q.c=null +else if(a===q.c)q.c=r}} +A.fY.prototype={ +gn(){var s=this.c +return s==null?this.$ti.c.a(s):s}, +k(){var s=this,r=s.a +if(s.b!==r.a)throw A.c(A.ay(s)) +if(r.b!==0)r=s.e&&s.d===r.gF(0) +else r=!0 +if(r){s.c=null +return!1}s.e=!0 +r=s.d +s.c=r +s.d=r.b +return!0}, +$iH:1} +A.ao.prototype={ +gcj(){var s=this.a +if(s==null||this===s.gF(0))return null +return this.c}, +se0(a){this.a=A.j(this).h("cA?").a(a)}, +sbm(a){this.b=A.j(this).h("ao.E?").a(a)}, +sbn(a){this.c=A.j(this).h("ao.E?").a(a)}} +A.A.prototype={ +gv(a){return new A.bb(a,this.gm(a),A.aK(a).h("bb"))}, +J(a,b){return this.j(a,b)}, +gC(a){return this.gm(a)===0}, +gF(a){if(this.gm(a)===0)throw A.c(A.aE()) +return this.j(a,0)}, +gE(a){if(this.gm(a)===0)throw A.c(A.aE()) +return this.j(a,this.gm(a)-1)}, +bb(a,b,c){var s=A.aK(a) +return new A.K(a,s.u(c).h("1(A.E)").a(b),s.h("@").u(c).h("K<1,2>"))}, +U(a,b){return A.bx(a,b,null,A.aK(a).h("A.E"))}, +aj(a,b){return A.bx(a,0,A.dB(b,"count",t.S),A.aK(a).h("A.E"))}, +aE(a,b){var s,r,q,p,o=this +if(o.gC(a)){s=J.qu(0,A.aK(a).h("A.E")) +return s}r=o.j(a,0) +q=A.bm(o.gm(a),r,!0,A.aK(a).h("A.E")) +for(p=1;p").u(b).h("as<1,2>"))}, +a0(a,b,c){var s,r=this.gm(a) +A.bv(b,c,r) +s=A.au(this.cA(a,b,c),A.aK(a).h("A.E")) +return s}, +cA(a,b,c){A.bv(b,c,this.gm(a)) +return A.bx(a,b,c,A.aK(a).h("A.E"))}, +es(a,b,c,d){var s +A.aK(a).h("A.E?").a(d) +A.bv(b,c,this.gm(a)) +for(s=b;s").a(d) +A.bv(b,c,this.gm(a)) +s=c-b +if(s===0)return +A.al(e,"skipCount") +if(t.j.b(d)){r=e +q=d}else{q=J.eM(d,e).aE(0,!1) +r=0}p=J.ac(q) +if(r+s>p.gm(q))throw A.c(A.qs()) +if(r=0;--o)this.q(a,b+o,p.j(q,r+o)) +else for(o=0;o").a(c) +if(t.j.b(c))this.ad(a,b,b+c.length,c) +else for(s=J.a7(c);s.k();b=r){r=b+1 +this.q(a,b,s.gn())}}, +i(a){return A.p_(a,"[","]")}, +$iw:1, +$if:1, +$im:1} +A.V.prototype={ +av(a,b){var s,r,q,p=A.j(this) +p.h("~(V.K,V.V)").a(b) +for(s=J.a7(this.gX()),p=p.h("V.V");s.k();){r=s.gn() +q=this.j(0,r) +b.$2(r,q==null?p.a(q):q)}}, +gd4(){return J.dH(this.gX(),new A.lh(this),A.j(this).h("aR"))}, +gm(a){return J.aD(this.gX())}, +gC(a){return J.oP(this.gX())}, +gbI(){return new A.fZ(this,A.j(this).h("fZ"))}, +i(a){return A.p5(this)}, +$iak:1} +A.lh.prototype={ +$1(a){var s=this.a,r=A.j(s) +r.h("V.K").a(a) +s=s.j(0,a) +if(s==null)s=r.h("V.V").a(s) +return new A.aR(a,s,r.h("aR"))}, +$S(){return A.j(this.a).h("aR(V.K)")}} +A.li.prototype={ +$2(a,b){var s,r=this.a +if(!r.a)this.b.a+=", " +r.a=!1 +r=this.b +s=A.x(a) +r.a=(r.a+=s)+": " +s=A.x(b) +r.a+=s}, +$S:47} +A.fZ.prototype={ +gm(a){var s=this.a +return s.gm(s)}, +gC(a){var s=this.a +return s.gC(s)}, +gF(a){var s=this.a +s=s.j(0,J.jN(s.gX())) +return s==null?this.$ti.y[1].a(s):s}, +gE(a){var s=this.a +s=s.j(0,J.oQ(s.gX())) +return s==null?this.$ti.y[1].a(s):s}, +gv(a){var s=this.a +return new A.h_(J.a7(s.gX()),s,this.$ti.h("h_<1,2>"))}} +A.h_.prototype={ +k(){var s=this,r=s.a +if(r.k()){s.c=s.b.j(0,r.gn()) +return!0}s.c=null +return!1}, +gn(){var s=this.c +return s==null?this.$ti.y[1].a(s):s}, +$iH:1} +A.e1.prototype={ +gC(a){return this.a===0}, +bb(a,b,c){var s=this.$ti +return new A.d8(this,s.u(c).h("1(2)").a(b),s.h("@<1>").u(c).h("d8<1,2>"))}, +i(a){return A.p_(this,"{","}")}, +aj(a,b){return A.pd(this,b,this.$ti.c)}, +U(a,b){return A.qT(this,b,this.$ti.c)}, +gF(a){var s,r=A.jn(this,this.r,this.$ti.c) +if(!r.k())throw A.c(A.aE()) +s=r.d +return s==null?r.$ti.c.a(s):s}, +gE(a){var s,r,q=A.jn(this,this.r,this.$ti.c) +if(!q.k())throw A.c(A.aE()) +s=q.$ti.c +do{r=q.d +if(r==null)r=s.a(r)}while(q.k()) +return r}, +J(a,b){var s,r,q,p=this +A.al(b,"index") +s=A.jn(p,p.r,p.$ti.c) +for(r=b;s.k();){if(r===0){q=s.d +return q==null?s.$ti.c.a(q):q}--r}throw A.c(A.i1(b,b-r,p,null,"index"))}, +$iw:1, +$if:1, +$ip8:1} +A.h6.prototype={} +A.nS.prototype={ +$0(){var s,r +try{s=new TextDecoder("utf-8",{fatal:true}) +return s}catch(r){}return null}, +$S:27} +A.nR.prototype={ +$0(){var s,r +try{s=new TextDecoder("utf-8",{fatal:false}) +return s}catch(r){}return null}, +$S:27} +A.hx.prototype={ +ke(a){return B.af.a4(a)}} +A.jC.prototype={ +a4(a){var s,r,q,p,o,n +A.v(a) +s=a.length +r=A.bv(0,null,s) +q=new Uint8Array(r) +for(p=~this.a,o=0;o=0&&e=0){if(!(d<64))return A.b(a0,d) +e=a0.charCodeAt(d) +if(e===j)continue +j=e}else{if(d===-1){if(n<0){g=o==null?null:o.a.length +if(g==null)g=0 +n=g+(q-p) +m=q}++l +if(j===61)continue}j=e}if(d!==-2){if(o==null){o=new A.aI("") +g=o}else g=o +g.a+=B.a.t(a3,p,q) +c=A.b1(j) +g.a+=c +p=k +continue}}throw A.c(A.at("Invalid base64 data",a3,q))}if(o!=null){a2=B.a.t(a3,p,a5) +a2=o.a+=a2 +r=a2.length +if(n>=0)A.q5(a3,m,a5,n,l,r) +else{b=B.c.ac(r-1,4)+1 +if(b===1)throw A.c(A.at(a1,a3,a5)) +while(b<4){a2+="=" +o.a=a2;++b}}a2=o.a +return B.a.aO(a3,a4,a5,a2.charCodeAt(0)==0?a2:a2)}a=a5-a4 +if(n>=0)A.q5(a3,m,a5,n,l,a) +else{b=B.c.ac(a,4) +if(b===1)throw A.c(A.at(a1,a3,a5)) +if(b>1)a3=B.a.aO(a3,a5,a5,b===2?"==":"=")}return a3}} +A.hC.prototype={} +A.cr.prototype={} +A.n5.prototype={} +A.cs.prototype={$icd:1} +A.hW.prototype={} +A.iR.prototype={ +d2(a){t.L.a(a) +return new A.hl(!1).dL(a,0,null,!0)}} +A.iS.prototype={ +a4(a){var s,r,q,p,o +A.v(a) +s=a.length +r=A.bv(0,null,s) +if(r===0)return new Uint8Array(0) +q=new Uint8Array(r*3) +p=new A.nT(q) +if(p.iC(a,0,r)!==r){o=r-1 +if(!(o>=0&&o>>18|240 +q=n.b=p+1 +if(!(p>>12&63|128 +p=n.b=q+1 +if(!(q>>6&63|128 +n.b=p+1 +if(!(p=0&&s=q)break +k.b=m+1 +r&2&&A.E(s) +s[m]=n}else{m=n&64512 +if(m===55296){if(k.b+4>q)break +m=o+1 +if(!(mq)break +k.ef()}else if(n<=2047){m=k.b +l=m+1 +if(l>=q)break +k.b=l +r&2&&A.E(s) +if(!(m>>6|192 +k.b=l+1 +s[l]=n&63|128}else{m=k.b +if(m+2>=q)break +l=k.b=m+1 +r&2&&A.E(s) +if(!(m>>12|224 +m=k.b=l+1 +if(!(l>>6&63|128 +k.b=m+1 +if(!(m=15){o=l.a +n=A.wz(o,q,b,s) +if(n!=null){if(!o)return n +if(n.indexOf("\ufffd")<0)return n}}n=l.dN(q,b,s,d) +o=l.b +if((o&1)!==0){m=A.wB(o) +l.b=0 +throw A.c(A.at(m,a,p+l.c))}return n}, +dN(a,b,c,d){var s,r,q=this +if(c-b>1000){s=B.c.M(b+c,2) +r=q.dN(a,b,s,!1) +if((q.b&1)!==0)return r +return r+q.dN(a,s,c,d)}return q.jK(a,b,c,d)}, +jK(a,b,a0,a1){var s,r,q,p,o,n,m,l,k=this,j="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHIHHHJEEBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBKCCCCCCCCCCCCDCLONNNMEEEEEEEEEEE",i=" \x000:XECCCCCN:lDb \x000:XECCCCCNvlDb \x000:XECCCCCN:lDb AAAAA\x00\x00\x00\x00\x00AAAAA00000AAAAA:::::AAAAAGG000AAAAA00KKKAAAAAG::::AAAAA:IIIIAAAAA000\x800AAAAA\x00\x00\x00\x00 AAAAA",h=65533,g=k.b,f=k.c,e=new A.aI(""),d=b+1,c=a.length +if(!(b>=0&&b=0&&s<256))return A.b(j,s) +q=j.charCodeAt(s)&31 +f=g<=32?s&61694>>>q:(s&63|f<<6)>>>0 +p=g+q +if(!(p>=0&&p<144))return A.b(i,p) +g=i.charCodeAt(p) +if(g===0){p=A.b1(f) +e.a+=p +if(d===a0)break A +break}else if((g&1)!==0){if(r)switch(g){case 69:case 67:p=A.b1(h) +e.a+=p +break +case 65:p=A.b1(h) +e.a+=p;--d +break +default:p=A.b1(h) +e.a=(e.a+=p)+p +break}else{k.b=g +k.c=d-1 +return""}g=0}if(d===a0)break A +o=d+1 +if(!(d>=0&&d=0&&d=0&&o=128){n=m-1 +o=m +break}o=m}if(n-d<20)for(l=d;l32)if(r){c=A.b1(h) +e.a+=c}else{k.b=77 +k.c=a0 +return""}k.b=g +k.c=f +c=e.a +return c.charCodeAt(0)==0?c:c}} +A.ab.prototype={ +al(a){var s,r,q=this,p=q.c +if(p===0)return q +s=!q.a +r=q.b +p=A.b4(p,r) +return new A.ab(p===0?!1:s,r,p)}, +ix(a){var s,r,q,p,o,n,m,l=this.c +if(l===0)return $.bs() +s=l+a +r=this.b +q=new Uint16Array(s) +for(p=l-1,o=r.length;p>=0;--p){n=p+a +if(!(p=0&&n=0&&o=0&&r>>0!==0)return l.cD(0,$.dF()) +for(k=0;k=0)return q.cF(b,r) +return b.cF(q,!r)}, +cD(a,b){var s,r,q=this,p=q.c +if(p===0)return b.al(0) +s=b.c +if(s===0)return q +r=q.a +if(r!==b.a)return q.dB(b,r) +if(A.mO(q.b,p,b.b,s)>=0)return q.cF(b,r) +return b.cF(q,!r)}, +bJ(a,b){var s,r,q,p,o,n,m,l=this.c,k=b.c +if(l===0||k===0)return $.bs() +s=l+k +r=this.b +q=b.b +p=new Uint16Array(s) +for(o=q.length,n=0;n0?p.al(0):p}, +j7(a){var s,r,q,p=this +if(p.c0)q=q.bj(0,$.pk.af()) +return p.a&&q.c>0?q.al(0):q}, +fm(a){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c=this,b=c.c +if(b===$.rd&&a.c===$.rf&&c.b===$.rc&&a.b===$.re)return +s=a.b +r=a.c +q=r-1 +if(!(q>=0&&q0){o=new Uint16Array(r+5) +n=A.rb(s,r,p,o) +m=new Uint16Array(b+5) +l=A.rb(c.b,b,p,m)}else{m=A.pl(c.b,0,b,b+2) +n=r +o=s +l=b}q=n-1 +if(!(q>=0&&q=0){q&2&&A.E(m) +if(!(l>=0&&l=0&&l=0&&n0;){d=A.vV(k,m,e);--j +A.rh(d,f,0,m,j,n) +if(!(e>=0&&e=m.length)return A.b(m,0) +return B.c.i(-m[0])}m=n.b +if(0>=m.length)return A.b(m,0) +return B.c.i(m[0])}s=A.k([],t.s) +m=n.a +r=m?n.al(0):n +while(r.c>1){q=$.q_() +if(q.c===0)A.J(B.aj) +p=r.j7(q).i(0) +B.b.l(s,p) +o=p.length +if(o===1)B.b.l(s,"000") +if(o===2)B.b.l(s,"00") +if(o===3)B.b.l(s,"0") +r=r.iw(q)}q=r.b +if(0>=q.length)return A.b(q,0) +B.b.l(s,B.c.i(q[0])) +if(m)B.b.l(s,"-") +return new A.fn(s,t.hF).cb(0)}, +$ijZ:1, +$iaL:1} +A.mP.prototype={ +$2(a,b){a=a+b&536870911 +a=a+((a&524287)<<10)&536870911 +return a^a>>>6}, +$S:41} +A.mQ.prototype={ +$1(a){a=a+((a&67108863)<<3)&536870911 +a^=a>>>11 +return a+((a&16383)<<15)&536870911}, +$S:40} +A.fR.prototype={ +h5(a,b,c){var s +this.$ti.c.a(b) +s=this.a +if(s!=null)s.register(a,b,c)}, +hb(a){var s=this.a +if(s!=null)s.unregister(a)}, +$iuL:1} +A.ct.prototype={ +T(a,b){if(b==null)return!1 +return b instanceof A.ct&&this.a===b.a&&this.b===b.b&&this.c===b.c}, +gB(a){return A.fh(this.a,this.b,B.f,B.f)}, +ah(a,b){var s +t.cs.a(b) +s=B.c.ah(this.a,b.a) +if(s!==0)return s +return B.c.ah(this.b,b.b)}, +i(a){var s=this,r=A.uE(A.qK(s)),q=A.hQ(A.qI(s)),p=A.hQ(A.qF(s)),o=A.hQ(A.qG(s)),n=A.hQ(A.qH(s)),m=A.hQ(A.qJ(s)),l=A.qf(A.ve(s)),k=s.b,j=k===0?"":A.qf(k) +k=r+"-"+q +if(s.c)return k+"-"+p+" "+o+":"+n+":"+m+"."+l+j+"Z" +else return k+"-"+p+" "+o+":"+n+":"+m+"."+l+j}, +$iaL:1} +A.bj.prototype={ +T(a,b){if(b==null)return!1 +return b instanceof A.bj&&this.a===b.a}, +gB(a){return B.c.gB(this.a)}, +ah(a,b){return B.c.ah(this.a,t.da.a(b).a)}, +i(a){var s,r,q,p,o,n=this.a,m=B.c.M(n,36e8),l=n%36e8 +if(n<0){m=0-m +n=0-l +s="-"}else{n=l +s=""}r=B.c.M(n,6e7) +n%=6e7 +q=r<10?"0":"" +p=B.c.M(n,1e6) +o=p<10?"0":"" +return s+m+":"+q+r+":"+o+p+"."+B.a.kC(B.c.i(n%1e6),6,"0")}, +$iaL:1} +A.jd.prototype={ +i(a){return this.ae()}, +$ibu:1} +A.W.prototype={ +gaP(){return A.vd(this)}} +A.hz.prototype={ +i(a){var s=this.a +if(s!=null)return"Assertion failed: "+A.hX(s) +return"Assertion failed"}} +A.ce.prototype={} +A.bt.prototype={ +gdR(){return"Invalid argument"+(!this.a?"(s)":"")}, +gdQ(){return""}, +i(a){var s=this,r=s.c,q=r==null?"":" ("+r+")",p=s.d,o=p==null?"":": "+A.x(p),n=s.gdR()+q+o +if(!s.a)return n +return n+s.gdQ()+": "+A.hX(s.geE())}, +geE(){return this.b}} +A.e_.prototype={ +geE(){return A.rM(this.b)}, +gdR(){return"RangeError"}, +gdQ(){var s,r=this.e,q=this.f +if(r==null)s=q!=null?": Not less than or equal to "+A.x(q):"" +else if(q==null)s=": Not greater than or equal to "+A.x(r) +else if(q>r)s=": Not in inclusive range "+A.x(r)+".."+A.x(q) +else s=qe.length +else s=!1 +if(s)f=null +if(f==null){if(e.length>78)e=B.a.t(e,0,75)+"..." +return g+"\n"+e}for(r=e.length,q=1,p=0,o=!1,n=0;n1?g+(" (at line "+q+", character "+(f-p+1)+")\n"):g+(" (at character "+(f+1)+")\n") +for(n=f;n=0))return A.b(e,n) +m=e.charCodeAt(n) +if(m===10||m===13){r=n +break}}l="" +if(r-p>78){k="..." +if(f-p<75){j=p+75 +i=p}else{if(r-f<75){i=r-75 +j=r +k=""}else{i=f-36 +j=f+36}l="..."}}else{j=r +i=p +k=""}return g+l+B.a.t(e,i,j)+k+"\n"+B.a.bJ(" ",f-i+l.length)+"^\n"}else return f!=null?g+(" (at offset "+A.x(f)+")"):g}, +$iaf:1} +A.i4.prototype={ +gaP(){return null}, +i(a){return"IntegerDivisionByZeroException"}, +$iW:1, +$iaf:1} +A.f.prototype={ +bx(a,b){return A.eS(this,A.j(this).h("f.E"),b)}, +bb(a,b,c){var s=A.j(this) +return A.ig(this,s.u(c).h("1(f.E)").a(b),s.h("f.E"),c)}, +aE(a,b){var s=A.j(this).h("f.E") +if(b)s=A.au(this,s) +else{s=A.au(this,s) +s.$flags=1 +s=s}return s}, +cs(a){return this.aE(0,!0)}, +gm(a){var s,r=this.gv(this) +for(s=0;r.k();)++s +return s}, +gC(a){return!this.gv(this).k()}, +aj(a,b){return A.pd(this,b,A.j(this).h("f.E"))}, +U(a,b){return A.qT(this,b,A.j(this).h("f.E"))}, +gF(a){var s=this.gv(this) +if(!s.k())throw A.c(A.aE()) +return s.gn()}, +gE(a){var s,r=this.gv(this) +if(!r.k())throw A.c(A.aE()) +do s=r.gn() +while(r.k()) +return s}, +J(a,b){var s,r +A.al(b,"index") +s=this.gv(this) +for(r=b;s.k();){if(r===0)return s.gn();--r}throw A.c(A.i1(b,b-r,this,null,"index"))}, +i(a){return A.uY(this,"(",")")}} +A.aR.prototype={ +i(a){return"MapEntry("+A.x(this.a)+": "+A.x(this.b)+")"}} +A.Q.prototype={ +gB(a){return A.h.prototype.gB.call(this,0)}, +i(a){return"null"}} +A.h.prototype={$ih:1, +T(a,b){return this===b}, +gB(a){return A.fk(this)}, +i(a){return"Instance of '"+A.iw(this)+"'"}, +gS(a){return A.y8(this)}, +toString(){return this.i(this)}} +A.eu.prototype={ +i(a){return this.a}, +$iX:1} +A.aI.prototype={ +gm(a){return this.a.length}, +i(a){var s=this.a +return s.charCodeAt(0)==0?s:s}, +$ivx:1} +A.mc.prototype={ +$2(a,b){throw A.c(A.at("Illegal IPv6 address, "+a,this.a,b))}, +$S:54} +A.hi.prototype={ +gfW(){var s,r,q,p,o=this,n=o.w +if(n===$){s=o.a +r=s.length!==0?s+":":"" +q=o.c +p=q==null +if(!p||s==="file"){s=r+"//" +r=o.b +if(r.length!==0)s=s+r+"@" +if(!p)s+=q +r=o.d +if(r!=null)s=s+":"+A.x(r)}else s=r +s+=o.e +r=o.f +if(r!=null)s=s+"?"+r +r=o.r +if(r!=null)s=s+"#"+r +n=o.w=s.charCodeAt(0)==0?s:s}return n}, +gkE(){var s,r,q,p=this,o=p.x +if(o===$){s=p.e +r=s.length +if(r!==0){if(0>=r)return A.b(s,0) +r=s.charCodeAt(0)===47}else r=!1 +if(r)s=B.a.K(s,1) +q=s.length===0?B.z:A.b_(new A.K(A.k(s.split("/"),t.s),t.ha.a(A.xY()),t.iZ),t.N) +p.x!==$&&A.pW() +o=p.x=q}return o}, +gB(a){var s,r=this,q=r.y +if(q===$){s=B.a.gB(r.gfW()) +r.y!==$&&A.pW() +r.y=s +q=s}return q}, +geX(){return this.b}, +gba(){var s=this.c +if(s==null)return"" +if(B.a.A(s,"[")&&!B.a.D(s,"v",1))return B.a.t(s,1,s.length-1) +return s}, +gci(){var s=this.d +return s==null?A.rw(this.a):s}, +gck(){var s=this.f +return s==null?"":s}, +gd6(){var s=this.r +return s==null?"":s}, +kn(a){var s=this.a +if(a.length!==s.length)return!1 +return A.wO(a,s,0)>=0}, +hv(a){var s,r,q,p,o,n,m,l=this +a=A.nQ(a,0,a.length) +s=a==="file" +r=l.b +q=l.d +if(a!==l.a)q=A.nP(q,a) +p=l.c +if(!(p!=null))p=r.length!==0||q!=null||s?"":null +o=l.e +if(!s)n=p!=null&&o.length!==0 +else n=!0 +if(n&&!B.a.A(o,"/"))o="/"+o +m=o +return A.hj(a,r,p,q,m,l.f,l.r)}, +fB(a,b){var s,r,q,p,o,n,m,l,k +for(s=0,r=0;B.a.D(b,"../",r);){r+=3;++s}q=B.a.da(a,"/") +p=a.length +for(;;){if(!(q>0&&s>0))break +o=B.a.hm(a,"/",q-1) +if(o<0)break +n=q-o +m=n!==2 +l=!1 +if(!m||n===3){k=o+1 +if(!(k0){k=B.a.t(n,0,l) +n=a.gew()?k+A.dz(a.gaa()):k+A.dz(h.fB(B.a.K(n,k.length),a.gaa()))}else if(a.gew())n=A.dz(a.gaa()) +else if(n.length===0)if(p==null)n=s.length===0?a.gaa():A.dz(a.gaa()) +else n=A.dz("/"+a.gaa()) +else{j=h.fB(n,a.gaa()) +r=s.length===0 +if(!r||p!=null||B.a.A(n,"/"))n=A.dz(j) +else n=A.pv(j,!r||p!=null)}m=a.gd7()?a.gck():null}}}i=a.gey()?a.gd6():null +return A.hj(s,q,p,o,n,m,i)}, +gex(){return this.c!=null}, +gd7(){return this.f!=null}, +gey(){return this.r!=null}, +ghi(){return this.e.length===0}, +gew(){return B.a.A(this.e,"/")}, +eU(){var s,r=this,q=r.a +if(q!==""&&q!=="file")throw A.c(A.aa("Cannot extract a file path from a "+q+" URI")) +q=r.f +if((q==null?"":q)!=="")throw A.c(A.aa(u.y)) +q=r.r +if((q==null?"":q)!=="")throw A.c(A.aa(u.l)) +if(r.c!=null&&r.gba()!=="")A.J(A.aa(u.j)) +s=r.gkE() +A.wp(s,!1) +q=A.pb(B.a.A(r.e,"/")?"/":"",s,"/") +q=q.charCodeAt(0)==0?q:q +return q}, +i(a){return this.gfW()}, +T(a,b){var s,r,q,p=this +if(b==null)return!1 +if(p===b)return!0 +s=!1 +if(t.jJ.b(b))if(p.a===b.gW())if(p.c!=null===b.gex())if(p.b===b.geX())if(p.gba()===b.gba())if(p.gci()===b.gci())if(p.e===b.gaa()){r=p.f +q=r==null +if(!q===b.gd7()){if(q)r="" +if(r===b.gck()){r=p.r +q=r==null +if(!q===b.gey()){s=q?"":r +s=s===b.gd6()}}}}return s}, +$iiM:1, +gW(){return this.a}, +gaa(){return this.e}} +A.nO.prototype={ +$1(a){return A.wy(64,A.v(a),B.j,!1)}, +$S:6} +A.iN.prototype={ +geW(){var s,r,q,p,o=this,n=null,m=o.c +if(m==null){m=o.b +if(0>=m.length)return A.b(m,0) +s=o.a +m=m[0]+1 +r=B.a.aY(s,"?",m) +q=s.length +if(r>=0){p=A.hk(s,r+1,q,256,!1,!1) +q=r}else p=n +m=o.c=new A.jb("data","",n,n,A.hk(s,m,q,128,!1,!1),p,n)}return m}, +i(a){var s,r=this.b +if(0>=r.length)return A.b(r,0) +s=this.a +return r[0]===-1?"data:"+s:s}} +A.bo.prototype={ +gex(){return this.c>0}, +gez(){return this.c>0&&this.d+1r?B.a.t(this.a,r,s-1):""}, +gba(){var s=this.c +return s>0?B.a.t(this.a,s,this.d):""}, +gci(){var s,r=this +if(r.gez())return A.bG(B.a.t(r.a,r.d+1,r.e),null) +s=r.b +if(s===4&&B.a.A(r.a,"http"))return 80 +if(s===5&&B.a.A(r.a,"https"))return 443 +return 0}, +gaa(){return B.a.t(this.a,this.e,this.f)}, +gck(){var s=this.f,r=this.r +return s=q.length)return s +return new A.bo(B.a.t(q,0,r),s.b,s.c,s.d,s.e,s.f,r,s.w)}, +hv(a){var s,r,q,p,o,n,m,l,k,j,i,h=this,g=null +a=A.nQ(a,0,a.length) +s=!(h.b===a.length&&B.a.A(h.a,a)) +r=a==="file" +q=h.c +p=q>0?B.a.t(h.a,h.b+3,q):"" +o=h.gez()?h.gci():g +if(s)o=A.nP(o,a) +q=h.c +if(q>0)n=B.a.t(h.a,q,h.d) +else n=p.length!==0||o!=null||r?"":g +q=h.a +m=h.f +l=B.a.t(q,h.e,m) +if(!r)k=n!=null&&l.length!==0 +else k=!0 +if(k&&!B.a.A(l,"/"))l="/"+l +k=h.r +j=m0)return b +s=b.c +if(s>0){r=a.b +if(r<=0)return b +q=r===4 +if(q&&B.a.A(a.a,"file"))p=b.e!==b.f +else if(q&&B.a.A(a.a,"http"))p=!b.fz("80") +else p=!(r===5&&B.a.A(a.a,"https"))||!b.fz("443") +if(p){o=r+1 +return new A.bo(B.a.t(a.a,0,o)+B.a.K(b.a,c+1),r,s+o,b.d+o,b.e+o,b.f+o,b.r+o,a.w)}else return this.fY().cn(b)}n=b.e +c=b.f +if(n===c){s=b.r +if(c0?l:m +o=k-n +return new A.bo(B.a.t(a.a,0,k)+B.a.K(s,n),a.b,a.c,a.d,m,c+o,b.r+o,a.w)}j=a.e +i=a.f +if(j===i&&a.c>0){while(B.a.D(s,"../",n))n+=3 +o=j-n+1 +return new A.bo(B.a.t(a.a,0,j)+"/"+B.a.K(s,n),a.b,a.c,a.d,j,c+o,b.r+o,a.w)}h=a.a +l=A.rn(this) +if(l>=0)g=l +else for(g=j;B.a.D(h,"../",g);)g+=3 +f=0 +for(;;){e=n+3 +if(!(e<=c&&B.a.D(s,"../",n)))break;++f +n=e}for(r=h.length,d="";i>g;){--i +if(!(i>=0&&i=0){s=!(q===4&&B.a.A(r.a,"file")) +q=s}else q=!1 +if(q)throw A.c(A.aa("Cannot extract a file path from a "+r.gW()+" URI")) +q=r.f +s=r.a +if(q0?s.gba():r,n=s.gez()?s.gci():r,m=s.a,l=s.f,k=B.a.t(m,s.e,l),j=s.r +l=l4294967296)throw A.c(new A.e_(k,k,!1,k,k,"max must be in range 0 < max \u2264 2^32, was "+a)) +if(a>255)if(a>65535)s=a>16777215?4:3 +else s=2 +else s=1 +r=this.a +r.$flags&2&&A.E(r,11) +r.setUint32(0,0,!1) +q=4-s +p=A.d(Math.pow(256,s)) +for(o=a-1,n=(a&o)===0;;){crypto.getRandomValues(J.dG(B.aJ.gaX(r),q,s)) +m=r.getUint32(0,!1) +if(n)return(m&o)>>>0 +l=m%a +if(m-l+a?") +p.a(a) +p.a(b) +if(a===b)return!0 +p=J.ac(a) +s=p.gm(a) +r=J.ac(b) +if(s!==r.gm(b))return!1 +for(q=0;q?").a(a) +for(s=J.ac(a),r=0,q=0;q>>0)&2147483647 +r^=r>>>6}r=r+(r<<3>>>0)&2147483647 +r^=r>>>11 +return r+(r<<15>>>0)&2147483647}} +A.io.prototype={} +A.iL.prototype={} +A.eZ.prototype={ +hX(a,b,c){var s=this.a.a +s===$&&A.C() +s.eI(this.giG(),new A.kB(this))}, +ho(){return this.d++}, +p(){var s=0,r=A.q(t.H),q,p=this,o +var $async$p=A.r(function(a,b){if(a===1)return A.n(b,r) +for(;;)switch(s){case 0:if(p.r||(p.w.a.a&30)!==0){s=1 +break}p.r=!0 +o=p.a.b +o===$&&A.C() +o.p() +s=3 +return A.e(p.w.a,$async$p) +case 3:case 1:return A.o(q,r)}}) +return A.p($async$p,r)}, +iH(a){var s,r=this +if(r.c){a.toString +a=B.J.ep(a)}if(a instanceof A.by){s=r.e.G(0,a.a) +if(s!=null)s.a.O(a.b)}else if(a instanceof A.bL){s=r.e.G(0,a.a) +if(s!=null)s.h8(new A.hT(a.b),a.c)}else if(a instanceof A.av)r.f.l(0,a) +else if(a instanceof A.c_){s=r.e.G(0,a.a) +if(s!=null)s.h7(B.w)}}, +bu(a){var s,r,q=this +if(q.r||(q.w.a.a&30)!==0)throw A.c(A.F("Tried to send "+a.i(0)+" over isolate channel, but the connection was closed!")) +s=q.a.b +s===$&&A.C() +r=q.c?B.J.dv(a):a +s.a.l(0,s.$ti.c.a(r))}, +kJ(a,b,c){var s,r=this +t.fw.a(c) +if(r.r||(r.w.a.a&30)!==0)return +s=a.a +if(b instanceof A.eR)r.bu(new A.c_(s)) +else r.bu(new A.bL(s,b,c))}, +hK(a){var s=this.f +new A.aC(s,A.j(s).h("aC<1>")).kq(new A.kC(this,t.fb.a(a)))}} +A.kB.prototype={ +$0(){var s,r,q +for(s=this.a,r=s.e,q=new A.c4(r,r.r,r.e,A.j(r).h("c4<2>"));q.k();)q.d.h7(B.ai) +r.c6(0) +s.w.ai()}, +$S:0} +A.kC.prototype={ +$1(a){return this.hD(t.o5.a(a))}, +hD(a){var s=0,r=A.q(t.H),q,p=2,o=[],n=this,m,l,k,j,i,h,g +var $async$$1=A.r(function(b,c){if(b===1){o.push(c) +s=p}for(;;)switch(s){case 0:h=null +p=4 +k=n.b.$1(a) +j=t.O +s=7 +return A.e(t.nC.b(k)?k:A.dn(j.a(k),j),$async$$1) +case 7:h=c +p=2 +s=6 +break +case 4:p=3 +g=o.pop() +m=A.S(g) +l=A.ae(g) +k=n.a.kJ(a,m,l) +q=k +s=1 +break +s=6 +break +case 3:s=2 +break +case 6:k=n.a +if(!(k.r||(k.w.a.a&30)!==0)){j=t.O.a(h) +k.bu(new A.by(a.a,j))}case 1:return A.o(q,r) +case 2:return A.n(o.at(-1),r)}}) +return A.p($async$$1,r)}, +$S:73} +A.jp.prototype={ +h8(a,b){var s +if(b==null)s=this.b +else{s=A.k([],t.ms) +if(b instanceof A.bJ)B.b.ag(s,b.a) +else s.push(A.r_(b)) +s.push(A.r_(this.b)) +s=new A.bJ(A.b_(s,t.i))}this.a.by(a,s)}, +h7(a){return this.h8(a,null)}} +A.hL.prototype={ +i(a){return"Channel was closed before receiving a response"}, +$iaf:1} +A.hT.prototype={ +i(a){return J.bi(this.a)}, +$iaf:1} +A.hS.prototype={ +dv(a){var s,r +if(a instanceof A.av)return[0,a.a,this.hc(a.b)] +else if(a instanceof A.bL){s=J.bi(a.b) +r=a.c +r=r==null?null:r.i(0) +return[2,a.a,s,r]}else if(a instanceof A.by)return[1,a.a,this.hc(a.b)] +else if(a instanceof A.c_)return A.k([3,a.a],t.t) +else return null}, +ep(a){var s,r,q,p +if(!t.j.b(a))throw A.c(B.av) +s=J.ac(a) +r=A.d(s.j(a,0)) +q=A.d(s.j(a,1)) +switch(r){case 0:return new A.av(q,t.oT.a(this.ha(s.j(a,2)))) +case 2:p=A.o5(s.j(a,3)) +s=s.j(a,2) +if(s==null)s=A.a2(s) +return new A.bL(q,s,p!=null?new A.eu(p):null) +case 1:return new A.by(q,t.O.a(this.ha(s.j(a,2)))) +case 3:return new A.c_(q)}throw A.c(B.au)}, +hc(a){var s,r,q,p,o,n,m,l,k,j,i,h,g,f +if(a==null)return a +if(a instanceof A.dX)return a.a +else if(a instanceof A.cv){s=a.a +r=a.b +q=[] +for(p=a.c,o=p.length,n=0;n")),g=g.h("P.E");s.k();){a8=s.d +h.push(this.dM(a8==null?g.a(a8):a8))}B.b.l(m,new A.dI(i,h))}f=J.oQ(a7.a) +A:{if(f==null){s=a6 +break A}A.d(f) +s=f +break A}return new A.bM(new A.eQ(n,m),s) +case 5:return new A.cI(B.b.j(B.C,q.$1(1)),p.$1(2)) +case 6:return new A.cu(q.$1(1),p.$1(2)) +case 13:s.toString +return new A.cK(A.oT(B.R,A.v(J.aZ(s,1)),t.bO)) +case 7:return new A.cH(new A.fi(p.$1(1),q.$1(2)),q.$1(3)) +case 8:e=A.k([],t.bV) +s=t.j +k=1 +for(;;){l=a7.a +l.toString +if(!(k>>0!==i||i>=3)return A.b(B.o,i) +i=B.o[i]}B.b.l(e,new A.bS(i,l));++k}return new A.ca(e) +case 11:s.toString +if(J.aD(s)===1)return B.aP +b=q.$1(1) +s=2+b +l=t.N +a=J.q4(J.up(a7.a,2,s),l) +a0=q.$1(s) +a1=A.k([],t.ke) +for(s=a.a,i=J.ac(s),h=a.$ti.y[1],g=3+b,a2=t.X,k=0;k")).eu(0,new A.lx(r))}, +jT(a,b){var s,r,q +for(s=this.z,s=A.jn(s,s.r,s.$ti.c),r=s.$ti.c;s.k();){q=s.d +if(q==null)q=r.a(q) +if(q!==b)q.bu(new A.av(q.d++,a))}}, +$iuG:1} +A.lz.prototype={ +$1(a){var s=this.a +s.ie() +s.as.p()}, +$S:75} +A.lA.prototype={ +$1(a){return this.a.iJ(this.b,a)}, +$S:77} +A.lB.prototype={ +$1(a){return this.a.z.G(0,this.b)}, +$S:24} +A.lv.prototype={ +$0(){var s=this.b +return this.a.aI(s.a,s.b,s.c,s.d)}, +$S:82} +A.lw.prototype={ +$0(){return this.a.r.G(0,this.b.a)}, +$S:84} +A.ly.prototype={ +$0(){var s,r=this.b +if(r==null)return this.a.w.length===0 +else{s=this.a.w +return s.length!==0&&B.b.gF(s)===r}}, +$S:28} +A.lx.prototype={ +$1(a){return this.a.$0()}, +$S:24} +A.eo.prototype={ +cY(a,b){return this.jE(a,b)}, +jE(a,b){var s=0,r=A.q(t.H),q=1,p=[],o=[],n=this,m,l,k,j,i +var $async$cY=A.r(function(c,d){if(c===1){p.push(d) +s=q}for(;;)switch(s){case 0:j=n.a +i=j.e5(a,!0) +q=2 +m=n.b +l=m.ho() +k=new A.t($.u,t.D) +m.e.q(0,l,new A.jp(new A.ad(k,t.h),A.lP())) +m.bu(new A.av(l,new A.cH(b,i))) +s=5 +return A.e(k,$async$cY) +case 5:o.push(4) +s=3 +break +case 2:o=[1] +case 3:q=1 +j.cN(i) +s=o.pop() +break +case 4:return A.o(null,r) +case 1:return A.n(p.at(-1),r)}}) +return A.p($async$cY,r)}, +$ivi:1} +A.j_.prototype={ +dv(a1){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a=this,a0=null +A:{if(a1 instanceof A.av){s=new A.am(0,{i:a1.a,p:a.je(a1.b)}) +break A}if(a1 instanceof A.by){s=new A.am(1,{i:a1.a,p:a.jf(a1.b)}) +break A}r=a1 instanceof A.bL +q=a0 +p=a0 +o=!1 +n=a0 +m=a0 +s=!1 +if(r){l=a1.a +q=a1.b +o=q instanceof A.cM +if(o){t.ph.a(q) +p=a1.c +s=a.a.c>=4 +m=p +n=q}k=l}else{k=a0 +l=k}if(s){s=m==null?a0:m.i(0) +j=n.a +i=n.b +if(i==null)i=a0 +h=n.c +g=n.e +if(g==null)g=a0 +f=n.f +if(f==null)f=a0 +e=n.r +B:{if(e==null){d=a0 +break B}d=[] +for(c=e.length,b=0;b=a.length)return A.b(a,0) +r=a[0] +if(1<0||1>=a.length)return A.b(a,1) +q=j.a=a[1]}else{q=l +r=q}if(!s)throw A.c(A.F(k)) +r=A.d(A.L(r)) +A:{if(0===r){s=new A.mB(j,m).$0() +break A}if(1===r){s=new A.mC(j,m).$0() +break A}if(2===r){t.c.a(q) +s=q.length===3 +p=l +o=l +if(s){if(0<0||0>=q.length)return A.b(q,0) +n=q[0] +if(1<0||1>=q.length)return A.b(q,1) +p=q[1] +if(2<0||2>=q.length)return A.b(q,2) +o=q[2]}else n=l +if(!s)A.J(A.F(k)) +s=new A.bL(A.d(A.L(n)),A.v(p),m.fl(o)) +break A}if(4===r){s=m.ir(t.c.a(q)) +break A}if(3===r){s=new A.c_(A.d(A.L(q))) +break A}s=A.J(A.T("Unknown message tag "+r,l))}return s}, +je(a){var s,r,q,p,o,n,m,l,k,j,i,h=null +A:{s=h +if(a==null)break A +if(a instanceof A.cv){s=a.a +r=a.b +q=[] +for(p=a.c,o=p.length,n=0;n=a.length)return A.b(a,0) +r=A.d(A.L(a[0])) +A:{if(3===r){if(1<0||1>=a.length)return A.b(a,1) +q=A.d(A.L(a[1])) +if(!(q>=0&&q<4))return A.b(B.B,q) +q=B.B[q] +if(2<0||2>=a.length)return A.b(a,2) +p=A.v(a[2]) +o=[] +if(3<0||3>=a.length)return A.b(a,3) +n=s.a(a[3]) +s=B.b.gv(n) +while(s.k())o.push(this.cP(s.gn())) +if(4<0||4>=a.length)return A.b(a,4) +s=a[4] +s=new A.cv(q,p,o,s==null?m:A.d(A.L(s))) +break A}if(12===r){if(1<0||1>=a.length)return A.b(a,1) +s=new A.cG(A.d(A.L(a[1]))) +break A}if(4===r){s=new A.mv(this,a).$0() +break A}if(5===r){if(1<0||1>=a.length)return A.b(a,1) +s=A.d(A.L(a[1])) +if(!(s>=0&&s<5))return A.b(B.C,s) +s=B.C[s] +if(2<0||2>=a.length)return A.b(a,2) +q=a[2] +s=new A.cI(s,q==null?m:A.d(A.L(q))) +break A}if(6===r){if(1<0||1>=a.length)return A.b(a,1) +s=A.d(A.L(a[1])) +if(2<0||2>=a.length)return A.b(a,2) +q=a[2] +s=new A.cu(s,q==null?m:A.d(A.L(q))) +break A}if(13===r){if(1<0||1>=a.length)return A.b(a,1) +s=new A.cK(A.oT(B.R,A.v(a[1]),t.bO)) +break A}if(7===r){if(1<0||1>=a.length)return A.b(a,1) +s=a[1] +s=s==null?m:A.d(A.L(s)) +if(2<0||2>=a.length)return A.b(a,2) +q=A.d(A.L(a[2])) +if(3<0||3>=a.length)return A.b(a,3) +q=new A.cH(new A.fi(s,q),A.d(A.L(a[3]))) +s=q +break A}if(8===r){s=B.b.U(a,1) +q=s.$ti +p=q.h("K") +s=A.au(new A.K(s,q.h("bS(P.E)").a(new A.mu()),p),p.h("P.E")) +s=new A.ca(s) +break A}s=A.J(A.T("Unknown request tag "+r,m))}return s}, +jf(a){var s,r +A:{s=null +if(a==null)break A +if(a instanceof A.b0){r=a.a +s=A.cm(r)?r:A.d(r) +break A}if(a instanceof A.bQ){s=this.jg(a) +break A}}return s}, +jg(a){var s,r,q,p=t.cU.a(a).a,o=J.ac(p) +if(o.gC(p)){p=v.G +o=t.c +return{c:o.a(new p.Array()),r:o.a(new p.Array())}}else{s=J.dH(o.gF(p).gX(),new A.mA(),t.N).cs(0) +r=A.k([],t.bb) +for(p=o.gv(p);p.k();){q=[] +for(o=J.a7(p.gn().gbI());o.k();)q.push(this.cQ(o.gn())) +B.b.l(r,q)}return{c:s,r:r}}}, +iv(a){var s,r,q,p,o,n,m,l,k,j,i +if(a==null)return null +else if(typeof a==="boolean")return new A.b0(A.aJ(a)) +else if(typeof a==="number")return new A.b0(A.d(A.L(a))) +else{A.i(a) +s=t.c +r=s.a(a.c) +r=t.bF.b(r)?r:new A.as(r,A.M(r).h("as<1,l>")) +q=t.N +r=J.dH(r,new A.my(),q) +p=A.au(r,r.$ti.h("P.E")) +o=A.k([],t.ke) +s=s.a(a.r) +s=J.a7(t.mu.b(s)?s:new A.as(s,A.M(s).h("as<1,y>"))) +r=t.X +while(s.k()){n=s.gn() +m=A.az(q,r) +n=A.uX(n,0,r) +l=J.a7(n.a) +k=n.b +n=new A.db(l,k,A.j(n).h("db<1>")) +while(n.k()){j=n.c +j=j>=0?new A.am(k+j,l.gn()):A.J(A.aE()) +i=j.a +if(!(i>=0&&i=a.length)return A.b(a,0) +r=a[0] +if(1<0||1>=a.length)return A.b(a,1) +q=a[1]}else{q=p +r=q}if(!s)throw A.c(A.F("Pattern matching error")) +if(r==14)return A.pn(A.v(q),p) +else return A.L(q)}else return p}, +fl(a){var s,r=a!=null?A.v(a):null +A:{if(r!=null){s=new A.eu(r) +break A}s=null +break A}return s}, +ir(a){var s,r,q,p,o=null,n=a.length>=8,m=o,l=o,k=o,j=o,i=o,h=o,g=o +if(n){if(0<0||0>=a.length)return A.b(a,0) +s=a[0] +if(1<0||1>=a.length)return A.b(a,1) +m=a[1] +if(2<0||2>=a.length)return A.b(a,2) +l=a[2] +if(3<0||3>=a.length)return A.b(a,3) +k=a[3] +if(4<0||4>=a.length)return A.b(a,4) +j=a[4] +if(5<0||5>=a.length)return A.b(a,5) +i=a[5] +if(6<0||6>=a.length)return A.b(a,6) +h=a[6] +if(7<0||7>=a.length)return A.b(a,7) +g=a[7]}else s=o +if(!n)throw A.c(A.F("Pattern matching error")) +s=A.d(A.L(s)) +j=A.d(A.L(j)) +A.v(l) +n=k!=null?A.v(k):o +r=h!=null?A.v(h):o +if(g!=null){q=[] +t.c.a(g) +p=B.b.gv(g) +while(p.k())q.push(this.cP(p.gn()))}else q=o +p=i!=null?A.v(i):o +return new A.bL(s,new A.cM(l,n,j,o,p,r,q),this.fl(m))}} +A.mB.prototype={ +$0(){var s=A.i(this.a.a) +return new A.av(A.d(s.i),this.b.iu(s.p))}, +$S:88} +A.mC.prototype={ +$0(){var s=A.i(this.a.a) +return new A.by(A.d(s.i),this.b.iv(s.p))}, +$S:97} +A.mz.prototype={ +$1(a){return A.v(a)}, +$S:6} +A.mv.prototype={ +$0(){var s,r,q,p,o,n,m,l=this.b,k=J.ac(l),j=t.c,i=j.a(k.j(l,1)),h=t.bF.b(i)?i:new A.as(i,A.M(i).h("as<1,l>")) +h=J.dH(h,new A.mw(),t.N) +s=A.au(h,h.$ti.h("P.E")) +h=k.gm(l) +r=A.k([],t.cz) +for(h=k.U(l,2).aj(0,h-3),j=A.eS(h,h.$ti.h("f.E"),j),h=A.j(j),h=A.ig(j,h.h("m(f.E)").a(new A.mx()),h.h("f.E"),t.kS),j=h.a,q=A.j(h),h=new A.dd(j.gv(j),h.b,q.h("dd<1,2>")),j=this.a.gjt(),q=q.y[1];h.k();){p=h.a +if(p==null)p=q.a(p) +o=J.ac(p) +n=A.d(A.L(o.j(p,0))) +p=o.U(p,1) +o=p.$ti +m=o.h("K") +p=A.au(new A.K(p,o.h("h?(P.E)").a(j),m),m.h("P.E")) +r.push(new A.dI(n,p))}l=k.j(l,k.gm(l)-1) +l=l==null?null:A.d(A.L(l)) +return new A.bM(new A.eQ(s,r),l)}, +$S:99} +A.mw.prototype={ +$1(a){return A.v(a)}, +$S:6} +A.mx.prototype={ +$1(a){t.c.a(a) +return a}, +$S:100} +A.mu.prototype={ +$1(a){var s,r,q +t.c.a(a) +s=a.length===2 +if(s){if(0<0||0>=a.length)return A.b(a,0) +r=a[0] +if(1<0||1>=a.length)return A.b(a,1) +q=a[1]}else{r=null +q=null}if(!s)throw A.c(A.F("Pattern matching error")) +A.v(r) +if(q==null)s=null +else{q=A.d(A.L(q)) +if(!(q>=0&&q<3))return A.b(B.o,q) +s=B.o[q]}return new A.bS(s,r)}, +$S:119} +A.mA.prototype={ +$1(a){return A.v(a)}, +$S:6} +A.my.prototype={ +$1(a){return A.v(a)}, +$S:6} +A.di.prototype={ +ae(){return"UpdateKind."+this.b}} +A.bS.prototype={ +gB(a){return A.fh(this.a,this.b,B.f,B.f)}, +T(a,b){if(b==null)return!1 +return b instanceof A.bS&&b.a==this.a&&b.b===this.b}, +i(a){return"TableUpdate("+this.b+", kind: "+A.x(this.a)+")"}} +A.oG.prototype={ +$0(){return this.a.a.a.O(A.oX(this.b,this.c))}, +$S:0} +A.cq.prototype={ +I(){var s,r +if(this.c)return +for(s=this.b,r=0;!1;++r)s[r].$0() +this.c=!0}} +A.eR.prototype={ +i(a){return"Operation was cancelled"}, +$iaf:1} +A.aA.prototype={ +p(){var s=0,r=A.q(t.H) +var $async$p=A.r(function(a,b){if(a===1)return A.n(b,r) +for(;;)switch(s){case 0:return A.o(null,r)}}) +return A.p($async$p,r)}} +A.eQ.prototype={ +gB(a){return A.fh(B.m.hj(this.a),B.m.hj(this.b),B.f,B.f)}, +T(a,b){if(b==null)return!1 +return b instanceof A.eQ&&B.m.er(b.a,this.a)&&B.m.er(b.b,this.b)}, +i(a){return"BatchedStatements("+A.x(this.a)+", "+A.x(this.b)+")"}} +A.dI.prototype={ +gB(a){return A.fh(this.a,B.m,B.f,B.f)}, +T(a,b){if(b==null)return!1 +return b instanceof A.dI&&b.a===this.a&&B.m.er(b.b,this.b)}, +i(a){return"ArgumentsForBatchedStatement("+this.a+", "+A.x(this.b)+")"}} +A.eW.prototype={} +A.ln.prototype={} +A.m6.prototype={} +A.lj.prototype={} +A.dL.prototype={} +A.ff.prototype={} +A.hV.prototype={} +A.bX.prototype={ +geG(){return!1}, +gcc(){return!1}, +fU(a,b,c){c.h("D<0>()").a(a) +if(this.geG()||this.b>0)return this.a.cE(new A.mI(b,a,c),c) +else return a.$0()}, +bv(a,b){return this.fU(a,!0,b)}, +cJ(a,b){this.gcc()}, +ab(a,b){var s=0,r=A.q(t.fS),q,p=this,o +var $async$ab=A.r(function(c,d){if(c===1)return A.n(d,r) +for(;;)switch(s){case 0:s=3 +return A.e(p.bv(new A.mN(p,a,b),t.cL),$async$ab) +case 3:o=d.gjD(0) +o=A.au(o,o.$ti.h("P.E")) +q=o +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$ab,r)}, +co(a,b){return this.bv(new A.mL(this,a,b),t.S)}, +aD(a,b){return this.bv(new A.mM(this,a,b),t.S)}, +a6(a,b){return this.bv(new A.mK(this,b,a),t.H)}, +kL(a){return this.a6(a,null)}, +aC(a){return this.bv(new A.mJ(this,a),t.H)}, +cZ(){return new A.fQ(this,new A.ad(new A.t($.u,t.D),t.h),new A.bN())}, +d_(){return this.aW(this)}} +A.mI.prototype={ +$0(){return this.hF(this.c)}, +hF(a){var s=0,r=A.q(a),q,p=this +var $async$$0=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:if(p.a)A.pE() +s=3 +return A.e(p.b.$0(),$async$$0) +case 3:q=c +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$$0,r)}, +$S(){return this.c.h("D<0>()")}} +A.mN.prototype={ +$0(){var s=this.a,r=this.b,q=this.c +s.cJ(r,q) +return s.gaL().ab(r,q)}, +$S:120} +A.mL.prototype={ +$0(){var s=this.a,r=this.b,q=this.c +s.cJ(r,q) +return s.gaL().di(r,q)}, +$S:25} +A.mM.prototype={ +$0(){var s=this.a,r=this.b,q=this.c +s.cJ(r,q) +return s.gaL().aD(r,q)}, +$S:25} +A.mK.prototype={ +$0(){var s,r,q=this.b +if(q==null)q=B.p +s=this.a +r=this.c +s.cJ(r,q) +return s.gaL().a6(r,q)}, +$S:12} +A.mJ.prototype={ +$0(){var s=this.a +s.gcc() +return s.gaL().aC(this.b)}, +$S:12} +A.jB.prototype={ +ic(){this.c=!0 +if(this.d)throw A.c(A.F("A transaction was used after being closed. Please check that you're awaiting all database operations inside a `transaction` block."))}, +aW(a){throw A.c(A.aa("Nested transactions aren't supported."))}, +gar(){return B.l}, +gcc(){return!1}, +geG(){return!0}, +$iiI:1} +A.h8.prototype={ +au(a){var s,r,q=this +q.ic() +s=q.z +if(s==null){s=q.z=new A.ad(new A.t($.u,t.k),t.ld) +r=q.as;++r.b +r.fU(new A.nB(q),!1,t.P).ak(new A.nC(r))}return s.a}, +gaL(){return this.e.e}, +aW(a){var s=this.at+1 +return new A.h8(this.y,new A.ad(new A.t($.u,t.D),t.h),a,s,A.rR(s),A.rP(s),A.rQ(s),this.e,new A.bN())}, +bh(){var s=0,r=A.q(t.H),q,p=this +var $async$bh=A.r(function(a,b){if(a===1)return A.n(b,r) +for(;;)switch(s){case 0:if(!p.c){s=1 +break}s=3 +return A.e(p.a6(p.ay,B.p),$async$bh) +case 3:p.e8() +case 1:return A.o(q,r)}}) +return A.p($async$bh,r)}, +bF(){var s=0,r=A.q(t.H),q,p=2,o=[],n=[],m=this +var $async$bF=A.r(function(a,b){if(a===1){o.push(b) +s=p}for(;;)switch(s){case 0:if(!m.c){s=1 +break}p=3 +s=6 +return A.e(m.a6(m.ch,B.p),$async$bF) +case 6:n.push(5) +s=4 +break +case 3:n=[2] +case 4:p=2 +m.e8() +s=n.pop() +break +case 5:case 1:return A.o(q,r) +case 2:return A.n(o.at(-1),r)}}) +return A.p($async$bF,r)}, +e8(){var s=this +if(s.at===0)s.e.e.a=!1 +s.Q.ai() +s.d=!0}} +A.nB.prototype={ +$0(){var s=0,r=A.q(t.P),q=1,p=[],o=this,n,m,l,k,j +var $async$$0=A.r(function(a,b){if(a===1){p.push(b) +s=q}for(;;)switch(s){case 0:q=3 +A.pE() +l=o.a +s=6 +return A.e(l.kL(l.ax),$async$$0) +case 6:l.e.e.a=!0 +l.z.O(!0) +q=1 +s=5 +break +case 3:q=2 +j=p.pop() +n=A.S(j) +m=A.ae(j) +l=o.a +l.z.by(n,m) +l.e8() +s=5 +break +case 2:s=1 +break +case 5:s=7 +return A.e(o.a.Q.a,$async$$0) +case 7:return A.o(null,r) +case 1:return A.n(p.at(-1),r)}}) +return A.p($async$$0,r)}, +$S:16} +A.nC.prototype={ +$0(){return this.a.b--}, +$S:43} +A.eX.prototype={ +gaL(){return this.e}, +gar(){return B.l}, +au(a){return this.x.cE(new A.kA(this,a),t.y)}, +br(a){var s=0,r=A.q(t.H),q=this,p,o,n,m +var $async$br=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:n=q.e +m=n.y +m===$&&A.C() +p=a.c +s=m instanceof A.ff?2:4 +break +case 2:o=p +s=3 +break +case 4:s=m instanceof A.eq?5:7 +break +case 5:s=8 +return A.e(A.bl(m.a.gkQ(),t.S),$async$br) +case 8:o=c +s=6 +break +case 7:throw A.c(A.kL("Invalid delegate: "+n.i(0)+". The versionDelegate getter must not subclass DBVersionDelegate directly")) +case 6:case 3:if(o===0)o=null +s=9 +return A.e(a.cY(new A.j5(q,new A.bN()),new A.fi(o,p)),$async$br) +case 9:s=m instanceof A.eq&&o!==p?10:11 +break +case 10:m.a.he("PRAGMA user_version = "+p+";") +s=12 +return A.e(A.bl(null,t.H),$async$br) +case 12:case 11:return A.o(null,r)}}) +return A.p($async$br,r)}, +aW(a){var s=$.u +return new A.h8(B.aq,new A.ad(new A.t(s,t.D),t.h),a,0,"BEGIN IMMEDIATE","COMMIT TRANSACTION","ROLLBACK TRANSACTION",this,new A.bN())}, +p(){return this.x.cE(new A.kz(this),t.H)}, +gcc(){return this.r}, +geG(){return this.w}} +A.kA.prototype={ +$0(){var s=0,r=A.q(t.y),q,p=2,o=[],n=this,m,l,k,j,i,h,g,f,e +var $async$$0=A.r(function(a,b){if(a===1){o.push(b) +s=p}for(;;)switch(s){case 0:f=n.a +if(f.d){f=A.oe(new A.aU("Can't re-open a database after closing it. Please create a new database connection and open that instead."),null) +k=new A.t($.u,t.k) +k.aS(f) +q=k +s=1 +break}j=f.f +if(j!=null)A.qk(j.a,j.b) +k=f.e +i=t.y +h=A.bl(k.d,i) +s=3 +return A.e(t.g6.b(h)?h:A.dn(A.aJ(h),i),$async$$0) +case 3:if(b){q=f.c=!0 +s=1 +break}i=n.b +s=4 +return A.e(k.bB(i),$async$$0) +case 4:f.c=!0 +p=6 +s=9 +return A.e(f.br(i),$async$$0) +case 9:q=!0 +s=1 +break +p=2 +s=8 +break +case 6:p=5 +e=o.pop() +m=A.S(e) +l=A.ae(e) +f.f=new A.am(m,l) +throw e +s=8 +break +case 5:s=2 +break +case 8:case 1:return A.o(q,r) +case 2:return A.n(o.at(-1),r)}}) +return A.p($async$$0,r)}, +$S:44} +A.kz.prototype={ +$0(){var s=this.a +if(s.c&&!s.d){s.d=!0 +s.c=!1 +return s.e.p()}else return A.bl(null,t.H)}, +$S:12} +A.j5.prototype={ +aW(a){return this.e.aW(a)}, +au(a){this.c=!0 +return A.bl(!0,t.y)}, +gaL(){return this.e.e}, +gcc(){return!1}, +gar(){return B.l}} +A.fQ.prototype={ +gar(){return this.e.gar()}, +au(a){var s,r,q,p=this,o=p.f +if(o!=null)return o.a +else{p.c=!0 +s=new A.t($.u,t.k) +r=new A.ad(s,t.ld) +p.f=r +q=p.e;++q.b +q.bv(new A.n1(p,r),t.P) +return s}}, +gaL(){return this.e.gaL()}, +aW(a){return this.e.aW(a)}, +p(){this.r.ai() +return A.bl(null,t.H)}} +A.n1.prototype={ +$0(){var s=0,r=A.q(t.P),q=this,p +var $async$$0=A.r(function(a,b){if(a===1)return A.n(b,r) +for(;;)switch(s){case 0:q.b.O(!0) +p=q.a +s=2 +return A.e(p.r.a,$async$$0) +case 2:--p.e.b +return A.o(null,r)}}) +return A.p($async$$0,r)}, +$S:16} +A.dZ.prototype={ +gjD(a){var s=this.b,r=A.M(s) +return new A.K(s,r.h("ak(1)").a(new A.lo(this)),r.h("K<1,ak>"))}} +A.lo.prototype={ +$1(a){var s,r,q,p,o,n,m,l +t.kS.a(a) +s=A.az(t.N,t.z) +for(r=this.a,q=r.a,p=q.length,r=r.c,o=J.ac(a),n=0;n")).gF(0)).p() +q.q(0,a,s)}return new A.am(s,A.d(o.sqlite3_stmt_isexplain(r))===0)}} +A.eq.prototype={} +A.lm.prototype={ +kd(){var s,r,q,p +for(s=this.b,r=new A.c4(s,s.r,s.e,A.j(s).h("c4<2>"));r.k();){q=r.d +if(!q.r){q.r=!0 +if(!q.f){p=q.a +A.d(p.c.d.sqlite3_reset(p.b)) +q.f=!0}q=q.a +p=q.c +A.d(p.d.sqlite3_finalize(q.b)) +p=p.w +if(p!=null){p=p.a +if(p!=null)p.unregister(q.d)}}}s.c6(0)}} +A.kK.prototype={ +$1(a){return Date.now()}, +$S:46} +A.oj.prototype={ +$1(a){var s=a.j(0,0) +if(typeof s=="number")return this.a.$1(s) +else return null}, +$S:26} +A.ic.prototype={ +git(){var s=this.a +s===$&&A.C() +return s}, +gar(){if(this.b){var s=this.a +s===$&&A.C() +s=B.l!==s.gar()}else s=!1 +if(s)throw A.c(A.kL("LazyDatabase created with "+B.l.i(0)+", but underlying database is "+this.git().gar().i(0)+".")) +return B.l}, +i7(){var s,r,q=this +if(q.b)return A.bl(null,t.H) +else{s=q.d +if(s!=null)return s.a +else{s=new A.t($.u,t.D) +r=q.d=new A.ad(s,t.h) +A.oX(q.e,t.q).b0(new A.lb(q,r),r.gjI(),t.P) +return s}}}, +cZ(){var s=this.a +s===$&&A.C() +return s.cZ()}, +d_(){var s=this.a +s===$&&A.C() +return s.d_()}, +au(a){return this.i7().bH(new A.lc(this,a),t.y)}, +aC(a){var s=this.a +s===$&&A.C() +return s.aC(a)}, +a6(a,b){var s=this.a +s===$&&A.C() +return s.a6(a,b)}, +co(a,b){var s=this.a +s===$&&A.C() +return s.co(a,b)}, +aD(a,b){var s=this.a +s===$&&A.C() +return s.aD(a,b)}, +ab(a,b){var s=this.a +s===$&&A.C() +return s.ab(a,b)}, +p(){var s=0,r=A.q(t.H),q,p=this,o,n +var $async$p=A.r(function(a,b){if(a===1)return A.n(b,r) +for(;;)switch(s){case 0:s=p.b?3:5 +break +case 3:o=p.a +o===$&&A.C() +s=6 +return A.e(o.p(),$async$p) +case 6:q=b +s=1 +break +s=4 +break +case 5:n=p.d +s=n!=null?7:8 +break +case 7:s=9 +return A.e(n.a,$async$p) +case 9:o=p.a +o===$&&A.C() +s=10 +return A.e(o.p(),$async$p) +case 10:case 8:case 4:case 1:return A.o(q,r)}}) +return A.p($async$p,r)}} +A.lb.prototype={ +$1(a){var s +t.q.a(a) +s=this.a +s.a!==$&&A.jL() +s.a=a +s.b=!0 +this.b.ai()}, +$S:48} +A.lc.prototype={ +$1(a){var s=this.a.a +s===$&&A.C() +return s.au(this.b)}, +$S:49} +A.bN.prototype={ +cE(a,b){var s,r,q +b.h("0/()").a(a) +s=this.a +r=new A.t($.u,t.D) +this.a=r +q=new A.le(this,a,new A.ad(r,t.h),r,b) +if(s!=null)return s.bH(new A.lg(q,b),b) +else return q.$0()}} +A.le.prototype={ +$0(){var s=this +return A.oX(s.b,s.e).ak(new A.lf(s.a,s.c,s.d))}, +$S(){return this.e.h("D<0>()")}} +A.lf.prototype={ +$0(){this.b.ai() +var s=this.a +if(s.a===this.c)s.a=null}, +$S:3} +A.lg.prototype={ +$1(a){return this.a.$0()}, +$S(){return this.b.h("D<0>(~)")}} +A.mr.prototype={ +$1(a){var s,r=this,q=A.i(a).data +if(r.a&&J.b8(q,"_disconnect")){s=r.b.a +s===$&&A.C() +s=s.a +s===$&&A.C() +s.p()}else{s=r.b.a +if(r.c){s===$&&A.C() +s=s.a +s===$&&A.C() +s.l(0,r.d.ep(t.c.a(q)))}else{s===$&&A.C() +s=s.a +s===$&&A.C() +s.l(0,A.td(q))}}}, +$S:11} +A.ms.prototype={ +$1(a){var s=this.c +if(this.a)s.postMessage(this.b.dv(t.jT.a(a))) +else s.postMessage(A.yh(a))}, +$S:8} +A.mt.prototype={ +$0(){if(this.a)this.b.postMessage("_disconnect") +this.b.close()}, +$S:0} +A.kw.prototype={ +R(){A.aX(this.a,"message",t.v.a(new A.ky(this)),!1,t.m)}, +am(a){return this.iI(a)}, +iI(a6){var s=0,r=A.q(t.H),q=1,p=[],o=this,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1,a2,a3,a4,a5 +var $async$am=A.r(function(a7,a8){if(a7===1){p.push(a8) +s=q}for(;;)switch(s){case 0:k=a6 instanceof A.de +j=k?a6.a:null +s=k?3:4 +break +case 3:i={} +i.a=i.b=!1 +s=5 +return A.e(o.b.cE(new A.kx(i,o),t.P),$async$am) +case 5:h=o.c.a.j(0,j) +g=A.k([],t.I) +f=!1 +s=i.b?6:7 +break +case 6:a5=J +s=8 +return A.e(A.eL(),$async$am) +case 8:k=a5.a7(a8) +case 9:if(!k.k()){s=10 +break}e=k.gn() +B.b.l(g,new A.am(B.G,e)) +if(e===j)f=!0 +s=9 +break +case 10:case 7:s=h!=null?11:13 +break +case 11:k=h.a +d=k===B.t||k===B.F +f=k===B.Z||k===B.a_ +s=12 +break +case 13:a5=i.a +if(a5){s=14 +break}else a8=a5 +s=15 +break +case 14:s=16 +return A.e(A.eJ(j),$async$am) +case 16:case 15:d=a8 +case 12:k=v.G +c="Worker" in k +e=i.b +b=i.a +new A.dM(c,e,"SharedArrayBuffer" in k,b,g,B.r,d,f).dt(o.a) +s=2 +break +case 4:if(a6 instanceof A.cJ){o.c.f1(a6) +s=2 +break}k=a6 instanceof A.e3 +a=k?a6.a:null +s=k?17:18 +break +case 17:s=19 +return A.e(A.iU(a),$async$am) +case 19:a0=a8 +o.a.postMessage(!0) +s=20 +return A.e(a0.R(),$async$am) +case 20:s=2 +break +case 18:n=null +m=null +a1=a6 instanceof A.eY +if(a1){a2=a6.a +n=a2.a +m=a2.b}s=a1?21:22 +break +case 21:q=24 +case 27:switch(n){case B.a0:s=29 +break +case B.G:s=30 +break +default:s=28 +break}break +case 29:s=31 +return A.e(A.oq(m),$async$am) +case 31:s=28 +break +case 30:s=32 +return A.e(A.hs(m),$async$am) +case 32:s=28 +break +case 28:a6.dt(o.a) +q=1 +s=26 +break +case 24:q=23 +a4=p.pop() +l=A.S(a4) +new A.ec(J.bi(l)).dt(o.a) +s=26 +break +case 23:s=1 +break +case 26:s=2 +break +case 22:s=2 +break +case 2:return A.o(null,r) +case 1:return A.n(p.at(-1),r)}}) +return A.p($async$am,r)}} +A.ky.prototype={ +$1(a){this.a.am(A.pf(A.i(a.data)))}, +$S:1} +A.kx.prototype={ +$0(){var s=0,r=A.q(t.P),q=this,p,o,n,m,l +var $async$$0=A.r(function(a,b){if(a===1)return A.n(b,r) +for(;;)switch(s){case 0:o=q.b +n=o.d +m=q.a +s=n!=null?2:4 +break +case 2:m.b=n.b +m.a=n.a +s=3 +break +case 4:l=m +s=5 +return A.e(A.d_(),$async$$0) +case 5:l.b=b +s=6 +return A.e(A.jJ(),$async$$0) +case 6:p=b +m.a=p +o.d=new A.mi(p,m.b) +case 3:return A.o(null,r)}}) +return A.p($async$$0,r)}, +$S:16} +A.cF.prototype={ +ae(){return"ProtocolVersion."+this.b}} +A.bA.prototype={ +du(a){this.aF(new A.ml(a))}, +f0(a){this.aF(new A.mk(a))}, +dt(a){this.aF(new A.mj(a))}} +A.ml.prototype={ +$2(a,b){var s +t.in.a(b) +s=b==null?B.y:b +this.a.postMessage(a,s)}, +$S:19} +A.mk.prototype={ +$2(a,b){var s +t.in.a(b) +s=b==null?B.y:b +this.a.postMessage(a,s)}, +$S:19} +A.mj.prototype={ +$2(a,b){var s +t.in.a(b) +s=b==null?B.y:b +this.a.postMessage(a,s)}, +$S:19} +A.hI.prototype={} +A.cb.prototype={ +aF(a){var s=this +A.eC(t.A.a(a),"SharedWorkerCompatibilityResult",A.k([s.e,s.f,s.r,s.c,s.d,A.qi(s.a),s.b.c],t.G),null)}} +A.lJ.prototype={ +$1(a){return A.aJ(J.aZ(this.a,a))}, +$S:53} +A.ec.prototype={ +aF(a){A.eC(t.A.a(a),"Error",this.a,null)}, +i(a){return"Error in worker: "+this.a}, +$iaf:1} +A.cJ.prototype={ +aF(a){var s,r,q,p=this +t.A.a(a) +s={} +s.sqlite=p.a.i(0) +r=p.b +s.port=r +s.storage=p.c.b +s.database=p.d +q=p.e +s.initPort=q +s.migrations=p.r +s.new_serialization=p.w +s.v=p.f.c +r=A.k([r],t.kG) +if(q!=null)r.push(q) +A.eC(a,"ServeDriftDatabase",s,r)}} +A.de.prototype={ +aF(a){A.eC(t.A.a(a),"RequestCompatibilityCheck",this.a,null)}} +A.dM.prototype={ +aF(a){var s,r=this +t.A.a(a) +s={} +s.supportsNestedWorkers=r.e +s.canAccessOpfs=r.f +s.supportsIndexedDb=r.w +s.supportsSharedArrayBuffers=r.r +s.indexedDbExists=r.c +s.opfsExists=r.d +s.existing=A.qi(r.a) +s.v=r.b.c +A.eC(a,"DedicatedWorkerCompatibilityResult",s,null)}} +A.e3.prototype={ +aF(a){A.eC(t.A.a(a),"StartFileSystemServer",this.a,null)}} +A.eY.prototype={ +aF(a){var s=this.a +A.eC(t.A.a(a),"DeleteDatabase",A.k([s.a.b,s.b],t.s),null)}} +A.on.prototype={ +$2(a,b){return null}, +$S:29} +A.om.prototype={ +$1(a){A.i(a) +A.bq(this.b.transaction).abort() +this.a.a=!1}, +$S:11} +A.oC.prototype={ +$1(a){t.c.a(a) +if(1<0||1>=a.length)return A.b(a,1) +return A.i(a[1])}, +$S:55} +A.hU.prototype={ +f1(a){var s,r +t.j9.a(a) +s=a.f.c +r=a.w +this.a.hr(a.d,new A.kJ(this,a)).hI(A.vO(a.b,s>=1,s,r),!r)}, +aN(a,b,c,d,e){return this.kA(a,b,t.nE.a(c),d,e)}, +kA(a,b,c,d,e){var s=0,r=A.q(t.q),q,p=this,o,n,m,l,k,j,i,h,g,f +var $async$aN=A.r(function(a0,a1){if(a0===1)return A.n(a1,r) +for(;;)switch(s){case 0:s=3 +return A.e(A.mp(d.i(0),null,null),$async$aN) +case 3:h=a1 +g=null +f=null +case 4:switch(e.a){case 0:s=6 +break +case 1:s=7 +break +case 3:s=8 +break +case 2:s=9 +break +case 4:s=10 +break +default:s=11 +break}break +case 6:s=12 +return A.e(A.lL("drift_db/"+a),$async$aN) +case 12:o=a1 +f=o.gc7() +s=5 +break +case 7:s=13 +return A.e(p.cI(a),$async$aN) +case 13:o=a1 +f=o.gc7() +s=5 +break +case 8:case 9:s=14 +return A.e(A.i2(a,!1),$async$aN) +case 14:o=a1 +f=o.gc7() +g=o +s=5 +break +case 10:o=A.oZ(null) +s=5 +break +case 11:o=null +case 5:s=c!=null&&o.ct("/database",0)===0?15:16 +break +case 15:n=c.$0() +m=t.nh +s=17 +return A.e(t.a6.b(n)?n:A.dn(m.a(n),m),$async$aN) +case 17:l=a1 +if(l!=null){k=o.b1(new A.fs("/database"),4).a +k.bg(l,0) +k.cu()}n=g==null?null:g.aV(!1) +s=18 +return A.e(n instanceof A.t?n:A.dn(n,t.H),$async$aN) +case 18:case 16:t.n.a(o) +h.hk() +n=h.a +n=n.a +j=A.d(n.d.dart_sqlite3_register_vfs(n.c4(B.i.a4(o.a),1),o,1)) +if(j===0)A.J(A.F("could not register vfs")) +n=$.tN() +n.$ti.h("1?").a(j) +n.a.set(o,j) +n=A.v3(t.N,t.mf) +i=new A.iV(new A.jE(h,"/database",g,p.b,!0,b,new A.lm(n)),!1,!0,new A.bN(),new A.bN()) +if(f!=null){q=A.us(i,new A.j9(f,i)) +s=1 +break}else{q=i +s=1 +break}case 1:return A.o(q,r)}}) +return A.p($async$aN,r)}, +cI(a){var s=0,r=A.q(t.dj),q,p,o,n,m,l +var $async$cI=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:n=v.G +m=A.i(new n.SharedArrayBuffer(8)) +l=A.i8(t.g.a(n.Int32Array),m,null,null,t.jS) +A.d(n.Atomics.store(l,0,-1)) +l={clientVersion:2,root:"drift_db/"+a,synchronizationBuffer:m,communicationBuffer:A.i(new n.SharedArrayBuffer(67584))} +p=A.i(new n.Worker(A.iP().i(0))) +new A.e3(l).du(p) +s=3 +return A.e(new A.fO(p,"message",!1,t.a1).gF(0),$async$cI) +case 3:n=A.qR(A.i(l.synchronizationBuffer)) +l=A.qz(A.i(l.communicationBuffer)) +o=$.hu() +q=new A.eb(n,l,o,"dart-sqlite3-vfs") +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$cI,r)}} +A.kJ.prototype={ +$0(){var s=this.b,r=s.e,q=r!=null?new A.kG(r):null,p=this.a,o=A.vs(new A.ic(new A.kH(p,s,q)),!1,!0),n=new A.t($.u,t.D),m=new A.e0(s.c,o,new A.a6(n,t.F)) +n.ak(new A.kI(p,s,m)) +return m}, +$S:56} +A.kG.prototype={ +$0(){var s=new A.t($.u,t.ls),r=this.a +r.postMessage(!0) +r.onmessage=A.bF(new A.kF(new A.ad(s,t.hg))) +return s}, +$S:57} +A.kF.prototype={ +$1(a){var s=t.eo.a(A.i(a).data),r=s==null?null:s +this.a.O(r)}, +$S:11} +A.kH.prototype={ +$0(){var s=this.b +return this.a.aN(s.d,s.r,this.c,s.a,s.c)}, +$S:58} +A.kI.prototype={ +$0(){this.a.a.G(0,this.b.d) +this.c.b.hL()}, +$S:3} +A.j9.prototype={ +c8(a){var s=0,r=A.q(t.H),q=this,p +var $async$c8=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:s=2 +return A.e(a.p(),$async$c8) +case 2:s=q.b===a?3:4 +break +case 3:p=q.a.$0() +s=5 +return A.e(p instanceof A.t?p:A.dn(p,t.H),$async$c8) +case 5:case 4:return A.o(null,r)}}) +return A.p($async$c8,r)}} +A.e0.prototype={ +hI(a,b){var s,r,q,p;++this.c +s=t.X +r=a.$ti +s=r.h("N<1>(N<1>)").a(r.h("cd<1,1>").a(A.wb(new A.lt(this),s,s)).gjF()).$1(a.ghQ()) +q=new A.eU(r.h("eU<1>")) +p=r.h("fJ<1>") +q.b=p.a(new A.fJ(q,a.ghM(),p)) +r=r.h("fK<1>") +q.a=r.a(new A.fK(s,q,r)) +this.b.hJ(q,b)}} +A.lt.prototype={ +$1(a){var s=this.a +if(--s.c===0)s.d.ai() +a.a.bl()}, +$S:59} +A.mi.prototype={} +A.k8.prototype={ +$1(a){this.a.O(this.c.a(this.b.result))}, +$S:1} +A.k9.prototype={ +$1(a){var s=A.bq(this.b.error) +if(s==null)s=a +this.a.a3(s)}, +$S:1} +A.ka.prototype={ +$1(a){var s=A.bq(this.b.error) +if(s==null)s=a +this.a.a3(s)}, +$S:1} +A.jQ.prototype={ +$0(){this.a.ai() +return A.uV(this.b.a)}, +$S:30} +A.jR.prototype={ +$2(a,b){var s +A.i(a) +s=this.a +if(A.v(a.name)==="AbortError")s.a3(B.w) +else s.a3(a) +return null}, +$S:29} +A.lD.prototype={ +R(){A.aX(this.a,"connect",t.v.a(new A.lI(this)),!1,t.m)}, +e1(a){var s=0,r=A.q(t.H),q=this,p,o +var $async$e1=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:p=t.c.a(a.ports) +o=J.aZ(t.ip.b(p)?p:new A.as(p,A.M(p).h("as<1,B>")),0) +o.start() +A.aX(o,"message",t.v.a(new A.lE(q,o)),!1,t.m) +return A.o(null,r)}}) +return A.p($async$e1,r)}, +cK(a,b){return this.iM(a,b)}, +iM(a,b){var s=0,r=A.q(t.H),q=1,p=[],o=this,n,m,l,k,j,i,h,g +var $async$cK=A.r(function(c,d){if(c===1){p.push(d) +s=q}for(;;)switch(s){case 0:q=3 +n=A.pf(A.i(b.data)) +m=n +l=null +i=m instanceof A.de +if(i)l=m.a +s=i?7:8 +break +case 7:s=9 +return A.e(o.c_(l),$async$cK) +case 9:k=d +k.f0(a) +s=6 +break +case 8:if(m instanceof A.cJ&&B.t===m.c){o.c.f1(n) +s=6 +break}if(m instanceof A.cJ){i=o.b +i.toString +n.du(i) +s=6 +break}i=A.T("Unknown message",null) +throw A.c(i) +case 6:q=1 +s=5 +break +case 3:q=2 +g=p.pop() +j=A.S(g) +new A.ec(J.bi(j)).f0(a) +a.close() +s=5 +break +case 2:s=1 +break +case 5:return A.o(null,r) +case 1:return A.n(p.at(-1),r)}}) +return A.p($async$cK,r)}, +c_(a0){var s=0,r=A.q(t.a_),q,p=this,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a +var $async$c_=A.r(function(a1,a2){if(a1===1)return A.n(a2,r) +for(;;)switch(s){case 0:i=v.G +h="Worker" in i +s=3 +return A.e(A.jJ(),$async$c_) +case 3:g=a2 +s=!h?4:6 +break +case 4:i=p.c.a.j(0,a0) +if(i==null)o=null +else{i=i.a +i=i===B.t||i===B.F +o=i}f=A +e=!1 +d=!1 +c=g +b=B.A +a=B.r +s=o==null?7:9 +break +case 7:s=10 +return A.e(A.eJ(a0),$async$c_) +case 10:s=8 +break +case 9:a2=o +case 8:q=new f.cb(e,d,c,b,a,a2,!1) +s=1 +break +s=5 +break +case 6:n={} +m=p.b +if(m==null)m=p.b=A.i(new i.Worker(A.iP().i(0))) +new A.de(a0).du(m) +i=new A.t($.u,t.hq) +n.a=n.b=null +l=new A.lH(n,new A.ad(i,t.eT),g) +k=t.v +j=t.m +n.b=A.aX(m,"message",k.a(new A.lF(l)),!1,j) +n.a=A.aX(m,"error",k.a(new A.lG(p,l,m)),!1,j) +q=i +s=1 +break +case 5:case 1:return A.o(q,r)}}) +return A.p($async$c_,r)}} +A.lI.prototype={ +$1(a){return this.a.e1(a)}, +$S:1} +A.lE.prototype={ +$1(a){return this.a.cK(this.b,a)}, +$S:1} +A.lH.prototype={ +$4(a,b,c,d){var s,r +t.cE.a(d) +s=this.b +if((s.a.a&30)===0){s.O(new A.cb(!0,a,this.c,d,B.r,c,b)) +s=this.a +r=s.b +if(r!=null)r.I() +s=s.a +if(s!=null)s.I()}}, +$S:61} +A.lF.prototype={ +$1(a){var s=t.cP.a(A.pf(A.i(a.data))) +this.a.$4(s.f,s.d,s.c,s.a)}, +$S:1} +A.lG.prototype={ +$1(a){this.b.$4(!1,!1,!1,B.A) +this.c.terminate() +this.a.b=null}, +$S:1} +A.bV.prototype={ +ae(){return"WasmStorageImplementation."+this.b}} +A.bB.prototype={ +ae(){return"WebStorageApi."+this.b}} +A.iV.prototype={} +A.jE.prototype={ +kB(){var s=this.Q.bB(this.as) +return s}, +bp(){var s=0,r=A.q(t.H),q=this,p +var $async$bp=A.r(function(a,b){if(a===1)return A.n(b,r) +for(;;)switch(s){case 0:p=q.at +p=p==null?null:p.aV(!1) +s=2 +return A.e(p instanceof A.t?p:A.dn(p,t.H),$async$bp) +case 2:return A.o(null,r)}}) +return A.p($async$bp,r)}, +bt(a,b){var s=0,r=A.q(t.z),q=this +var $async$bt=A.r(function(c,d){if(c===1)return A.n(d,r) +for(;;)switch(s){case 0:q.kN(a,b) +s=!q.a?2:3 +break +case 2:s=4 +return A.e(q.bp(),$async$bt) +case 4:case 3:return A.o(null,r)}}) +return A.p($async$bt,r)}, +a6(a,b){var s=0,r=A.q(t.H),q=this +var $async$a6=A.r(function(c,d){if(c===1)return A.n(d,r) +for(;;)switch(s){case 0:s=2 +return A.e(q.bt(a,b),$async$a6) +case 2:return A.o(null,r)}}) +return A.p($async$a6,r)}, +aD(a,b){var s=0,r=A.q(t.S),q,p=this,o +var $async$aD=A.r(function(c,d){if(c===1)return A.n(d,r) +for(;;)switch(s){case 0:s=3 +return A.e(p.bt(a,b),$async$aD) +case 3:o=p.b.b +q=A.d(A.L(v.G.Number(t.C.a(o.a.d.sqlite3_last_insert_rowid(o.b))))) +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$aD,r)}, +di(a,b){var s=0,r=A.q(t.S),q,p=this,o +var $async$di=A.r(function(c,d){if(c===1)return A.n(d,r) +for(;;)switch(s){case 0:s=3 +return A.e(p.bt(a,b),$async$di) +case 3:o=p.b.b +q=A.d(o.a.d.sqlite3_changes(o.b)) +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$di,r)}, +aC(a){var s=0,r=A.q(t.H),q=this +var $async$aC=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:q.kK(a) +s=!q.a?2:3 +break +case 2:s=4 +return A.e(q.bp(),$async$aC) +case 4:case 3:return A.o(null,r)}}) +return A.p($async$aC,r)}, +p(){var s=0,r=A.q(t.H),q=this +var $async$p=A.r(function(a,b){if(a===1)return A.n(b,r) +for(;;)switch(s){case 0:s=2 +return A.e(q.hT(),$async$p) +case 2:q.b.p() +s=3 +return A.e(q.bp(),$async$p) +case 3:return A.o(null,r)}}) +return A.p($async$p,r)}} +A.hM.prototype={ +h1(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){var s +A.t7("absolute",A.k([a,b,c,d,e,f,g,h,i,j,k,l,m,n,o],t.p4)) +s=this.a +s=s.Y(a)>0&&!s.aZ(a) +if(s)return a +s=this.b +return this.hl(0,s==null?A.pI():s,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o)}, +jy(a){var s=null +return this.h1(a,s,s,s,s,s,s,s,s,s,s,s,s,s,s)}, +hl(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q){var s=A.k([b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q],t.p4) +A.t7("join",s) +return this.kp(new A.fA(s,t.lS))}, +ko(a,b,c){var s=null +return this.hl(0,b,c,s,s,s,s,s,s,s,s,s,s,s,s,s,s)}, +kp(a){var s,r,q,p,o,n,m,l,k,j +t.bq.a(a) +for(s=a.$ti,r=s.h("I(f.E)").a(new A.ke()),q=a.gv(0),s=new A.bC(q,r,s.h("bC")),r=this.a,p=!1,o=!1,n="";s.k();){m=q.gn() +if(r.aZ(m)&&o){l=A.dY(m,r) +k=n.charCodeAt(0)==0?n:n +n=B.a.t(k,0,r.bG(k,!0)) +l.b=n +if(r.ce(n))B.b.q(l.e,0,r.gbi()) +n=l.i(0)}else if(r.Y(m)>0){o=!r.aZ(m) +n=m}else{j=m.length +if(j!==0){if(0>=j)return A.b(m,0) +j=r.en(m[0])}else j=!1 +if(!j)if(p)n+=r.gbi() +n+=m}p=r.ce(m)}return n.charCodeAt(0)==0?n:n}, +bK(a,b){var s=A.dY(b,this.a),r=s.d,q=A.M(r),p=q.h("b3<1>") +r=A.au(new A.b3(r,q.h("I(1)").a(new A.kf()),p),p.h("f.E")) +s.skD(r) +r=s.b +if(r!=null)B.b.d8(s.d,0,r) +return s.d}, +eM(a){var s +if(!this.iO(a))return a +s=A.dY(a,this.a) +s.eL() +return s.i(0)}, +iO(a){var s,r,q,p,o,n,m,l=this.a,k=l.Y(a) +if(k!==0){if(l===$.hw())for(s=a.length,r=0;r=0))return A.b(a,r) +n=a.charCodeAt(r) +if(l.aw(n)){if(l===$.hw()&&n===47)return!0 +if(p!=null&&l.aw(p))return!0 +if(p===46)m=o==null||o===46||l.aw(o) +else m=!1 +if(m)return!0}}if(p==null)return!0 +if(l.aw(p))return!0 +if(p===46)l=o==null||l.aw(o)||o===46 +else l=!1 +if(l)return!0 +return!1}, +kH(a){var s,r,q,p,o,n,m,l=this,k='Unable to find a path to "',j=l.a,i=j.Y(a) +if(i<=0)return l.eM(a) +i=l.b +s=i==null?A.pI():i +if(j.Y(s)<=0&&j.Y(a)>0)return l.eM(a) +if(j.Y(a)<=0||j.aZ(a))a=l.jy(a) +if(j.Y(a)<=0&&j.Y(s)>0)throw A.c(A.qC(k+a+'" from "'+s+'".')) +r=A.dY(s,j) +r.eL() +q=A.dY(a,j) +q.eL() +i=r.d +p=i.length +if(p!==0){if(0>=p)return A.b(i,0) +i=i[0]==="."}else i=!1 +if(i)return q.i(0) +i=r.b +p=q.b +if(i!=p)i=i==null||p==null||!j.eP(i,p) +else i=!1 +if(i)return q.i(0) +for(;;){i=r.d +p=i.length +o=!1 +if(p!==0){n=q.d +m=n.length +if(m!==0){if(0>=p)return A.b(i,0) +i=i[0] +if(0>=m)return A.b(n,0) +n=j.eP(i,n[0]) +i=n}else i=o}else i=o +if(!i)break +B.b.dh(r.d,0) +B.b.dh(r.e,1) +B.b.dh(q.d,0) +B.b.dh(q.e,1)}i=r.d +p=i.length +if(p!==0){if(0>=p)return A.b(i,0) +i=i[0]===".."}else i=!1 +if(i)throw A.c(A.qC(k+a+'" from "'+s+'".')) +i=t.N +B.b.eB(q.d,0,A.bm(p,"..",!1,i)) +B.b.q(q.e,0,"") +B.b.eB(q.e,1,A.bm(r.d.length,j.gbi(),!1,i)) +j=q.d +i=j.length +if(i===0)return"." +if(i>1&&B.b.gE(j)==="."){B.b.ht(q.d) +j=q.e +if(0>=j.length)return A.b(j,-1) +j.pop() +if(0>=j.length)return A.b(j,-1) +j.pop() +B.b.l(j,"")}q.b="" +q.hu() +return q.i(0)}, +hA(a){var s,r=this.a +if(r.Y(a)<=0)return r.hs(a) +else{s=this.b +return r.ej(this.ko(0,s==null?A.pI():s,a))}}, +kG(a){var s,r,q=this,p=A.pA(a) +if(p.gW()==="file"&&q.a===$.hv())return p.i(0) +else if(p.gW()!=="file"&&p.gW()!==""&&q.a!==$.hv())return p.i(0) +s=q.eM(q.a.df(A.pA(p))) +r=q.kH(s) +return q.bK(0,r).length>q.bK(0,s).length?s:r}} +A.ke.prototype={ +$1(a){return A.v(a)!==""}, +$S:2} +A.kf.prototype={ +$1(a){return A.v(a).length!==0}, +$S:2} +A.ok.prototype={ +$1(a){A.o5(a) +return a==null?"null":'"'+a+'"'}, +$S:63} +A.dR.prototype={ +hH(a){var s,r=this.Y(a) +if(r>0)return B.a.t(a,0,r) +if(this.aZ(a)){if(0>=a.length)return A.b(a,0) +s=a[0]}else s=null +return s}, +hs(a){var s,r,q=null,p=a.length +if(p===0)return A.ax(q,q,q,q) +s=A.qe(this).bK(0,a) +r=p-1 +if(!(r>=0))return A.b(a,r) +if(this.aw(a.charCodeAt(r)))B.b.l(s,"") +return A.ax(q,q,s,q)}, +eP(a,b){return a===b}} +A.lk.prototype={ +geA(){var s=this.d +if(s.length!==0)s=B.b.gE(s)===""||B.b.gE(this.e)!=="" +else s=!1 +return s}, +hu(){var s,r,q=this +for(;;){s=q.d +if(!(s.length!==0&&B.b.gE(s)===""))break +B.b.ht(q.d) +s=q.e +if(0>=s.length)return A.b(s,-1) +s.pop()}s=q.e +r=s.length +if(r!==0)B.b.q(s,r-1,"")}, +eL(){var s,r,q,p,o,n,m=this,l=A.k([],t.s) +for(s=m.d,r=s.length,q=0,p=0;p=n)return A.b(l,-1) +l.pop()}else ++q}else B.b.l(l,o)}if(m.b==null)B.b.eB(l,0,A.bm(q,"..",!1,t.N)) +if(l.length===0&&m.b==null)B.b.l(l,".") +m.d=l +s=m.a +m.e=A.bm(l.length+1,s.gbi(),!0,t.N) +r=m.b +if(r==null||l.length===0||!s.ce(r))B.b.q(m.e,0,"") +r=m.b +if(r!=null&&s===$.hw())m.b=A.bH(r,"/","\\") +m.hu()}, +i(a){var s,r,q,p,o,n=this.b +n=n!=null?n:"" +for(s=this.d,r=s.length,q=this.e,p=q.length,o=0;o=0))return A.b(a,s) +s=a.charCodeAt(s)!==47 +r=s}else r=!1 +return r}, +bG(a,b){var s=a.length +if(s!==0){if(0>=s)return A.b(a,0) +s=a.charCodeAt(0)===47}else s=!1 +if(s)return 1 +return 0}, +Y(a){return this.bG(a,!1)}, +aZ(a){return!1}, +df(a){var s +if(a.gW()===""||a.gW()==="file"){s=a.gaa() +return A.pw(s,0,s.length,B.j,!1)}throw A.c(A.T("Uri "+a.i(0)+" must have scheme 'file:'.",null))}, +ej(a){var s=A.dY(a,this),r=s.d +if(r.length===0)B.b.ag(r,A.k(["",""],t.s)) +else if(s.geA())B.b.l(s.d,"") +return A.ax(null,null,s.d,"file")}, +geK(){return"posix"}, +gbi(){return"/"}} +A.iQ.prototype={ +en(a){return B.a.H(a,"/")}, +aw(a){return a===47}, +ce(a){var s,r=a.length +if(r===0)return!1 +s=r-1 +if(!(s>=0))return A.b(a,s) +if(a.charCodeAt(s)!==47)return!0 +return B.a.eq(a,"://")&&this.Y(a)===r}, +bG(a,b){var s,r,q,p=a.length +if(p===0)return 0 +if(0>=p)return A.b(a,0) +if(a.charCodeAt(0)===47)return 1 +for(s=0;s=s)return A.b(a,0) +s=a.charCodeAt(0)===47}else s=!1 +return s}, +df(a){return a.i(0)}, +hs(a){return A.bU(a)}, +ej(a){return A.bU(a)}, +geK(){return"url"}, +gbi(){return"/"}} +A.j0.prototype={ +en(a){return B.a.H(a,"/")}, +aw(a){return a===47||a===92}, +ce(a){var s,r=a.length +if(r===0)return!1 +s=r-1 +if(!(s>=0))return A.b(a,s) +s=a.charCodeAt(s) +return!(s===47||s===92)}, +bG(a,b){var s,r,q=a.length +if(q===0)return 0 +if(0>=q)return A.b(a,0) +if(a.charCodeAt(0)===47)return 1 +if(a.charCodeAt(0)===92){if(q>=2){if(1>=q)return A.b(a,1) +s=a.charCodeAt(1)!==92}else s=!0 +if(s)return 1 +r=B.a.aY(a,"\\",2) +if(r>0){r=B.a.aY(a,"\\",r+1) +if(r>0)return r}return q}if(q<3)return 0 +if(!A.ti(a.charCodeAt(0)))return 0 +if(a.charCodeAt(1)!==58)return 0 +q=a.charCodeAt(2) +if(!(q===47||q===92))return 0 +return 3}, +Y(a){return this.bG(a,!1)}, +aZ(a){return this.Y(a)===1}, +df(a){var s,r +if(a.gW()!==""&&a.gW()!=="file")throw A.c(A.T("Uri "+a.i(0)+" must have scheme 'file:'.",null)) +s=a.gaa() +if(a.gba()===""){if(s.length>=3&&B.a.A(s,"/")&&A.te(s,1)!=null)s=B.a.hw(s,"/","")}else s="\\\\"+a.gba()+s +r=A.bH(s,"/","\\") +return A.pw(r,0,r.length,B.j,!1)}, +ej(a){var s,r,q=A.dY(a,this),p=q.b +p.toString +if(B.a.A(p,"\\\\")){s=new A.b3(A.k(p.split("\\"),t.s),t.Q.a(new A.mD()),t.U) +B.b.d8(q.d,0,s.gE(0)) +if(q.geA())B.b.l(q.d,"") +return A.ax(s.gF(0),null,q.d,"file")}else{if(q.d.length===0||q.geA())B.b.l(q.d,"") +p=q.d +r=q.b +r.toString +r=A.bH(r,"/","") +B.b.d8(p,0,A.bH(r,"\\","")) +return A.ax(null,null,q.d,"file")}}, +jH(a,b){var s +if(a===b)return!0 +if(a===47)return b===92 +if(a===92)return b===47 +if((a^b)!==32)return!1 +s=a|32 +return s>=97&&s<=122}, +eP(a,b){var s,r,q +if(a===b)return!0 +s=a.length +r=b.length +if(s!==r)return!1 +for(q=0;q")).az(0,", ")) +p=r}else p=s}return p.charCodeAt(0)==0?p:p}, +$iaf:1} +A.lO.prototype={ +$1(a){if(t.ev.b(a))return"blob ("+a.length+" bytes)" +else return J.bi(a)}, +$S:64} +A.d3.prototype={} +A.hP.prototype={ +gkQ(){var s,r,q,p=this.kF("PRAGMA user_version;") +try{s=p.f_(new A.cw(B.aE)) +q=J.jN(s).b +if(0>=q.length)return A.b(q,0) +r=A.d(q[0]) +return r}finally{p.p()}}, +h9(a,b,c,d,e){var s,r,q,p,o,n,m,l,k=null +t.on.a(d) +s=this.b +r=B.i.a4(e) +if(r.length>255)A.J(A.an(e,"functionName","Must not exceed 255 bytes when utf-8 encoded")) +q=new Uint8Array(A.ho(r)) +p=c?526337:2049 +o=t.n8.a(new A.kv(d)) +n=s.a +m=n.c4(q,1) +q=n.d +l=A.pD(q,"dart_sqlite3_create_function_v2",[s.b,m,a.a,p,0,new A.bO(o,k,k)],t.S) +q.dart_sqlite3_free(m) +if(l!==0)A.oK(this,l,k,k,k)}, +a5(a,b,c,d){return this.h9(a,b,!0,c,d)}, +p(){var s,r,q,p=this +if(p.r)return +p.r=!0 +s=p.b +r=s.f2() +q=r!==0?A.pH(p.a,s,r,"closing database",null,null):null +if(q!=null)throw A.c(q)}, +he(a){var s,r,q,p=this,o=B.p +if(J.aD(o)===0){if(p.r)A.J(A.F("This database has already been closed")) +r=p.b +q=r.a +s=q.c4(B.i.a4(a),1) +q=q.d +r=A.pD(q,"sqlite3_exec",[r.b,s,0,0,0],t.S) +q.dart_sqlite3_free(s) +if(r!==0)A.oK(p,r,"executing",a,o)}else{s=p.dg(a,!0) +try{s.hf(new A.cw(t.kS.a(o)))}finally{s.p()}}}, +j0(a,b,a0,a1,a2){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c=this +if(c.r)A.J(A.F("This database has already been closed")) +s=B.i.a4(a) +r=c.b +t.L.a(s) +q=r.a +p=q.bw(s) +o=q.d +n=A.d(o.dart_sqlite3_malloc(4)) +o=A.d(o.dart_sqlite3_malloc(4)) +m=new A.mq(r,p,n,o) +l=A.k([],t.lE) +k=new A.ku(m,l) +for(r=s.length,q=q.b,n=t.a,j=0;j=0&&b."))}, +dD(a){A:{this.i9(a.a) +break A}}, +cm(){if(!this.f){var s=this.a +A.d(s.c.d.sqlite3_reset(s.b)) +this.f=!0}}, +p(){var s,r,q=this +if(!q.r){q.r=!0 +q.cm() +s=q.a +r=s.c +A.d(r.d.sqlite3_finalize(s.b)) +r=r.w +if(r!=null)r.hb(s.d)}}, +f_(a){var s=this +s.fo() +s.cm() +s.dD(a) +return s.jd()}, +hf(a){var s=this +s.fo() +s.cm() +s.dD(a) +s.fs()}} +A.i0.prototype={ +ct(a,b){return this.d.a_(a)?1:0}, +dk(a,b){this.d.G(0,a)}, +dl(a){return A.v(A.i(new v.G.URL(a,"file:///")).pathname)}, +b1(a,b){var s,r=a.a +if(r==null)r=A.oY(this.b,"/") +s=this.d +if(!s.a_(r))if((b&4)!==0)s.q(0,r,new A.bz(new Uint8Array(0),0)) +else throw A.c(A.cR(14)) +return new A.cW(new A.jh(this,r,(b&8)!==0),0)}, +dq(a){}} +A.jh.prototype={ +eR(a,b){var s,r=this.a.d.j(0,this.b) +if(r==null||r.b<=b)return 0 +s=Math.min(a.length,r.b-b) +B.e.N(a,0,s,J.dG(B.e.gaX(r.a),0,r.b),b) +return s}, +dj(){return this.d>=2?1:0}, +cu(){if(this.c)this.a.d.G(0,this.b)}, +cw(){return this.a.d.j(0,this.b).b}, +dm(a){this.d=a}, +dr(a){}, +cz(a){var s=this.a.d,r=this.b,q=s.j(0,r) +if(q==null){s.q(0,r,new A.bz(new Uint8Array(0),0)) +s.j(0,r).sm(0,a)}else q.sm(0,a)}, +ds(a){this.d=a}, +bg(a,b){var s,r=this.a.d,q=this.b,p=r.j(0,q) +if(p==null){p=new A.bz(new Uint8Array(0),0) +r.q(0,q,p)}s=b+a.length +if(s>p.b)p.sm(0,s) +p.ad(0,b,s,a)}} +A.oD.prototype={ +$1(a){return A.v(a).length!==0}, +$S:2} +A.hN.prototype={ +ib(){var s,r,q,p,o=A.az(t.N,t.S) +for(s=this.a,r=s.length,q=0;q=0&&b>>0!==b||b>=s.length)return A.b(s,b) +return s[b]}return null}r=this.a.c.j(0,b) +if(r==null)return null +s=this.b +if(r>>>0!==r||r>=s.length)return A.b(s,r) +return s[r]}, +gX(){return this.a.a}, +gbI(){return this.b}, +$iak:1} +A.jr.prototype={ +gn(){var s=this.a,r=s.d,q=this.b +if(!(q>=0&&q=r)return A.b(q,0) +q[0]=A.qJ(s) +if(1>=r)return A.b(q,1) +q[1]=A.qH(s) +if(2>=r)return A.b(q,2) +q[2]=A.qG(s) +if(3>=r)return A.b(q,3) +q[3]=A.qF(s) +if(4>=r)return A.b(q,4) +q[4]=A.qI(s)-1 +if(5>=r)return A.b(q,5) +q[5]=A.qK(s)-1900 +p=B.c.ac(A.vf(s),7) +if(6>=r)return A.b(q,6) +q[6]=p}, +la(a,b,c,d,e){var s,r,q,p,o,n,m,l,k,j=null +t.n.a(a) +A.d(b) +A.d(c) +A.d(d) +A.d(e) +p=this.b +p===$&&A.C() +s=new A.fs(A.pg(p,b,j)) +try{r=a.b1(s,d) +if(e!==0){o=r.b +n=A.c7(t.a.a(p.buffer),0,j) +m=B.c.L(e,2) +n.$flags&2&&A.E(n) +if(!(mq.d)throw A.c(A.cR(14)) +s=q.a.b +s===$&&A.C() +s=A.c8(t.a.a(s.buffer),0,null) +r=q.e +B.e.b3(s,r,p) +o=r+o +s.$flags&2&&A.E(s) +if(!(o>=0&&o")).P(a,b,c,d)}, +b_(a,b,c){return this.P(a,null,b,c)}} +A.jS.prototype={ +$0(){var s,r=this,q=A.i(r.c.next()),p=r.a +p.a=q +s=r.d +A.a3(q,t.m).b0(new A.jU(p,r.b,s,r),s.gh2(),t.P)}, +$S:0} +A.jU.prototype={ +$1(a){var s,r,q,p,o=this +A.i(a) +s=A.rK(a.done) +if(s==null)s=null +r=o.b.$ti +q=r.h("1?").a(a.value) +p=o.c +if(s===!0){p.p() +o.a.a=null}else{p.l(0,q==null?r.c.a(q):q) +o.a.a=null +s=p.b +if(!((s&1)!==0?(p.gaR().e&4)!==0:(s&2)===0))o.d.$0()}}, +$S:11} +A.jT.prototype={ +$0(){var s,r +if(this.a.a==null){s=this.b +r=s.b +s=!((r&1)!==0?(s.gaR().e&4)!==0:(r&2)===0)}else s=!1 +if(s)this.c.$0()}, +$S:0} +A.dm.prototype={ +I(){var s=0,r=A.q(t.H),q=this,p +var $async$I=A.r(function(a,b){if(a===1)return A.n(b,r) +for(;;)switch(s){case 0:p=q.b +if(p!=null)p.I() +p=q.c +if(p!=null)p.I() +q.c=q.b=null +return A.o(null,r)}}) +return A.p($async$I,r)}, +gn(){var s=this.a +return s==null?A.J(A.F("Await moveNext() first")):s}, +k(){var s,r,q,p,o=this,n=o.a +if(n!=null)n.continue() +n=new A.t($.u,t.k) +s=new A.a6(n,t.hk) +r=o.d +q=t.v +p=t.m +o.b=A.aX(r,"success",q.a(new A.mV(o,s)),!1,p) +o.c=A.aX(r,"error",q.a(new A.mW(o,s)),!1,p) +return n}} +A.mV.prototype={ +$1(a){var s,r=this.a +r.I() +s=r.$ti.h("1?").a(r.d.result) +r.a=s +this.b.O(s!=null)}, +$S:1} +A.mW.prototype={ +$1(a){var s=this.a +s.I() +s=A.bq(s.d.error) +if(s==null)s=a +this.b.a3(s)}, +$S:1} +A.k6.prototype={ +$1(a){this.a.O(this.c.a(this.b.result))}, +$S:1} +A.k7.prototype={ +$1(a){var s=A.bq(this.b.error) +if(s==null)s=a +this.a.a3(s)}, +$S:1} +A.kb.prototype={ +$1(a){this.a.O(this.c.a(this.b.result))}, +$S:1} +A.kc.prototype={ +$1(a){var s=A.bq(this.b.error) +if(s==null)s=a +this.a.a3(s)}, +$S:1} +A.kd.prototype={ +$1(a){this.a.a3(new A.aU("IndexedDB open blocked"))}, +$S:1} +A.mm.prototype={ +jJ(){var s={} +s.dart=new A.mn(this).$0() +return s}, +dd(a){var s=0,r=A.q(t.m),q,p=this,o,n +var $async$dd=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:s=3 +return A.e(A.a3(A.i(A.i(v.G.WebAssembly).instantiateStreaming(a,p.jJ())),t.m),$async$dd) +case 3:o=c +n=A.i(A.i(o.instance).exports) +if("_initialize" in n)t.g.a(n._initialize).call() +q=A.i(o.instance) +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$dd,r)}} +A.mn.prototype={ +$0(){var s=this.a.a,r=A.i(v.G.Object),q=A.i(r.create.apply(r,[null])) +q.error_log=A.bF(s.gkt()) +q.localtime=A.bf(s.gkr()) +q.xOpen=A.px(s.gl9()) +q.xDelete=A.od(s.gkZ()) +q.xAccess=A.eD(s.gkR()) +q.xFullPathname=A.eD(s.gl5()) +q.xRandomness=A.od(s.glb()) +q.xSleep=A.bf(s.glg()) +q.xCurrentTimeInt64=A.bf(s.gkX()) +q.xClose=A.bF(s.gkV()) +q.xRead=A.eD(s.gld()) +q.xWrite=A.eD(s.glo()) +q.xTruncate=A.bf(s.glk()) +q.xSync=A.bf(s.gli()) +q.xFileSize=A.bf(s.gl3()) +q.xLock=A.bf(s.gl7()) +q.xUnlock=A.bf(s.glm()) +q.xCheckReservedLock=A.bf(s.gkT()) +q.xDeviceCharacteristics=A.bF(s.gcv()) +q.xFileControl=A.od(s.gl1()) +q.xSectorSize=A.bF(s.gdn()) +q["dispatch_()v"]=A.bF(s.gjW()) +q["dispatch_()i"]=A.bF(s.gjR()) +q.dispatch_update=A.px(s.gjU()) +q.dispatch_xFunc=A.eD(s.gk5()) +q.dispatch_xStep=A.eD(s.gk9()) +q.dispatch_xInverse=A.eD(s.gk7()) +q.dispatch_xValue=A.bf(s.gkb()) +q.dispatch_xFinal=A.bf(s.gk_()) +q.dispatch_compare=A.px(s.gjY()) +q.dispatch_busy=A.bf(s.gjP()) +q.changeset_apply_filter=A.bf(s.gjN()) +q.changeset_apply_conflict=A.od(s.gjL()) +return q}, +$S:30} +A.fz.prototype={} +A.eb.prototype={ +a1(a,b,c,d){var s,r,q,p="_runInWorker",o=t.em +A.pF(c,o,"Req",p) +A.pF(d,o,"Res",p) +c.h("@<0>").u(d).h("ag<1,2>").a(a) +o=this.e +o.hB(c.a(b)) +s=this.d.b +r=v.G +A.d(r.Atomics.store(s,1,-1)) +A.d(r.Atomics.store(s,0,a.a)) +A.ut(s,0) +A.v(r.Atomics.wait(s,1,-1)) +q=A.d(r.Atomics.load(s,1)) +if(q!==0)throw A.c(A.cR(q)) +return a.d.$1(o)}, +ct(a,b){return this.a1(B.a1,new A.bc(a,b,0,0),t.E,t.f).a}, +dk(a,b){this.a1(B.a2,new A.bc(a,b,0,0),t.E,t.p)}, +dl(a){return A.v(A.i(new v.G.URL(a,"file:///")).pathname)}, +b1(a,b){var s=a.a,r=this.a1(B.ad,new A.bc(s==null?A.oY(this.b,"/"):s,b,0,0),t.E,t.f) +return new A.cW(new A.iX(this,r.b),r.a)}, +dq(a){this.a1(B.a7,new A.a1(B.c.M(a.a,1000),0,0),t.f,t.p)}, +p(){var s=t.p +this.a1(B.a3,B.h,s,s)}} +A.iX.prototype={ +gcv(){return 2048}, +eR(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g,f=a.length +for(s=t.m,r=this.a,q=this.b,p=t.f,o=r.e.a,n=v.G,m=t.g,l=t._,k=0;f>0;){j=Math.min(65536,f) +f-=j +i=r.a1(B.ab,new A.a1(q,b+k,j),p,p).a +h=m.a(n.Uint8Array) +g=[o] +g.push(0) +g.push(i) +A.ia(a,"set",l.a(A.tc(h,g,s)),k,null,null) +k+=i +if(i0;){m=Math.min(65536,l) +A.ia(r,"set",m===l&&n===0?a:J.dG(B.e.gaX(a),a.byteOffset+n,m),0,null,null) +s.a1(B.a6,new A.a1(q,b+n,m),p,o) +n+=m +l-=m}}} +A.ls.prototype={} +A.c6.prototype={ +hB(a){var s,r,q,p +if(!(a instanceof A.bk))if(a instanceof A.a1){s=this.b +r=v.G +q=t.C +s.setBigInt64(0,q.a(r.BigInt(a.a))) +s.setBigInt64(8,q.a(r.BigInt(a.b))) +s.setBigInt64(16,q.a(r.BigInt(a.c))) +if(a instanceof A.bc){p=B.i.a4(a.d) +s.setInt32(24,p.length) +B.e.b3(this.c,28,p)}}else throw A.c(A.aa("Message "+a.i(0)))}, +bq(a){return A.d(A.L(v.G.Number(t.C.a(this.b.getBigInt64(a)))))}} +A.ag.prototype={ +ae(){return"WorkerOperation."+this.b}} +A.c5.prototype={} +A.bk.prototype={} +A.a1.prototype={} +A.bc.prototype={} +A.jq.prototype={} +A.fy.prototype={ +bW(a,b){var s=0,r=A.q(t.i7),q,p=this,o,n,m,l,k,j,i,h +var $async$bW=A.r(function(c,d){if(c===1)return A.n(d,r) +for(;;)switch(s){case 0:k=A.au(A.pQ(a),t.N) +j=k.length +i=j>=1 +h=null +if(i){o=j-1 +n=B.b.a0(k,0,o) +if(!(o>=0&&o=0&&a3<13)){q=A.b(B.Q,a3) +s=1 +break}l=B.Q[a3] +k=l.c.$1(e) +j=null +case 9:switch(l.a){case 5:s=11 +break +case 0:s=12 +break +case 1:s=13 +break +case 2:s=14 +break +case 3:s=15 +break +case 4:s=16 +break +case 6:s=17 +break +case 7:s=18 +break +case 9:s=19 +break +case 8:s=20 +break +case 10:s=21 +break +case 11:s=22 +break +case 12:s=23 +break +default:s=10 +break}break +case 11:a2=A.au(c,b) +B.b.av(a2,d) +s=24 +return A.e(A.qo(A.qh(0,a.a(k).a),a1),$async$R) +case 24:j=B.h +s=10 +break +case 12:s=25 +return A.e(n.c1(a0.a(k)),$async$R) +case 25:j=a7 +s=10 +break +case 13:s=26 +return A.e(n.c2(a0.a(k)),$async$R) +case 26:j=B.h +s=10 +break +case 14:s=27 +return A.e(n.c3(a0.a(k)),$async$R) +case 27:j=a7 +s=10 +break +case 15:s=28 +return A.e(n.cU(a.a(k)),$async$R) +case 28:j=a7 +s=10 +break +case 16:s=29 +return A.e(n.cW(a.a(k)),$async$R) +case 29:j=a7 +s=10 +break +case 17:s=30 +return A.e(n.cR(a.a(k)),$async$R) +case 30:j=B.h +s=10 +break +case 18:s=31 +return A.e(n.cS(a.a(k)),$async$R) +case 31:j=a7 +s=10 +break +case 19:s=32 +return A.e(n.cV(a.a(k)),$async$R) +case 32:j=a7 +s=10 +break +case 20:s=33 +return A.e(n.eg(a.a(k)),$async$R) +case 33:j=a7 +s=10 +break +case 21:s=34 +return A.e(n.cT(a.a(k)),$async$R) +case 34:j=a7 +s=10 +break +case 22:s=35 +return A.e(n.eh(a.a(k)),$async$R) +case 35:j=a7 +s=10 +break +case 23:j=B.h +n.e=!0 +a2=A.au(c,b) +B.b.av(a2,d) +s=10 +break +case 10:e.hB(j) +m=0 +p=2 +s=8 +break +case 6:p=5 +a5=o.pop() +a2=A.S(a5) +if(a2 instanceof A.aW){i=a2 +A.x(i) +A.x(l) +A.x(k) +m=i.a}else{h=a2 +A.x(h) +A.x(l) +A.x(k) +m=1}s=8 +break +case 5:s=2 +break +case 8:a2=A.d(m) +A.d(f.Atomics.store(g,1,a2)) +f.Atomics.notify(g,1,1/0) +s=3 +break +case 4:case 1:return A.o(q,r) +case 2:return A.n(o.at(-1),r)}}) +return A.p($async$R,r)}, +j6(a){t.ei.a(a) +if(this.r.G(0,a))this.dI(a)}, +aU(a){return this.iY(a)}, +iY(a){var s=0,r=A.q(t.m),q,p=2,o=[],n=this,m,l,k,j,i,h,g,f,e,d +var $async$aU=A.r(function(b,c){if(b===1){o.push(c) +s=p}for(;;)switch(s){case 0:e=a.x +if(e!=null){q=e +s=1 +break}m=1 +k=a.r,j=t.m,i=n.r +case 3:p=6 +s=9 +return A.e(A.a3(A.i(k.createSyncAccessHandle()),j),$async$aU) +case 9:h=c +a.shW(h) +l=h +if(!a.w)i.l(0,a) +g=l +q=g +s=1 +break +p=2 +s=8 +break +case 6:p=5 +d=o.pop() +if(J.b8(m,6))throw A.c(B.bc) +A.x(m) +g=m +if(typeof g!=="number"){q=g.eZ() +s=1 +break}m=g+1 +s=8 +break +case 5:s=2 +break +case 8:s=3 +break +case 4:case 1:return A.o(q,r) +case 2:return A.n(o.at(-1),r)}}) +return A.p($async$aU,r)}, +dI(a){var s +try{this.dH(a)}catch(s){}}, +dH(a){var s=a.x +if(s!=null){a.x=null +this.r.G(0,a) +a.w=!1 +s.close()}}} +A.en.prototype={ +shW(a){this.x=A.bq(a)}} +A.jV.prototype={ +de(){var s=0,r=A.q(t.H),q=this,p,o +var $async$de=A.r(function(a,b){if(a===1)return A.n(b,r) +for(;;)switch(s){case 0:p=new A.t($.u,t.a7) +o=A.i(A.bq(v.G.indexedDB).open(q.b,1)) +o.onupgradeneeded=A.bF(new A.jY(o)) +new A.a6(p,t.h1).O(A.uC(o,t.m)) +s=2 +return A.e(p,$async$de) +case 2:q.a=b +return A.o(null,r)}}) +return A.p($async$de,r)}, +bs(a,b){return this.jc(t.pg.a(a),b)}, +jc(a,b){var s=0,r=A.q(t.H),q=this,p,o,n +var $async$bs=A.r(function(c,d){if(c===1)return A.n(d,r) +for(;;)switch(s){case 0:n=q.a +n.toString +p=A.i(n.transaction($.u8(),b)) +o=A.w2(p) +s=2 +return A.e(A.yw(new A.jX(a,o,p),t.mj),$async$bs) +case 2:s=3 +return A.e(o.b.a,$async$bs) +case 3:if(o.c){n=q.a +if(n!=null)n.close() +q.a=null}return A.o(null,r)}}) +return A.p($async$bs,r)}, +j_(a){return this.bs(new A.jW(t.jq.a(a)),"readwrite")}} +A.jY.prototype={ +$1(a){var s +A.i(a) +s=A.i(this.a.result) +if(A.d(a.oldVersion)===0){A.i(A.i(s.createObjectStore("files",{autoIncrement:!0})).createIndex("fileName","name",{unique:!0})) +A.i(s.createObjectStore("blocks"))}}, +$S:11} +A.jX.prototype={ +$0(){var s=0,r=A.q(t.P),q=1,p=[],o=this,n,m +var $async$$0=A.r(function(a,b){if(a===1){p.push(b) +s=q}for(;;)switch(s){case 0:q=3 +s=6 +return A.e(o.a.$1(o.b),$async$$0) +case 6:q=1 +s=5 +break +case 3:q=2 +m=p.pop() +o.c.abort() +throw m +s=5 +break +case 2:s=1 +break +case 5:o.c.commit() +return A.o(null,r) +case 1:return A.n(p.at(-1),r)}}) +return A.p($async$$0,r)}, +$S:16} +A.jW.prototype={ +$1(a){var s=0,r=A.q(t.H),q=this,p,o,n +var $async$$1=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:p=q.a,o=p.length,n=0 +case 2:if(!(n=j.length){q=A.b(j,1) +s=1 +break}i=A.d(A.L(j[1])) +if(i>=A.d(g.length)){s=5 +break}h=new A.nq(e,i,Math.min(4096,A.d(g.length)-i)) +if(k.value instanceof n.a(o.Blob))B.b.l(b,A.lr(A.i(k.value)).bH(h,l)) +else h.$1(f.a(k.value)) +s=4 +break +case 5:q=e +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$bL,r)}, +d1(a){var s=0,r=A.q(t.S),q,p=this,o +var $async$d1=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:if((p.b.a.a&30)!==0)A.J(A.F("IDB transaction already completed")) +o=A +s=3 +return A.e(A.bK(A.i(p.d.put({name:a,length:0})),t.b),$async$d1) +case 3:q=o.d(c) +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$d1,r)}, +bf(a,b){var s=0,r=A.q(t.H),q=this,p,o,n,m,l +var $async$bf=A.r(function(c,d){if(c===1)return A.n(d,r) +for(;;)switch(s){case 0:if((q.b.a.a&30)!==0)A.J(A.F("IDB transaction already completed")) +s=2 +return A.e(q.e7(a),$async$bf) +case 2:p=d +o=b.b +n=A.j(o).h("c3<1>") +m=A.au(new A.c3(o,n),n.h("f.E")) +B.b.hN(m) +o=A.M(m) +s=3 +return A.e(A.qp(new A.K(m,o.h("D<~>(1)").a(new A.nr(new A.ns(q,a),b)),o.h("K<1,D<~>>")),t.H),$async$bf) +case 3:s=b.c!==A.d(p.length)?4:5 +break +case 4:l=new A.dm(A.i(q.d.openCursor(a)),t.nz) +s=6 +return A.e(l.k(),$async$bf) +case 6:s=7 +return A.e(A.bK(A.i(l.gn().update({name:A.v(p.name),length:b.c})),t.X),$async$bf) +case 7:case 5:return A.o(null,r)}}) +return A.p($async$bf,r)}, +be(a,b,c){var s=0,r=A.q(t.H),q=this,p,o +var $async$be=A.r(function(d,e){if(d===1)return A.n(e,r) +for(;;)switch(s){case 0:if((q.b.a.a&30)!==0)A.J(A.F("IDB transaction already completed")) +s=2 +return A.e(q.e7(b),$async$be) +case 2:p=e +s=A.d(p.length)>c?3:4 +break +case 3:s=5 +return A.e(A.bK(A.i(q.e.delete(q.j2(b,B.c.M(c,4096)*4096))),t.X),$async$be) +case 5:case 4:o=new A.dm(A.i(q.d.openCursor(b)),t.nz) +s=6 +return A.e(o.k(),$async$be) +case 6:s=7 +return A.e(A.bK(A.i(o.gn().update({name:A.v(p.name),length:c})),t.X),$async$be) +case 7:return A.o(null,r)}}) +return A.p($async$be,r)}, +d3(a){var s=0,r=A.q(t.H),q=this,p +var $async$d3=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:if((q.b.a.a&30)!==0)A.J(A.F("IDB transaction already completed")) +p=t.X +s=2 +return A.e(A.qp(A.k([A.bK(A.i(q.e.delete(q.e6(a,9007199254740992,0))),p),A.bK(A.i(q.d.delete(a)),p)],t.iw),t.H),$async$d3) +case 2:return A.o(null,r)}}) +return A.p($async$d3,r)}} +A.no.prototype={ +$0(){this.a.b.ai()}, +$S:3} +A.np.prototype={ +$0(){var s=this.a,r=A.bq(s.a.error) +if(r==null)r=A.i(new v.G.DOMException("IDB transaction error")) +s.b.a3(r)}, +$S:3} +A.nn.prototype={ +$1(a){A.bq(a) +if(a==null)throw A.c(A.an(this.a,"fileId","File not found in database")) +else return a}, +$S:89} +A.nq.prototype={ +$1(a){var s=this.a +s.b3(s,this.b,J.dG(t.lo.a(a),0,this.c))}, +$S:90} +A.ns.prototype={ +$2(a,b){var s=0,r=A.q(t.H),q=this,p,o,n,m,l,k +var $async$$2=A.r(function(c,d){if(c===1)return A.n(d,r) +for(;;)switch(s){case 0:p=q.a.e +o=q.b +n=t.J +s=2 +return A.e(A.bK(A.i(p.openCursor(A.i(v.G.IDBKeyRange.only(A.k([o,a],n))))),t.mU),$async$$2) +case 2:m=d +l=t.a.a(B.e.gaX(b)) +k=t.X +s=m==null?3:5 +break +case 3:s=6 +return A.e(A.bK(A.i(p.put(l,A.k([o,a],n))),k),$async$$2) +case 6:s=4 +break +case 5:s=7 +return A.e(A.bK(A.i(m.update(l)),k),$async$$2) +case 7:case 4:return A.o(null,r)}}) +return A.p($async$$2,r)}, +$S:91} +A.nr.prototype={ +$1(a){var s +A.d(a) +s=this.b.b.j(0,a) +s.toString +return this.a.$2(a,s)}, +$S:92} +A.n2.prototype={ +jq(a,b,c){B.e.b3(this.b.hr(a,new A.n3(this,a)),b,c)}, +jB(a,b){var s,r,q,p,o,n,m,l +for(s=b.length,r=0;rp)B.e.b3(s,0,J.dG(B.e.gaX(r),r.byteOffset+p,Math.min(4096,q-p))) +return s}, +$S:93} +A.jo.prototype={} +A.dP.prototype={ +c0(a){var s=this +if(s.e||s.d.a==null)A.J(A.cR(10)) +if(a.eC(s.x)){s.aV(!0) +return a.d.a}else return A.bl(null,t.H)}, +aV(a){var s=0,r=A.q(t.H),q,p=this,o,n +var $async$aV=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:if(a&&!p.r){s=1 +break}s=!p.f&&!p.x.gC(0)?3:4 +break +case 3:p.f=!0 +o=p.x +n=A.au(o,o.$ti.h("f.E")) +o.c6(0) +s=5 +return A.e(p.d.j_(n).ak(new A.l4(p,n,a)),$async$aV) +case 5:case 4:case 1:return A.o(q,r)}}) +return A.p($async$aV,r)}, +p(){var s=0,r=A.q(t.H),q,p=this,o,n +var $async$p=A.r(function(a,b){if(a===1)return A.n(b,r) +for(;;)switch(s){case 0:if(!p.e){o=p.c0(new A.fT(t.pg.a(new A.l5()),new A.a6(new A.t($.u,t.D),t.F))) +p.e=!0 +p.aV(!1) +q=o +s=1 +break}else{n=p.x +if(!n.gC(0)){q=n.gE(0).d.a +s=1 +break}}case 1:return A.o(q,r)}}) +return A.p($async$p,r)}, +bo(a,b){var s=0,r=A.q(t.S),q,p=this,o,n +var $async$bo=A.r(function(c,d){if(c===1)return A.n(d,r) +for(;;)switch(s){case 0:n=p.z +s=n.a_(b)?3:5 +break +case 3:n=n.j(0,b) +n.toString +q=n +s=1 +break +s=4 +break +case 5:s=6 +return A.e(a.d5(b),$async$bo) +case 6:o=d +o.toString +n.q(0,b,o) +q=o +s=1 +break +case 4:case 1:return A.o(q,r)}}) +return A.p($async$bo,r)}, +bU(){var s=0,r=A.q(t.H),q=this,p +var $async$bU=A.r(function(a,b){if(a===1)return A.n(b,r) +for(;;)switch(s){case 0:p=A.k([],t.iw) +s=2 +return A.e(q.d.bs(new A.l3(q,p),"readonly"),$async$bU) +case 2:s=3 +return A.e(A.uU(p,t.H),$async$bU) +case 3:return A.o(null,r)}}) +return A.p($async$bU,r)}, +ct(a,b){return this.w.d.a_(a)?1:0}, +dk(a,b){var s=this +s.w.d.G(0,a) +if(!s.y.G(0,a))s.c0(new A.fL(s,a,new A.a6(new A.t($.u,t.D),t.F)))}, +dl(a){return A.v(A.i(new v.G.URL(a,"file:///")).pathname)}, +b1(a,b){var s,r,q,p=this,o=a.a +if(o==null)o=A.oY(p.b,"/") +s=p.w +r=s.d.a_(o)?1:0 +q=s.b1(new A.fs(o),b) +if(r===0)if((b&8)!==0)p.y.l(0,o) +else p.c0(new A.ee(p,o,new A.a6(new A.t($.u,t.D),t.F))) +return new A.cW(new A.ji(p,q.a,o),0)}, +dq(a){}} +A.l4.prototype={ +$0(){var s,r,q,p,o,n=this.a +n.f=!1 +for(s=this.b,r=s.length,q=0;q=2?1:0}, +cu(){}, +cw(){return this.b.cw()}, +dm(a){this.b.d=a +return null}, +dr(a){}, +hC(a,b){return 12}, +cz(a){var s=this,r=s.a +if(r.e||r.d.a==null)A.J(A.cR(10)) +s.b.cz(a) +if(!r.y.H(0,s.c))r.c0(new A.fT(t.pg.a(new A.nm(s,a)),new A.a6(new A.t($.u,t.D),t.F)))}, +ds(a){this.b.d=a +return null}, +bg(a,b){var s,r,q,p,o,n,m=this,l=m.a +if(l.e||l.d.a==null)A.J(A.cR(10)) +s=m.c +if(l.y.H(0,s)){m.b.bg(a,b) +return}r=l.w.d.j(0,s) +if(r==null)r=new A.bz(new Uint8Array(0),0) +q=J.dG(B.e.gaX(r.a),0,r.b) +m.b.bg(a,b) +p=new Uint8Array(a.length) +B.e.b3(p,0,a) +o=A.k([],t.p8) +n=$.u +B.b.l(o,new A.jo(b,p)) +l.c0(new A.ez(l,s,q,o,new A.a6(new A.t(n,t.D),t.F)))}, +$iaB:1, +$ie9:1} +A.nm.prototype={ +$1(a){return this.hG(t.n0.a(a))}, +hG(a){var s=0,r=A.q(t.H),q,p=this,o,n +var $async$$1=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:o=p.a +n=a +s=3 +return A.e(o.a.bo(a,o.c),$async$$1) +case 3:q=n.be(0,c,p.b) +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$$1,r)}, +$S:17} +A.aw.prototype={ +eC(a){t.e.a(a) +a.$ti.c.a(this) +a.cH(a.c,this,!1) +return!0}} +A.fT.prototype={ +Z(a){return this.w.$1(a)}} +A.fL.prototype={ +eC(a){var s,r,q,p +t.e.a(a) +if(!a.gC(0)){s=a.gE(0) +for(r=this.x;s!=null;)if(s instanceof A.fL)if(s.x===r)return!1 +else s=s.gcj() +else if(s instanceof A.ez){q=s.gcj() +if(s.x===r){p=s.a +p.toString +p.ec(A.j(s).h("ao.E").a(s))}s=q}else if(s instanceof A.ee){if(s.x===r){r=s.a +r.toString +r.ec(A.j(s).h("ao.E").a(s)) +return!1}s=s.gcj()}else break}a.$ti.c.a(this) +a.cH(a.c,this,!1) +return!0}, +Z(a){var s=0,r=A.q(t.H),q=this,p,o,n +var $async$Z=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:p=q.w +o=q.x +s=2 +return A.e(p.bo(a,o),$async$Z) +case 2:n=c +p.z.G(0,o) +s=3 +return A.e(a.d3(n),$async$Z) +case 3:return A.o(null,r)}}) +return A.p($async$Z,r)}} +A.ee.prototype={ +Z(a){var s=0,r=A.q(t.H),q=this,p,o,n +var $async$Z=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:p=q.x +o=q.w.z +n=p +s=2 +return A.e(a.d1(p),$async$Z) +case 2:o.q(0,n,c) +return A.o(null,r)}}) +return A.p($async$Z,r)}} +A.ez.prototype={ +eC(a){var s,r +t.e.a(a) +s=a.b===0?null:a.gE(0) +for(r=this.x;s!=null;)if(s instanceof A.ez)if(s.x===r){B.b.ag(s.z,this.z) +return!1}else s=s.gcj() +else if(s instanceof A.ee){if(s.x===r)break +s=s.gcj()}else break +a.$ti.c.a(this) +a.cH(a.c,this,!1) +return!0}, +Z(a){var s=0,r=A.q(t.H),q=this,p,o,n,m,l,k +var $async$Z=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:m=q.y +l=new A.n2(m,A.az(t.S,t.ev),m.length) +for(m=q.z,p=m.length,o=0;o0) +n.cd(B.P,A.d(o.getSize())>0)}return A.o(null,r)}}) +return A.p($async$bC,r)}} +A.lM.prototype={ +$1(a){var s=0,r=A.q(t.m),q,p=this,o,n,m +var $async$$1=A.r(function(b,c){if(b===1)return A.n(c,r) +for(;;)switch(s){case 0:o=t.m +m=A +s=3 +return A.e(A.a3(A.i(p.a.getFileHandle(a,{create:!0})),o),$async$$1) +case 3:n=m.i(c.createSyncAccessHandle()) +s=4 +return A.e(A.a3(n,o),$async$$1) +case 4:q=c +s=1 +break +case 1:return A.o(q,r)}}) +return A.p($async$$1,r)}, +$S:94} +A.jx.prototype={ +eR(a,b){return A.oV(this.a.ap().b9(this.b),a,{at:b})}, +dj(){return this.d>=2?1:0}, +cu(){var s=this.a,r=this.b +s.ap().b9(r).flush() +if(this.c)s.ap().cd(r,!1)}, +cw(){return A.d(this.a.ap().b9(this.b).getSize())}, +dm(a){this.d=a}, +dr(a){this.a.ap().b9(this.b).flush()}, +cz(a){this.a.ap().b9(this.b).truncate(a)}, +ds(a){this.d=a}, +bg(a,b){if(A.oW(this.a.ap().b9(this.b),a,{at:b})(1)").a(new A.k4()),r.h("f2<1,O>")),null)}, +i(a){var s=this.a,r=A.M(s) +return new A.K(s,r.h("l(1)").a(new A.k2(new A.K(s,r.h("a(1)").a(new A.k3()),r.h("K<1,a>")).ev(0,0,B.v,t.S))),r.h("K<1,l>")).az(0,u.q)}, +$iX:1} +A.k_.prototype={ +$1(a){return A.v(a).length!==0}, +$S:2} +A.k4.prototype={ +$1(a){return t.i.a(a).gc9()}, +$S:95} +A.k3.prototype={ +$1(a){var s=t.i.a(a).gc9(),r=A.M(s) +return new A.K(s,r.h("a(1)").a(new A.k1()),r.h("K<1,a>")).ev(0,0,B.v,t.S)}, +$S:96} +A.k1.prototype={ +$1(a){return t.B.a(a).gbA().length}, +$S:37} +A.k2.prototype={ +$1(a){var s=t.i.a(a).gc9(),r=A.M(s) +return new A.K(s,r.h("l(1)").a(new A.k0(this.a)),r.h("K<1,l>")).cb(0)}, +$S:98} +A.k0.prototype={ +$1(a){t.B.a(a) +return B.a.hq(a.gbA(),this.a)+" "+A.x(a.geJ())+"\n"}, +$S:38} +A.O.prototype={ +geH(){var s=this.a +if(s.gW()==="data")return"data:..." +return $.q1().kG(s)}, +gbA(){var s,r=this,q=r.b +if(q==null)return r.geH() +s=r.c +if(s==null)return r.geH()+" "+A.x(q) +return r.geH()+" "+A.x(q)+":"+A.x(s)}, +i(a){return this.gbA()+" in "+A.x(this.d)}, +geJ(){return this.d}} +A.kT.prototype={ +$0(){var s,r,q,p,o,n,m,l=null,k=this.a +if(k==="...")return new A.O(A.ax(l,l,l,l),l,l,"...") +s=$.uf().a9(k) +if(s==null)return new A.bT(A.ax(l,"unparsed",l,l),k) +k=s.b +if(1>=k.length)return A.b(k,1) +r=k[1] +r.toString +q=$.tX() +r=A.bH(r,q,"") +p=A.bH(r,"","") +if(2>=k.length)return A.b(k,2) +r=k[2] +q=r +q.toString +if(B.a.A(q,"=k.length)return A.b(k,3) +n=k[3].split(":") +k=n.length +m=k>1?A.bG(n[1],l):l +return new A.O(o,m,k>2?A.bG(n[2],l):l,p)}, +$S:10} +A.kR.prototype={ +$0(){var s,r,q,p,o,n,m="",l=this.a,k=$.ue().a9(l) +if(k!=null){s=k.aM("member") +l=k.aM("uri") +l.toString +r=A.i_(l) +l=k.aM("index") +l.toString +q=k.aM("offset") +q.toString +p=A.bG(q,16) +if(!(s==null))l=s +return new A.O(r,1,p+1,l)}k=$.ua().a9(l) +if(k!=null){l=new A.kS(l) +q=k.b +o=q.length +if(2>=o)return A.b(q,2) +n=q[2] +if(n!=null){o=n +o.toString +q=q[1] +q.toString +q=A.bH(q,"",m) +q=A.bH(q,"Anonymous function",m) +return l.$2(o,A.bH(q,"(anonymous function)",m))}else{if(3>=o)return A.b(q,3) +q=q[3] +q.toString +return l.$2(q,m)}}return new A.bT(A.ax(null,"unparsed",null,null),l)}, +$S:10} +A.kS.prototype={ +$2(a,b){var s,r,q,p,o,n=null,m=$.u9(),l=m.a9(a) +for(;l!=null;a=s){s=l.b +if(1>=s.length)return A.b(s,1) +s=s[1] +s.toString +l=m.a9(s)}if(a==="native")return new A.O(A.bU("native"),n,n,b) +r=$.ub().a9(a) +if(r==null)return new A.bT(A.ax(n,"unparsed",n,n),this.a) +m=r.b +if(1>=m.length)return A.b(m,1) +s=m[1] +s.toString +q=A.i_(s) +if(2>=m.length)return A.b(m,2) +s=m[2] +s.toString +p=A.bG(s,n) +if(3>=m.length)return A.b(m,3) +o=m[3] +return new A.O(q,p,o!=null?A.bG(o,n):n,b)}, +$S:101} +A.kO.prototype={ +$0(){var s,r,q,p,o=null,n=this.a,m=$.tY().a9(n) +if(m==null)return new A.bT(A.ax(o,"unparsed",o,o),n) +n=m.b +if(1>=n.length)return A.b(n,1) +s=n[1] +s.toString +r=A.bH(s,"/<","") +if(2>=n.length)return A.b(n,2) +s=n[2] +s.toString +q=A.i_(s) +if(3>=n.length)return A.b(n,3) +n=n[3] +n.toString +p=A.bG(n,o) +return new A.O(q,p,o,r.length===0||r==="anonymous"?"":r)}, +$S:10} +A.kP.prototype={ +$0(){var s,r,q,p,o,n,m,l,k=null,j=this.a,i=$.u_().a9(j) +if(i!=null){s=i.b +if(3>=s.length)return A.b(s,3) +r=s[3] +q=r +q.toString +if(B.a.H(q," line "))return A.uM(j) +j=r +j.toString +p=A.i_(j) +j=s.length +if(1>=j)return A.b(s,1) +o=s[1] +if(o!=null){if(2>=j)return A.b(s,2) +j=s[2] +j.toString +o+=B.b.cb(A.bm(B.a.ek("/",j).gm(0),".",!1,t.N)) +if(o==="")o="" +o=B.a.hw(o,$.u4(),"")}else o="" +if(4>=s.length)return A.b(s,4) +j=s[4] +if(j==="")n=k +else{j=j +j.toString +n=A.bG(j,k)}if(5>=s.length)return A.b(s,5) +j=s[5] +if(j==null||j==="")m=k +else{j=j +j.toString +m=A.bG(j,k)}return new A.O(p,n,m,o)}i=$.u1().a9(j) +if(i!=null){j=i.aM("member") +j.toString +s=i.aM("uri") +s.toString +p=A.i_(s) +s=i.aM("index") +s.toString +r=i.aM("offset") +r.toString +l=A.bG(r,16) +if(!(j.length!==0))j=s +return new A.O(p,1,l+1,j)}i=$.u6().a9(j) +if(i!=null){j=i.aM("member") +j.toString +return new A.O(A.ax(k,"wasm code",k,k),k,k,j)}return new A.bT(A.ax(k,"unparsed",k,k),j)}, +$S:10} +A.kQ.prototype={ +$0(){var s,r,q,p,o=null,n=this.a,m=$.u2().a9(n) +if(m==null)throw A.c(A.at("Couldn't parse package:stack_trace stack trace line '"+n+"'.",o,o)) +n=m.b +if(1>=n.length)return A.b(n,1) +s=n[1] +if(s==="data:...")r=A.r4("") +else{s=s +s.toString +r=A.bU(s)}if(r.gW()===""){s=$.q1() +r=s.hA(s.h1(s.a.df(A.pA(r)),o,o,o,o,o,o,o,o,o,o,o,o,o,o))}if(2>=n.length)return A.b(n,2) +s=n[2] +if(s==null)q=o +else{s=s +s.toString +q=A.bG(s,o)}if(3>=n.length)return A.b(n,3) +s=n[3] +if(s==null)p=o +else{s=s +s.toString +p=A.bG(s,o)}if(4>=n.length)return A.b(n,4) +return new A.O(r,q,p,n[4])}, +$S:10} +A.id.prototype={ +gh_(){var s,r=this,q=r.b +if(q===$){s=r.a.$0() +r.b!==$&&A.pW() +r.b=s +q=s}return q}, +gc9(){return this.gh_().gc9()}, +i(a){return this.gh_().i(0)}, +$iX:1, +$ia4:1} +A.a4.prototype={ +i(a){var s=this.a,r=A.M(s) +return new A.K(s,r.h("l(1)").a(new A.m4(new A.K(s,r.h("a(1)").a(new A.m5()),r.h("K<1,a>")).ev(0,0,B.v,t.S))),r.h("K<1,l>")).cb(0)}, +$iX:1, +gc9(){return this.a}} +A.m2.prototype={ +$0(){return A.r0(this.a.i(0))}, +$S:102} +A.m3.prototype={ +$1(a){return A.v(a).length!==0}, +$S:2} +A.m1.prototype={ +$1(a){return!B.a.A(A.v(a),$.ud())}, +$S:2} +A.m0.prototype={ +$1(a){return A.v(a)!=="\tat "}, +$S:2} +A.lZ.prototype={ +$1(a){A.v(a) +return a.length!==0&&a!=="[native code]"}, +$S:2} +A.m_.prototype={ +$1(a){return!B.a.A(A.v(a),"=====")}, +$S:2} +A.m5.prototype={ +$1(a){return t.B.a(a).gbA().length}, +$S:37} +A.m4.prototype={ +$1(a){t.B.a(a) +if(a instanceof A.bT)return a.i(0)+"\n" +return B.a.hq(a.gbA(),this.a)+" "+A.x(a.geJ())+"\n"}, +$S:38} +A.bT.prototype={ +i(a){return this.w}, +$iO:1, +gbA(){return"unparsed"}, +geJ(){return this.w}} +A.eU.prototype={ +sjn(a){this.c=this.$ti.h("aV<1>?").a(a)}} +A.fK.prototype={ +P(a,b,c,d){var s,r +this.$ti.h("~(1)?").a(a) +t.Z.a(c) +s=this.b +if(s.d){a=null +d=null}r=this.a.P(a,b,c,d) +if(!s.d)s.sjn(r) +return r}, +b_(a,b,c){return this.P(a,null,b,c)}, +eI(a,b){return this.P(a,null,b,null)}} +A.fJ.prototype={ +p(){var s,r=this.hR(),q=this.b +q.d=!0 +s=q.c +if(s!=null){s.cg(null) +s.eN(null)}return r}} +A.f4.prototype={ +ghQ(){var s=this.b +s===$&&A.C() +return new A.aC(s,A.j(s).h("aC<1>"))}, +ghM(){var s=this.a +s===$&&A.C() +return s}, +hY(a,b,c,d){var s=this,r=s.$ti,q=r.h("ei<1>").a(new A.ei(a,s,new A.ad(new A.t($.u,t.D),t.h),!0,d.h("ei<0>"))) +s.a!==$&&A.jL() +s.a=q +r=r.h("e6<1>").a(A.fu(null,new A.l2(c,s,d),!0,d)) +s.b!==$&&A.jL() +s.b=r}, +iW(){var s,r +this.d=!0 +s=this.c +if(s!=null)s.I() +r=this.b +r===$&&A.C() +r.p()}} +A.l2.prototype={ +$0(){var s,r,q=this.b +if(q.d)return +s=this.a.a +r=q.b +r===$&&A.C() +q.c=s.b_(this.c.h("~(0)").a(r.gjz(r)),new A.l1(q),r.gh2())}, +$S:0} +A.l1.prototype={ +$0(){var s=this.a,r=s.a +r===$&&A.C() +r.iX() +s=s.b +s===$&&A.C() +s.p()}, +$S:0} +A.ei.prototype={ +l(a,b){var s,r=this +r.$ti.c.a(b) +if(r.e)throw A.c(A.F("Cannot add event after closing.")) +if(r.d)return +s=r.a +s.a.l(0,s.$ti.c.a(b))}, +a2(a,b){if(this.e)throw A.c(A.F("Cannot add event after closing.")) +if(this.d)return +this.iE(a,b)}, +iE(a,b){this.a.a.a2(a,b) +return}, +p(){var s=this +if(s.e)return s.c.a +s.e=!0 +if(!s.d){s.b.iW() +s.c.O(s.a.a.p())}return s.c.a}, +iX(){this.d=!0 +var s=this.c +if((s.a.a&30)===0)s.ai() +return}, +$iaj:1, +$ibn:1} +A.iF.prototype={} +A.e5.prototype={$ipa:1} +A.cg.prototype={ +gm(a){return this.b}, +j(a,b){var s +if(b>=this.b)throw A.c(A.qr(b,this)) +s=this.a +if(!(b>=0&&b=s.b)throw A.c(A.qr(b,s)) +B.e.q(s.a,b,c)}, +sm(a,b){var s,r,q,p,o=this,n=o.b +if(b=0&&qn){if(n===0)p=new Uint8Array(b) +else p=o.ip(b) +B.e.ad(p,0,o.b,o.a) +o.a=p}}o.b=b}, +ip(a){var s=this.a.length*2 +if(a!=null&&s").a(d) +s=this.b +if(c>s)throw A.c(A.a5(c,0,s,null,null)) +s=this.a +if(d instanceof A.bz)B.e.N(s,b,c,d.a,e) +else B.e.N(s,b,c,d,e)}, +ad(a,b,c,d){return this.N(0,b,c,d,0)}} +A.jj.prototype={} +A.bz.prototype={} +A.oU.prototype={} +A.fO.prototype={ +P(a,b,c,d){var s=this.$ti +s.h("~(1)?").a(a) +t.Z.a(c) +return A.aX(this.a,this.b,a,!1,s.c)}, +b_(a,b,c){return this.P(a,null,b,c)}} +A.fP.prototype={ +I(){var s=this,r=A.bl(null,t.H) +if(s.b==null)return r +s.ed() +s.d=s.b=null +return r}, +cg(a){var s,r=this +r.$ti.h("~(1)?").a(a) +if(r.b==null)throw A.c(A.F("Subscription has been canceled.")) +r.ed() +if(a==null)s=null +else{s=A.t8(new A.n0(a),t.m) +s=s==null?null:A.bF(s)}r.d=s +r.eb()}, +eN(a){}, +bD(){if(this.b==null)return;++this.a +this.ed()}, +bc(){var s=this +if(s.b==null||s.a<=0)return;--s.a +s.eb()}, +eb(){var s=this,r=s.d +if(r!=null&&s.a<=0)s.b.addEventListener(s.c,r,!1)}, +ed(){var s=this.d +if(s!=null)this.b.removeEventListener(this.c,s,!1)}, +$iaV:1} +A.n_.prototype={ +$1(a){return this.a.$1(A.i(a))}, +$S:1} +A.n0.prototype={ +$1(a){return this.a.$1(A.i(a))}, +$S:1};(function aliases(){var s=J.cz.prototype +s.hS=s.i +s=A.dk.prototype +s.hU=s.bM +s=A.a0.prototype +s.dw=s.aQ +s.f5=s.a7 +s.f6=s.bl +s=A.et.prototype +s.hV=s.el +s=A.A.prototype +s.f4=s.N +s=A.dN.prototype +s.hR=s.p +s=A.cL.prototype +s.hT=s.p})();(function installTearOffs(){var s=hunkHelpers._static_2,r=hunkHelpers._static_1,q=hunkHelpers._static_0,p=hunkHelpers.installStaticTearOff,o=hunkHelpers._instance_0u,n=hunkHelpers.installInstanceTearOff,m=hunkHelpers._instance_2u,l=hunkHelpers._instance_1i,k=hunkHelpers._instance_1u +s(J,"x_","v_",103) +r(A,"xD","vQ",13) +r(A,"xE","vR",13) +r(A,"xF","vS",13) +r(A,"xG","xd",104) +q(A,"tb","xw",0) +r(A,"xH","xe",18) +s(A,"xI","xg",7) +q(A,"ta","xf",0) +p(A,"xM",5,null,["$5"],["xp"],105,0) +p(A,"xR",4,null,["$1$4","$4"],["og",function(a,b,c,d){return A.og(a,b,c,d,t.z)}],106,0) +p(A,"xT",5,null,["$2$5","$5"],["oh",function(a,b,c,d,e){var i=t.z +return A.oh(a,b,c,d,e,i,i)}],107,0) +p(A,"xS",6,null,["$3$6"],["pB"],108,0) +p(A,"xP",4,null,["$1$4","$4"],["t1",function(a,b,c,d){return A.t1(a,b,c,d,t.z)}],109,0) +p(A,"xQ",4,null,["$2$4","$4"],["t2",function(a,b,c,d){var i=t.z +return A.t2(a,b,c,d,i,i)}],110,0) +p(A,"xO",4,null,["$3$4","$4"],["t0",function(a,b,c,d){var i=t.z +return A.t0(a,b,c,d,i,i,i)}],111,0) +p(A,"xK",5,null,["$5"],["xo"],112,0) +p(A,"xU",4,null,["$4"],["oi"],113,0) +p(A,"xJ",5,null,["$5"],["xn"],114,0) +p(A,"zM",5,null,["$5"],["xm"],115,0) +p(A,"xN",4,null,["$4"],["xq"],116,0) +p(A,"xL",5,null,["$5"],["t_"],117,0) +var j +o(j=A.bY.prototype,"gbR","an",0) +o(j,"gbS","ao",0) +n(A.dl.prototype,"gjI",0,1,null,["$2","$1"],["by","a3"],31,0,0) +m(A.t.prototype,"gdJ","ih",7) +l(j=A.dw.prototype,"gjz","l",8) +n(j,"gh2",0,1,null,["$2","$1"],["a2","jA"],31,0,0) +o(j=A.ch.prototype,"gbR","an",0) +o(j,"gbS","ao",0) +o(j=A.a0.prototype,"gbR","an",0) +o(j,"gbS","ao",0) +o(A.eg.prototype,"gfE","iV",0) +k(j=A.dx.prototype,"giP","iQ",8) +m(j,"giT","iU",7) +o(j,"giR","iS",0) +o(j=A.eh.prototype,"gbR","an",0) +o(j,"gbS","ao",0) +k(j,"gdU","dV",8) +m(j,"gdY","dZ",42) +o(j,"gdW","dX",0) +o(j=A.ep.prototype,"gbR","an",0) +o(j,"gbS","ao",0) +k(j,"gdU","dV",8) +m(j,"gdY","dZ",7) +o(j,"gdW","dX",0) +k(A.er.prototype,"gjF","el","N<2>(h?)") +r(A,"xY","vM",6) +p(A,"yp",2,null,["$1$2","$2"],["tk",function(a,b){return A.tk(a,b,t.o)}],118,0) +r(A,"yr","yy",4) +r(A,"yq","yx",4) +r(A,"yo","xZ",4) +r(A,"ys","yE",4) +r(A,"yl","xB",4) +r(A,"ym","xC",4) +r(A,"yn","xV",4) +k(A.eZ.prototype,"giG","iH",8) +k(A.hS.prototype,"giq","dM",15) +k(A.j_.prototype,"gjt","cP",15) +r(A,"zR","rR",20) +r(A,"zP","rP",20) +r(A,"zQ","rQ",20) +r(A,"tm","xh",26) +r(A,"tn","xk",121) +r(A,"tl","wQ",122) +k(j=A.hO.prototype,"gkt","ku",5) +m(j,"gkr","ks",68) +n(j,"gl9",0,5,null,["$5"],["la"],69,0,0) +n(j,"gkZ",0,3,null,["$3"],["l_"],70,0,0) +n(j,"gkR",0,4,null,["$4"],["kS"],32,0,0) +n(j,"gl5",0,4,null,["$4"],["l6"],32,0,0) +n(j,"glb",0,3,null,["$3"],["lc"],72,0,0) +m(j,"glg","lh",33) +m(j,"gkX","kY",33) +k(j,"gkV","kW",21) +n(j,"gld",0,4,null,["$4"],["le"],34,0,0) +n(j,"glo",0,4,null,["$4"],["lp"],34,0,0) +m(j,"glk","ll",76) +m(j,"gli","lj",9) +m(j,"gl3","l4",9) +m(j,"gl7","l8",9) +m(j,"glm","ln",9) +m(j,"gkT","kU",9) +k(j,"gcv","l0",21) +n(j,"gl1",0,3,null,["$3"],["l2"],78,0,0) +k(j,"gdn","lf",21) +k(j,"gjW","jX",13) +k(j,"gjR","jS",79) +n(j,"gjU",0,5,null,["$5"],["jV"],80,0,0) +n(j,"gk5",0,4,null,["$4"],["k6"],23,0,0) +n(j,"gk9",0,4,null,["$4"],["ka"],23,0,0) +n(j,"gk7",0,4,null,["$4"],["k8"],23,0,0) +m(j,"gkb","kc",35) +m(j,"gk_","k0",35) +n(j,"gjY",0,5,null,["$5"],["jZ"],83,0,0) +m(j,"gjP","jQ",127) +m(j,"gjN","jO",85) +n(j,"gjL",0,3,null,["$3"],["jM"],86,0,0) +o(A.eb.prototype,"gc7","p",0) +r(A,"co","v7",123) +r(A,"br","v8",124) +r(A,"pV","v9",125) +k(A.fy.prototype,"gj5","j6",87) +o(A.dP.prototype,"gc7","p",12) +o(A.e2.prototype,"gc7","p",0) +r(A,"y6","uT",14) +r(A,"tf","uS",14) +r(A,"y4","uQ",14) +r(A,"y5","uR",14) +r(A,"yI","vF",36) +r(A,"yH","vE",36)})();(function inheritance(){var s=hunkHelpers.mixin,r=hunkHelpers.inherit,q=hunkHelpers.inheritMany +r(A.h,null) +q(A.h,[A.p2,J.i5,A.fo,J.eN,A.f,A.eT,A.W,A.A,A.aN,A.lu,A.bb,A.dd,A.bC,A.f3,A.fw,A.fp,A.fr,A.f0,A.fB,A.db,A.aO,A.cQ,A.iG,A.ck,A.eV,A.fW,A.m7,A.iq,A.f1,A.h7,A.V,A.ld,A.fa,A.c4,A.f9,A.cy,A.em,A.j2,A.e7,A.jz,A.mT,A.jD,A.bw,A.jg,A.nL,A.hd,A.fD,A.hc,A.a_,A.N,A.a0,A.dk,A.fU,A.dl,A.bD,A.t,A.j3,A.fv,A.dw,A.jA,A.j4,A.dy,A.cj,A.jc,A.bE,A.eg,A.dx,A.fN,A.ej,A.o2,A.o4,A.o3,A.o0,A.o1,A.o_,A.nX,A.jG,A.nW,A.nV,A.nZ,A.nY,A.jF,A.jH,A.eA,A.eB,A.fC,A.fV,A.e1,A.jm,A.du,A.fY,A.ao,A.h_,A.cr,A.cs,A.nT,A.hl,A.ab,A.fR,A.ct,A.bj,A.jd,A.is,A.ft,A.jf,A.aP,A.i4,A.aR,A.Q,A.eu,A.aI,A.hi,A.iN,A.bo,A.hY,A.ip,A.jl,A.dN,A.hR,A.ie,A.io,A.iL,A.eZ,A.jp,A.hL,A.hT,A.hS,A.cB,A.b0,A.cv,A.cG,A.bM,A.cI,A.cu,A.cK,A.cH,A.ca,A.bQ,A.iB,A.eo,A.j_,A.bS,A.cq,A.eR,A.aA,A.eQ,A.dI,A.ln,A.m6,A.dL,A.dZ,A.ix,A.fi,A.lm,A.bN,A.kw,A.bA,A.hU,A.e0,A.mi,A.lD,A.hM,A.lY,A.lk,A.it,A.cM,A.d3,A.hP,A.iD,A.dK,A.ap,A.hD,A.hN,A.jv,A.jr,A.cw,A.aW,A.fs,A.iY,A.iW,A.mq,A.iZ,A.cS,A.bW,A.hO,A.bO,A.dm,A.mm,A.ls,A.c6,A.c5,A.jq,A.fy,A.en,A.jV,A.ds,A.n2,A.jo,A.ji,A.nu,A.md,A.bJ,A.O,A.id,A.a4,A.bT,A.e5,A.ei,A.iF,A.oU,A.fP]) +q(J.i5,[J.i7,J.f7,J.a8,J.aQ,J.dc,J.dS,J.cx]) +q(J.a8,[J.cz,J.y,A.cC,A.fd]) +q(J.cz,[J.iu,J.dh,J.b9]) +r(J.i6,A.fo) +r(J.l9,J.y) +q(J.dS,[J.f6,J.i9]) +q(A.f,[A.cU,A.w,A.aS,A.b3,A.f2,A.dg,A.cc,A.fq,A.fA,A.c1,A.dt,A.j1,A.jy,A.ev,A.cA]) +q(A.cU,[A.d5,A.hm]) +r(A.fM,A.d5) +r(A.fI,A.hm) +r(A.as,A.fI) +q(A.W,[A.dT,A.ce,A.ib,A.iK,A.iA,A.je,A.fj,A.hz,A.bt,A.fx,A.iJ,A.aU,A.hK]) +q(A.A,[A.e8,A.iT,A.ea,A.cg]) +r(A.hH,A.e8) +q(A.aN,[A.hF,A.i3,A.hG,A.iH,A.ov,A.ox,A.mF,A.mE,A.o6,A.nG,A.nI,A.nH,A.l_,A.kV,A.n7,A.n6,A.ni,A.lW,A.lV,A.lT,A.lR,A.nF,A.mZ,A.nA,A.nl,A.lh,A.mQ,A.nO,A.kW,A.oz,A.oE,A.oF,A.op,A.kC,A.kD,A.kE,A.lz,A.lA,A.lB,A.lx,A.mz,A.mw,A.mx,A.mu,A.mA,A.my,A.lo,A.kK,A.oj,A.lb,A.lc,A.lg,A.mr,A.ms,A.ky,A.lJ,A.om,A.oC,A.kF,A.lt,A.k8,A.k9,A.ka,A.lI,A.lE,A.lH,A.lF,A.lG,A.ke,A.kf,A.ok,A.mD,A.lO,A.oD,A.oH,A.oI,A.jU,A.mV,A.mW,A.k6,A.k7,A.kb,A.kc,A.kd,A.jY,A.jW,A.nn,A.nq,A.nr,A.l5,A.l3,A.nm,A.lM,A.me,A.mf,A.mg,A.mh,A.k_,A.k4,A.k3,A.k1,A.k2,A.k0,A.m3,A.m1,A.m0,A.lZ,A.m_,A.m5,A.m4,A.n_,A.n0]) +q(A.hF,[A.oB,A.mG,A.mH,A.nK,A.nJ,A.kZ,A.n9,A.ne,A.nd,A.nb,A.na,A.nh,A.ng,A.nf,A.lX,A.lU,A.lS,A.lQ,A.nE,A.nD,A.mS,A.mR,A.nv,A.o9,A.oa,A.mY,A.mX,A.nz,A.ny,A.of,A.nS,A.nR,A.kB,A.lv,A.lw,A.ly,A.mB,A.mC,A.mv,A.oG,A.mI,A.mN,A.mL,A.mM,A.mK,A.mJ,A.nB,A.nC,A.kA,A.kz,A.n1,A.le,A.lf,A.mt,A.kx,A.kJ,A.kG,A.kH,A.kI,A.jQ,A.ku,A.oJ,A.kj,A.kg,A.kl,A.kn,A.kp,A.ki,A.ko,A.kt,A.kr,A.kq,A.kk,A.km,A.ks,A.kh,A.jS,A.jT,A.mn,A.jX,A.no,A.np,A.n3,A.l4,A.kT,A.kR,A.kO,A.kP,A.kQ,A.m2,A.l2,A.l1]) +q(A.w,[A.P,A.d9,A.c3,A.fb,A.f8,A.dr,A.fZ]) +q(A.P,[A.df,A.K,A.fn]) +r(A.d8,A.aS) +r(A.f_,A.dg) +r(A.dO,A.cc) +r(A.d7,A.c1) +r(A.cV,A.ck) +q(A.cV,[A.am,A.cW,A.h5]) +r(A.d6,A.eV) +r(A.dQ,A.i3) +r(A.fg,A.ce) +q(A.iH,[A.iE,A.dJ]) +q(A.V,[A.c2,A.dq]) +q(A.hG,[A.la,A.ow,A.o7,A.ol,A.l0,A.kU,A.n8,A.nj,A.o8,A.nk,A.li,A.mP,A.mc,A.kY,A.kX,A.ml,A.mk,A.mj,A.on,A.jR,A.kv,A.ns,A.kS]) +r(A.dV,A.cC) +q(A.fd,[A.fc,A.aG]) +q(A.aG,[A.h1,A.h3]) +r(A.h2,A.h1) +r(A.cD,A.h2) +r(A.h4,A.h3) +r(A.bd,A.h4) +q(A.cD,[A.ih,A.ii]) +q(A.bd,[A.ij,A.dW,A.ik,A.il,A.im,A.fe,A.cE]) +r(A.ex,A.je) +q(A.N,[A.es,A.fS,A.fG,A.eP,A.fK,A.fO]) +r(A.aC,A.es) +r(A.fH,A.aC) +q(A.a0,[A.ch,A.eh,A.ep]) +r(A.bY,A.ch) +r(A.hb,A.dk) +q(A.dl,[A.ad,A.a6]) +q(A.dw,[A.ed,A.ew]) +q(A.cj,[A.ci,A.ef]) +r(A.h0,A.fS) +r(A.et,A.fv) +r(A.er,A.et) +q(A.eA,[A.ja,A.ju]) +r(A.ek,A.dq) +r(A.h6,A.e1) +r(A.fX,A.h6) +q(A.cr,[A.hW,A.hB,A.n5]) +q(A.hW,[A.hx,A.iR]) +q(A.cs,[A.jC,A.hC,A.iS]) +r(A.hy,A.jC) +q(A.bt,[A.e_,A.f5]) +r(A.jb,A.hi) +q(A.cB,[A.av,A.by,A.bL,A.c_]) +q(A.jd,[A.dX,A.cN,A.c9,A.di,A.bR,A.cF,A.bV,A.bB,A.ir,A.ag,A.da]) +r(A.eW,A.ln) +r(A.lj,A.m6) +q(A.dL,[A.ff,A.hV]) +q(A.aA,[A.bX,A.el,A.ic]) +q(A.bX,[A.jB,A.eX,A.j5,A.fQ]) +r(A.h8,A.jB) +r(A.jk,A.el) +r(A.cL,A.eW) +r(A.eq,A.hV) +q(A.bA,[A.hI,A.ec,A.cJ,A.de,A.e3,A.eY]) +q(A.hI,[A.cb,A.dM]) +r(A.j9,A.ix) +r(A.iV,A.eX) +r(A.jE,A.cL) +r(A.dR,A.lY) +q(A.dR,[A.iv,A.iQ,A.j0]) +r(A.e4,A.dK) +r(A.hE,A.ap) +q(A.hE,[A.i0,A.eb,A.dP,A.e2]) +q(A.hD,[A.jh,A.iX,A.jx]) +r(A.js,A.hN) +r(A.jt,A.js) +r(A.iz,A.jt) +r(A.jw,A.jv) +r(A.be,A.jw) +q(A.ao,[A.dj,A.aw]) +r(A.fz,A.iD) +q(A.c5,[A.bk,A.a1]) +r(A.bc,A.a1) +q(A.aw,[A.fT,A.fL,A.ee,A.ez]) +q(A.e5,[A.eU,A.f4]) +r(A.fJ,A.dN) +r(A.jj,A.cg) +r(A.bz,A.jj) +s(A.e8,A.cQ) +s(A.hm,A.A) +s(A.h1,A.A) +s(A.h2,A.aO) +s(A.h3,A.A) +s(A.h4,A.aO) +s(A.ed,A.j4) +s(A.ew,A.jA) +s(A.js,A.A) +s(A.jt,A.io) +s(A.jv,A.iL) +s(A.jw,A.V)})() +var v={G:typeof self!="undefined"?self:globalThis,typeUniverse:{eC:new Map(),tR:{},eT:{},tPV:{},sEA:[]},mangledGlobalNames:{a:"int",G:"double",ar:"num",l:"String",I:"bool",Q:"Null",m:"List",h:"Object",ak:"Map",B:"JSObject"},mangledNames:{},types:["~()","~(B)","I(l)","Q()","G(ar)","~(a)","l(l)","~(h,X)","~(h?)","a(aB,a)","O()","Q(B)","D<~>()","~(~())","O(l)","h?(h?)","D()","D<~>(ds)","~(@)","~(B?,m?)","l(a)","a(aB)","Q(h,X)","~(bO,a,a,a)","I(~)","D()","ar?(m)","@()","I()","Q(h?,X)","B()","~(h[X?])","a(ap,a,a,a)","a(ap,a)","a(aB,a,a,aQ)","~(bO,a)","a4(l)","a(O)","l(O)","Q(@)","a(a)","a(a,a)","~(@,X)","a()","D()","ak(m)","a(m)","~(h?,h?)","Q(aA)","D(~)","Q(~())","@(@,l)","@(l)","I(a)","0&(l,a?)","B(y)","e0()","D()","D()","~(aj)","@(@)","~(I,I,I,m<+(bB,l)>)","Q(b9,b9)","l(l?)","l(h?)","~(lq,m)","h?(~)","~(z,Y,z,~())","~(aQ,a)","aB?(ap,a,a,a,a)","a(ap,a,a)","Q(@,X)","a(ap?,a,a)","D<~>(av)","a?(a)","Q(~)","a(aB,aQ)","bP?/(av)","a(aB,a,a)","a(a())","~(~(a,l,a),a,a,a,aQ)","Q(I)","D()","a(bO,a,a,a,a)","cq<@>?()","a(lC,a)","a(lC,a,a)","~(en)","av()","B(B?)","~(d4)","D<~>(a,b2)","D<~>(a)","b2()","D(l)","m(a4)","a(a4)","by()","l(a4)","bM()","m(y)","O(l,l)","a4()","a(@,@)","I(h?)","~(z?,Y?,z,h,X)","0^(z?,Y?,z,0^())","0^(z?,Y?,z,0^(1^),1^)","0^(z?,Y?,z,0^(1^,2^),1^,2^)","0^()(z,Y,z,0^())","0^(1^)(z,Y,z,0^(1^))","0^(1^,2^)(z,Y,z,0^(1^,2^))","a_?(z,Y,z,h,X?)","~(z?,Y?,z,~())","cP(z,Y,z,bj,~())","cP(z,Y,z,bj,~(cP))","~(z,Y,z,l)","z(z?,Y?,z,fC?,ak?)","0^(0^,0^)","bS(h?)","D()","I?(m)","I?(m<@>)","bk(c6)","a1(c6)","bc(c6)","~(a,@)","a(a(a),a)"],interceptorsByTag:null,leafTags:null,arrayRti:Symbol("$ti"),rttc:{"2;":(a,b)=>c=>c instanceof A.am&&a.b(c.a)&&b.b(c.b),"2;file,outFlags":(a,b)=>c=>c instanceof A.cW&&a.b(c.a)&&b.b(c.b),"2;result,resultCode":(a,b)=>c=>c instanceof A.h5&&a.b(c.a)&&b.b(c.b)}} +A.wl(v.typeUniverse,JSON.parse('{"b9":"cz","iu":"cz","dh":"cz","yU":"cC","y":{"m":["1"],"a8":[],"w":["1"],"B":[],"f":["1"],"aF":["1"]},"i7":{"I":[],"U":[]},"f7":{"Q":[],"U":[]},"a8":{"B":[]},"cz":{"a8":[],"B":[]},"i6":{"fo":[]},"l9":{"y":["1"],"m":["1"],"a8":[],"w":["1"],"B":[],"f":["1"],"aF":["1"]},"eN":{"H":["1"]},"dS":{"G":[],"ar":[],"aL":["ar"]},"f6":{"G":[],"a":[],"ar":[],"aL":["ar"],"U":[]},"i9":{"G":[],"ar":[],"aL":["ar"],"U":[]},"cx":{"l":[],"aL":["l"],"ll":[],"aF":["@"],"U":[]},"cU":{"f":["2"]},"eT":{"H":["2"]},"d5":{"cU":["1","2"],"f":["2"],"f.E":"2"},"fM":{"d5":["1","2"],"cU":["1","2"],"w":["2"],"f":["2"],"f.E":"2"},"fI":{"A":["2"],"m":["2"],"cU":["1","2"],"w":["2"],"f":["2"]},"as":{"fI":["1","2"],"A":["2"],"m":["2"],"cU":["1","2"],"w":["2"],"f":["2"],"A.E":"2","f.E":"2"},"dT":{"W":[]},"hH":{"A":["a"],"cQ":["a"],"m":["a"],"w":["a"],"f":["a"],"A.E":"a","cQ.E":"a"},"w":{"f":["1"]},"P":{"w":["1"],"f":["1"]},"df":{"P":["1"],"w":["1"],"f":["1"],"f.E":"1","P.E":"1"},"bb":{"H":["1"]},"aS":{"f":["2"],"f.E":"2"},"d8":{"aS":["1","2"],"w":["2"],"f":["2"],"f.E":"2"},"dd":{"H":["2"]},"K":{"P":["2"],"w":["2"],"f":["2"],"f.E":"2","P.E":"2"},"b3":{"f":["1"],"f.E":"1"},"bC":{"H":["1"]},"f2":{"f":["2"],"f.E":"2"},"f3":{"H":["2"]},"dg":{"f":["1"],"f.E":"1"},"f_":{"dg":["1"],"w":["1"],"f":["1"],"f.E":"1"},"fw":{"H":["1"]},"cc":{"f":["1"],"f.E":"1"},"dO":{"cc":["1"],"w":["1"],"f":["1"],"f.E":"1"},"fp":{"H":["1"]},"fq":{"f":["1"],"f.E":"1"},"fr":{"H":["1"]},"d9":{"w":["1"],"f":["1"],"f.E":"1"},"f0":{"H":["1"]},"fA":{"f":["1"],"f.E":"1"},"fB":{"H":["1"]},"c1":{"f":["+(a,1)"],"f.E":"+(a,1)"},"d7":{"c1":["1"],"w":["+(a,1)"],"f":["+(a,1)"],"f.E":"+(a,1)"},"db":{"H":["+(a,1)"]},"e8":{"A":["1"],"cQ":["1"],"m":["1"],"w":["1"],"f":["1"]},"fn":{"P":["1"],"w":["1"],"f":["1"],"f.E":"1","P.E":"1"},"am":{"cV":[],"ck":[]},"cW":{"cV":[],"ck":[]},"h5":{"cV":[],"ck":[]},"eV":{"ak":["1","2"]},"d6":{"eV":["1","2"],"ak":["1","2"]},"dt":{"f":["1"],"f.E":"1"},"fW":{"H":["1"]},"i3":{"aN":[],"c0":[]},"dQ":{"aN":[],"c0":[]},"fg":{"ce":[],"W":[]},"ib":{"W":[]},"iK":{"W":[]},"iq":{"af":[]},"h7":{"X":[]},"aN":{"c0":[]},"hF":{"aN":[],"c0":[]},"hG":{"aN":[],"c0":[]},"iH":{"aN":[],"c0":[]},"iE":{"aN":[],"c0":[]},"dJ":{"aN":[],"c0":[]},"iA":{"W":[]},"c2":{"V":["1","2"],"qy":["1","2"],"ak":["1","2"],"V.K":"1","V.V":"2"},"c3":{"w":["1"],"f":["1"],"f.E":"1"},"fa":{"H":["1"]},"fb":{"w":["1"],"f":["1"],"f.E":"1"},"c4":{"H":["1"]},"f8":{"w":["aR<1,2>"],"f":["aR<1,2>"],"f.E":"aR<1,2>"},"f9":{"H":["aR<1,2>"]},"cV":{"ck":[]},"cy":{"vq":[],"ll":[]},"em":{"fm":[],"dU":[]},"j1":{"f":["fm"],"f.E":"fm"},"j2":{"H":["fm"]},"e7":{"dU":[]},"jy":{"f":["dU"],"f.E":"dU"},"jz":{"H":["dU"]},"dV":{"cC":[],"a8":[],"B":[],"d4":[],"U":[]},"dW":{"bd":[],"l7":[],"A":["a"],"a9":["a"],"aG":["a"],"m":["a"],"ba":["a"],"a8":[],"w":["a"],"B":[],"aF":["a"],"f":["a"],"aO":["a"],"U":[],"A.E":"a"},"cE":{"bd":[],"b2":[],"A":["a"],"a9":["a"],"aG":["a"],"m":["a"],"ba":["a"],"a8":[],"w":["a"],"B":[],"aF":["a"],"f":["a"],"aO":["a"],"U":[],"A.E":"a"},"cC":{"a8":[],"B":[],"d4":[],"U":[]},"fd":{"a8":[],"B":[]},"jD":{"d4":[]},"fc":{"a8":[],"oR":[],"B":[],"U":[]},"aG":{"ba":["1"],"a8":[],"B":[],"aF":["1"]},"cD":{"A":["G"],"aG":["G"],"m":["G"],"ba":["G"],"a8":[],"w":["G"],"B":[],"aF":["G"],"f":["G"],"aO":["G"]},"bd":{"A":["a"],"aG":["a"],"m":["a"],"ba":["a"],"a8":[],"w":["a"],"B":[],"aF":["a"],"f":["a"],"aO":["a"]},"ih":{"cD":[],"kM":[],"A":["G"],"a9":["G"],"aG":["G"],"m":["G"],"ba":["G"],"a8":[],"w":["G"],"B":[],"aF":["G"],"f":["G"],"aO":["G"],"U":[],"A.E":"G"},"ii":{"cD":[],"kN":[],"A":["G"],"a9":["G"],"aG":["G"],"m":["G"],"ba":["G"],"a8":[],"w":["G"],"B":[],"aF":["G"],"f":["G"],"aO":["G"],"U":[],"A.E":"G"},"ij":{"bd":[],"l6":[],"A":["a"],"a9":["a"],"aG":["a"],"m":["a"],"ba":["a"],"a8":[],"w":["a"],"B":[],"aF":["a"],"f":["a"],"aO":["a"],"U":[],"A.E":"a"},"ik":{"bd":[],"l8":[],"A":["a"],"a9":["a"],"aG":["a"],"m":["a"],"ba":["a"],"a8":[],"w":["a"],"B":[],"aF":["a"],"f":["a"],"aO":["a"],"U":[],"A.E":"a"},"il":{"bd":[],"m9":[],"A":["a"],"a9":["a"],"aG":["a"],"m":["a"],"ba":["a"],"a8":[],"w":["a"],"B":[],"aF":["a"],"f":["a"],"aO":["a"],"U":[],"A.E":"a"},"im":{"bd":[],"ma":[],"A":["a"],"a9":["a"],"aG":["a"],"m":["a"],"ba":["a"],"a8":[],"w":["a"],"B":[],"aF":["a"],"f":["a"],"aO":["a"],"U":[],"A.E":"a"},"fe":{"bd":[],"mb":[],"A":["a"],"a9":["a"],"aG":["a"],"m":["a"],"ba":["a"],"a8":[],"w":["a"],"B":[],"aF":["a"],"f":["a"],"aO":["a"],"U":[],"A.E":"a"},"je":{"W":[]},"ex":{"ce":[],"W":[]},"a_":{"W":[]},"t":{"D":["1"]},"a0":{"aV":["1"],"b6":["1"],"b5":["1"],"a0.T":"1"},"ej":{"aj":["1"]},"hd":{"cP":[]},"fD":{"hJ":["1"]},"hc":{"H":["1"]},"ev":{"f":["1"],"f.E":"1"},"fH":{"aC":["1"],"es":["1"],"N":["1"],"N.T":"1"},"bY":{"ch":["1"],"a0":["1"],"aV":["1"],"b6":["1"],"b5":["1"],"a0.T":"1"},"dk":{"e6":["1"],"bn":["1"],"aj":["1"],"ha":["1"],"b6":["1"],"b5":["1"]},"hb":{"dk":["1"],"e6":["1"],"bn":["1"],"aj":["1"],"ha":["1"],"b6":["1"],"b5":["1"]},"fj":{"W":[]},"dl":{"hJ":["1"]},"ad":{"dl":["1"],"hJ":["1"]},"a6":{"dl":["1"],"hJ":["1"]},"fv":{"cd":["1","2"]},"dw":{"e6":["1"],"bn":["1"],"aj":["1"],"ha":["1"],"b6":["1"],"b5":["1"]},"ed":{"j4":["1"],"dw":["1"],"e6":["1"],"bn":["1"],"aj":["1"],"ha":["1"],"b6":["1"],"b5":["1"]},"ew":{"jA":["1"],"dw":["1"],"e6":["1"],"bn":["1"],"aj":["1"],"ha":["1"],"b6":["1"],"b5":["1"]},"aC":{"es":["1"],"N":["1"],"N.T":"1"},"ch":{"a0":["1"],"aV":["1"],"b6":["1"],"b5":["1"],"a0.T":"1"},"dy":{"bn":["1"],"aj":["1"]},"es":{"N":["1"]},"ci":{"cj":["1"]},"ef":{"cj":["@"]},"jc":{"cj":["@"]},"eg":{"aV":["1"]},"fS":{"N":["2"]},"eh":{"a0":["2"],"aV":["2"],"b6":["2"],"b5":["2"],"a0.T":"2"},"h0":{"fS":["1","2"],"N":["2"],"N.T":"2"},"fN":{"aj":["1"]},"ep":{"a0":["2"],"aV":["2"],"b6":["2"],"b5":["2"],"a0.T":"2"},"et":{"cd":["1","2"]},"fG":{"N":["2"],"N.T":"2"},"er":{"et":["1","2"],"cd":["1","2"]},"eA":{"z":[]},"ja":{"eA":[],"z":[]},"ju":{"eA":[],"z":[]},"eB":{"Y":[]},"dq":{"V":["1","2"],"ak":["1","2"],"V.K":"1","V.V":"2"},"ek":{"dq":["1","2"],"V":["1","2"],"ak":["1","2"],"V.K":"1","V.V":"2"},"dr":{"w":["1"],"f":["1"],"f.E":"1"},"fV":{"H":["1"]},"fX":{"h6":["1"],"e1":["1"],"p8":["1"],"w":["1"],"f":["1"]},"du":{"H":["1"]},"cA":{"f":["1"],"f.E":"1"},"fY":{"H":["1"]},"A":{"m":["1"],"w":["1"],"f":["1"]},"V":{"ak":["1","2"]},"fZ":{"w":["2"],"f":["2"],"f.E":"2"},"h_":{"H":["2"]},"e1":{"p8":["1"],"w":["1"],"f":["1"]},"h6":{"e1":["1"],"p8":["1"],"w":["1"],"f":["1"]},"hx":{"cr":["l","m"]},"jC":{"cs":["l","m"],"cd":["l","m"]},"hy":{"cs":["l","m"],"cd":["l","m"]},"hB":{"cr":["m","l"]},"hC":{"cs":["m","l"],"cd":["m","l"]},"n5":{"cr":["1","3"]},"cs":{"cd":["1","2"]},"hW":{"cr":["l","m"]},"iR":{"cr":["l","m"]},"iS":{"cs":["l","m"],"cd":["l","m"]},"jZ":{"aL":["jZ"]},"ct":{"aL":["ct"]},"G":{"ar":[],"aL":["ar"]},"bj":{"aL":["bj"]},"a":{"ar":[],"aL":["ar"]},"m":{"w":["1"],"f":["1"]},"ar":{"aL":["ar"]},"fm":{"dU":[]},"l":{"aL":["l"],"ll":[]},"ab":{"jZ":[],"aL":["jZ"]},"fR":{"uL":["1"]},"jd":{"bu":[]},"hz":{"W":[]},"ce":{"W":[]},"bt":{"W":[]},"e_":{"W":[]},"f5":{"W":[]},"fx":{"W":[]},"iJ":{"W":[]},"aU":{"W":[]},"hK":{"W":[]},"is":{"W":[]},"ft":{"W":[]},"jf":{"af":[]},"aP":{"af":[]},"i4":{"af":[],"W":[]},"eu":{"X":[]},"aI":{"vx":[]},"hi":{"iM":[]},"bo":{"iM":[]},"jb":{"iM":[]},"ip":{"af":[]},"jl":{"vk":[]},"dN":{"bn":["1"],"aj":["1"]},"hL":{"af":[]},"hT":{"af":[]},"av":{"cB":[]},"by":{"cB":[]},"cN":{"bu":[]},"bM":{"aH":[]},"c9":{"bu":[]},"ca":{"aH":[]},"b0":{"bP":[]},"bL":{"cB":[]},"c_":{"cB":[]},"dX":{"bu":[],"aH":[]},"cv":{"aH":[]},"cG":{"aH":[]},"cI":{"aH":[]},"cu":{"aH":[]},"cK":{"aH":[]},"cH":{"aH":[]},"bQ":{"bP":[]},"iB":{"uG":[]},"eo":{"vi":[]},"di":{"bu":[]},"eR":{"af":[]},"ff":{"dL":[]},"hV":{"dL":[]},"bX":{"aA":[]},"jB":{"bX":[],"iI":[],"aA":[]},"h8":{"bX":[],"iI":[],"aA":[]},"eX":{"bX":[],"aA":[]},"j5":{"bX":[],"aA":[]},"fQ":{"bX":[],"aA":[]},"el":{"aA":[]},"jk":{"iI":[],"aA":[]},"bR":{"bu":[]},"cL":{"eW":[]},"eq":{"dL":[]},"ic":{"aA":[]},"cb":{"bA":[]},"cF":{"bu":[]},"hI":{"bA":[]},"ec":{"bA":[],"af":[]},"cJ":{"bA":[]},"de":{"bA":[]},"dM":{"bA":[]},"e3":{"bA":[]},"eY":{"bA":[]},"j9":{"ix":[]},"bV":{"bu":[]},"bB":{"bu":[]},"iV":{"eX":[],"bX":[],"aA":[]},"jE":{"cL":["oS"],"eW":[],"cL.0":"oS"},"it":{"af":[]},"iv":{"dR":[]},"iQ":{"dR":[]},"j0":{"dR":[]},"cM":{"af":[]},"vu":{"m":["h?"],"w":["h?"],"f":["h?"]},"hP":{"oS":[]},"iT":{"A":["h?"],"m":["h?"],"w":["h?"],"f":["h?"],"A.E":"h?"},"iD":{"qd":[]},"e4":{"dK":[]},"i0":{"ap":[]},"jh":{"e9":[],"aB":[]},"be":{"iL":["l","@"],"V":["l","@"],"ak":["l","@"],"V.K":"l","V.V":"@"},"iz":{"A":["be"],"io":["be"],"m":["be"],"w":["be"],"hN":[],"f":["be"],"A.E":"be"},"jr":{"H":["be"]},"ir":{"bu":[]},"cw":{"vw":[]},"aW":{"af":[]},"hE":{"ap":[]},"hD":{"e9":[],"aB":[]},"dj":{"ao":["dj"],"ao.E":"dj"},"bW":{"iy":[]},"iY":{"vm":[]},"iW":{"vn":[]},"iZ":{"vo":[]},"cS":{"lq":[]},"ea":{"A":["bW"],"m":["bW"],"w":["bW"],"f":["bW"],"A.E":"bW"},"eP":{"N":["1"],"N.T":"1"},"fz":{"qd":[]},"eb":{"ap":[]},"iX":{"e9":[],"aB":[]},"ag":{"bu":[]},"bk":{"c5":[]},"a1":{"c5":[]},"bc":{"a1":[],"c5":[]},"dP":{"ap":[]},"aw":{"ao":["aw"]},"ji":{"e9":[],"aB":[]},"fT":{"aw":[],"ao":["aw"],"ao.E":"aw"},"fL":{"aw":[],"ao":["aw"],"ao.E":"aw"},"ee":{"aw":[],"ao":["aw"],"ao.E":"aw"},"ez":{"aw":[],"ao":["aw"],"ao.E":"aw"},"da":{"bu":[]},"e2":{"ap":[]},"jx":{"e9":[],"aB":[]},"bJ":{"X":[]},"id":{"a4":[],"X":[]},"a4":{"X":[]},"bT":{"O":[]},"eU":{"e5":["1"],"pa":["1"]},"fK":{"N":["1"],"N.T":"1"},"fJ":{"dN":["1"],"bn":["1"],"aj":["1"]},"f4":{"e5":["1"],"pa":["1"]},"ei":{"bn":["1"],"aj":["1"]},"e5":{"pa":["1"]},"bz":{"cg":["a"],"A":["a"],"m":["a"],"w":["a"],"f":["a"],"A.E":"a","cg.E":"a"},"cg":{"A":["1"],"m":["1"],"w":["1"],"f":["1"]},"jj":{"cg":["a"],"A":["a"],"m":["a"],"w":["a"],"f":["a"]},"fO":{"N":["1"],"N.T":"1"},"fP":{"aV":["1"]},"l8":{"a9":["a"],"m":["a"],"w":["a"],"f":["a"]},"b2":{"a9":["a"],"m":["a"],"w":["a"],"f":["a"]},"mb":{"a9":["a"],"m":["a"],"w":["a"],"f":["a"]},"l6":{"a9":["a"],"m":["a"],"w":["a"],"f":["a"]},"m9":{"a9":["a"],"m":["a"],"w":["a"],"f":["a"]},"l7":{"a9":["a"],"m":["a"],"w":["a"],"f":["a"]},"ma":{"a9":["a"],"m":["a"],"w":["a"],"f":["a"]},"kM":{"a9":["G"],"m":["G"],"w":["G"],"f":["G"]},"kN":{"a9":["G"],"m":["G"],"w":["G"],"f":["G"]}}')) +A.wk(v.typeUniverse,JSON.parse('{"e8":1,"hm":2,"aG":1,"fv":2,"cj":1,"ur":1}')) +var u={v:"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\u03f6\x00\u0404\u03f4 \u03f4\u03f6\u01f6\u01f6\u03f6\u03fc\u01f4\u03ff\u03ff\u0584\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u05d4\u01f4\x00\u01f4\x00\u0504\u05c4\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u0400\x00\u0400\u0200\u03f7\u0200\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u03ff\u0200\u0200\u0200\u03f7\x00",q:"===== asynchronous gap ===========================\n",l:"Cannot extract a file path from a URI with a fragment component",y:"Cannot extract a file path from a URI with a query component",j:"Cannot extract a non-Windows file path from a file URI with an authority",o:"Cannot fire new event. Controller is already firing an event",c:"Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type",D:"Tried to operate on a released prepared statement"} +var t=(function rtii(){var s=A.ai +return{ie:s("ur"),u:s("a_"),om:s("eP>"),lo:s("d4"),fW:s("oR"),gU:s("cq<@>"),mf:s("dK"),bP:s("aL<@>"),cs:s("ct"),cP:s("dM"),d0:s("eZ"),da:s("bj"),W:s("w<@>"),p:s("bk"),T:s("W"),mA:s("af"),f:s("a1"),pk:s("kM"),kI:s("kN"),B:s("O"),lU:s("O(l)"),Y:s("c0"),fb:s("bP?/(av)"),mj:s("D"),g6:s("D"),nC:s("D"),a6:s("D"),pg:s("D<~>(ds)"),cF:s("dP"),m6:s("l6"),bW:s("l7"),jx:s("l8"),bq:s("f"),id:s("f"),e7:s("f<@>"),fm:s("f"),cz:s("y"),jr:s("y"),d7:s("y"),iw:s("y>"),bb:s("y>"),kG:s("y"),i0:s("y>"),dO:s("y>"),ke:s("y>"),G:s("y"),I:s("y<+(bB,l)>"),lE:s("y"),s:s("y"),bV:s("y"),ms:s("y"),p8:s("y"),J:s("y"),dG:s("y<@>"),t:s("y"),fQ:s("y"),c:s("y"),p4:s("y"),nn:s("y"),kN:s("y"),f7:s("y<~()>"),iy:s("aF<@>"),w:s("f7"),m:s("B"),C:s("aQ"),g:s("b9"),dX:s("ba<@>"),d9:s("a8"),aQ:s("dc"),kk:s("cA"),e:s("cA"),gm:s("m>"),mu:s("m>"),ip:s("m"),fS:s("m>"),h8:s("m"),cE:s("m<+(bB,l)>"),bF:s("m"),jq:s("m"),j:s("m<@>"),L:s("m"),kS:s("m"),dV:s("ak"),av:s("ak<@,@>"),i4:s("aS"),fg:s("K"),iZ:s("K"),jT:s("cB"),em:s("c5"),E:s("bc"),a:s("dV"),jS:s("dW"),dQ:s("cD"),aj:s("bd"),_:s("cE"),bC:s("ca"),P:s("Q"),K:s("h"),q:s("aA"),cL:s("dZ"),lZ:s("yW"),aK:s("+()"),mt:s("+(B?,B)"),po:s("+(h?,a)"),lu:s("fm"),V:s("bO"),o5:s("av"),gc:s("bP"),hF:s("fn"),oy:s("be"),ih:s("e0"),cU:s("bQ"),j9:s("cJ"),f6:s("lC"),a_:s("cb"),g_:s("e2"),dD:s("fq"),bO:s("bR"),ph:s("cM"),l:s("X"),b2:s("iF"),N:s("l"),hU:s("cP"),i:s("a4"),df:s("a4(l)"),jX:s("iI"),aJ:s("U"),do:s("ce"),hM:s("m9"),mC:s("ma"),oR:s("bz"),fi:s("mb"),ev:s("b2"),cx:s("dh"),jJ:s("iM"),d4:s("fy"),n:s("ap"),r:s("aB"),j2:s("e9"),es:s("fz"),cy:s("bV"),cI:s("bW"),dj:s("eb"),U:s("b3"),lS:s("fA"),R:s("ag"),l2:s("ag"),oK:s("ag"),x:s("z"),ju:s("Y"),eT:s("ad"),ld:s("ad"),hg:s("ad"),h:s("ad<~>"),kg:s("ab"),nz:s("dm"),a1:s("fO"),a7:s("t"),hq:s("t"),k:s("t"),j_:s("t<@>"),hy:s("t"),ls:s("t"),D:s("t<~>"),mp:s("ek"),n0:s("ds"),ei:s("en"),eV:s("jp"),i7:s("jq"),gL:s("h9"),hT:s("dx"),ex:s("hb<~>"),h1:s("a6"),hk:s("a6"),F:s("a6<~>"),y:s("I"),iW:s("I(h)"),Q:s("I(l)"),b:s("G"),z:s("@"),mY:s("@()"),mq:s("@(h)"),ng:s("@(h,X)"),ha:s("@(l)"),S:s("a"),cw:s("a()"),os:s("a(a)"),nE:s("b2?/()?"),gK:s("D?"),mU:s("B?"),in:s("m?"),eo:s("cE?"),X:s("h?"),on:s("h?(vu)"),oT:s("aH?"),O:s("bP?"),fw:s("X?"),jv:s("l?"),f2:s("bz?"),nh:s("b2?"),hi:s("ap?"),g9:s("z?"),kz:s("Y?"),lT:s("cj<@>?"),d:s("bD<@,@>?"),nF:s("jm?"),fU:s("I?"),dz:s("G?"),aV:s("a?"),jh:s("ar?"),Z:s("~()?"),n8:s("~(lq,m)?"),v:s("~(B)?"),o:s("ar"),H:s("~"),M:s("~()"),A:s("~(B?,m?)"),i6:s("~(h)"),b9:s("~(h,X)"),my:s("~(cP)"),lt:s("~(a)"),p5:s("~(a,l,a)")}})();(function constants(){var s=hunkHelpers.makeConstList +B.aw=J.i5.prototype +B.b=J.y.prototype +B.c=J.f6.prototype +B.ax=J.dS.prototype +B.a=J.cx.prototype +B.ay=J.b9.prototype +B.az=J.a8.prototype +B.aJ=A.fc.prototype +B.e=A.cE.prototype +B.W=J.iu.prototype +B.E=J.dh.prototype +B.ae=new A.d3(0) +B.k=new A.d3(1) +B.n=new A.d3(2) +B.I=new A.d3(3) +B.bw=new A.d3(-1) +B.af=new A.hy(127) +B.v=new A.dQ(A.yp(),A.ai("dQ")) +B.ag=new A.hx() +B.bx=new A.hC() +B.ah=new A.hB() +B.w=new A.eR() +B.ai=new A.hL() +B.by=new A.hR(A.ai("hR<0&>")) +B.J=new A.hS() +B.K=new A.f0(A.ai("f0<0&>")) +B.h=new A.bk() +B.aj=new A.i4() +B.L=function getTagFallback(o) { + var s = Object.prototype.toString.call(o); + return s.substring(8, s.length - 1); +} +B.ak=function() { + var toStringFunction = Object.prototype.toString; + function getTag(o) { + var s = toStringFunction.call(o); + return s.substring(8, s.length - 1); + } + function getUnknownTag(object, tag) { + if (/^HTML[A-Z].*Element$/.test(tag)) { + var name = toStringFunction.call(object); + if (name == "[object Object]") return null; + return "HTMLElement"; + } + } + function getUnknownTagGenericBrowser(object, tag) { + if (object instanceof HTMLElement) return "HTMLElement"; + return getUnknownTag(object, tag); + } + function prototypeForTag(tag) { + if (typeof window == "undefined") return null; + if (typeof window[tag] == "undefined") return null; + var constructor = window[tag]; + if (typeof constructor != "function") return null; + return constructor.prototype; + } + function discriminator(tag) { return null; } + var isBrowser = typeof HTMLElement == "function"; + return { + getTag: getTag, + getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag, + prototypeForTag: prototypeForTag, + discriminator: discriminator }; +} +B.ap=function(getTagFallback) { + return function(hooks) { + if (typeof navigator != "object") return hooks; + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; + if (userAgent.indexOf("DumpRenderTree") >= 0) return hooks; + if (userAgent.indexOf("Chrome") >= 0) { + function confirm(p) { + return typeof window == "object" && window[p] && window[p].name == p; + } + if (confirm("Window") && confirm("HTMLElement")) return hooks; + } + hooks.getTag = getTagFallback; + }; +} +B.al=function(hooks) { + if (typeof dartExperimentalFixupGetTag != "function") return hooks; + hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag); +} +B.ao=function(hooks) { + if (typeof navigator != "object") return hooks; + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; + if (userAgent.indexOf("Firefox") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "GeoGeolocation": "Geolocation", + "Location": "!Location", + "WorkerMessageEvent": "MessageEvent", + "XMLDocument": "!Document"}; + function getTagFirefox(o) { + var tag = getTag(o); + return quickMap[tag] || tag; + } + hooks.getTag = getTagFirefox; +} +B.an=function(hooks) { + if (typeof navigator != "object") return hooks; + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; + if (userAgent.indexOf("Trident/") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "HTMLDDElement": "HTMLElement", + "HTMLDTElement": "HTMLElement", + "HTMLPhraseElement": "HTMLElement", + "Position": "Geoposition" + }; + function getTagIE(o) { + var tag = getTag(o); + var newTag = quickMap[tag]; + if (newTag) return newTag; + if (tag == "Object") { + if (window.DataView && (o instanceof window.DataView)) return "DataView"; + } + return tag; + } + function prototypeForTagIE(tag) { + var constructor = window[tag]; + if (constructor == null) return null; + return constructor.prototype; + } + hooks.getTag = getTagIE; + hooks.prototypeForTag = prototypeForTagIE; +} +B.am=function(hooks) { + var getTag = hooks.getTag; + var prototypeForTag = hooks.prototypeForTag; + function getTagFixed(o) { + var tag = getTag(o); + if (tag == "Document") { + if (!!o.xmlVersion) return "!Document"; + return "!HTMLDocument"; + } + return tag; + } + function prototypeForTagFixed(tag) { + if (tag == "Document") return null; + return prototypeForTag(tag); + } + hooks.getTag = getTagFixed; + hooks.prototypeForTag = prototypeForTagFixed; +} +B.M=function(hooks) { return hooks; } + +B.m=new A.ie(A.ai("ie")) +B.aq=new A.lj() +B.ar=new A.ff() +B.as=new A.is() +B.f=new A.lu() +B.j=new A.iR() +B.i=new A.iS() +B.x=new A.jc() +B.d=new A.ju() +B.at=new A.nV() +B.N=new A.bj(0) +B.O=new A.da("/database",0,"database") +B.P=new A.da("/database-journal",1,"journal") +B.au=new A.aP("Unknown tag",null,null) +B.av=new A.aP("Cannot read message",null,null) +B.aA=s([11],t.t) +B.G=new A.bB(0,"opfs") +B.Z=new A.bV(0,"opfsShared") +B.a_=new A.bV(1,"opfsLocks") +B.a0=new A.bB(1,"indexedDb") +B.t=new A.bV(2,"sharedIndexedDb") +B.F=new A.bV(3,"unsafeIndexedDb") +B.bj=new A.bV(4,"inMemory") +B.aB=s([B.Z,B.a_,B.t,B.F,B.bj],A.ai("y")) +B.b9=new A.di(0,"insert") +B.ba=new A.di(1,"update") +B.bb=new A.di(2,"delete") +B.o=s([B.b9,B.ba,B.bb],A.ai("y")) +B.aC=s([B.G,B.a0],A.ai("y")) +B.y=s([],t.kG) +B.aD=s([],t.dO) +B.aE=s([],t.G) +B.z=s([],t.s) +B.p=s([],t.c) +B.A=s([],t.I) +B.aG=s([B.O,B.P],A.ai("y")) +B.a1=new A.ag(A.pV(),A.br(),0,"xAccess",t.oK) +B.a2=new A.ag(A.pV(),A.co(),1,"xDelete",A.ai("ag")) +B.ad=new A.ag(A.pV(),A.br(),2,"xOpen",t.oK) +B.ab=new A.ag(A.br(),A.br(),3,"xRead",t.l2) +B.a6=new A.ag(A.br(),A.co(),4,"xWrite",t.R) +B.a7=new A.ag(A.br(),A.co(),5,"xSleep",t.R) +B.a8=new A.ag(A.br(),A.co(),6,"xClose",t.R) +B.ac=new A.ag(A.br(),A.br(),7,"xFileSize",t.l2) +B.a9=new A.ag(A.br(),A.co(),8,"xSync",t.R) +B.aa=new A.ag(A.br(),A.co(),9,"xTruncate",t.R) +B.a4=new A.ag(A.br(),A.co(),10,"xLock",t.R) +B.a5=new A.ag(A.br(),A.co(),11,"xUnlock",t.R) +B.a3=new A.ag(A.co(),A.co(),12,"stopServer",A.ai("ag")) +B.Q=s([B.a1,B.a2,B.ad,B.ab,B.a6,B.a7,B.a8,B.ac,B.a9,B.aa,B.a4,B.a5,B.a3],A.ai("y>")) +B.l=new A.bR(0,"sqlite") +B.aQ=new A.bR(1,"mysql") +B.aR=new A.bR(2,"postgres") +B.aS=new A.bR(3,"duckdb") +B.aT=new A.bR(4,"mariadb") +B.R=s([B.l,B.aQ,B.aR,B.aS,B.aT],A.ai("y
")) +B.aU=new A.cN(0,"custom") +B.aV=new A.cN(1,"deleteOrUpdate") +B.aW=new A.cN(2,"insert") +B.aX=new A.cN(3,"select") +B.B=s([B.aU,B.aV,B.aW,B.aX],A.ai("y")) +B.S=new A.c9(0,"beginTransaction") +B.aK=new A.c9(1,"commit") +B.aL=new A.c9(2,"rollback") +B.T=new A.c9(3,"startExclusive") +B.U=new A.c9(4,"endExclusive") +B.C=s([B.S,B.aK,B.aL,B.T,B.U],A.ai("y")) +B.V={} +B.aH=new A.d6(B.V,[],A.ai("d6")) +B.D=new A.dX(0,"terminateAll") +B.bz=new A.ir(2,"readWriteCreate") +B.q=new A.cF(0,0,"legacy") +B.aM=new A.cF(1,1,"v1") +B.aN=new A.cF(2,2,"v2") +B.aO=new A.cF(3,3,"v3") +B.r=new A.cF(4,4,"v4") +B.aF=s([],t.ke) +B.aP=new A.bQ(B.aF) +B.X=new A.iG("drift.runtime.cancellation") +B.aY=A.bI("d4") +B.aZ=A.bI("oR") +B.b_=A.bI("kM") +B.b0=A.bI("kN") +B.b1=A.bI("l6") +B.b2=A.bI("l7") +B.b3=A.bI("l8") +B.b4=A.bI("h") +B.b5=A.bI("m9") +B.b6=A.bI("ma") +B.b7=A.bI("mb") +B.b8=A.bI("b2") +B.bc=new A.aW(10) +B.bd=new A.aW(12) +B.be=new A.aW(14) +B.bf=new A.aW(2570) +B.bg=new A.aW(3850) +B.bh=new A.aW(522) +B.Y=new A.aW(778) +B.bi=new A.aW(8) +B.u=new A.eu("") +B.bk=new A.nW(B.d,A.xJ()) +B.bl=new A.nX(B.d,A.xK()) +B.bm=new A.nY(B.d,A.xL()) +B.bn=new A.jF(B.d,A.xM()) +B.bo=new A.nZ(B.d,A.xN()) +B.bp=new A.o_(B.d,A.xO()) +B.bq=new A.o0(B.d,A.xP()) +B.br=new A.o1(B.d,A.xQ()) +B.bs=new A.o3(B.d,A.xS()) +B.bt=new A.o4(B.d,A.xT()) +B.bu=new A.o2(B.d,A.xR()) +B.bv=new A.jG(B.d,A.xU()) +B.aI=new A.d6(B.V,[],A.ai("d6")) +B.H=new A.jH(B.d,B.aI)})();(function staticFields(){$.nt=null +$.bh=A.k([],t.G) +$.xi=null +$.qE=null +$.qa=null +$.q9=null +$.th=null +$.t9=null +$.tq=null +$.or=null +$.oy=null +$.pM=null +$.nw=A.k([],A.ai("y?>")) +$.eF=null +$.hp=null +$.hq=null +$.pz=!1 +$.u=B.d +$.nx=null +$.rc=null +$.rd=null +$.re=null +$.rf=null +$.pi=A.mU("_lastQuoRemDigits") +$.pj=A.mU("_lastQuoRemUsed") +$.fF=A.mU("_lastRemUsed") +$.pk=A.mU("_lastRem_nsh") +$.r5="" +$.r6=null +$.rO=null +$.ob=null})();(function lazyInitializers(){var s=hunkHelpers.lazyFinal,r=hunkHelpers.lazy +s($,"yO","tx",()=>A.os("_$dart_dartClosure")) +s($,"yN","dE",()=>A.os("_$dart_dartClosure_dartJSInterop")) +s($,"zS","ug",()=>B.d.bd(new A.oB(),A.ai("D<~>"))) +s($,"zD","u7",()=>A.k([new J.i6()],A.ai("y"))) +s($,"z1","tD",()=>A.cf(A.m8({ +toString:function(){return"$receiver$"}}))) +s($,"z2","tE",()=>A.cf(A.m8({$method$:null, +toString:function(){return"$receiver$"}}))) +s($,"z3","tF",()=>A.cf(A.m8(null))) +s($,"z4","tG",()=>A.cf(function(){var $argumentsExpr$="$arguments$" +try{null.$method$($argumentsExpr$)}catch(q){return q.message}}())) +s($,"z7","tJ",()=>A.cf(A.m8(void 0))) +s($,"z8","tK",()=>A.cf(function(){var $argumentsExpr$="$arguments$" +try{(void 0).$method$($argumentsExpr$)}catch(q){return q.message}}())) +s($,"z6","tI",()=>A.cf(A.r1(null))) +s($,"z5","tH",()=>A.cf(function(){try{null.$method$}catch(q){return q.message}}())) +s($,"za","tM",()=>A.cf(A.r1(void 0))) +s($,"z9","tL",()=>A.cf(function(){try{(void 0).$method$}catch(q){return q.message}}())) +s($,"zd","pZ",()=>A.vP()) +s($,"yT","d2",()=>$.ug()) +s($,"yS","tA",()=>A.w0(!1,B.d,t.y)) +s($,"zq","tW",()=>A.qB(4096)) +s($,"zo","tU",()=>new A.nS().$0()) +s($,"zp","tV",()=>new A.nR().$0()) +s($,"ze","tO",()=>A.va(A.ho(A.k([-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-1,-2,-2,-2,-2,-2,62,-2,62,-2,63,52,53,54,55,56,57,58,59,60,61,-2,-2,-2,-1,-2,-2,-2,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-2,-2,-2,-2,63,-2,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-2,-2,-2,-2,-2],t.t)))) +s($,"zl","bs",()=>A.fE(0)) +s($,"zj","dF",()=>A.fE(1)) +s($,"zk","tR",()=>A.fE(2)) +s($,"zh","q0",()=>$.dF().al(0)) +s($,"zf","q_",()=>A.fE(1e4)) +r($,"zi","tQ",()=>A.R("^\\s*([+-]?)((0x[a-f0-9]+)|(\\d+)|([a-z0-9]+))\\s*$",!1,!1,!1,!1)) +s($,"zg","tP",()=>A.qB(8)) +s($,"zm","tS",()=>typeof FinalizationRegistry=="function"?FinalizationRegistry:null) +s($,"zn","tT",()=>A.R("^[\\-\\.0-9A-Z_a-z~]*$",!0,!1,!1,!1)) +s($,"zz","oM",()=>A.pP(B.b4)) +s($,"zB","u5",()=>Symbol("jsBoxedDartObjectProperty")) +s($,"yV","tB",()=>{var q=new A.jl(new DataView(new ArrayBuffer(A.wP(8)))) +q.i2() +return q}) +s($,"zc","pY",()=>A.uI(B.aC,A.ai("bB"))) +s($,"zU","uh",()=>A.qe($.hw())) +s($,"zN","q1",()=>new A.hM($.pX(),null)) +s($,"yZ","tC",()=>new A.iv(A.R("/",!0,!1,!1,!1),A.R("[^/]$",!0,!1,!1,!1),A.R("^/",!0,!1,!1,!1))) +s($,"z0","hw",()=>new A.j0(A.R("[/\\\\]",!0,!1,!1,!1),A.R("[^/\\\\]$",!0,!1,!1,!1),A.R("^(\\\\\\\\[^\\\\]+\\\\[^\\\\/]+|[a-zA-Z]:[/\\\\])",!0,!1,!1,!1),A.R("^[/\\\\](?![/\\\\])",!0,!1,!1,!1))) +s($,"z_","hv",()=>new A.iQ(A.R("/",!0,!1,!1,!1),A.R("(^[a-zA-Z][-+.a-zA-Z\\d]*://|[^/])$",!0,!1,!1,!1),A.R("[a-zA-Z][-+.a-zA-Z\\d]*://[^/]*",!0,!1,!1,!1),A.R("^/",!0,!1,!1,!1))) +s($,"yY","pX",()=>A.vz()) +s($,"yM","tw",()=>$.dF().aG(0,63).al(0)) +s($,"yL","tv",()=>{var q=$.dF() +return q.aG(0,63).cD(0,q)}) +s($,"yK","hu",()=>$.tB()) +s($,"zb","tN",()=>new A.hY(new WeakMap(),A.ai("hY
"))) +s($,"zE","u8",()=>A.v5(A.k([A.qU("files"),A.qU("blocks")],t.s),t.N)) +s($,"yP","oL",()=>{var q,p,o=A.az(t.N,A.ai("da")) +for(q=0;q<2;++q){p=B.aG[q] +o.q(0,p.c,p)}return o}) +s($,"zL","uf",()=>A.R("^#\\d+\\s+(\\S.*) \\((.+?)((?::\\d+){0,2})\\)$",!0,!1,!1,!1)) +s($,"zG","ua",()=>A.R("^\\s*at (?:(\\S.*?)(?: \\[as [^\\]]+\\])? \\((.*)\\)|(.*))$",!0,!1,!1,!1)) +s($,"zH","ub",()=>A.R("^(.*?):(\\d+)(?::(\\d+))?$|native$",!0,!1,!1,!1)) +s($,"zK","ue",()=>A.R("^\\s*at (?:(?.+) )?(?:\\(?(?:(?\\S+):wasm-function\\[(?\\d+)\\]\\:0x(?[0-9a-fA-F]+))\\)?)$",!0,!1,!1,!1)) +s($,"zF","u9",()=>A.R("^eval at (?:\\S.*?) \\((.*)\\)(?:, .*?:\\d+:\\d+)?$",!0,!1,!1,!1)) +s($,"zs","tY",()=>A.R("(\\S+)@(\\S+) line (\\d+) >.* (Function|eval):\\d+:\\d+",!0,!1,!1,!1)) +s($,"zu","u_",()=>A.R("^(?:([^@(/]*)(?:\\(.*\\))?((?:/[^/]*)*)(?:\\(.*\\))?@)?(.*?):(\\d*)(?::(\\d*))?$",!0,!1,!1,!1)) +s($,"zw","u1",()=>A.R("^(?.*?)@(?:(?\\S+).*?:wasm-function\\[(?\\d+)\\]:0x(?[0-9a-fA-F]+))$",!0,!1,!1,!1)) +s($,"zC","u6",()=>A.R("^.*?wasm-function\\[(?.*)\\]@\\[wasm code\\]$",!0,!1,!1,!1)) +s($,"zx","u2",()=>A.R("^(\\S+)(?: (\\d+)(?::(\\d+))?)?\\s+([^\\d].*)$",!0,!1,!1,!1)) +s($,"zr","tX",()=>A.R("<(|[^>]+)_async_body>",!0,!1,!1,!1)) +s($,"zA","u4",()=>A.R("^\\.",!0,!1,!1,!1)) +s($,"yQ","ty",()=>A.R("^[a-zA-Z][-+.a-zA-Z\\d]*://",!0,!1,!1,!1)) +s($,"yR","tz",()=>A.R("^([a-zA-Z]:[\\\\/]|\\\\\\\\)",!0,!1,!1,!1)) +s($,"zI","uc",()=>A.R("(?:^|\\n) ?at ",!0,!1,!1,!1)) +s($,"zJ","ud",()=>A.R(" ?at ",!0,!1,!1,!1)) +s($,"zt","tZ",()=>A.R("@\\S+ line \\d+ >.* (Function|eval):\\d+:\\d+",!0,!1,!1,!1)) +s($,"zv","u0",()=>A.R("^(([.0-9A-Za-z_$/<]|\\(.*\\))*@)?[^\\s]*:\\d*$",!0,!1,!0,!1)) +s($,"zy","u3",()=>A.R("^[^\\s<][^\\s]*( \\d+(:\\d+)?)?[ \\t]+[^\\s]+$",!0,!1,!0,!1)) +s($,"zT","q2",()=>A.R("^\\n?$",!0,!1,!0,!1))})();(function nativeSupport(){!function(){var s=function(a){var m={} +m[a]=1 +return Object.keys(hunkHelpers.convertToFastObject(m))[0]} +v.getIsolateTag=function(a){return s("___dart_"+a+v.isolateTag)} +var r="___dart_isolate_tags_" +var q=Object[r]||(Object[r]=Object.create(null)) +var p="_ZxYxX" +for(var o=0;;o++){var n=s(p+"_"+o+"_") +if(!(n in q)){q[n]=1 +v.isolateTag=n +break}}v.dispatchPropertyName=v.getIsolateTag("dispatch_record")}() +hunkHelpers.setOrUpdateInterceptorsByTag({SharedArrayBuffer:A.cC,ArrayBuffer:A.dV,ArrayBufferView:A.fd,DataView:A.fc,Float32Array:A.ih,Float64Array:A.ii,Int16Array:A.ij,Int32Array:A.dW,Int8Array:A.ik,Uint16Array:A.il,Uint32Array:A.im,Uint8ClampedArray:A.fe,CanvasPixelArray:A.fe,Uint8Array:A.cE}) +hunkHelpers.setOrUpdateLeafTags({SharedArrayBuffer:true,ArrayBuffer:true,ArrayBufferView:false,DataView:true,Float32Array:true,Float64Array:true,Int16Array:true,Int32Array:true,Int8Array:true,Uint16Array:true,Uint32Array:true,Uint8ClampedArray:true,CanvasPixelArray:true,Uint8Array:false}) +A.aG.$nativeSuperclassTag="ArrayBufferView" +A.h1.$nativeSuperclassTag="ArrayBufferView" +A.h2.$nativeSuperclassTag="ArrayBufferView" +A.cD.$nativeSuperclassTag="ArrayBufferView" +A.h3.$nativeSuperclassTag="ArrayBufferView" +A.h4.$nativeSuperclassTag="ArrayBufferView" +A.bd.$nativeSuperclassTag="ArrayBufferView"})() +Function.prototype.$0=function(){return this()} +Function.prototype.$1=function(a){return this(a)} +Function.prototype.$2=function(a,b){return this(a,b)} +Function.prototype.$3$3=function(a,b,c){return this(a,b,c)} +Function.prototype.$2$2=function(a,b){return this(a,b)} +Function.prototype.$1$1=function(a){return this(a)} +Function.prototype.$2$1=function(a){return this(a)} +Function.prototype.$3=function(a,b,c){return this(a,b,c)} +Function.prototype.$4=function(a,b,c,d){return this(a,b,c,d)} +Function.prototype.$3$1=function(a){return this(a)} +Function.prototype.$2$3=function(a,b,c){return this(a,b,c)} +Function.prototype.$1$2=function(a,b){return this(a,b)} +Function.prototype.$5=function(a,b,c,d,e){return this(a,b,c,d,e)} +Function.prototype.$3$4=function(a,b,c,d){return this(a,b,c,d)} +Function.prototype.$2$4=function(a,b,c,d){return this(a,b,c,d)} +Function.prototype.$1$4=function(a,b,c,d){return this(a,b,c,d)} +Function.prototype.$3$6=function(a,b,c,d,e,f){return this(a,b,c,d,e,f)} +Function.prototype.$2$5=function(a,b,c,d,e){return this(a,b,c,d,e)} +Function.prototype.$1$0=function(){return this()} +convertAllToFastObject(w) +convertToFastObject($);(function(a){if(typeof document==="undefined"){a(null) +return}if(typeof document.currentScript!="undefined"){a(document.currentScript) +return}var s=document.scripts +function onLoad(b){for(var q=0;q`, + `CacheInterceptor`, баннер «данные на …» (фаза 5). diff --git a/docs/ai/offline-cache.md b/docs/ai/offline-cache.md new file mode 100644 index 0000000..6f67c15 --- /dev/null +++ b/docs/ai/offline-cache.md @@ -0,0 +1,91 @@ +# Offline-кэш (фаза 5) + +Контракт, по которому каждый экран Flutter-клиента получает поддержку офлайна. Реализован +целиком на `core/cache/*` + один Dio-интерцептор — экрану достаточно поменять тип провайдера +и один раз показать баннер, ничего не меняя в том, как он делает запросы. + +## Идея + +Кэш живёт не в провайдерах и не в экранах, а в `Dio` — на уровне HTTP-транспорта, ниже +сгенерированного `fintracker_api`-клиента: + +- **`CacheInterceptor`** (`core/cache/cache_interceptor.dart`) добавлен в `apiProvider` + (`core/api/api_client.dart`) последним, после `DateQueryInterceptor` и `_AuthInterceptor`. + - `onResponse`: успешный `GET` (статус 200) пишется в кэш по ключу `путь?отсортированные_параметры` + (`CacheInterceptor.requestKey`) — fire-and-forget, ответ не ждёт записи. + - `onError`: если запрос — `GET` и ошибка сетевая (`connectionError`, `connectionTimeout`, + `receiveTimeout`, `sendTimeout`), интерцептор ищет последний закэшированный ответ по тому же + ключу и, если он есть, подменяет ошибку успешным `Response` с `extra['fetchedAt']` — + временем, когда этот ответ был реально получен от сервера. Если в кэше пусто — ошибка идёт + дальше как обычно. + - Мутации (не-`GET`) никогда не кэшируются и никогда не подменяются: упавший `POST/PATCH/DELETE` + обязан остаться ошибкой. + - Реальная ошибка сервера (4xx/5xx, `DioExceptionType.badResponse`) кэшем не перекрывается — + подменяется только сетевая недоступность. +- **`ResponseCacheDatabase`** (`core/cache/response_cache.dart`) — таблица `drift` с одной строкой + на ключ (`requestKey`, `body` как JSON-строка, `fetchedAt`). `driftDatabase()` из + `package:drift_flutter` сам выбирает бэкенд: нативный sqlite (FFI) на Android/iOS/desktop, + wasm+OPFS (с падением на IndexedDB) в браузере. +- Сгенерированный API-клиент (`app/packages/api_client`) копирует `Response.extra` в возвращаемый + `Response` без изменений (проверено в `networth_api.dart` и остальных) — значит, + `extra['fetchedAt']` долетает до провайдера без единой правки в генерируемом коде. + +## Контракт для экрана + +1. **Провайдер оборачивает данные в `Cached`** (`core/cache/cached.dart`) вместо голого `T`: + + ```dart + final xProvider = FutureProvider.autoDispose>((ref) async { + final r = await ref.watch(apiProvider).getXApi().x(); + return r.cached; // extension: Cached(r.data as T, fetchedAt: r.extra['fetchedAt']) + }); + ``` + + Для эндпоинтов, которые сами обрабатывают `null`/404 (см. `metricsStatusProvider`, + `portfolioSummaryHomeProvider` в `features/home/providers.dart`), оборачивайте вручную: + `Cached(value, fetchedAt: r.extra['fetchedAt'] as DateTime?)`. + +2. **Экран разворачивает `.data`** там, где раньше было голое значение + (`data: (cached) => Widget(x: cached.data)`), и считает баннер один раз на весь экран: + + ```dart + final stale = oldestFetch([a.valueOrNull?.fetchedAt, b.valueOrNull?.fetchedAt, ...]); + // ... + if (stale != null) StaleBanner(fetchedAt: stale), + ``` + + `oldestFetch` берёт самое старое время среди тех провайдеров, что реально пришли из кэша + (`fetchedAt != null`); один баннер на экран — не один на плитку, иначе на дашборде из 8 + виджетов это станет шумом. `StaleBanner` (`core/widgets/stale_banner.dart`) — тонкий + контейнер в цветах темы («Нет соединения — данные на 12.09.2026 10:31»), без логики. + +3. **В тестах экрана — оверрайдить КАЖДЫЙ провайдер**, который экран смотрит, значением + `Cached(...)`. Если забыть один (как было с `portfolioSummaryHomeProvider` до этой фазы), + тест провалится не сразу, а тихо создаст настоящий `apiProvider` → настоящий + `ResponseCacheDatabase` — drift выведет предупреждение "multiple databases" и тест будет + трогать реальный sqlite-файл вместо теста в изоляции. Смотрите `test/home_page_test.dart` + и `_overrides()` в нём как образец. + +Эталонная реализация — весь `features/home/` (провайдеры + `HomePage`). Остальные ~24 экрана +на паттерне `AsyncValueView`/`EmptyState` переводятся по этому же рецепту, независимо друг от +друга (можно параллельно, в отдельных worktree). + +## Веб: sqlite3.wasm + drift_worker.js + +Собранные ассеты лежат в `app/web/sqlite3.wasm` и `app/web/drift_worker.js`, закоммичены (как +`openapi/openapi.json` и Dart-клиент). Пересобирать `just app-web-assets`, когда обновляются +версии пакетов `drift`/`sqlite3` — recipe качает `sqlite3.wasm` с GitHub-релиза пакета +`sqlite3.dart`, версия релиза берётся из `flutter pub deps --json`, и компилирует +`drift_worker.js` из исходника `package:drift/web/drift_worker.dart` через `dart compile js`. +`just build-web` вызывает это автоматически. + +## Что не проверено + +`flutter build linux --debug` на сборке нативного sqlite3 не дошёл до проверки — упал раньше, +на несвязанной с кэшем проблеме `flutter_secure_storage_linux` (старый `nlohmann/json.hpp`, +`-Werror=deprecated-literal-operator` на новых компиляторах; плюс сначала не хватало +`libsecret`/`pkg-config` в `flake.nix` — это уже добавлено). Сам `sqlite3`/drift на Dart VM +(native FFI) отработал корректно — это видно по `flutter test`, где `ResponseCacheDatabase` +реально открывает файл через нативный бэкенд без ошибок. Кто будет делать пункт «Linux/Windows +в CI» — начните с починки `flutter_secure_storage_linux` (обновить пакет или добавить +`-Wno-deprecated-literal-operator` в его CMake), это отдельная от кэша проблема. diff --git a/docs/ai/ops.md b/docs/ai/ops.md index a3b62b9..19e9a57 100644 --- a/docs/ai/ops.md +++ b/docs/ai/ops.md @@ -21,8 +21,7 @@ docker compose up -d db docker compose exec -T db pg_restore -U $POSTGRES_USER -d $POSTGRES_DB --clean < backups/fintracker_.dump docker compose up -d ``` -Метрики пересчитываются из raw/core: `docker compose exec worker fintracker metrics refresh` -(появится в фазе 2). +Метрики пересчитываются из raw/core: `docker compose exec worker fintracker metrics refresh`. ## Секреты diff --git a/docs/ai/plan.md b/docs/ai/plan.md index 6e24f58..980157a 100644 --- a/docs/ai/plan.md +++ b/docs/ai/plan.md @@ -523,6 +523,33 @@ backup/restore, страница здоровья (`/sync/status`, счётчи Проверка: приложение работает offline на кэше; APK подписывается и ставится; restore из ночного `pg_dump` на чистом VPS + `fintracker metrics refresh` воспроизводит все метрики. +**Статус: в работе.** Готово до этой правки (не с нуля): +адаптивные раскладки (`app_shell.dart`, breakpoints 600/1200), тёмная тема +(`theme_controller.dart`), общий паттерн пустых/ошибочных состояний +(`AsyncValueView` — 25 экранов, `EmptyState` — 22), backup — `pg-backup`-сайдкар в +`docker-compose.yml` (ночной `pg_dump -Fc`, retention 14 дней) и runbook в `ops.md`. + +Сделано в этом заходе: + +- **Offline-кэш** — контракт целиком в [offline-cache.md](docs/ai/offline-cache.md): + `CacheInterceptor` в `apiProvider` кэширует каждый успешный `GET` по `путь+параметры` в + `drift` (sqlite нативно, wasm+OPFS в браузере) и подменяет им сетевую ошибку; + провайдер отдаёт `Cached`, экран показывает один баннер «Нет соединения — данные на …». + Реализовано и протестировано целиком на `features/home/` (дашборд — самый частый экран); + остальные ~24 экрана переводятся по тому же контракту независимо друг от друга. + `app/web/sqlite3.wasm` + `app/web/drift_worker.js` закоммичены, пересборка — + `just app-web-assets`. +- `flutter build linux --debug` не пройден до конца: `flutter_secure_storage_linux` падает на + устаревшем `nlohmann/json.hpp` под `-Werror=deprecated-literal-operator` современных + компиляторов — не связано с кэшем, чинить отдельно перед пунктом CI/Linux. `libsecret` + + `pkg-config` для линуксовой сборки уже добавлены в `flake.nix`. +- `docs/ai/ops.md` поправлен: убрана ссылка на «появится в фазе 2» у `metrics refresh`. + +Не начато: CI-джоба для Flutter (`just app-check` в CI, сборка Linux/Windows), консолидация +страницы здоровья (сейчас статусы синка на `/sync`, data quality — блоком на дашборде), +Android release-подпись (нужен keystore от пользователя), off-site бэкап (см. открытый +вопрос §7.9 — решения ещё нет). + ## 7. Открытые вопросы (дефолт в скобках, можно менять по ходу) 1. Хранение refresh-токена в web: `localStorage` (дефолт: да, один пользователь, TLS) или diff --git a/flake.nix b/flake.nix index 4d32f38..ab2bca7 100644 --- a/flake.nix +++ b/flake.nix @@ -24,6 +24,8 @@ pkgs.just pkgs.postgresql_17 # local dev cluster (`just db-start`) and psql pkgs.openapi-generator-cli # `just gen-client` + pkgs.jq # `just app-web-assets` reads package_config.json / pub deps + pkgs.curl # `just app-web-assets` fetches sqlite3.wasm from GitHub releases ]; commonHook = '' @@ -49,7 +51,12 @@ }; # backend + Flutter toolchain (large download on first use) app = pkgs.mkShell { - packages = backendTools ++ [ pkgs.flutter ]; + packages = backendTools ++ [ + pkgs.flutter + # Linux desktop build: flutter_secure_storage_linux links libsecret via pkg-config + pkgs.pkg-config + pkgs.libsecret + ]; shellHook = commonHook; }; }; diff --git a/justfile b/justfile index 04a82fd..6e4a91d 100644 --- a/justfile +++ b/justfile @@ -22,11 +22,22 @@ web: # --- flutter --- -build-web: +build-web: app-web-assets cd app && flutter pub get && flutter build web --release +# fetch sqlite3.wasm + compile drift_worker.js into app/web/ (offline cache, drift/wasm+OPFS — +# see docs/ai/offline-cache.md). Re-run whenever the drift/sqlite3 package versions change; +# both files are committed, so this is not needed on every build. +app-web-assets: + cd app && flutter pub get + v=$(cd app && flutter pub deps --json | jq -r '.packages[] | select(.name=="sqlite3") | .version') && \ + curl -fL -o app/web/sqlite3.wasm "https://github.com/simolus3/sqlite3.dart/releases/download/sqlite3-$v/sqlite3.wasm" + d=$(jq -r '.packages[] | select(.name=="drift") | .rootUri' app/.dart_tool/package_config.json | sed 's#^file://##') && \ + cd app && dart compile js -O2 --packages=.dart_tool/package_config.json -o web/drift_worker.js "$d/web/drift_worker.dart" && \ + rm -f web/drift_worker.js.deps web/drift_worker.js.map + app-check: - cd app && flutter analyze && flutter test + cd app && flutter pub get && flutter analyze && flutter test # one-off source sync against the local dev DB (zenmoney | cbr) pull SOURCE: