@niledatabase/server 1.0.0-alpha.197 → 1.0.0-alpha.199

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/Server.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ServerConfig } from './types';
1
+ import { InstanceConfig, ServerConfig } from './types';
2
2
  import { Config } from './utils/Config';
3
3
  import Auth from './auth';
4
4
  import Users from './users';
@@ -13,6 +13,7 @@ declare class Server {
13
13
  config: Config;
14
14
  api: Api;
15
15
  private manager;
16
+ private servers;
16
17
  constructor(config?: ServerConfig);
17
18
  setConfig(cfg: Config): void;
18
19
  set database(val: string | void);
@@ -24,6 +25,12 @@ declare class Server {
24
25
  get token(): string | undefined | null;
25
26
  set token(token: string | undefined | null);
26
27
  get db(): NileDatabaseI;
28
+ /**
29
+ * A utility function if you want to manage different NileDB instances yourself
30
+ * returns the global Server object, an existing server that's already been configured,
31
+ * or a new one if the config isn't in the cache
32
+ */
33
+ getInstance(config: InstanceConfig): Server;
27
34
  }
28
35
  export default function Nile(config: ServerConfig): Server;
29
36
  export {};
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import { Knex } from 'knex';
2
3
  import { Config } from '../utils/Config';
3
4
  declare class NileDatabase {
@@ -6,6 +7,7 @@ declare class NileDatabase {
6
7
  userId?: undefined | null | string;
7
8
  id: string;
8
9
  config: any;
10
+ timer: NodeJS.Timeout | undefined;
9
11
  constructor(config: Config, id: string);
10
12
  startTimeout(): void;
11
13
  }
@@ -1372,7 +1372,8 @@ var Tenants = /*#__PURE__*/function (_Config) {
1372
1372
  // doing this now, to provide flexibility later
1373
1373
  var NileDatabase = /*#__PURE__*/function () {
1374
1374
  function NileDatabase(config, id) {
1375
- var _config$db$connection;
1375
+ var _config$db$connection,
1376
+ _this = this;
1376
1377
  this.id = id;
1377
1378
  var poolConfig = {};
1378
1379
  var afterCreate = function afterCreate(conn, done) {
@@ -1418,14 +1419,20 @@ var NileDatabase = /*#__PURE__*/function () {
1418
1419
  // start the timer for cleanup
1419
1420
  this.startTimeout();
1420
1421
  this.knex = knex(knexConfig);
1422
+ this.knex.on('query', function () {
1423
+ _this.startTimeout();
1424
+ });
1421
1425
  }
1422
1426
  var _proto = NileDatabase.prototype;
1423
1427
  _proto.startTimeout = function startTimeout() {
1424
- var _this = this,
1428
+ var _this2 = this,
1425
1429
  _this$config$db$pool$;
1426
- setTimeout(function () {
1427
- _this.knex.destroy();
1428
- evictPool(_this.id);
1430
+ if (this.timer) {
1431
+ clearTimeout(this.timer);
1432
+ }
1433
+ this.timer = setTimeout(function () {
1434
+ _this2.knex.destroy();
1435
+ evictPool(_this2.id);
1429
1436
  }, (_this$config$db$pool$ = this.config.db.pool.idleTimeoutMillis) != null ? _this$config$db$pool$ : 30000);
1430
1437
  };
1431
1438
  return NileDatabase;
@@ -1466,6 +1473,14 @@ var DBManager = /*#__PURE__*/function () {
1466
1473
  return DBManager;
1467
1474
  }();
1468
1475
 
1476
+ var getServerId = function getServerId(config) {
1477
+ var cfg = new Config(config);
1478
+ return makeServerId(cfg);
1479
+ };
1480
+ var makeServerId = function makeServerId(config) {
1481
+ return Buffer.from(JSON.stringify(config), 'base64').toString();
1482
+ };
1483
+
1469
1484
  var init = function init(config) {
1470
1485
  var auth = new Auth(config);
1471
1486
  var users = new Users(config);
@@ -1480,6 +1495,7 @@ var Server = /*#__PURE__*/function () {
1480
1495
  function Server(config) {
1481
1496
  var _this = this;
1482
1497
  this.config = new Config(config);
1498
+ this.servers = new Map();
1483
1499
  var _init = init(this.config),
1484
1500
  api = _init[0];
1485
1501
  this.api = api;
@@ -1498,6 +1514,25 @@ var Server = /*#__PURE__*/function () {
1498
1514
  _proto.setConfig = function setConfig(cfg) {
1499
1515
  this.config = new Config(cfg);
1500
1516
  };
1517
+ /**
1518
+ * A utility function if you want to manage different NileDB instances yourself
1519
+ * returns the global Server object, an existing server that's already been configured,
1520
+ * or a new one if the config isn't in the cache
1521
+ */
1522
+ _proto.getInstance = function getInstance(config) {
1523
+ var _config = _extends({}, this.config, config);
1524
+ var serverId = getServerId(_config);
1525
+ var currentServerId = makeServerId(this.config);
1526
+ if (serverId === currentServerId) {
1527
+ return this;
1528
+ }
1529
+ var existing = this.servers.get(serverId);
1530
+ if (existing) {
1531
+ return existing;
1532
+ }
1533
+ this.servers.set(serverId, new Server(_config));
1534
+ return this.servers.get(serverId);
1535
+ };
1501
1536
  _createClass(Server, [{
1502
1537
  key: "database",
1503
1538
  set: function set(val) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.cjs.development.js","sources":["../src/utils/Config.ts","../src/utils/ResponseError.ts","../src/utils/Event/index.ts","../src/utils/fetch.ts","../src/utils/Requester/index.ts","../src/auth/index.ts","../src/users/index.ts","../src/tenants/index.ts","../src/db/NileInstance.ts","../src/db/DBManager.ts","../src/Server.ts","../src/index.ts"],"sourcesContent":["import { PgConnectionConfig, ServerConfig } from '../types';\n\nclass ApiConfig {\n public cookieKey?: string;\n public basePath?: string;\n private _token?: string;\n constructor({\n basePath,\n cookieKey,\n token,\n }: {\n basePath: string;\n cookieKey: string;\n token: string | undefined;\n }) {\n this.basePath = basePath;\n this.cookieKey = cookieKey;\n this._token = token;\n }\n\n public get token(): string | undefined {\n return this._token;\n }\n\n public set token(value: string | undefined) {\n this._token = value;\n }\n}\n\nconst niledatabase_url = 'thenile.dev';\n\ntype DBConfig = {\n connection: PgConnectionConfig;\n // eslint-disable-next-line @typescript-eslint/ban-types\n pool?: undefined | { afterCreate?: Function };\n};\nexport class Config {\n database: string;\n workspace: string;\n\n db: DBConfig;\n\n api: ApiConfig;\n\n private _tenantId?: string | undefined | null;\n private _userId?: string | undefined | null;\n\n public get tenantId(): string | undefined | null {\n return this._tenantId;\n }\n\n public set tenantId(value: string | undefined | null) {\n this._tenantId = value;\n }\n\n public get userId(): string | undefined | null {\n return this._userId;\n }\n\n public set userId(value: string | undefined | null) {\n this._userId = value;\n }\n\n constructor(_config?: ServerConfig) {\n // always provided\n this.database = String(_config?.database);\n this.workspace = String(_config?.workspace);\n\n // set the context\n this._tenantId = _config?.tenantId;\n this._userId = _config?.userId;\n\n // api config\n this.api = new ApiConfig({\n basePath: _config?.api?.basePath ?? `https://api.${niledatabase_url}`,\n cookieKey: _config?.api?.cookieKey ?? 'token',\n token: _config?.api?.token,\n });\n\n // db config\n const host: string =\n _config?.db &&\n _config.db.connection &&\n typeof _config.db?.connection !== 'string' &&\n 'host' in _config.db.connection\n ? String(_config.db.connection.host)\n : `db.${niledatabase_url}`;\n\n const port: number =\n _config?.db?.connection &&\n typeof _config.db?.connection !== 'string' &&\n 'port' in _config.db.connection\n ? Number(_config.db?.connection?.port)\n : 5432;\n\n const connection = {\n host,\n port,\n database: _config?.database,\n ...(typeof _config?.db?.connection === 'object'\n ? _config.db.connection\n : {}),\n } as PgConnectionConfig;\n\n this.db = {\n ..._config?.db,\n connection,\n };\n }\n}\n","export class ResponseError {\n response: Response;\n constructor(body?: BodyInit | null, init?: ResponseInit) {\n this.response = new Response(body, init);\n }\n}\n","type BusValues = undefined | null | string;\ntype EventFn = (params: BusValues) => void;\nenum Events {\n User = 'userId',\n Tenant = 'tenantId',\n Token = 'token',\n EvictPool = 'EvictPool',\n}\nclass Eventer {\n events: { [key: string]: EventFn[] };\n constructor() {\n this.events = {};\n }\n publish(eventName: string, value: BusValues) {\n // Get all the callback functions of the current event\n const callbackList = this.events[eventName];\n\n // execute each callback function\n if (callbackList) {\n for (const callback of callbackList) {\n callback(value);\n }\n }\n }\n // Subscribe to events\n subscribe(eventName: string, callback: EventFn) {\n // initialize this event\n if (!this.events[eventName]) {\n this.events[eventName] = [];\n }\n\n // store the callback function of the subscriber\n this.events[eventName].push(callback);\n }\n}\n\n// tenantId manager\nconst eventer = new Eventer();\n\nexport const updateTenantId = (tenantId: BusValues) => {\n eventer.publish(Events.Tenant, tenantId);\n};\n\nexport const watchTenantId = (cb: EventFn) =>\n eventer.subscribe(Events.Tenant, cb);\n\nexport const updateUserId = (userId: BusValues) => {\n eventer.publish(Events.User, userId);\n};\n\nexport const watchUserId = (cb: EventFn) => eventer.subscribe(Events.User, cb);\n\nexport const updateToken = (val: BusValues) => {\n eventer.publish(Events.Token, val);\n};\n\nexport const watchToken = (cb: EventFn) => eventer.subscribe(Events.Token, cb);\n\nexport const watchEvictPool = (cb: EventFn) =>\n eventer.subscribe(Events.EvictPool, cb);\nexport const evictPool = (val: BusValues) => {\n eventer.publish(Events.EvictPool, val);\n};\n","import { decodeJwt } from 'jose';\n\nimport { ResponseError } from './ResponseError';\nimport { Config } from './Config';\nimport { NileRequest } from './Requester';\nimport { updateTenantId, updateUserId } from './Event';\n\nexport const X_NILE_TENANT = 'x-nile-tenantId';\nexport const X_NILE_USER_ID = 'x-nile-userId';\n\nexport function handleTenantId(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n req: NileRequest<any>,\n config: Config\n): ResponseError | void {\n // already set, no need to try and figure it out\n if (config.tenantId) {\n return;\n }\n return new ResponseError('tenant id needs to be set', { status: 400 });\n}\n\nfunction getTokenFromCookie(headers: Headers, cookieKey: void | string) {\n const cookie = headers.get('cookie')?.split('; ');\n const _cookies: Record<string, string> = {};\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n if (cookieKey) {\n return _cookies[cookieKey];\n }\n return null;\n}\nexport function getTenantFromHttp(headers: Headers, config: Config) {\n const cookieTenant = getTokenFromCookie(headers, 'tenantId');\n return cookieTenant ?? headers?.get(X_NILE_TENANT) ?? config.tenantId;\n}\n\nexport function getUserFromHttp(headers: Headers, config: Config) {\n const token = getTokenFromCookie(headers, config.api.cookieKey);\n if (token) {\n const jwt = decodeJwt(token);\n return jwt.sub;\n }\n return headers?.get(X_NILE_USER_ID) ?? config.userId;\n}\n\nexport async function _fetch(\n config: Config,\n path: string,\n opts?: RequestInit\n): Promise<Response | ResponseError> {\n const url = `${config.api?.basePath}${path}`;\n const cookieKey = config.api?.cookieKey;\n const headers = new Headers(opts?.headers);\n const basicHeaders = new Headers();\n basicHeaders.set('content-type', 'application/json; charset=utf-8');\n const authHeader = headers.get('Authorization');\n if (!authHeader) {\n const token = getTokenFromCookie(headers, cookieKey);\n if (token) {\n basicHeaders.set('Authorization', `Bearer ${token}`);\n } else if (config.api?.token) {\n basicHeaders.set('Authorization', `Bearer ${config.api?.token}`);\n }\n }\n\n const tenantId = getTenantFromHttp(headers, config);\n updateTenantId(tenantId);\n const userId = getUserFromHttp(headers, config);\n updateUserId(userId);\n if (url.includes('{tenantId}') && !tenantId) {\n return new ResponseError('tenantId is not set for request', {\n status: 400,\n });\n }\n const useableUrl = url\n .replace('{tenantId}', encodeURIComponent(String(tenantId)))\n .replace('{userId}', encodeURIComponent(String(userId)));\n const response = await fetch(useableUrl, {\n ...opts,\n headers: basicHeaders,\n }).catch((e) => {\n // eslint-disable-next-line no-console\n console.log(e);\n });\n\n if (response && response.status >= 200 && response.status < 300) {\n return response;\n }\n\n let res;\n try {\n res = await (response as Response)?.json();\n } catch (e) {\n /* do the default */\n }\n if (res && 'message' in res) {\n const { message } = res;\n return new ResponseError(message, { status: 400 });\n }\n if (res && 'errors' in res) {\n const {\n errors: [message],\n } = res;\n return new ResponseError(message, { status: 400 });\n }\n\n return new ResponseError(null, {\n status: (response as Response)?.status ?? 500,\n });\n}\n","import isEmpty from 'lodash/isEmpty';\nimport isObject from 'lodash/isObject';\n\nimport { Config } from '../Config';\nimport { ResponseError } from '../ResponseError';\nimport { X_NILE_TENANT, _fetch } from '../fetch';\n\nexport { NileResponse, NileRequest } from './types';\n\ntype Methods = 'POST' | 'GET' | 'PUT';\nexport default class Requester<T> extends Config {\n constructor(config: Config) {\n super(config);\n }\n\n async rawRequest(\n method: Methods,\n url: string,\n init: RequestInit,\n body?: string\n ): Promise<Response> {\n const _init = {\n ...init,\n body,\n method,\n };\n\n const res = await _fetch(this, url, _init);\n\n if (res instanceof ResponseError) {\n return res.response;\n }\n\n return res;\n }\n\n /**\n * three optios here\n * 1) pass in headers for a server side request\n * 2) pass in the payload that matches the api\n * 3) pass in the request object sent by a browser\n * @param method\n * @param url\n * @param req\n * @param init\n * @returns\n */\n protected async request(\n method: Methods,\n url: string,\n req: T | Headers,\n init?: RequestInit\n ): Promise<Response> {\n // set the headers\n const headers = new Headers(init ? init?.headers : {});\n if (req instanceof Headers) {\n const tenantId = req.get(X_NILE_TENANT);\n const cookie = req.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n } else if (req instanceof Request) {\n // pass back the X_NILE_TENANT\n const _headers = new Headers(req?.headers);\n const tenantId = _headers.get(X_NILE_TENANT);\n const cookie = _headers.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n }\n // default the body - may be the actual payload for the API\n let body: string | undefined = JSON.stringify(req);\n\n // comes from next/some server\n if (method === 'GET') {\n body = undefined;\n } else if (req instanceof Request) {\n body = await new Response(req.body).text();\n } else if (\n // is just headers for a GET request\n req instanceof Headers ||\n isEmpty(req) ||\n (isObject(req) && Object.values(req).length === 0)\n ) {\n body = undefined;\n }\n\n const _init = {\n ...init,\n headers,\n };\n\n return await this.rawRequest(method, url, _init, body);\n }\n\n post = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('POST', url, req, init);\n };\n\n get = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('GET', url, req, init);\n };\n\n put = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('PUT', url, req, init);\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\nimport { ResponseError } from '../utils/ResponseError';\nimport {\n X_NILE_TENANT,\n X_NILE_USER_ID,\n getTenantFromHttp,\n} from '../utils/fetch';\nimport { updateToken, updateUserId } from '../utils/Event';\n\nexport default class Auth extends Config {\n constructor(config: Config) {\n super(config);\n }\n get loginUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users/login`;\n }\n\n login = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const headers = new Headers({ 'content-type': 'application/json' });\n const _requester = new Requester(this);\n\n const params =\n req instanceof Request\n ? new URL(req.url).searchParams\n : new URLSearchParams();\n\n const sso = params.get('sso');\n\n if (sso === 'true') {\n const providerRes = await this.listProviders(\n (req as Request).clone(),\n init\n );\n // if you have a provider, log them in\n if (\n providerRes &&\n providerRes.status >= 200 &&\n providerRes.status < 300\n ) {\n const providers = await new Response(providerRes.body).json();\n if (providers.length > 0) {\n if (providers.length > 1) {\n return new Response(JSON.stringify(providers), { status: 200 });\n // a user has to make a choice\n }\n\n // is there a way to do this? probably not.\n headers.set(X_NILE_TENANT, providers[0].tenantId);\n headers.append(\n 'set-cookie',\n `tenantId=${providers[0].tenantId}; path=/; httponly;`\n );\n // const ssoResp = await this.loginSSO(req);\n return new Response(\n JSON.stringify({\n redirectURI: `${this.api.basePath}${this.loginSSOUrl('okta')}`,\n }),\n { status: 200 }\n );\n // make it a client side redirect, because of the headers\n // if there is no provider, require a password.\n }\n }\n }\n\n const res = await _requester.post(req, this.loginUrl, init).catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n return e;\n });\n if (res instanceof ResponseError) {\n return res.response;\n }\n if (res && res.status >= 200 && res.status < 300) {\n const token: RestModels.LoginUserResponse = await res.json();\n const cookie = `${this.api?.cookieKey}=${token.token.jwt}; path=/; samesite=lax; httponly;`;\n headers.append('set-cookie', cookie);\n const { tenants } = token;\n const tenant = tenants?.values();\n const tenantId = tenant?.next().value;\n headers.set(X_NILE_TENANT, tenantId);\n headers.append('set-cookie', `tenantId=${tenantId}; path=/; httponly;`);\n updateToken(token.token.jwt);\n\n return new Response(JSON.stringify(token), { status: 200, headers });\n }\n const text = await res.text();\n return new Response(text, { status: res.status });\n };\n\n loginSSO = (redirectUrl: string) => {\n const ssoLogin = async (\n req: NileRequest<unknown>\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const headers = new Headers();\n const body = await (req as Request).formData();\n const accessToken = (await body.get('access_token')) as string;\n const tenantId = (await body.get('tenantId')) as string;\n const cookie = `${this.api?.cookieKey}=${accessToken}; path=/; samesite=lax; httponly;`;\n updateToken(accessToken);\n headers.append('set-cookie', cookie);\n headers.set(X_NILE_TENANT, tenantId);\n headers.append('set-cookie', `tenantId=${tenantId}; path=/; httponly;`);\n headers.set('Location', redirectUrl);\n return new Response(null, {\n headers,\n status: 303,\n });\n };\n return ssoLogin;\n };\n\n loginSSOUrl = (provider: string) => {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }/auth/oidc/providers/${provider}/login`;\n };\n\n get signUpUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users`;\n }\n\n signUp = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const headers = new Headers();\n const _requester = new Requester(this);\n const res = await _requester.post(req, this.signUpUrl, init).catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n return e;\n });\n if (res instanceof ResponseError) {\n return res.response;\n }\n if (res && res.status >= 200 && res.status < 300) {\n const token: RestModels.LoginUserResponse = await res.json();\n const cookie = `${this.api?.cookieKey}=${token.token?.jwt}; path=/; samesite=lax; httponly;`;\n headers.append('set-cookie', cookie);\n const { id } = token;\n updateToken(token.token?.jwt);\n updateUserId(id);\n headers.set(X_NILE_USER_ID, id);\n headers.append('set-cookie', `userId=${id}; path=/; httponly;`);\n return new Response(JSON.stringify(token), { status: 201, headers });\n }\n const text = await res.text();\n return new Response(text, { status: res.status });\n };\n\n updateProviderUrl(providerName: string) {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ? encodeURIComponent(this.tenantId) : '{tenantId}'\n }/auth/oidc/providers/${encodeURIComponent(providerName)}`;\n }\n\n get listTenantProvidersUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ? encodeURIComponent(this.tenantId) : '{tenantId}'\n }/auth/oidc/providers`;\n }\n\n listTenantProviders = async (\n req: NileRequest<void | Headers>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const _requester = new Requester(this);\n return _requester.get(req, this.listTenantProvidersUrl, init);\n };\n\n createProvider = async (\n req: NileRequest<RestModels.RegisterTenantSSORequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration> => {\n const _requester = new Requester(this);\n const providerName = 'okta';\n return _requester.post(req, this.updateProviderUrl(providerName), init);\n };\n\n updateProvider = async (\n req: NileRequest<RestModels.RegisterTenantSSORequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration> => {\n const _requester = new Requester(this);\n const providerName = 'okta';\n return _requester.put(req, this.updateProviderUrl(providerName), init);\n };\n\n providerUrl(email?: undefined | string) {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(\n this.database\n )}/tenants/auth/oidc/providers${\n email ? `?email=${encodeURIComponent(email)}` : ''\n }`;\n }\n\n listProviders = async (\n req: NileRequest<void | RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const _requester = new Requester(this);\n let body: { email: string } | undefined;\n // this is a get. Get the email from the response body so the request is filtered.\n if (req && 'body' in req) {\n body = await new Response(req.body as BodyInit).json();\n }\n return _requester.get(req, this.providerUrl(body?.email), init);\n };\n\n getSSOCallbackUrl = (param: Headers | string) => {\n let tenantId;\n if (typeof tenantId === 'string') {\n tenantId = param;\n } else if (param instanceof Headers) {\n tenantId = getTenantFromHttp(param, this);\n }\n\n return `${this.api.basePath}/workspaces/${this.workspace}/databases/${this.database}/tenants/${tenantId}/auth/oidc/callback`;\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\n\nexport default class Users extends Config {\n constructor(config: Config) {\n super(config);\n }\n get tenantUsersUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }/users`;\n }\n\n createTenantUser = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const _requester = new Requester(this);\n return await _requester.post(req, this.tenantUsersUrl, init);\n };\n\n listTenantUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): NileResponse<RestModels.User[]> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.tenantUsersUrl, init);\n };\n\n get meUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users/me`;\n }\n\n me = async (\n req: NileRequest<void>,\n init?: RequestInit\n ): NileResponse<RestModels.User> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.meUrl, init);\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\n\nexport default class Tenants extends Config {\n constructor(config: Config) {\n super(config);\n }\n get tenantsUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants`;\n }\n get tenantUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }`;\n }\n\n createTenant = async (\n req: NileRequest<{ name: string }>,\n init?: RequestInit\n ): NileResponse<RestModels.Tenant> => {\n const _requester = new Requester(this);\n return _requester.post(req, this.tenantsUrl, init);\n };\n\n getTenant = async (\n req: NileRequest<void>,\n init?: RequestInit\n ): NileResponse<RestModels.Tenant> => {\n const _requester = new Requester(this);\n return _requester.get(req, this.tenantUrl, init);\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport knex, { Knex } from 'knex';\n\nimport { Config } from '../utils/Config';\nimport { evictPool } from '../utils/Event';\n\n// doing this now, to provide flexibility later\nclass NileDatabase {\n knex: Knex;\n // db: Knex;\n tenantId?: undefined | null | string;\n userId?: undefined | null | string;\n id: string;\n config: any;\n\n constructor(config: Config, id: string) {\n this.id = id;\n let poolConfig = {};\n const afterCreate = (\n conn: {\n on: any;\n query: (query: string, cb: (err: unknown) => void) => void;\n },\n done: (err: unknown, conn: unknown) => void\n ) => {\n const query = [`SET nile.tenant_id = '${config.tenantId}'`];\n if (config.userId) {\n if (!config.tenantId) {\n // eslint-disable-next-line no-console\n console.warn(\n 'A user id cannot be set in context without a tenant id'\n );\n }\n query.push(`SET nile.user_id = '${config.userId}'`);\n }\n // in this example we use pg driver's connection API\n conn.query(query.join(';'), function (err: unknown) {\n done(err, conn);\n });\n };\n if (config.tenantId) {\n if (config.db.pool?.afterCreate) {\n // eslint-disable-next-line no-console\n console.log(\n 'Providing an pool configuration will stop automatic tenant context setting.'\n );\n } else if (config.db.pool) {\n poolConfig = {\n ...config.db.pool,\n afterCreate,\n };\n } else if (!config.db.pool) {\n poolConfig = {\n afterCreate,\n };\n }\n }\n\n this.config = {\n ...config,\n db: {\n ...config.db,\n connection: {\n ...config.db.connection,\n database: config.db.connection.database ?? config.database,\n },\n pool: poolConfig,\n },\n };\n const knexConfig = { ...this.config.db, client: 'pg' };\n\n // start the timer for cleanup\n this.startTimeout();\n\n this.knex = knex(knexConfig);\n }\n\n startTimeout() {\n setTimeout(() => {\n this.knex.destroy();\n evictPool(this.id);\n }, this.config.db.pool.idleTimeoutMillis ?? 30000);\n }\n}\n\nexport type NileDatabaseI = (table?: string) => Knex;\nexport default NileDatabase;\n","import { Config } from '../utils/Config';\nimport { watchEvictPool } from '../utils/Event';\n\nimport NileDatabase, { NileDatabaseI } from './NileInstance';\n\nexport default class DBManager {\n connections: Map<string, NileDatabase>;\n\n private makeId(\n tenantId?: string | undefined | null,\n userId?: string | undefined | null\n ) {\n if (tenantId && userId) {\n return `${tenantId}:${userId}`;\n }\n if (tenantId) {\n return `${tenantId}`;\n }\n return 'base';\n }\n constructor(config: Config) {\n this.connections = new Map();\n // add the base one, so you can at least query\n const id = this.makeId();\n this.connections.set(id, new NileDatabase(new Config(config), id));\n watchEvictPool((id) => {\n if (id && this.connections.has(id)) {\n this.connections.delete(id);\n }\n });\n }\n\n getConnection(config: Config): NileDatabaseI {\n const id = this.makeId(config.tenantId, config.userId);\n const existing = this.connections.get(id);\n if (existing) {\n return existing as unknown as NileDatabaseI;\n }\n this.connections.set(id, new NileDatabase(new Config(config), id));\n return this.connections.get(id) as unknown as NileDatabaseI;\n }\n}\n","import { ServerConfig } from './types';\nimport { Config } from './utils/Config';\nimport Auth from './auth';\nimport Users from './users';\nimport Tenants from './tenants';\nimport { watchTenantId, watchToken, watchUserId } from './utils/Event';\nimport DbManager, { NileDatabaseI } from './db';\nimport DBManager from './db/DBManager';\n\ntype Api = {\n auth: Auth;\n users: Users;\n tenants: Tenants;\n};\n\nconst init = (config: Config): [Api] => {\n const auth = new Auth(config);\n const users = new Users(config);\n const tenants = new Tenants(config);\n return [\n {\n auth,\n users,\n tenants,\n },\n ];\n};\n\nclass Server {\n config: Config;\n api: Api;\n private manager: DbManager;\n\n constructor(config?: ServerConfig) {\n this.config = new Config(config);\n const [api] = init(this.config);\n this.api = api;\n this.manager = new DBManager(this.config);\n\n watchTenantId((tenantId) => {\n this.tenantId = tenantId;\n });\n watchUserId((userId) => {\n this.userId = userId;\n });\n watchToken((token) => {\n this.token = token;\n });\n }\n\n setConfig(cfg: Config) {\n this.config = new Config(cfg);\n }\n\n set database(val: string | void) {\n if (val) {\n this.config.database = val;\n this.config.db.connection.database = val;\n this.api.auth.database = val;\n this.api.users.database = val;\n this.api.tenants.database = val;\n }\n }\n\n set workspace(val: string | void) {\n if (val) {\n this.config.workspace = val;\n this.api.auth.workspace = val;\n this.api.users.workspace = val;\n this.api.tenants.workspace = val;\n }\n }\n\n get userId(): string | undefined | null {\n return this.config.userId;\n }\n\n set userId(userId: string | undefined | null) {\n this.database = this.config.database;\n\n this.config.userId = userId;\n\n if (this.api) {\n this.api.auth.userId = this.config.userId;\n this.api.users.userId = this.config.userId;\n this.api.tenants.userId = this.config.userId;\n }\n }\n\n get tenantId(): string | undefined | null {\n return this.config.tenantId;\n }\n\n set tenantId(tenantId: string | undefined | null) {\n this.database = this.config.database;\n this.config.tenantId = tenantId;\n\n if (this.api) {\n this.api.auth.tenantId = tenantId;\n this.api.users.tenantId = tenantId;\n this.api.tenants.tenantId = tenantId;\n }\n }\n\n get token(): string | undefined | null {\n return this.config?.api?.token;\n }\n\n set token(token: string | undefined | null) {\n if (token) {\n this.config.api.token = token;\n if (this.api) {\n this.api.auth.api.token = token;\n this.api.users.api.token = token;\n this.api.tenants.api.token = token;\n }\n }\n }\n get db(): NileDatabaseI {\n // only need to interact with the knex object\n //@ts-expect-error - because that's where it is in the proxy\n return this.manager.getConnection(this.config).knex;\n }\n}\n\n// export default Server;\nexport default function Nile(config: ServerConfig) {\n const server = new Server(config);\n server.setConfig(new Config(config as ServerConfig));\n return server;\n}\n","import { default as Server } from './Server';\n\nmodule.exports = Server;\nexport default Server;\n"],"names":["ApiConfig","_ref","basePath","cookieKey","token","_token","_createClass","key","get","set","value","niledatabase_url","Config","_config","database","String","workspace","_tenantId","tenantId","_userId","userId","api","_config$api$basePath","_config$api","_config$api$cookieKey","_config$api2","_config$api3","host","db","connection","_config$db","port","_config$db2","_config$db3","Number","_config$db4","_extends","_config$db5","ResponseError","body","init","response","Response","Events","Eventer","events","_proto","prototype","publish","eventName","callbackList","_iterator","_createForOfIteratorHelperLoose","_step","done","callback","subscribe","push","eventer","updateTenantId","Tenant","watchTenantId","cb","updateUserId","User","watchUserId","updateToken","val","Token","watchToken","watchEvictPool","EvictPool","evictPool","X_NILE_TENANT","X_NILE_USER_ID","getTokenFromCookie","headers","cookie","_headers$get","split","_cookies","parts","cookieParts","_cookie","slice","join","name","_iterator2","_step2","getTenantFromHttp","config","cookieTenant","getUserFromHttp","jwt","decodeJwt","sub","_headers$get2","_fetch","_x","_x2","_x3","_fetch2","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","path","opts","_response$status","url","basicHeaders","authHeader","_config$api4","useableUrl","res","_res","message","_res2","_res2$errors","_message","wrap","_callee$","_context","prev","next","Headers","includes","abrupt","status","replace","encodeURIComponent","fetch","e","console","log","sent","json","t0","errors","stop","Requester","_Config","_inheritsLoose","_this","call","req","request","_ref2","_callee2","_callee2$","_context2","_x4","_x5","_x6","_ref3","_callee3","_callee3$","_context3","_x7","_x8","_x9","rawRequest","_rawRequest","_callee4","method","_init","_callee4$","_context4","_x10","_x11","_x12","_x13","_request","_callee5","_headers","_callee5$","_context5","Request","JSON","stringify","undefined","text","isEmpty","isObject","Object","values","length","_x14","_x15","_x16","_x17","Auth","_requester","params","sso","providerRes","providers","_this$api","tenants","tenant","_assertThisInitialized","URL","searchParams","URLSearchParams","listProviders","clone","append","redirectURI","loginSSOUrl","post","loginUrl","error","redirectUrl","ssoLogin","_this$api2","accessToken","formData","provider","_this$tenantId","_this$api3","_token$token","_token$token2","id","signUpUrl","_ref4","listTenantProvidersUrl","_ref5","providerName","updateProviderUrl","_ref6","_callee6","_callee6$","_context6","put","_ref7","_callee7","_body","_callee7$","_context7","providerUrl","email","param","Users","tenantUsersUrl","meUrl","Tenants","tenantsUrl","tenantUrl","NileDatabase","poolConfig","afterCreate","conn","query","warn","err","_config$db$pool","pool","_config$db$connection","knexConfig","client","startTimeout","knex","setTimeout","destroy","_this$config$db$pool$","idleTimeoutMillis","DBManager","connections","Map","makeId","has","getConnection","existing","auth","users","Server","manager","setConfig","cfg","_this$config","Nile","server","module","exports"],"mappings":"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"}
1
+ {"version":3,"file":"server.cjs.development.js","sources":["../src/utils/Config.ts","../src/utils/ResponseError.ts","../src/utils/Event/index.ts","../src/utils/fetch.ts","../src/utils/Requester/index.ts","../src/auth/index.ts","../src/users/index.ts","../src/tenants/index.ts","../src/db/NileInstance.ts","../src/db/DBManager.ts","../src/utils/Server/index.ts","../src/Server.ts","../src/index.ts"],"sourcesContent":["import { PgConnectionConfig, ServerConfig } from '../types';\n\nclass ApiConfig {\n public cookieKey?: string;\n public basePath?: string;\n private _token?: string;\n constructor({\n basePath,\n cookieKey,\n token,\n }: {\n basePath: string;\n cookieKey: string;\n token: string | undefined;\n }) {\n this.basePath = basePath;\n this.cookieKey = cookieKey;\n this._token = token;\n }\n\n public get token(): string | undefined {\n return this._token;\n }\n\n public set token(value: string | undefined) {\n this._token = value;\n }\n}\n\nconst niledatabase_url = 'thenile.dev';\n\ntype DBConfig = {\n connection: PgConnectionConfig;\n // eslint-disable-next-line @typescript-eslint/ban-types\n pool?: undefined | { afterCreate?: Function };\n};\nexport class Config {\n database: string;\n workspace: string;\n\n db: DBConfig;\n\n api: ApiConfig;\n\n private _tenantId?: string | undefined | null;\n private _userId?: string | undefined | null;\n\n public get tenantId(): string | undefined | null {\n return this._tenantId;\n }\n\n public set tenantId(value: string | undefined | null) {\n this._tenantId = value;\n }\n\n public get userId(): string | undefined | null {\n return this._userId;\n }\n\n public set userId(value: string | undefined | null) {\n this._userId = value;\n }\n\n constructor(_config?: ServerConfig) {\n // always provided\n this.database = String(_config?.database);\n this.workspace = String(_config?.workspace);\n\n // set the context\n this._tenantId = _config?.tenantId;\n this._userId = _config?.userId;\n\n // api config\n this.api = new ApiConfig({\n basePath: _config?.api?.basePath ?? `https://api.${niledatabase_url}`,\n cookieKey: _config?.api?.cookieKey ?? 'token',\n token: _config?.api?.token,\n });\n\n // db config\n const host: string =\n _config?.db &&\n _config.db.connection &&\n typeof _config.db?.connection !== 'string' &&\n 'host' in _config.db.connection\n ? String(_config.db.connection.host)\n : `db.${niledatabase_url}`;\n\n const port: number =\n _config?.db?.connection &&\n typeof _config.db?.connection !== 'string' &&\n 'port' in _config.db.connection\n ? Number(_config.db?.connection?.port)\n : 5432;\n\n const connection = {\n host,\n port,\n database: _config?.database,\n ...(typeof _config?.db?.connection === 'object'\n ? _config.db.connection\n : {}),\n } as PgConnectionConfig;\n\n this.db = {\n ..._config?.db,\n connection,\n };\n }\n}\n","export class ResponseError {\n response: Response;\n constructor(body?: BodyInit | null, init?: ResponseInit) {\n this.response = new Response(body, init);\n }\n}\n","type BusValues = undefined | null | string;\ntype EventFn = (params: BusValues) => void;\nenum Events {\n User = 'userId',\n Tenant = 'tenantId',\n Token = 'token',\n EvictPool = 'EvictPool',\n}\nclass Eventer {\n events: { [key: string]: EventFn[] };\n constructor() {\n this.events = {};\n }\n publish(eventName: string, value: BusValues) {\n // Get all the callback functions of the current event\n const callbackList = this.events[eventName];\n\n // execute each callback function\n if (callbackList) {\n for (const callback of callbackList) {\n callback(value);\n }\n }\n }\n // Subscribe to events\n subscribe(eventName: string, callback: EventFn) {\n // initialize this event\n if (!this.events[eventName]) {\n this.events[eventName] = [];\n }\n\n // store the callback function of the subscriber\n this.events[eventName].push(callback);\n }\n}\n\n// tenantId manager\nconst eventer = new Eventer();\n\nexport const updateTenantId = (tenantId: BusValues) => {\n eventer.publish(Events.Tenant, tenantId);\n};\n\nexport const watchTenantId = (cb: EventFn) =>\n eventer.subscribe(Events.Tenant, cb);\n\nexport const updateUserId = (userId: BusValues) => {\n eventer.publish(Events.User, userId);\n};\n\nexport const watchUserId = (cb: EventFn) => eventer.subscribe(Events.User, cb);\n\nexport const updateToken = (val: BusValues) => {\n eventer.publish(Events.Token, val);\n};\n\nexport const watchToken = (cb: EventFn) => eventer.subscribe(Events.Token, cb);\n\nexport const watchEvictPool = (cb: EventFn) =>\n eventer.subscribe(Events.EvictPool, cb);\nexport const evictPool = (val: BusValues) => {\n eventer.publish(Events.EvictPool, val);\n};\n","import { decodeJwt } from 'jose';\n\nimport { ResponseError } from './ResponseError';\nimport { Config } from './Config';\nimport { NileRequest } from './Requester';\nimport { updateTenantId, updateUserId } from './Event';\n\nexport const X_NILE_TENANT = 'x-nile-tenantId';\nexport const X_NILE_USER_ID = 'x-nile-userId';\n\nexport function handleTenantId(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n req: NileRequest<any>,\n config: Config\n): ResponseError | void {\n // already set, no need to try and figure it out\n if (config.tenantId) {\n return;\n }\n return new ResponseError('tenant id needs to be set', { status: 400 });\n}\n\nfunction getTokenFromCookie(headers: Headers, cookieKey: void | string) {\n const cookie = headers.get('cookie')?.split('; ');\n const _cookies: Record<string, string> = {};\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n if (cookieKey) {\n return _cookies[cookieKey];\n }\n return null;\n}\nexport function getTenantFromHttp(headers: Headers, config: Config) {\n const cookieTenant = getTokenFromCookie(headers, 'tenantId');\n return cookieTenant ?? headers?.get(X_NILE_TENANT) ?? config.tenantId;\n}\n\nexport function getUserFromHttp(headers: Headers, config: Config) {\n const token = getTokenFromCookie(headers, config.api.cookieKey);\n if (token) {\n const jwt = decodeJwt(token);\n return jwt.sub;\n }\n return headers?.get(X_NILE_USER_ID) ?? config.userId;\n}\n\nexport async function _fetch(\n config: Config,\n path: string,\n opts?: RequestInit\n): Promise<Response | ResponseError> {\n const url = `${config.api?.basePath}${path}`;\n const cookieKey = config.api?.cookieKey;\n const headers = new Headers(opts?.headers);\n const basicHeaders = new Headers();\n basicHeaders.set('content-type', 'application/json; charset=utf-8');\n const authHeader = headers.get('Authorization');\n if (!authHeader) {\n const token = getTokenFromCookie(headers, cookieKey);\n if (token) {\n basicHeaders.set('Authorization', `Bearer ${token}`);\n } else if (config.api?.token) {\n basicHeaders.set('Authorization', `Bearer ${config.api?.token}`);\n }\n }\n\n const tenantId = getTenantFromHttp(headers, config);\n updateTenantId(tenantId);\n const userId = getUserFromHttp(headers, config);\n updateUserId(userId);\n if (url.includes('{tenantId}') && !tenantId) {\n return new ResponseError('tenantId is not set for request', {\n status: 400,\n });\n }\n const useableUrl = url\n .replace('{tenantId}', encodeURIComponent(String(tenantId)))\n .replace('{userId}', encodeURIComponent(String(userId)));\n const response = await fetch(useableUrl, {\n ...opts,\n headers: basicHeaders,\n }).catch((e) => {\n // eslint-disable-next-line no-console\n console.log(e);\n });\n\n if (response && response.status >= 200 && response.status < 300) {\n return response;\n }\n\n let res;\n try {\n res = await (response as Response)?.json();\n } catch (e) {\n /* do the default */\n }\n if (res && 'message' in res) {\n const { message } = res;\n return new ResponseError(message, { status: 400 });\n }\n if (res && 'errors' in res) {\n const {\n errors: [message],\n } = res;\n return new ResponseError(message, { status: 400 });\n }\n\n return new ResponseError(null, {\n status: (response as Response)?.status ?? 500,\n });\n}\n","import isEmpty from 'lodash/isEmpty';\nimport isObject from 'lodash/isObject';\n\nimport { Config } from '../Config';\nimport { ResponseError } from '../ResponseError';\nimport { X_NILE_TENANT, _fetch } from '../fetch';\n\nexport { NileResponse, NileRequest } from './types';\n\ntype Methods = 'POST' | 'GET' | 'PUT';\nexport default class Requester<T> extends Config {\n constructor(config: Config) {\n super(config);\n }\n\n async rawRequest(\n method: Methods,\n url: string,\n init: RequestInit,\n body?: string\n ): Promise<Response> {\n const _init = {\n ...init,\n body,\n method,\n };\n\n const res = await _fetch(this, url, _init);\n\n if (res instanceof ResponseError) {\n return res.response;\n }\n\n return res;\n }\n\n /**\n * three optios here\n * 1) pass in headers for a server side request\n * 2) pass in the payload that matches the api\n * 3) pass in the request object sent by a browser\n * @param method\n * @param url\n * @param req\n * @param init\n * @returns\n */\n protected async request(\n method: Methods,\n url: string,\n req: T | Headers,\n init?: RequestInit\n ): Promise<Response> {\n // set the headers\n const headers = new Headers(init ? init?.headers : {});\n if (req instanceof Headers) {\n const tenantId = req.get(X_NILE_TENANT);\n const cookie = req.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n } else if (req instanceof Request) {\n // pass back the X_NILE_TENANT\n const _headers = new Headers(req?.headers);\n const tenantId = _headers.get(X_NILE_TENANT);\n const cookie = _headers.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n }\n // default the body - may be the actual payload for the API\n let body: string | undefined = JSON.stringify(req);\n\n // comes from next/some server\n if (method === 'GET') {\n body = undefined;\n } else if (req instanceof Request) {\n body = await new Response(req.body).text();\n } else if (\n // is just headers for a GET request\n req instanceof Headers ||\n isEmpty(req) ||\n (isObject(req) && Object.values(req).length === 0)\n ) {\n body = undefined;\n }\n\n const _init = {\n ...init,\n headers,\n };\n\n return await this.rawRequest(method, url, _init, body);\n }\n\n post = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('POST', url, req, init);\n };\n\n get = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('GET', url, req, init);\n };\n\n put = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('PUT', url, req, init);\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\nimport { ResponseError } from '../utils/ResponseError';\nimport {\n X_NILE_TENANT,\n X_NILE_USER_ID,\n getTenantFromHttp,\n} from '../utils/fetch';\nimport { updateToken, updateUserId } from '../utils/Event';\n\nexport default class Auth extends Config {\n constructor(config: Config) {\n super(config);\n }\n get loginUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users/login`;\n }\n\n login = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const headers = new Headers({ 'content-type': 'application/json' });\n const _requester = new Requester(this);\n\n const params =\n req instanceof Request\n ? new URL(req.url).searchParams\n : new URLSearchParams();\n\n const sso = params.get('sso');\n\n if (sso === 'true') {\n const providerRes = await this.listProviders(\n (req as Request).clone(),\n init\n );\n // if you have a provider, log them in\n if (\n providerRes &&\n providerRes.status >= 200 &&\n providerRes.status < 300\n ) {\n const providers = await new Response(providerRes.body).json();\n if (providers.length > 0) {\n if (providers.length > 1) {\n return new Response(JSON.stringify(providers), { status: 200 });\n // a user has to make a choice\n }\n\n // is there a way to do this? probably not.\n headers.set(X_NILE_TENANT, providers[0].tenantId);\n headers.append(\n 'set-cookie',\n `tenantId=${providers[0].tenantId}; path=/; httponly;`\n );\n // const ssoResp = await this.loginSSO(req);\n return new Response(\n JSON.stringify({\n redirectURI: `${this.api.basePath}${this.loginSSOUrl('okta')}`,\n }),\n { status: 200 }\n );\n // make it a client side redirect, because of the headers\n // if there is no provider, require a password.\n }\n }\n }\n\n const res = await _requester.post(req, this.loginUrl, init).catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n return e;\n });\n if (res instanceof ResponseError) {\n return res.response;\n }\n if (res && res.status >= 200 && res.status < 300) {\n const token: RestModels.LoginUserResponse = await res.json();\n const cookie = `${this.api?.cookieKey}=${token.token.jwt}; path=/; samesite=lax; httponly;`;\n headers.append('set-cookie', cookie);\n const { tenants } = token;\n const tenant = tenants?.values();\n const tenantId = tenant?.next().value;\n headers.set(X_NILE_TENANT, tenantId);\n headers.append('set-cookie', `tenantId=${tenantId}; path=/; httponly;`);\n updateToken(token.token.jwt);\n\n return new Response(JSON.stringify(token), { status: 200, headers });\n }\n const text = await res.text();\n return new Response(text, { status: res.status });\n };\n\n loginSSO = (redirectUrl: string) => {\n const ssoLogin = async (\n req: NileRequest<unknown>\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const headers = new Headers();\n const body = await (req as Request).formData();\n const accessToken = (await body.get('access_token')) as string;\n const tenantId = (await body.get('tenantId')) as string;\n const cookie = `${this.api?.cookieKey}=${accessToken}; path=/; samesite=lax; httponly;`;\n updateToken(accessToken);\n headers.append('set-cookie', cookie);\n headers.set(X_NILE_TENANT, tenantId);\n headers.append('set-cookie', `tenantId=${tenantId}; path=/; httponly;`);\n headers.set('Location', redirectUrl);\n return new Response(null, {\n headers,\n status: 303,\n });\n };\n return ssoLogin;\n };\n\n loginSSOUrl = (provider: string) => {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }/auth/oidc/providers/${provider}/login`;\n };\n\n get signUpUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users`;\n }\n\n signUp = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const headers = new Headers();\n const _requester = new Requester(this);\n const res = await _requester.post(req, this.signUpUrl, init).catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n return e;\n });\n if (res instanceof ResponseError) {\n return res.response;\n }\n if (res && res.status >= 200 && res.status < 300) {\n const token: RestModels.LoginUserResponse = await res.json();\n const cookie = `${this.api?.cookieKey}=${token.token?.jwt}; path=/; samesite=lax; httponly;`;\n headers.append('set-cookie', cookie);\n const { id } = token;\n updateToken(token.token?.jwt);\n updateUserId(id);\n headers.set(X_NILE_USER_ID, id);\n headers.append('set-cookie', `userId=${id}; path=/; httponly;`);\n return new Response(JSON.stringify(token), { status: 201, headers });\n }\n const text = await res.text();\n return new Response(text, { status: res.status });\n };\n\n updateProviderUrl(providerName: string) {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ? encodeURIComponent(this.tenantId) : '{tenantId}'\n }/auth/oidc/providers/${encodeURIComponent(providerName)}`;\n }\n\n get listTenantProvidersUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ? encodeURIComponent(this.tenantId) : '{tenantId}'\n }/auth/oidc/providers`;\n }\n\n listTenantProviders = async (\n req: NileRequest<void | Headers>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const _requester = new Requester(this);\n return _requester.get(req, this.listTenantProvidersUrl, init);\n };\n\n createProvider = async (\n req: NileRequest<RestModels.RegisterTenantSSORequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration> => {\n const _requester = new Requester(this);\n const providerName = 'okta';\n return _requester.post(req, this.updateProviderUrl(providerName), init);\n };\n\n updateProvider = async (\n req: NileRequest<RestModels.RegisterTenantSSORequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration> => {\n const _requester = new Requester(this);\n const providerName = 'okta';\n return _requester.put(req, this.updateProviderUrl(providerName), init);\n };\n\n providerUrl(email?: undefined | string) {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(\n this.database\n )}/tenants/auth/oidc/providers${\n email ? `?email=${encodeURIComponent(email)}` : ''\n }`;\n }\n\n listProviders = async (\n req: NileRequest<void | RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const _requester = new Requester(this);\n let body: { email: string } | undefined;\n // this is a get. Get the email from the response body so the request is filtered.\n if (req && 'body' in req) {\n body = await new Response(req.body as BodyInit).json();\n }\n return _requester.get(req, this.providerUrl(body?.email), init);\n };\n\n getSSOCallbackUrl = (param: Headers | string) => {\n let tenantId;\n if (typeof tenantId === 'string') {\n tenantId = param;\n } else if (param instanceof Headers) {\n tenantId = getTenantFromHttp(param, this);\n }\n\n return `${this.api.basePath}/workspaces/${this.workspace}/databases/${this.database}/tenants/${tenantId}/auth/oidc/callback`;\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\n\nexport default class Users extends Config {\n constructor(config: Config) {\n super(config);\n }\n get tenantUsersUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }/users`;\n }\n\n createTenantUser = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const _requester = new Requester(this);\n return await _requester.post(req, this.tenantUsersUrl, init);\n };\n\n listTenantUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): NileResponse<RestModels.User[]> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.tenantUsersUrl, init);\n };\n\n get meUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users/me`;\n }\n\n me = async (\n req: NileRequest<void>,\n init?: RequestInit\n ): NileResponse<RestModels.User> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.meUrl, init);\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\n\nexport default class Tenants extends Config {\n constructor(config: Config) {\n super(config);\n }\n get tenantsUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants`;\n }\n get tenantUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }`;\n }\n\n createTenant = async (\n req: NileRequest<{ name: string }>,\n init?: RequestInit\n ): NileResponse<RestModels.Tenant> => {\n const _requester = new Requester(this);\n return _requester.post(req, this.tenantsUrl, init);\n };\n\n getTenant = async (\n req: NileRequest<void>,\n init?: RequestInit\n ): NileResponse<RestModels.Tenant> => {\n const _requester = new Requester(this);\n return _requester.get(req, this.tenantUrl, init);\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport knex, { Knex } from 'knex';\n\nimport { Config } from '../utils/Config';\nimport { evictPool } from '../utils/Event';\n\n// doing this now, to provide flexibility later\nclass NileDatabase {\n knex: Knex;\n // db: Knex;\n tenantId?: undefined | null | string;\n userId?: undefined | null | string;\n id: string;\n config: any;\n timer: NodeJS.Timeout | undefined;\n\n constructor(config: Config, id: string) {\n this.id = id;\n let poolConfig = {};\n const afterCreate = (\n conn: {\n on: any;\n query: (query: string, cb: (err: unknown) => void) => void;\n },\n done: (err: unknown, conn: unknown) => void\n ) => {\n const query = [`SET nile.tenant_id = '${config.tenantId}'`];\n if (config.userId) {\n if (!config.tenantId) {\n // eslint-disable-next-line no-console\n console.warn(\n 'A user id cannot be set in context without a tenant id'\n );\n }\n query.push(`SET nile.user_id = '${config.userId}'`);\n }\n // in this example we use pg driver's connection API\n conn.query(query.join(';'), function (err: unknown) {\n done(err, conn);\n });\n };\n if (config.tenantId) {\n if (config.db.pool?.afterCreate) {\n // eslint-disable-next-line no-console\n console.log(\n 'Providing an pool configuration will stop automatic tenant context setting.'\n );\n } else if (config.db.pool) {\n poolConfig = {\n ...config.db.pool,\n afterCreate,\n };\n } else if (!config.db.pool) {\n poolConfig = {\n afterCreate,\n };\n }\n }\n\n this.config = {\n ...config,\n db: {\n ...config.db,\n connection: {\n ...config.db.connection,\n database: config.db.connection.database ?? config.database,\n },\n pool: poolConfig,\n },\n };\n const knexConfig = { ...this.config.db, client: 'pg' };\n\n // start the timer for cleanup\n this.startTimeout();\n\n this.knex = knex(knexConfig);\n this.knex.on('query', () => {\n this.startTimeout();\n });\n }\n\n startTimeout() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n this.knex.destroy();\n evictPool(this.id);\n }, this.config.db.pool.idleTimeoutMillis ?? 30000);\n }\n}\n\nexport type NileDatabaseI = (table?: string) => Knex;\nexport default NileDatabase;\n","import { Config } from '../utils/Config';\nimport { watchEvictPool } from '../utils/Event';\n\nimport NileDatabase, { NileDatabaseI } from './NileInstance';\n\nexport default class DBManager {\n connections: Map<string, NileDatabase>;\n\n private makeId(\n tenantId?: string | undefined | null,\n userId?: string | undefined | null\n ) {\n if (tenantId && userId) {\n return `${tenantId}:${userId}`;\n }\n if (tenantId) {\n return `${tenantId}`;\n }\n return 'base';\n }\n constructor(config: Config) {\n this.connections = new Map();\n // add the base one, so you can at least query\n const id = this.makeId();\n this.connections.set(id, new NileDatabase(new Config(config), id));\n watchEvictPool((id) => {\n if (id && this.connections.has(id)) {\n this.connections.delete(id);\n }\n });\n }\n\n getConnection(config: Config): NileDatabaseI {\n const id = this.makeId(config.tenantId, config.userId);\n const existing = this.connections.get(id);\n if (existing) {\n return existing as unknown as NileDatabaseI;\n }\n this.connections.set(id, new NileDatabase(new Config(config), id));\n return this.connections.get(id) as unknown as NileDatabaseI;\n }\n}\n","import { ServerConfig } from '../../types';\nimport { Config } from '../Config';\n\nexport const getServerId = (config: ServerConfig) => {\n const cfg = new Config(config);\n return makeServerId(cfg);\n};\nexport const makeServerId = (config: Config) => {\n return Buffer.from(JSON.stringify(config), 'base64').toString();\n};\n","import { InstanceConfig, ServerConfig } from './types';\nimport { Config } from './utils/Config';\nimport Auth from './auth';\nimport Users from './users';\nimport Tenants from './tenants';\nimport { watchTenantId, watchToken, watchUserId } from './utils/Event';\nimport DbManager, { NileDatabaseI } from './db';\nimport DBManager from './db/DBManager';\nimport { getServerId, makeServerId } from './utils/Server';\n\ntype Api = {\n auth: Auth;\n users: Users;\n tenants: Tenants;\n};\n\nconst init = (config: Config): [Api] => {\n const auth = new Auth(config);\n const users = new Users(config);\n const tenants = new Tenants(config);\n return [\n {\n auth,\n users,\n tenants,\n },\n ];\n};\n\nclass Server {\n config: Config;\n api: Api;\n private manager: DbManager;\n private servers: Map<string, Server>;\n\n constructor(config?: ServerConfig) {\n this.config = new Config(config);\n this.servers = new Map();\n const [api] = init(this.config);\n this.api = api;\n this.manager = new DBManager(this.config);\n\n watchTenantId((tenantId) => {\n this.tenantId = tenantId;\n });\n watchUserId((userId) => {\n this.userId = userId;\n });\n watchToken((token) => {\n this.token = token;\n });\n }\n\n setConfig(cfg: Config) {\n this.config = new Config(cfg);\n }\n\n set database(val: string | void) {\n if (val) {\n this.config.database = val;\n this.config.db.connection.database = val;\n this.api.auth.database = val;\n this.api.users.database = val;\n this.api.tenants.database = val;\n }\n }\n\n set workspace(val: string | void) {\n if (val) {\n this.config.workspace = val;\n this.api.auth.workspace = val;\n this.api.users.workspace = val;\n this.api.tenants.workspace = val;\n }\n }\n\n get userId(): string | undefined | null {\n return this.config.userId;\n }\n\n set userId(userId: string | undefined | null) {\n this.database = this.config.database;\n\n this.config.userId = userId;\n\n if (this.api) {\n this.api.auth.userId = this.config.userId;\n this.api.users.userId = this.config.userId;\n this.api.tenants.userId = this.config.userId;\n }\n }\n\n get tenantId(): string | undefined | null {\n return this.config.tenantId;\n }\n\n set tenantId(tenantId: string | undefined | null) {\n this.database = this.config.database;\n this.config.tenantId = tenantId;\n\n if (this.api) {\n this.api.auth.tenantId = tenantId;\n this.api.users.tenantId = tenantId;\n this.api.tenants.tenantId = tenantId;\n }\n }\n\n get token(): string | undefined | null {\n return this.config?.api?.token;\n }\n\n set token(token: string | undefined | null) {\n if (token) {\n this.config.api.token = token;\n if (this.api) {\n this.api.auth.api.token = token;\n this.api.users.api.token = token;\n this.api.tenants.api.token = token;\n }\n }\n }\n get db(): NileDatabaseI {\n // only need to interact with the knex object\n //@ts-expect-error - because that's where it is in the proxy\n return this.manager.getConnection(this.config).knex;\n }\n\n /**\n * A utility function if you want to manage different NileDB instances yourself\n * returns the global Server object, an existing server that's already been configured,\n * or a new one if the config isn't in the cache\n */\n\n getInstance(config: InstanceConfig): Server {\n const _config = { ...this.config, ...config };\n const serverId = getServerId(_config);\n const currentServerId = makeServerId(this.config);\n if (serverId === currentServerId) {\n return this;\n }\n const existing = this.servers.get(serverId);\n if (existing) {\n return existing;\n }\n this.servers.set(serverId, new Server(_config));\n return this.servers.get(serverId) as unknown as Server;\n }\n}\n\n// export default Server;\nexport default function Nile(config: ServerConfig) {\n const server = new Server(config);\n server.setConfig(new Config(config as ServerConfig));\n return server;\n}\n","import { default as Server } from './Server';\n\nmodule.exports = Server;\nexport default Server;\n"],"names":["ApiConfig","_ref","basePath","cookieKey","token","_token","_createClass","key","get","set","value","niledatabase_url","Config","_config","database","String","workspace","_tenantId","tenantId","_userId","userId","api","_config$api$basePath","_config$api","_config$api$cookieKey","_config$api2","_config$api3","host","db","connection","_config$db","port","_config$db2","_config$db3","Number","_config$db4","_extends","_config$db5","ResponseError","body","init","response","Response","Events","Eventer","events","_proto","prototype","publish","eventName","callbackList","_iterator","_createForOfIteratorHelperLoose","_step","done","callback","subscribe","push","eventer","updateTenantId","Tenant","watchTenantId","cb","updateUserId","User","watchUserId","updateToken","val","Token","watchToken","watchEvictPool","EvictPool","evictPool","X_NILE_TENANT","X_NILE_USER_ID","getTokenFromCookie","headers","cookie","_headers$get","split","_cookies","parts","cookieParts","_cookie","slice","join","name","_iterator2","_step2","getTenantFromHttp","config","cookieTenant","getUserFromHttp","jwt","decodeJwt","sub","_headers$get2","_fetch","_x","_x2","_x3","_fetch2","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","path","opts","_response$status","url","basicHeaders","authHeader","_config$api4","useableUrl","res","_res","message","_res2","_res2$errors","_message","wrap","_callee$","_context","prev","next","Headers","includes","abrupt","status","replace","encodeURIComponent","fetch","e","console","log","sent","json","t0","errors","stop","Requester","_Config","_inheritsLoose","_this","call","req","request","_ref2","_callee2","_callee2$","_context2","_x4","_x5","_x6","_ref3","_callee3","_callee3$","_context3","_x7","_x8","_x9","rawRequest","_rawRequest","_callee4","method","_init","_callee4$","_context4","_x10","_x11","_x12","_x13","_request","_callee5","_headers","_callee5$","_context5","Request","JSON","stringify","undefined","text","isEmpty","isObject","Object","values","length","_x14","_x15","_x16","_x17","Auth","_requester","params","sso","providerRes","providers","_this$api","tenants","tenant","_assertThisInitialized","URL","searchParams","URLSearchParams","listProviders","clone","append","redirectURI","loginSSOUrl","post","loginUrl","error","redirectUrl","ssoLogin","_this$api2","accessToken","formData","provider","_this$tenantId","_this$api3","_token$token","_token$token2","id","signUpUrl","_ref4","listTenantProvidersUrl","_ref5","providerName","updateProviderUrl","_ref6","_callee6","_callee6$","_context6","put","_ref7","_callee7","_body","_callee7$","_context7","providerUrl","email","param","Users","tenantUsersUrl","meUrl","Tenants","tenantsUrl","tenantUrl","NileDatabase","poolConfig","afterCreate","conn","query","warn","err","_config$db$pool","pool","_config$db$connection","knexConfig","client","startTimeout","knex","on","timer","clearTimeout","setTimeout","_this2","destroy","_this$config$db$pool$","idleTimeoutMillis","DBManager","connections","Map","makeId","has","getConnection","existing","getServerId","cfg","makeServerId","Buffer","from","toString","auth","users","Server","servers","manager","setConfig","getInstance","serverId","currentServerId","_this$config","Nile","server","module","exports"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEMA,SAAS;EAIb,SAAAA,UAAAC,IAAA;QACEC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;MACRC,SAAS,GAAAF,IAAA,CAATE,SAAS;MACTC,KAAK,GAAAH,IAAA,CAALG,KAAK;IAML,IAAI,CAACF,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACE,MAAM,GAAGD,KAAK;;EACpBE,YAAA,CAAAN,SAAA;IAAAO,GAAA;IAAAC,GAAA,EAED,SAAAA;MACE,OAAO,IAAI,CAACH,MAAM;KACnB;IAAAI,GAAA,EAED,SAAAA,IAAiBC,KAAyB;MACxC,IAAI,CAACL,MAAM,GAAGK,KAAK;;;EACpB,OAAAV,SAAA;AAAA;AAGH,IAAMW,gBAAgB,GAAG,aAAa;IAOzBC,MAAM;EA2BjB,SAAAA,OAAYC,OAAsB;;;IAEhC,IAAI,CAACC,QAAQ,GAAGC,MAAM,CAACF,OAAO,oBAAPA,OAAO,CAAEC,QAAQ,CAAC;IACzC,IAAI,CAACE,SAAS,GAAGD,MAAM,CAACF,OAAO,oBAAPA,OAAO,CAAEG,SAAS,CAAC;;IAG3C,IAAI,CAACC,SAAS,GAAGJ,OAAO,oBAAPA,OAAO,CAAEK,QAAQ;IAClC,IAAI,CAACC,OAAO,GAAGN,OAAO,oBAAPA,OAAO,CAAEO,MAAM;;IAG9B,IAAI,CAACC,GAAG,GAAG,IAAIrB,SAAS,CAAC;MACvBE,QAAQ,GAAAoB,oBAAA,GAAET,OAAO,aAAAU,WAAA,GAAPV,OAAO,CAAEQ,GAAG,qBAAZE,WAAA,CAAcrB,QAAQ,YAAAoB,oBAAA,oBAAmBX,gBAAkB;MACrER,SAAS,GAAAqB,qBAAA,GAAEX,OAAO,aAAAY,YAAA,GAAPZ,OAAO,CAAEQ,GAAG,qBAAZI,YAAA,CAActB,SAAS,YAAAqB,qBAAA,GAAI,OAAO;MAC7CpB,KAAK,EAAES,OAAO,aAAAa,YAAA,GAAPb,OAAO,CAAEQ,GAAG,qBAAZK,YAAA,CAActB;KACtB,CAAC;;IAGF,IAAMuB,IAAI,GACRd,OAAO,YAAPA,OAAO,CAAEe,EAAE,IACXf,OAAO,CAACe,EAAE,CAACC,UAAU,IACrB,SAAAC,UAAA,GAAOjB,OAAO,CAACe,EAAE,qBAAVE,UAAA,CAAYD,UAAU,MAAK,QAAQ,IAC1C,MAAM,IAAIhB,OAAO,CAACe,EAAE,CAACC,UAAU,GAC3Bd,MAAM,CAACF,OAAO,CAACe,EAAE,CAACC,UAAU,CAACF,IAAI,CAAC,WAC5BhB,gBAAkB;IAE9B,IAAMoB,IAAI,GACRlB,OAAO,aAAAmB,WAAA,GAAPnB,OAAO,CAAEe,EAAE,aAAXI,WAAA,CAAaH,UAAU,IACvB,SAAAI,WAAA,GAAOpB,OAAO,CAACe,EAAE,qBAAVK,WAAA,CAAYJ,UAAU,MAAK,QAAQ,IAC1C,MAAM,IAAIhB,OAAO,CAACe,EAAE,CAACC,UAAU,GAC3BK,MAAM,EAAAC,WAAA,GAACtB,OAAO,CAACe,EAAE,cAAAO,WAAA,GAAVA,WAAA,CAAYN,UAAU,qBAAtBM,WAAA,CAAwBJ,IAAI,CAAC,GACpC,IAAI;IAEV,IAAMF,UAAU,GAAAO,QAAA;MACdT,IAAI,EAAJA,IAAI;MACJI,IAAI,EAAJA,IAAI;MACJjB,QAAQ,EAAED,OAAO,oBAAPA,OAAO,CAAEC;OACf,QAAOD,OAAO,aAAAwB,WAAA,GAAPxB,OAAO,CAAEe,EAAE,qBAAXS,WAAA,CAAaR,UAAU,MAAK,QAAQ,GAC3ChB,OAAO,CAACe,EAAE,CAACC,UAAU,GACrB,EAAE,CACe;IAEvB,IAAI,CAACD,EAAE,GAAAQ,QAAA,KACFvB,OAAO,oBAAPA,OAAO,CAAEe,EAAE;MACdC,UAAU,EAAVA;MACD;;EACFvB,YAAA,CAAAM,MAAA;IAAAL,GAAA;IAAAC,GAAA,EA7DD,SAAAA;MACE,OAAO,IAAI,CAACS,SAAS;KACtB;IAAAR,GAAA,EAED,SAAAA,IAAoBC,KAAgC;MAClD,IAAI,CAACO,SAAS,GAAGP,KAAK;;;IACvBH,GAAA;IAAAC,GAAA,EAED,SAAAA;MACE,OAAO,IAAI,CAACW,OAAO;KACpB;IAAAV,GAAA,EAED,SAAAA,IAAkBC,KAAgC;MAChD,IAAI,CAACS,OAAO,GAAGT,KAAK;;;EACrB,OAAAE,MAAA;AAAA;;IC7DU0B,aAAa,GAExB,SAAAA,cAAYC,IAAsB,EAAEC,IAAmB;EACrD,IAAI,CAACC,QAAQ,GAAG,IAAIC,QAAQ,CAACH,IAAI,EAAEC,IAAI,CAAC;AAC1C,CAAC;;ACFH,IAAKG,MAKJ;AALD,WAAKA,MAAM;EACTA,yBAAe;EACfA,6BAAmB;EACnBA,yBAAe;EACfA,iCAAuB;AACzB,CAAC,EALIA,MAAM,KAANA,MAAM;AAKV,IACKC,OAAO;EAEX,SAAAA;IACE,IAAI,CAACC,MAAM,GAAG,EAAE;;EACjB,IAAAC,MAAA,GAAAF,OAAA,CAAAG,SAAA;EAAAD,MAAA,CACDE,OAAO,GAAP,SAAAA,QAAQC,SAAiB,EAAEvC,KAAgB;;IAEzC,IAAMwC,YAAY,GAAG,IAAI,CAACL,MAAM,CAACI,SAAS,CAAC;;IAG3C,IAAIC,YAAY,EAAE;MAChB,SAAAC,SAAA,GAAAC,+BAAA,CAAuBF,YAAY,GAAAG,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;QAAA,IAA1BC,QAAQ,GAAAF,KAAA,CAAA3C,KAAA;QACjB6C,QAAQ,CAAC7C,KAAK,CAAC;;;;;;EAIrBoC,MAAA,CACAU,SAAS,GAAT,SAAAA,UAAUP,SAAiB,EAAEM,QAAiB;;IAE5C,IAAI,CAAC,IAAI,CAACV,MAAM,CAACI,SAAS,CAAC,EAAE;MAC3B,IAAI,CAACJ,MAAM,CAACI,SAAS,CAAC,GAAG,EAAE;;;IAI7B,IAAI,CAACJ,MAAM,CAACI,SAAS,CAAC,CAACQ,IAAI,CAACF,QAAQ,CAAC;GACtC;EAAA,OAAAX,OAAA;AAAA;AAIH,IAAMc,OAAO,gBAAG,IAAId,OAAO,EAAE;AAE7B,AAAO,IAAMe,cAAc,GAAG,SAAjBA,cAAcA,CAAIzC,QAAmB;EAChDwC,OAAO,CAACV,OAAO,CAACL,MAAM,CAACiB,MAAM,EAAE1C,QAAQ,CAAC;AAC1C,CAAC;AAED,AAAO,IAAM2C,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,EAAW;EAAA,OACvCJ,OAAO,CAACF,SAAS,CAACb,MAAM,CAACiB,MAAM,EAAEE,EAAE,CAAC;AAAA;AAEtC,AAAO,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAI3C,MAAiB;EAC5CsC,OAAO,CAACV,OAAO,CAACL,MAAM,CAACqB,IAAI,EAAE5C,MAAM,CAAC;AACtC,CAAC;AAED,AAAO,IAAM6C,WAAW,GAAG,SAAdA,WAAWA,CAAIH,EAAW;EAAA,OAAKJ,OAAO,CAACF,SAAS,CAACb,MAAM,CAACqB,IAAI,EAAEF,EAAE,CAAC;AAAA;AAE9E,AAAO,IAAMI,WAAW,GAAG,SAAdA,WAAWA,CAAIC,GAAc;EACxCT,OAAO,CAACV,OAAO,CAACL,MAAM,CAACyB,KAAK,EAAED,GAAG,CAAC;AACpC,CAAC;AAED,AAAO,IAAME,UAAU,GAAG,SAAbA,UAAUA,CAAIP,EAAW;EAAA,OAAKJ,OAAO,CAACF,SAAS,CAACb,MAAM,CAACyB,KAAK,EAAEN,EAAE,CAAC;AAAA;AAE9E,AAAO,IAAMQ,cAAc,GAAG,SAAjBA,cAAcA,CAAIR,EAAW;EAAA,OACxCJ,OAAO,CAACF,SAAS,CAACb,MAAM,CAAC4B,SAAS,EAAET,EAAE,CAAC;AAAA;AACzC,AAAO,IAAMU,SAAS,GAAG,SAAZA,SAASA,CAAIL,GAAc;EACtCT,OAAO,CAACV,OAAO,CAACL,MAAM,CAAC4B,SAAS,EAAEJ,GAAG,CAAC;AACxC,CAAC;;ACvDM,IAAMM,aAAa,GAAG,iBAAiB;AAC9C,AAAO,IAAMC,cAAc,GAAG,eAAe;AAE7C,AAYA,SAASC,kBAAkBA,CAACC,OAAgB,EAAEzE,SAAwB;;EACpE,IAAM0E,MAAM,IAAAC,YAAA,GAAGF,OAAO,CAACpE,GAAG,CAAC,QAAQ,CAAC,qBAArBsE,YAAA,CAAuBC,KAAK,CAAC,IAAI,CAAC;EACjD,IAAMC,QAAQ,GAA2B,EAAE;EAC3C,IAAIH,MAAM,EAAE;IACV,SAAA1B,SAAA,GAAAC,+BAAA,CAAoByB,MAAM,GAAAxB,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;MAAA,IAAjB2B,KAAK,GAAA5B,KAAA,CAAA3C,KAAA;MACd,IAAMwE,WAAW,GAAGD,KAAK,CAACF,KAAK,CAAC,GAAG,CAAC;MACpC,IAAMI,OAAO,GAAGD,WAAW,CAACE,KAAK,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;MAC9C,IAAMC,IAAI,GAAGJ,WAAW,CAAC,CAAC,CAAC;MAC3BF,QAAQ,CAACM,IAAI,CAAC,GAAGH,OAAO;;;EAI5B,IAAIN,MAAM,EAAE;IACV,SAAAU,UAAA,GAAAnC,+BAAA,CAAoByB,MAAM,GAAAW,MAAA,IAAAA,MAAA,GAAAD,UAAA,IAAAjC,IAAA,GAAE;MAAA,IAAjB2B,MAAK,GAAAO,MAAA,CAAA9E,KAAA;MACd,IAAMwE,YAAW,GAAGD,MAAK,CAACF,KAAK,CAAC,GAAG,CAAC;MACpC,IAAMI,QAAO,GAAGD,YAAW,CAACE,KAAK,CAAC,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;MAC9C,IAAMC,KAAI,GAAGJ,YAAW,CAAC,CAAC,CAAC;MAC3BF,QAAQ,CAACM,KAAI,CAAC,GAAGH,QAAO;;;EAG5B,IAAIhF,SAAS,EAAE;IACb,OAAO6E,QAAQ,CAAC7E,SAAS,CAAC;;EAE5B,OAAO,IAAI;AACb;AACA,SAAgBsF,iBAAiBA,CAACb,OAAgB,EAAEc,MAAc;;EAChE,IAAMC,YAAY,GAAGhB,kBAAkB,CAACC,OAAO,EAAE,UAAU,CAAC;EAC5D,QAAA3E,IAAA,GAAO0F,YAAY,WAAZA,YAAY,GAAIf,OAAO,oBAAPA,OAAO,CAAEpE,GAAG,CAACiE,aAAa,CAAC,YAAAxE,IAAA,GAAIyF,MAAM,CAACxE,QAAQ;AACvE;AAEA,SAAgB0E,eAAeA,CAAChB,OAAgB,EAAEc,MAAc;;EAC9D,IAAMtF,KAAK,GAAGuE,kBAAkB,CAACC,OAAO,EAAEc,MAAM,CAACrE,GAAG,CAAClB,SAAS,CAAC;EAC/D,IAAIC,KAAK,EAAE;IACT,IAAMyF,GAAG,GAAGC,cAAS,CAAC1F,KAAK,CAAC;IAC5B,OAAOyF,GAAG,CAACE,GAAG;;EAEhB,QAAAC,aAAA,GAAOpB,OAAO,oBAAPA,OAAO,CAAEpE,GAAG,CAACkE,cAAc,CAAC,YAAAsB,aAAA,GAAIN,MAAM,CAACtE,MAAM;AACtD;AAEA,SAAsB6E,MAAMA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,OAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAgE3B,SAAAF;EAAAA,OAAA,GAAAG,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAhEM,SAAAC,QACLjB,MAAc,EACdkB,IAAY,EACZC,IAAkB;IAAA,IAAAtF,WAAA,EAAAE,YAAA,EAAAqF,gBAAA;IAAA,IAAAC,GAAA,EAAA5G,SAAA,EAAAyE,OAAA,EAAAoC,YAAA,EAAAC,UAAA,EAAAvF,YAAA,EAAAtB,KAAA,EAAA8G,YAAA,EAAAhG,QAAA,EAAAE,MAAA,EAAA+F,UAAA,EAAA1E,QAAA,EAAA2E,GAAA,EAAAC,IAAA,EAAAC,OAAA,EAAAC,KAAA,EAAAC,YAAA,EAAAC,QAAA;IAAA,OAAAhB,mBAAA,GAAAiB,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAEZf,GAAG,UAAAxF,WAAA,GAAMmE,MAAM,CAACrE,GAAG,qBAAVE,WAAA,CAAYrB,QAAQ,IAAG0G,IAAI;UACpCzG,SAAS,IAAAsB,YAAA,GAAGiE,MAAM,CAACrE,GAAG,qBAAVI,YAAA,CAAYtB,SAAS;UACjCyE,OAAO,GAAG,IAAImD,OAAO,CAAClB,IAAI,oBAAJA,IAAI,CAAEjC,OAAO,CAAC;UACpCoC,YAAY,GAAG,IAAIe,OAAO,EAAE;UAClCf,YAAY,CAACvG,GAAG,CAAC,cAAc,EAAE,iCAAiC,CAAC;UAC7DwG,UAAU,GAAGrC,OAAO,CAACpE,GAAG,CAAC,eAAe,CAAC;UAC/C,IAAI,CAACyG,UAAU,EAAE;YACT7G,KAAK,GAAGuE,kBAAkB,CAACC,OAAO,EAAEzE,SAAS,CAAC;YACpD,IAAIC,KAAK,EAAE;cACT4G,YAAY,CAACvG,GAAG,CAAC,eAAe,cAAYL,KAAO,CAAC;aACrD,MAAM,KAAAsB,YAAA,GAAIgE,MAAM,CAACrE,GAAG,aAAVK,YAAA,CAAYtB,KAAK,EAAE;cAC5B4G,YAAY,CAACvG,GAAG,CAAC,eAAe,gBAAAyG,YAAA,GAAYxB,MAAM,CAACrE,GAAG,qBAAV6F,YAAA,CAAY9G,KAAK,CAAE,CAAC;;;UAI9Dc,QAAQ,GAAGuE,iBAAiB,CAACb,OAAO,EAAEc,MAAM,CAAC;UACnD/B,cAAc,CAACzC,QAAQ,CAAC;UAClBE,MAAM,GAAGwE,eAAe,CAAChB,OAAO,EAAEc,MAAM,CAAC;UAC/C3B,YAAY,CAAC3C,MAAM,CAAC;UAAC,MACjB2F,GAAG,CAACiB,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC9G,QAAQ;YAAA0G,QAAA,CAAAE,IAAA;YAAA;;UAAA,OAAAF,QAAA,CAAAK,MAAA,WAClC,IAAI3F,aAAa,CAAC,iCAAiC,EAAE;YAC1D4F,MAAM,EAAE;WACT,CAAC;QAAA;UAEEf,UAAU,GAAGJ,GAAG,CACnBoB,OAAO,CAAC,YAAY,EAAEC,kBAAkB,CAACrH,MAAM,CAACG,QAAQ,CAAC,CAAC,CAAC,CAC3DiH,OAAO,CAAC,UAAU,EAAEC,kBAAkB,CAACrH,MAAM,CAACK,MAAM,CAAC,CAAC,CAAC;UAAAwG,QAAA,CAAAE,IAAA;UAAA,OACnCO,KAAK,CAAClB,UAAU,EAAA/E,QAAA,KAClCyE,IAAI;YACPjC,OAAO,EAAEoC;YACV,CAAC,SAAM,CAAC,UAACsB,CAAC;;YAETC,OAAO,CAACC,GAAG,CAACF,CAAC,CAAC;WACf,CAAC;QAAA;UANI7F,QAAQ,GAAAmF,QAAA,CAAAa,IAAA;UAAA,MAQVhG,QAAQ,IAAIA,QAAQ,CAACyF,MAAM,IAAI,GAAG,IAAIzF,QAAQ,CAACyF,MAAM,GAAG,GAAG;YAAAN,QAAA,CAAAE,IAAA;YAAA;;UAAA,OAAAF,QAAA,CAAAK,MAAA,WACtDxF,QAAQ;QAAA;UAAAmF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAE,IAAA;UAAA,OAKFrF,QAAqB,oBAArBA,QAAqB,CAAEiG,IAAI,EAAE;QAAA;UAA1CtB,GAAG,GAAAQ,QAAA,CAAAa,IAAA;UAAAb,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAe,EAAA,GAAAf,QAAA;QAAA;UAAA,MAIDR,GAAG,IAAI,SAAS,IAAIA,GAAG;YAAAQ,QAAA,CAAAE,IAAA;YAAA;;UAAAT,IAAA,GACLD,GAAG,EAAfE,OAAO,GAAAD,IAAA,CAAPC,OAAO;UAAA,OAAAM,QAAA,CAAAK,MAAA,WACR,IAAI3F,aAAa,CAACgF,OAAO,EAAE;YAAEY,MAAM,EAAE;WAAK,CAAC;QAAA;UAAA,MAEhDd,GAAG,IAAI,QAAQ,IAAIA,GAAG;YAAAQ,QAAA,CAAAE,IAAA;YAAA;;UAAAP,KAAA,GAGpBH,GAAG,EAAAI,YAAA,GAAAD,KAAA,CADLqB,MAAM,EAAGtB,QAAO,GAAAE,YAAA;UAAA,OAAAI,QAAA,CAAAK,MAAA,WAEX,IAAI3F,aAAa,CAACgF,QAAO,EAAE;YAAEY,MAAM,EAAE;WAAK,CAAC;QAAA;UAAA,OAAAN,QAAA,CAAAK,MAAA,WAG7C,IAAI3F,aAAa,CAAC,IAAI,EAAE;YAC7B4F,MAAM,GAAApB,gBAAA,GAAGrE,QAAqB,oBAArBA,QAAqB,CAAEyF,MAAM,YAAApB,gBAAA,GAAI;WAC3C,CAAC;QAAA;QAAA;UAAA,OAAAc,QAAA,CAAAiB,IAAA;;OAAAlC,OAAA;GACH;EAAA,OAAAN,OAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;;ACxHgD,IAK5BuC,SAAa,0BAAAC,OAAA;EAAAC,cAAA,CAAAF,SAAA,EAAAC,OAAA;EAChC,SAAAD,UAAYpD,MAAc;;IACxBuD,KAAA,GAAAF,OAAA,CAAAG,IAAA,OAAMxD,MAAM,CAAC;IAyFfuD,KAAA,KAAI;MAAA,IAAAhJ,IAAA,GAAAuG,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QACLwC,GAAgB,EAChBpC,GAAW,EACXvE,IAAkB;QAAA,OAAAiE,mBAAA,GAAAiB,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAAAF,QAAA,CAAAE,IAAA;cAAA,OAELmB,KAAA,CAAKG,OAAO,CAAC,MAAM,EAAErC,GAAG,EAAEoC,GAAG,EAAE3G,IAAI,CAAC;YAAA;cAAA,OAAAoF,QAAA,CAAAK,MAAA,WAAAL,QAAA,CAAAa,IAAA;YAAA;YAAA;cAAA,OAAAb,QAAA,CAAAiB,IAAA;;WAAAlC,OAAA;OAClD;MAAA,iBAAAT,EAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAnG,IAAA,CAAAqG,KAAA,OAAAC,SAAA;;;IAED0C,KAAA,IAAG;MAAA,IAAAI,KAAA,GAAA7C,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA4C,SACJH,GAAgB,EAChBpC,GAAW,EACXvE,IAAkB;QAAA,OAAAiE,mBAAA,GAAAiB,IAAA,UAAA6B,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAA3B,IAAA,GAAA2B,SAAA,CAAA1B,IAAA;YAAA;cAAA0B,SAAA,CAAA1B,IAAA;cAAA,OAELmB,KAAA,CAAKG,OAAO,CAAC,KAAK,EAAErC,GAAG,EAAEoC,GAAG,EAAE3G,IAAI,CAAC;YAAA;cAAA,OAAAgH,SAAA,CAAAvB,MAAA,WAAAuB,SAAA,CAAAf,IAAA;YAAA;YAAA;cAAA,OAAAe,SAAA,CAAAX,IAAA;;WAAAS,QAAA;OACjD;MAAA,iBAAAG,GAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAN,KAAA,CAAA/C,KAAA,OAAAC,SAAA;;;IAED0C,KAAA,IAAG;MAAA,IAAAW,KAAA,GAAApD,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAmD,SACJV,GAAgB,EAChBpC,GAAW,EACXvE,IAAkB;QAAA,OAAAiE,mBAAA,GAAAiB,IAAA,UAAAoC,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAlC,IAAA,GAAAkC,SAAA,CAAAjC,IAAA;YAAA;cAAAiC,SAAA,CAAAjC,IAAA;cAAA,OAELmB,KAAA,CAAKG,OAAO,CAAC,KAAK,EAAErC,GAAG,EAAEoC,GAAG,EAAE3G,IAAI,CAAC;YAAA;cAAA,OAAAuH,SAAA,CAAA9B,MAAA,WAAA8B,SAAA,CAAAtB,IAAA;YAAA;YAAA;cAAA,OAAAsB,SAAA,CAAAlB,IAAA;;WAAAgB,QAAA;OACjD;MAAA,iBAAAG,GAAA,EAAAC,GAAA,EAAAC,GAAA;QAAA,OAAAN,KAAA,CAAAtD,KAAA,OAAAC,SAAA;;;IAAC,OAAA0C,KAAA;;EA9GD,IAAAnG,MAAA,GAAAgG,SAAA,CAAA/F,SAAA;EAAAD,MAAA,CAEKqH,UAAU;IAAA,IAAAC,WAAA,gBAAA5D,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAhB,SAAA2D,SACEC,MAAe,EACfvD,GAAW,EACXvE,IAAiB,EACjBD,IAAa;MAAA,IAAAgI,KAAA,EAAAnD,GAAA;MAAA,OAAAX,mBAAA,GAAAiB,IAAA,UAAA8C,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAA5C,IAAA,GAAA4C,SAAA,CAAA3C,IAAA;UAAA;YAEPyC,KAAK,GAAAnI,QAAA,KACNI,IAAI;cACPD,IAAI,EAAJA,IAAI;cACJ+H,MAAM,EAANA;;YAAMG,SAAA,CAAA3C,IAAA;YAAA,OAGU7B,MAAM,CAAC,IAAI,EAAEc,GAAG,EAAEwD,KAAK,CAAC;UAAA;YAApCnD,GAAG,GAAAqD,SAAA,CAAAhC,IAAA;YAAA,MAELrB,GAAG,YAAY9E,aAAa;cAAAmI,SAAA,CAAA3C,IAAA;cAAA;;YAAA,OAAA2C,SAAA,CAAAxC,MAAA,WACvBb,GAAG,CAAC3E,QAAQ;UAAA;YAAA,OAAAgI,SAAA,CAAAxC,MAAA,WAGdb,GAAG;UAAA;UAAA;YAAA,OAAAqD,SAAA,CAAA5B,IAAA;;SAAAwB,QAAA;KACX;IAAA,SAAAF,WAAAO,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;MAAA,OAAAT,WAAA,CAAA9D,KAAA,OAAAC,SAAA;;IAAA,OAAA4D,UAAA;;;;;;;;;;;;;;EAEDrH,MAAA,CAWgBsG,OAAO;;EAAA;IAAA,IAAA0B,QAAA,gBAAAtE,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAb,SAAAqE,SACRT,MAAe,EACfvD,GAAW,EACXoC,GAAgB,EAChB3G,IAAkB;MAAA,IAAAoC,OAAA,EAAA1D,QAAA,EAAA2D,MAAA,EAAAmG,QAAA,EAAA/J,SAAA,EAAAkE,OAAA,EAAA5C,IAAA,EAAAgI,KAAA;MAAA,OAAA9D,mBAAA,GAAAiB,IAAA,UAAAuD,UAAAC,SAAA;QAAA,kBAAAA,SAAA,CAAArD,IAAA,GAAAqD,SAAA,CAAApD,IAAA;UAAA;;YAGZlD,OAAO,GAAG,IAAImD,OAAO,CAACvF,IAAI,GAAGA,IAAI,oBAAJA,IAAI,CAAEoC,OAAO,GAAG,EAAE,CAAC;YACtD,IAAIuE,GAAG,YAAYpB,OAAO,EAAE;cACpB7G,QAAQ,GAAGiI,GAAG,CAAC3I,GAAG,CAACiE,aAAa,CAAC;cACjCI,MAAM,GAAGsE,GAAG,CAAC3I,GAAG,CAAC,QAAQ,CAAC;cAChC,IAAIU,QAAQ,EAAE;gBACZ0D,OAAO,CAACnE,GAAG,CAACgE,aAAa,EAAEvD,QAAQ,CAAC;;cAEtC,IAAI2D,MAAM,EAAE;gBACVD,OAAO,CAACnE,GAAG,CAAC,QAAQ,EAAEoE,MAAM,CAAC;;aAEhC,MAAM,IAAIsE,GAAG,YAAYgC,OAAO,EAAE;;cAE3BH,QAAQ,GAAG,IAAIjD,OAAO,CAACoB,GAAG,oBAAHA,GAAG,CAAEvE,OAAO,CAAC;cACpC1D,SAAQ,GAAG8J,QAAQ,CAACxK,GAAG,CAACiE,aAAa,CAAC;cACtCI,OAAM,GAAGmG,QAAQ,CAACxK,GAAG,CAAC,QAAQ,CAAC;cACrC,IAAIU,SAAQ,EAAE;gBACZ0D,OAAO,CAACnE,GAAG,CAACgE,aAAa,EAAEvD,SAAQ,CAAC;;cAEtC,IAAI2D,OAAM,EAAE;gBACVD,OAAO,CAACnE,GAAG,CAAC,QAAQ,EAAEoE,OAAM,CAAC;;;;YAI7BtC,IAAI,GAAuB6I,IAAI,CAACC,SAAS,CAAClC,GAAG,CAAC;YAElD,MACImB,MAAM,KAAK,KAAK;cAAAY,SAAA,CAAApD,IAAA;cAAA;;YAClBvF,IAAI,GAAG+I,SAAS;YAACJ,SAAA,CAAApD,IAAA;YAAA;UAAA;YAAA,MACRqB,GAAG,YAAYgC,OAAO;cAAAD,SAAA,CAAApD,IAAA;cAAA;;YAAAoD,SAAA,CAAApD,IAAA;YAAA,OAClB,IAAIpF,QAAQ,CAACyG,GAAG,CAAC5G,IAAI,CAAC,CAACgJ,IAAI,EAAE;UAAA;YAA1ChJ,IAAI,GAAA2I,SAAA,CAAAzC,IAAA;YAAAyC,SAAA,CAAApD,IAAA;YAAA;UAAA;YACC;;YAELqB,GAAG,YAAYpB,OAAO,IACtByD,OAAO,CAACrC,GAAG,CAAC,IACXsC,QAAQ,CAACtC,GAAG,CAAC,IAAIuC,MAAM,CAACC,MAAM,CAACxC,GAAG,CAAC,CAACyC,MAAM,KAAK,CAAE,EAClD;cACArJ,IAAI,GAAG+I,SAAS;;UACjB;YAEKf,KAAK,GAAAnI,QAAA,KACNI,IAAI;cACPoC,OAAO,EAAPA;;YAAOsG,SAAA,CAAApD,IAAA;YAAA,OAGI,IAAI,CAACqC,UAAU,CAACG,MAAM,EAAEvD,GAAG,EAAEwD,KAAK,EAAEhI,IAAI,CAAC;UAAA;YAAA,OAAA2I,SAAA,CAAAjD,MAAA,WAAAiD,SAAA,CAAAzC,IAAA;UAAA;UAAA;YAAA,OAAAyC,SAAA,CAAArC,IAAA;;SAAAkC,QAAA;KACvD;IAAA,SAAA3B,QAAAyC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;MAAA,OAAAlB,QAAA,CAAAxE,KAAA,OAAAC,SAAA;;IAAA,OAAA6C,OAAA;;EAAA,OAAAN,SAAA;AAAA,EAzFuClI,MAAM;;ACAW,IAEtCqL,IAAK,0BAAAlD,OAAA;EAAAC,cAAA,CAAAiD,IAAA,EAAAlD,OAAA;EACxB,SAAAkD,KAAYvG,MAAc;;IACxBuD,KAAA,GAAAF,OAAA,CAAAG,IAAA,OAAMxD,MAAM,CAAC;IAQfuD,KAAA,MAAK;MAAA,IAAAhJ,IAAA,GAAAuG,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QACNwC,GAAmD,EACnD3G,IAAkB;QAAA,IAAAoC,OAAA,EAAAsH,UAAA,EAAAC,MAAA,EAAAC,GAAA,EAAAC,WAAA,EAAAC,SAAA,EAAAlF,GAAA,EAAAmF,SAAA,EAAAnM,KAAA,EAAAyE,MAAA,EAAA2H,OAAA,EAAAC,MAAA,EAAAvL,QAAA,EAAAqK,IAAA;QAAA,OAAA9E,mBAAA,GAAAiB,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAEZlD,OAAO,GAAG,IAAImD,OAAO,CAAC;gBAAE,cAAc,EAAE;eAAoB,CAAC;cAC7DmE,UAAU,GAAG,IAAIpD,SAAS,CAAA4D,sBAAA,CAAAzD,KAAA,CAAK,CAAC;cAEhCkD,MAAM,GACVhD,GAAG,YAAYgC,OAAO,GAClB,IAAIwB,GAAG,CAACxD,GAAG,CAACpC,GAAG,CAAC,CAAC6F,YAAY,GAC7B,IAAIC,eAAe,EAAE;cAErBT,GAAG,GAAGD,MAAM,CAAC3L,GAAG,CAAC,KAAK,CAAC;cAAA,MAEzB4L,GAAG,KAAK,MAAM;gBAAAxE,QAAA,CAAAE,IAAA;gBAAA;;cAAAF,QAAA,CAAAE,IAAA;cAAA,OACUmB,KAAA,CAAK6D,aAAa,CACzC3D,GAAe,CAAC4D,KAAK,EAAE,EACxBvK,IAAI,CACL;YAAA;cAHK6J,WAAW,GAAAzE,QAAA,CAAAa,IAAA;cAAA,MAMf4D,WAAW,IACXA,WAAW,CAACnE,MAAM,IAAI,GAAG,IACzBmE,WAAW,CAACnE,MAAM,GAAG,GAAG;gBAAAN,QAAA,CAAAE,IAAA;gBAAA;;cAAAF,QAAA,CAAAE,IAAA;cAAA,OAEA,IAAIpF,QAAQ,CAAC2J,WAAW,CAAC9J,IAAI,CAAC,CAACmG,IAAI,EAAE;YAAA;cAAvD4D,SAAS,GAAA1E,QAAA,CAAAa,IAAA;cAAA,MACX6D,SAAS,CAACV,MAAM,GAAG,CAAC;gBAAAhE,QAAA,CAAAE,IAAA;gBAAA;;cAAA,MAClBwE,SAAS,CAACV,MAAM,GAAG,CAAC;gBAAAhE,QAAA,CAAAE,IAAA;gBAAA;;cAAA,OAAAF,QAAA,CAAAK,MAAA,WACf,IAAIvF,QAAQ,CAAC0I,IAAI,CAACC,SAAS,CAACiB,SAAS,CAAC,EAAE;gBAAEpE,MAAM,EAAE;eAAK,CAAC;YAAA;;cAKjEtD,OAAO,CAACnE,GAAG,CAACgE,aAAa,EAAE6H,SAAS,CAAC,CAAC,CAAC,CAACpL,QAAQ,CAAC;cACjD0D,OAAO,CAACoI,MAAM,CACZ,YAAY,gBACAV,SAAS,CAAC,CAAC,CAAC,CAACpL,QAAQ,wBAAqB,CACvD;;cACD,OAAA0G,QAAA,CAAAK,MAAA,WACO,IAAIvF,QAAQ,CACjB0I,IAAI,CAACC,SAAS,CAAC;gBACb4B,WAAW,OAAKhE,KAAA,CAAK5H,GAAG,CAACnB,QAAQ,GAAG+I,KAAA,CAAKiE,WAAW,CAAC,MAAM;eAC5D,CAAC,EACF;gBAAEhF,MAAM,EAAE;eAAK,CAChB;YAAA;cAAAN,QAAA,CAAAE,IAAA;cAAA,OAOWoE,UAAU,CAACiB,IAAI,CAAChE,GAAG,EAAEF,KAAA,CAAKmE,QAAQ,EAAE5K,IAAI,CAAC,SAAM,CAAC,UAAC8F,CAAC;;gBAElEC,OAAO,CAAC8E,KAAK,CAAC/E,CAAC,CAAC;gBAChB,OAAOA,CAAC;eACT,CAAC;YAAA;cAJIlB,GAAG,GAAAQ,QAAA,CAAAa,IAAA;cAAA,MAKLrB,GAAG,YAAY9E,aAAa;gBAAAsF,QAAA,CAAAE,IAAA;gBAAA;;cAAA,OAAAF,QAAA,CAAAK,MAAA,WACvBb,GAAG,CAAC3E,QAAQ;YAAA;cAAA,MAEjB2E,GAAG,IAAIA,GAAG,CAACc,MAAM,IAAI,GAAG,IAAId,GAAG,CAACc,MAAM,GAAG,GAAG;gBAAAN,QAAA,CAAAE,IAAA;gBAAA;;cAAAF,QAAA,CAAAE,IAAA;cAAA,OACIV,GAAG,CAACsB,IAAI,EAAE;YAAA;cAAtDtI,KAAK,GAAAwH,QAAA,CAAAa,IAAA;cACL5D,MAAM,KAAA0H,SAAA,GAAMtD,KAAA,CAAK5H,GAAG,qBAARkL,SAAA,CAAUpM,SAAS,UAAIC,KAAK,CAACA,KAAK,CAACyF,GAAG;cACxDjB,OAAO,CAACoI,MAAM,CAAC,YAAY,EAAEnI,MAAM,CAAC;cAC5B2H,OAAO,GAAKpM,KAAK,CAAjBoM,OAAO;cACTC,MAAM,GAAGD,OAAO,oBAAPA,OAAO,CAAEb,MAAM,EAAE;cAC1BzK,QAAQ,GAAGuL,MAAM,oBAANA,MAAM,CAAE3E,IAAI,EAAE,CAACpH,KAAK;cACrCkE,OAAO,CAACnE,GAAG,CAACgE,aAAa,EAAEvD,QAAQ,CAAC;cACpC0D,OAAO,CAACoI,MAAM,CAAC,YAAY,gBAAc9L,QAAQ,wBAAqB,CAAC;cACvEgD,WAAW,CAAC9D,KAAK,CAACA,KAAK,CAACyF,GAAG,CAAC;cAAC,OAAA+B,QAAA,CAAAK,MAAA,WAEtB,IAAIvF,QAAQ,CAAC0I,IAAI,CAACC,SAAS,CAACjL,KAAK,CAAC,EAAE;gBAAE8H,MAAM,EAAE,GAAG;gBAAEtD,OAAO,EAAPA;eAAS,CAAC;YAAA;cAAAgD,QAAA,CAAAE,IAAA;cAAA,OAEnDV,GAAG,CAACmE,IAAI,EAAE;YAAA;cAAvBA,IAAI,GAAA3D,QAAA,CAAAa,IAAA;cAAA,OAAAb,QAAA,CAAAK,MAAA,WACH,IAAIvF,QAAQ,CAAC6I,IAAI,EAAE;gBAAErD,MAAM,EAAEd,GAAG,CAACc;eAAQ,CAAC;YAAA;YAAA;cAAA,OAAAN,QAAA,CAAAiB,IAAA;;WAAAlC,OAAA;OAClD;MAAA,iBAAAT,EAAA,EAAAC,GAAA;QAAA,OAAAlG,IAAA,CAAAqG,KAAA,OAAAC,SAAA;;;IAED0C,KAAA,SAAQ,GAAG,UAACqE,WAAmB;MAC7B,IAAMC,QAAQ;QAAA,IAAAlE,KAAA,GAAA7C,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA4C,SACfH,GAAyB;UAAA,IAAAqE,UAAA;UAAA,IAAA5I,OAAA,EAAArC,IAAA,EAAAkL,WAAA,EAAAvM,QAAA,EAAA2D,MAAA;UAAA,OAAA4B,mBAAA,GAAAiB,IAAA,UAAA6B,UAAAC,SAAA;YAAA,kBAAAA,SAAA,CAAA3B,IAAA,GAAA2B,SAAA,CAAA1B,IAAA;cAAA;gBAEnBlD,OAAO,GAAG,IAAImD,OAAO,EAAE;gBAAAyB,SAAA,CAAA1B,IAAA;gBAAA,OACTqB,GAAe,CAACuE,QAAQ,EAAE;cAAA;gBAAxCnL,IAAI,GAAAiH,SAAA,CAAAf,IAAA;gBAAAe,SAAA,CAAA1B,IAAA;gBAAA,OACiBvF,IAAI,CAAC/B,GAAG,CAAC,cAAc,CAAC;cAAA;gBAA7CiN,WAAW,GAAAjE,SAAA,CAAAf,IAAA;gBAAAe,SAAA,CAAA1B,IAAA;gBAAA,OACOvF,IAAI,CAAC/B,GAAG,CAAC,UAAU,CAAC;cAAA;gBAAtCU,QAAQ,GAAAsI,SAAA,CAAAf,IAAA;gBACR5D,MAAM,KAAA2I,UAAA,GAAMvE,KAAA,CAAK5H,GAAG,qBAARmM,UAAA,CAAUrN,SAAS,UAAIsN,WAAW;gBACpDvJ,WAAW,CAACuJ,WAAW,CAAC;gBACxB7I,OAAO,CAACoI,MAAM,CAAC,YAAY,EAAEnI,MAAM,CAAC;gBACpCD,OAAO,CAACnE,GAAG,CAACgE,aAAa,EAAEvD,QAAQ,CAAC;gBACpC0D,OAAO,CAACoI,MAAM,CAAC,YAAY,gBAAc9L,QAAQ,wBAAqB,CAAC;gBACvE0D,OAAO,CAACnE,GAAG,CAAC,UAAU,EAAE6M,WAAW,CAAC;gBAAC,OAAA9D,SAAA,CAAAvB,MAAA,WAC9B,IAAIvF,QAAQ,CAAC,IAAI,EAAE;kBACxBkC,OAAO,EAAPA,OAAO;kBACPsD,MAAM,EAAE;iBACT,CAAC;cAAA;cAAA;gBAAA,OAAAsB,SAAA,CAAAX,IAAA;;aAAAS,QAAA;SACH;QAAA,gBAjBKiE,QAAQA,CAAAnH,GAAA;UAAA,OAAAiD,KAAA,CAAA/C,KAAA,OAAAC,SAAA;;SAiBb;MACD,OAAOgH,QAAQ;KAChB;IAEDtE,KAAA,YAAW,GAAG,UAAC0E,QAAgB;;MAC7B,wBAAsBvF,kBAAkB,CACtCa,KAAA,CAAKjI,SAAS,CACf,mBAAcoH,kBAAkB,CAACa,KAAA,CAAKnI,QAAQ,CAAC,mBAAA8M,cAAA,GAC9C3E,KAAA,CAAK/H,QAAQ,YAAA0M,cAAA,GAAI,YACnB,8BAAwBD,QAAQ;KACjC;IAQD1E,KAAA,OAAM;MAAA,IAAAW,KAAA,GAAApD,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAmD,SACPV,GAAmD,EACnD3G,IAAkB;QAAA,IAAAoC,OAAA,EAAAsH,UAAA,EAAA9E,GAAA,EAAAyG,UAAA,EAAAC,YAAA,EAAAC,aAAA,EAAA3N,KAAA,EAAAyE,MAAA,EAAAmJ,EAAA,EAAAzC,IAAA;QAAA,OAAA9E,mBAAA,GAAAiB,IAAA,UAAAoC,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAlC,IAAA,GAAAkC,SAAA,CAAAjC,IAAA;YAAA;cAEZlD,OAAO,GAAG,IAAImD,OAAO,EAAE;cACvBmE,UAAU,GAAG,IAAIpD,SAAS,CAAA4D,sBAAA,CAAAzD,KAAA,CAAK,CAAC;cAAAc,SAAA,CAAAjC,IAAA;cAAA,OACpBoE,UAAU,CAACiB,IAAI,CAAChE,GAAG,EAAEF,KAAA,CAAKgF,SAAS,EAAEzL,IAAI,CAAC,SAAM,CAAC,UAAC8F,CAAC;;gBAEnEC,OAAO,CAAC8E,KAAK,CAAC/E,CAAC,CAAC;gBAChB,OAAOA,CAAC;eACT,CAAC;YAAA;cAJIlB,GAAG,GAAA2C,SAAA,CAAAtB,IAAA;cAAA,MAKLrB,GAAG,YAAY9E,aAAa;gBAAAyH,SAAA,CAAAjC,IAAA;gBAAA;;cAAA,OAAAiC,SAAA,CAAA9B,MAAA,WACvBb,GAAG,CAAC3E,QAAQ;YAAA;cAAA,MAEjB2E,GAAG,IAAIA,GAAG,CAACc,MAAM,IAAI,GAAG,IAAId,GAAG,CAACc,MAAM,GAAG,GAAG;gBAAA6B,SAAA,CAAAjC,IAAA;gBAAA;;cAAAiC,SAAA,CAAAjC,IAAA;cAAA,OACIV,GAAG,CAACsB,IAAI,EAAE;YAAA;cAAtDtI,KAAK,GAAA2J,SAAA,CAAAtB,IAAA;cACL5D,MAAM,KAAAgJ,UAAA,GAAM5E,KAAA,CAAK5H,GAAG,qBAARwM,UAAA,CAAU1N,SAAS,YAAA2N,YAAA,GAAI1N,KAAK,CAACA,KAAK,qBAAX0N,YAAA,CAAajI,GAAG;cACzDjB,OAAO,CAACoI,MAAM,CAAC,YAAY,EAAEnI,MAAM,CAAC;cAC5BmJ,EAAE,GAAK5N,KAAK,CAAZ4N,EAAE;cACV9J,WAAW,EAAA6J,aAAA,GAAC3N,KAAK,CAACA,KAAK,qBAAX2N,aAAA,CAAalI,GAAG,CAAC;cAC7B9B,YAAY,CAACiK,EAAE,CAAC;cAChBpJ,OAAO,CAACnE,GAAG,CAACiE,cAAc,EAAEsJ,EAAE,CAAC;cAC/BpJ,OAAO,CAACoI,MAAM,CAAC,YAAY,cAAYgB,EAAE,wBAAqB,CAAC;cAAC,OAAAjE,SAAA,CAAA9B,MAAA,WACzD,IAAIvF,QAAQ,CAAC0I,IAAI,CAACC,SAAS,CAACjL,KAAK,CAAC,EAAE;gBAAE8H,MAAM,EAAE,GAAG;gBAAEtD,OAAO,EAAPA;eAAS,CAAC;YAAA;cAAAmF,SAAA,CAAAjC,IAAA;cAAA,OAEnDV,GAAG,CAACmE,IAAI,EAAE;YAAA;cAAvBA,IAAI,GAAAxB,SAAA,CAAAtB,IAAA;cAAA,OAAAsB,SAAA,CAAA9B,MAAA,WACH,IAAIvF,QAAQ,CAAC6I,IAAI,EAAE;gBAAErD,MAAM,EAAEd,GAAG,CAACc;eAAQ,CAAC;YAAA;YAAA;cAAA,OAAA6B,SAAA,CAAAlB,IAAA;;WAAAgB,QAAA;OAClD;MAAA,iBAAAJ,GAAA,EAAAC,GAAA;QAAA,OAAAE,KAAA,CAAAtD,KAAA,OAAAC,SAAA;;;IAkBD0C,KAAA,oBAAmB;MAAA,IAAAiF,KAAA,GAAA1H,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA2D,SACpBlB,GAAgC,EAChC3G,IAAkB;QAAA,IAAA0J,UAAA;QAAA,OAAAzF,mBAAA,GAAAiB,IAAA,UAAA8C,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAA5C,IAAA,GAAA4C,SAAA,CAAA3C,IAAA;YAAA;cAEZoE,UAAU,GAAG,IAAIpD,SAAS,CAAA4D,sBAAA,CAAAzD,KAAA,CAAK,CAAC;cAAA,OAAAwB,SAAA,CAAAxC,MAAA,WAC/BiE,UAAU,CAAC1L,GAAG,CAAC2I,GAAG,EAAEF,KAAA,CAAKkF,sBAAsB,EAAE3L,IAAI,CAAC;YAAA;YAAA;cAAA,OAAAiI,SAAA,CAAA5B,IAAA;;WAAAwB,QAAA;OAC9D;MAAA,iBAAAV,GAAA,EAAAK,GAAA;QAAA,OAAAkE,KAAA,CAAA5H,KAAA,OAAAC,SAAA;;;IAED0C,KAAA,eAAc;MAAA,IAAAmF,KAAA,GAAA5H,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAqE,SACf5B,GAAqD,EACrD3G,IAAkB;QAAA,IAAA0J,UAAA,EAAAmC,YAAA;QAAA,OAAA5H,mBAAA,GAAAiB,IAAA,UAAAuD,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAArD,IAAA,GAAAqD,SAAA,CAAApD,IAAA;YAAA;cAEZoE,UAAU,GAAG,IAAIpD,SAAS,CAAA4D,sBAAA,CAAAzD,KAAA,CAAK,CAAC;cAChCoF,YAAY,GAAG,MAAM;cAAA,OAAAnD,SAAA,CAAAjD,MAAA,WACpBiE,UAAU,CAACiB,IAAI,CAAChE,GAAG,EAAEF,KAAA,CAAKqF,iBAAiB,CAACD,YAAY,CAAC,EAAE7L,IAAI,CAAC;YAAA;YAAA;cAAA,OAAA0I,SAAA,CAAArC,IAAA;;WAAAkC,QAAA;OACxE;MAAA,iBAAAd,GAAA,EAAAC,GAAA;QAAA,OAAAkE,KAAA,CAAA9H,KAAA,OAAAC,SAAA;;;IAED0C,KAAA,eAAc;MAAA,IAAAsF,KAAA,GAAA/H,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA8H,SACfrF,GAAqD,EACrD3G,IAAkB;QAAA,IAAA0J,UAAA,EAAAmC,YAAA;QAAA,OAAA5H,mBAAA,GAAAiB,IAAA,UAAA+G,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAA7G,IAAA,GAAA6G,SAAA,CAAA5G,IAAA;YAAA;cAEZoE,UAAU,GAAG,IAAIpD,SAAS,CAAA4D,sBAAA,CAAAzD,KAAA,CAAK,CAAC;cAChCoF,YAAY,GAAG,MAAM;cAAA,OAAAK,SAAA,CAAAzG,MAAA,WACpBiE,UAAU,CAACyC,GAAG,CAACxF,GAAG,EAAEF,KAAA,CAAKqF,iBAAiB,CAACD,YAAY,CAAC,EAAE7L,IAAI,CAAC;YAAA;YAAA;cAAA,OAAAkM,SAAA,CAAA7F,IAAA;;WAAA2F,QAAA;OACvE;MAAA,iBAAA9D,IAAA,EAAAC,IAAA;QAAA,OAAA4D,KAAA,CAAAjI,KAAA,OAAAC,SAAA;;;IAYD0C,KAAA,cAAa;MAAA,IAAA2F,KAAA,GAAApI,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAmI,SACd1F,GAA0D,EAC1D3G,IAAkB;QAAA,IAAAsM,KAAA;QAAA,IAAA5C,UAAA,EAAA3J,IAAA;QAAA,OAAAkE,mBAAA,GAAAiB,IAAA,UAAAqH,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAnH,IAAA,GAAAmH,SAAA,CAAAlH,IAAA;YAAA;cAEZoE,UAAU,GAAG,IAAIpD,SAAS,CAAA4D,sBAAA,CAAAzD,KAAA,CAAK,CAAC;cAAA,MAGlCE,GAAG,IAAI,MAAM,IAAIA,GAAG;gBAAA6F,SAAA,CAAAlH,IAAA;gBAAA;;cAAAkH,SAAA,CAAAlH,IAAA;cAAA,OACT,IAAIpF,QAAQ,CAACyG,GAAG,CAAC5G,IAAgB,CAAC,CAACmG,IAAI,EAAE;YAAA;cAAtDnG,IAAI,GAAAyM,SAAA,CAAAvG,IAAA;YAAA;cAAA,OAAAuG,SAAA,CAAA/G,MAAA,WAECiE,UAAU,CAAC1L,GAAG,CAAC2I,GAAG,EAAEF,KAAA,CAAKgG,WAAW,EAAAH,KAAA,GAACvM,IAAI,qBAAJuM,KAAA,CAAMI,KAAK,CAAC,EAAE1M,IAAI,CAAC;YAAA;YAAA;cAAA,OAAAwM,SAAA,CAAAnG,IAAA;;WAAAgG,QAAA;OAChE;MAAA,iBAAAjE,IAAA,EAAAC,IAAA;QAAA,OAAA+D,KAAA,CAAAtI,KAAA,OAAAC,SAAA;;;IAED0C,KAAA,kBAAiB,GAAG,UAACkG,KAAuB;MAC1C,IAAIjO,QAAQ;MACZ,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;QAChCA,QAAQ,GAAGiO,KAAK;OACjB,MAAM,IAAIA,KAAK,YAAYpH,OAAO,EAAE;QACnC7G,QAAQ,GAAGuE,iBAAiB,CAAC0J,KAAK,EAAAzC,sBAAA,CAAAzD,KAAA,CAAM,CAAC;;MAG3C,OAAUA,KAAA,CAAK5H,GAAG,CAACnB,QAAQ,oBAAe+I,KAAA,CAAKjI,SAAS,mBAAciI,KAAA,CAAKnI,QAAQ,iBAAYI,QAAQ;KACxG;IAAC,OAAA+H,KAAA;;EA9ND,IAAAnG,MAAA,GAAAmJ,IAAA,CAAAlJ,SAAA;EAAAD,MAAA,CAoJDwL,iBAAiB,GAAjB,SAAAA,kBAAkBD,YAAoB;IACpC,wBAAsBjG,kBAAkB,CACtC,IAAI,CAACpH,SAAS,CACf,mBAAcoH,kBAAkB,CAAC,IAAI,CAACtH,QAAQ,CAAC,kBAC9C,IAAI,CAACI,QAAQ,GAAGkH,kBAAkB,CAAC,IAAI,CAAClH,QAAQ,CAAC,GAAG,YACtD,8BAAwBkH,kBAAkB,CAACiG,YAAY,CAAC;GACzD;EAAAvL,MAAA,CAoCDmM,WAAW,GAAX,SAAAA,YAAYC,KAA0B;IACpC,wBAAsB9G,kBAAkB,CACtC,IAAI,CAACpH,SAAS,CACf,mBAAcoH,kBAAkB,CAC/B,IAAI,CAACtH,QAAQ,CACd,qCACCoO,KAAK,eAAa9G,kBAAkB,CAAC8G,KAAK,CAAC,GAAK,EAClD;GACD;EAAA5O,YAAA,CAAA2L,IAAA;IAAA1L,GAAA;IAAAC,GAAA,EArMD,SAAAA;MACE,wBAAsB4H,kBAAkB,CACtC,IAAI,CAACpH,SAAS,CACf,mBAAcoH,kBAAkB,CAAC,IAAI,CAACtH,QAAQ,CAAC;;;IACjDP,GAAA;IAAAC,GAAA,EA4GD,SAAAA;MACE,wBAAsB4H,kBAAkB,CACtC,IAAI,CAACpH,SAAS,CACf,mBAAcoH,kBAAkB,CAAC,IAAI,CAACtH,QAAQ,CAAC;;;IACjDP,GAAA;IAAAC,GAAA,EAuCD,SAAAA;MACE,wBAAsB4H,kBAAkB,CACtC,IAAI,CAACpH,SAAS,CACf,mBAAcoH,kBAAkB,CAAC,IAAI,CAACtH,QAAQ,CAAC,kBAC9C,IAAI,CAACI,QAAQ,GAAGkH,kBAAkB,CAAC,IAAI,CAAClH,QAAQ,CAAC,GAAG,YACtD;;;EACD,OAAA+K,IAAA;AAAA,EArK+BrL,MAAM;;ACTkC,IAErDwO,KAAM,0BAAArG,OAAA;EAAAC,cAAA,CAAAoG,KAAA,EAAArG,OAAA;EACzB,SAAAqG,MAAY1J,MAAc;;IACxBuD,KAAA,GAAAF,OAAA,CAAAG,IAAA,OAAMxD,MAAM,CAAC;IAUfuD,KAAA,iBAAgB;MAAA,IAAAhJ,IAAA,GAAAuG,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QACjBwC,GAAmD,EACnD3G,IAAkB;QAAA,IAAA0J,UAAA;QAAA,OAAAzF,mBAAA,GAAAiB,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAEZoE,UAAU,GAAG,IAAIpD,SAAS,CAAA4D,sBAAA,CAAAzD,KAAA,CAAK,CAAC;cAAArB,QAAA,CAAAE,IAAA;cAAA,OACzBoE,UAAU,CAACiB,IAAI,CAAChE,GAAG,EAAEF,KAAA,CAAKoG,cAAc,EAAE7M,IAAI,CAAC;YAAA;cAAA,OAAAoF,QAAA,CAAAK,MAAA,WAAAL,QAAA,CAAAa,IAAA;YAAA;YAAA;cAAA,OAAAb,QAAA,CAAAiB,IAAA;;WAAAlC,OAAA;OAC7D;MAAA,iBAAAT,EAAA,EAAAC,GAAA;QAAA,OAAAlG,IAAA,CAAAqG,KAAA,OAAAC,SAAA;;;IAED0C,KAAA,gBAAe;MAAA,IAAAI,KAAA,GAAA7C,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA4C,SAChBH,GAAgC,EAChC3G,IAAkB;QAAA,IAAA0J,UAAA;QAAA,OAAAzF,mBAAA,GAAAiB,IAAA,UAAA6B,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAA3B,IAAA,GAAA2B,SAAA,CAAA1B,IAAA;YAAA;cAEZoE,UAAU,GAAG,IAAIpD,SAAS,CAAA4D,sBAAA,CAAAzD,KAAA,CAAK,CAAC;cAAAO,SAAA,CAAA1B,IAAA;cAAA,OACzBoE,UAAU,CAAC1L,GAAG,CAAC2I,GAAG,EAAEF,KAAA,CAAKoG,cAAc,EAAE7M,IAAI,CAAC;YAAA;cAAA,OAAAgH,SAAA,CAAAvB,MAAA,WAAAuB,SAAA,CAAAf,IAAA;YAAA;YAAA;cAAA,OAAAe,SAAA,CAAAX,IAAA;;WAAAS,QAAA;OAC5D;MAAA,iBAAAlD,GAAA,EAAAqD,GAAA;QAAA,OAAAJ,KAAA,CAAA/C,KAAA,OAAAC,SAAA;;;IAQD0C,KAAA,GAAE;MAAA,IAAAW,KAAA,GAAApD,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAmD,SACHV,GAAsB,EACtB3G,IAAkB;QAAA,IAAA0J,UAAA;QAAA,OAAAzF,mBAAA,GAAAiB,IAAA,UAAAoC,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAAlC,IAAA,GAAAkC,SAAA,CAAAjC,IAAA;YAAA;cAEZoE,UAAU,GAAG,IAAIpD,SAAS,CAAA4D,sBAAA,CAAAzD,KAAA,CAAK,CAAC;cAAAc,SAAA,CAAAjC,IAAA;cAAA,OACzBoE,UAAU,CAAC1L,GAAG,CAAC2I,GAAG,EAAEF,KAAA,CAAKqG,KAAK,EAAE9M,IAAI,CAAC;YAAA;cAAA,OAAAuH,SAAA,CAAA9B,MAAA,WAAA8B,SAAA,CAAAtB,IAAA;YAAA;YAAA;cAAA,OAAAsB,SAAA,CAAAlB,IAAA;;WAAAgB,QAAA;OACnD;MAAA,iBAAAH,GAAA,EAAAC,GAAA;QAAA,OAAAC,KAAA,CAAAtD,KAAA,OAAAC,SAAA;;;IAAC,OAAA0C,KAAA;;EArCD3I,YAAA,CAAA8O,KAAA;IAAA7O,GAAA;IAAAC,GAAA,EACD,SAAAA;;MACE,wBAAsB4H,kBAAkB,CACtC,IAAI,CAACpH,SAAS,CACf,mBAAcoH,kBAAkB,CAAC,IAAI,CAACtH,QAAQ,CAAC,mBAAA8M,cAAA,GAC9C,IAAI,CAAC1M,QAAQ,YAAA0M,cAAA,GAAI,YACnB;;;IACDrN,GAAA;IAAAC,GAAA,EAkBD,SAAAA;MACE,wBAAsB4H,kBAAkB,CACtC,IAAI,CAACpH,SAAS,CACf,mBAAcoH,kBAAkB,CAAC,IAAI,CAACtH,QAAQ,CAAC;;;EACjD,OAAAsO,KAAA;AAAA,EAhCgCxO,MAAM;;ACFiC,IAErD2O,OAAQ,0BAAAxG,OAAA;EAAAC,cAAA,CAAAuG,OAAA,EAAAxG,OAAA;EAC3B,SAAAwG,QAAY7J,MAAc;;IACxBuD,KAAA,GAAAF,OAAA,CAAAG,IAAA,OAAMxD,MAAM,CAAC;IAefuD,KAAA,aAAY;MAAA,IAAAhJ,IAAA,GAAAuG,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAAC,QACbwC,GAAkC,EAClC3G,IAAkB;QAAA,IAAA0J,UAAA;QAAA,OAAAzF,mBAAA,GAAAiB,IAAA,UAAAC,SAAAC,QAAA;UAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;YAAA;cAEZoE,UAAU,GAAG,IAAIpD,SAAS,CAAA4D,sBAAA,CAAAzD,KAAA,CAAK,CAAC;cAAA,OAAArB,QAAA,CAAAK,MAAA,WAC/BiE,UAAU,CAACiB,IAAI,CAAChE,GAAG,EAAEF,KAAA,CAAKuG,UAAU,EAAEhN,IAAI,CAAC;YAAA;YAAA;cAAA,OAAAoF,QAAA,CAAAiB,IAAA;;WAAAlC,OAAA;OACnD;MAAA,iBAAAT,EAAA,EAAAC,GAAA;QAAA,OAAAlG,IAAA,CAAAqG,KAAA,OAAAC,SAAA;;;IAED0C,KAAA,UAAS;MAAA,IAAAI,KAAA,GAAA7C,iBAAA,eAAAC,mBAAA,GAAAC,IAAA,CAAG,SAAA4C,SACVH,GAAsB,EACtB3G,IAAkB;QAAA,IAAA0J,UAAA;QAAA,OAAAzF,mBAAA,GAAAiB,IAAA,UAAA6B,UAAAC,SAAA;UAAA,kBAAAA,SAAA,CAAA3B,IAAA,GAAA2B,SAAA,CAAA1B,IAAA;YAAA;cAEZoE,UAAU,GAAG,IAAIpD,SAAS,CAAA4D,sBAAA,CAAAzD,KAAA,CAAK,CAAC;cAAA,OAAAO,SAAA,CAAAvB,MAAA,WAC/BiE,UAAU,CAAC1L,GAAG,CAAC2I,GAAG,EAAEF,KAAA,CAAKwG,SAAS,EAAEjN,IAAI,CAAC;YAAA;YAAA;cAAA,OAAAgH,SAAA,CAAAX,IAAA;;WAAAS,QAAA;OACjD;MAAA,iBAAAlD,GAAA,EAAAqD,GAAA;QAAA,OAAAJ,KAAA,CAAA/C,KAAA,OAAAC,SAAA;;;IAAC,OAAA0C,KAAA;;EA5BD3I,YAAA,CAAAiP,OAAA;IAAAhP,GAAA;IAAAC,GAAA,EACD,SAAAA;MACE,wBAAsB4H,kBAAkB,CACtC,IAAI,CAACpH,SAAS,CACf,mBAAcoH,kBAAkB,CAAC,IAAI,CAACtH,QAAQ,CAAC;;;IACjDP,GAAA;IAAAC,GAAA,EACD,SAAAA;;MACE,wBAAsB4H,kBAAkB,CACtC,IAAI,CAACpH,SAAS,CACf,mBAAcoH,kBAAkB,CAAC,IAAI,CAACtH,QAAQ,CAAC,mBAAA8M,cAAA,GAC9C,IAAI,CAAC1M,QAAQ,YAAA0M,cAAA,GAAI,YACnB;;;EACD,OAAA2B,OAAA;AAAA,EAfkC3O,MAAM;;ACC3C;AAAA,IACM8O,YAAY;EAShB,SAAAA,aAAYhK,MAAc,EAAEsI,EAAU;;;IACpC,IAAI,CAACA,EAAE,GAAGA,EAAE;IACZ,IAAI2B,UAAU,GAAG,EAAE;IACnB,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CACfC,IAGC,EACDvM,IAA2C;MAE3C,IAAMwM,KAAK,GAAG,4BAA0BpK,MAAM,CAACxE,QAAQ,OAAI;MAC3D,IAAIwE,MAAM,CAACtE,MAAM,EAAE;QACjB,IAAI,CAACsE,MAAM,CAACxE,QAAQ,EAAE;;UAEpBqH,OAAO,CAACwH,IAAI,CACV,wDAAwD,CACzD;;QAEHD,KAAK,CAACrM,IAAI,0BAAwBiC,MAAM,CAACtE,MAAM,MAAG,CAAC;;;MAGrDyO,IAAI,CAACC,KAAK,CAACA,KAAK,CAACzK,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU2K,GAAY;QAChD1M,IAAI,CAAC0M,GAAG,EAAEH,IAAI,CAAC;OAChB,CAAC;KACH;IACD,IAAInK,MAAM,CAACxE,QAAQ,EAAE;MAAA,IAAA+O,eAAA;MACnB,KAAAA,eAAA,GAAIvK,MAAM,CAAC9D,EAAE,CAACsO,IAAI,aAAdD,eAAA,CAAgBL,WAAW,EAAE;;QAE/BrH,OAAO,CAACC,GAAG,CACT,6EAA6E,CAC9E;OACF,MAAM,IAAI9C,MAAM,CAAC9D,EAAE,CAACsO,IAAI,EAAE;QACzBP,UAAU,GAAAvN,QAAA,KACLsD,MAAM,CAAC9D,EAAE,CAACsO,IAAI;UACjBN,WAAW,EAAXA;UACD;OACF,MAAM,IAAI,CAAClK,MAAM,CAAC9D,EAAE,CAACsO,IAAI,EAAE;QAC1BP,UAAU,GAAG;UACXC,WAAW,EAAXA;SACD;;;IAIL,IAAI,CAAClK,MAAM,GAAAtD,QAAA,KACNsD,MAAM;MACT9D,EAAE,EAAAQ,QAAA,KACGsD,MAAM,CAAC9D,EAAE;QACZC,UAAU,EAAAO,QAAA,KACLsD,MAAM,CAAC9D,EAAE,CAACC,UAAU;UACvBf,QAAQ,GAAAqP,qBAAA,GAAEzK,MAAM,CAAC9D,EAAE,CAACC,UAAU,CAACf,QAAQ,YAAAqP,qBAAA,GAAIzK,MAAM,CAAC5E;UACnD;QACDoP,IAAI,EAAEP;;MAET;IACD,IAAMS,UAAU,GAAAhO,QAAA,KAAQ,IAAI,CAACsD,MAAM,CAAC9D,EAAE;MAAEyO,MAAM,EAAE;MAAM;;IAGtD,IAAI,CAACC,YAAY,EAAE;IAEnB,IAAI,CAACC,IAAI,GAAGA,IAAI,CAACH,UAAU,CAAC;IAC5B,IAAI,CAACG,IAAI,CAACC,EAAE,CAAC,OAAO,EAAE;MACpBvH,KAAI,CAACqH,YAAY,EAAE;KACpB,CAAC;;EACH,IAAAxN,MAAA,GAAA4M,YAAA,CAAA3M,SAAA;EAAAD,MAAA,CAEDwN,YAAY,GAAZ,SAAAA;;;IACE,IAAI,IAAI,CAACG,KAAK,EAAE;MACdC,YAAY,CAAC,IAAI,CAACD,KAAK,CAAC;;IAE1B,IAAI,CAACA,KAAK,GAAGE,UAAU,CAAC;MACtBC,MAAI,CAACL,IAAI,CAACM,OAAO,EAAE;MACnBrM,SAAS,CAACoM,MAAI,CAAC5C,EAAE,CAAC;KACnB,GAAA8C,qBAAA,GAAE,IAAI,CAACpL,MAAM,CAAC9D,EAAE,CAACsO,IAAI,CAACa,iBAAiB,YAAAD,qBAAA,GAAI,KAAK,CAAC;GACnD;EAAA,OAAApB,YAAA;AAAA;;ACtF0D,IAExCsB,SAAS;EAe5B,SAAAA,UAAYtL,MAAc;;IACxB,IAAI,CAACuL,WAAW,GAAG,IAAIC,GAAG,EAAE;;IAE5B,IAAMlD,EAAE,GAAG,IAAI,CAACmD,MAAM,EAAE;IACxB,IAAI,CAACF,WAAW,CAACxQ,GAAG,CAACuN,EAAE,EAAE,IAAI0B,YAAY,CAAC,IAAI9O,MAAM,CAAC8E,MAAM,CAAC,EAAEsI,EAAE,CAAC,CAAC;IAClE1J,cAAc,CAAC,UAAC0J,EAAE;MAChB,IAAIA,EAAE,IAAI/E,KAAI,CAACgI,WAAW,CAACG,GAAG,CAACpD,EAAE,CAAC,EAAE;QAClC/E,KAAI,CAACgI,WAAW,UAAO,CAACjD,EAAE,CAAC;;KAE9B,CAAC;;EACH,IAAAlL,MAAA,GAAAkO,SAAA,CAAAjO,SAAA;EAAAD,MAAA,CAtBOqO,MAAM,GAAN,SAAAA,OACNjQ,QAAoC,EACpCE,MAAkC;IAElC,IAAIF,QAAQ,IAAIE,MAAM,EAAE;MACtB,OAAUF,QAAQ,SAAIE,MAAM;;IAE9B,IAAIF,QAAQ,EAAE;MACZ,YAAUA,QAAQ;;IAEpB,OAAO,MAAM;GACd;EAAA4B,MAAA,CAaDuO,aAAa,GAAb,SAAAA,cAAc3L,MAAc;IAC1B,IAAMsI,EAAE,GAAG,IAAI,CAACmD,MAAM,CAACzL,MAAM,CAACxE,QAAQ,EAAEwE,MAAM,CAACtE,MAAM,CAAC;IACtD,IAAMkQ,QAAQ,GAAG,IAAI,CAACL,WAAW,CAACzQ,GAAG,CAACwN,EAAE,CAAC;IACzC,IAAIsD,QAAQ,EAAE;MACZ,OAAOA,QAAoC;;IAE7C,IAAI,CAACL,WAAW,CAACxQ,GAAG,CAACuN,EAAE,EAAE,IAAI0B,YAAY,CAAC,IAAI9O,MAAM,CAAC8E,MAAM,CAAC,EAAEsI,EAAE,CAAC,CAAC;IAClE,OAAO,IAAI,CAACiD,WAAW,CAACzQ,GAAG,CAACwN,EAAE,CAA6B;GAC5D;EAAA,OAAAgD,SAAA;AAAA;;ACrCI,IAAMO,WAAW,GAAG,SAAdA,WAAWA,CAAI7L,MAAoB;EAC9C,IAAM8L,GAAG,GAAG,IAAI5Q,MAAM,CAAC8E,MAAM,CAAC;EAC9B,OAAO+L,YAAY,CAACD,GAAG,CAAC;AAC1B,CAAC;AACD,AAAO,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAI/L,MAAc;EACzC,OAAOgM,MAAM,CAACC,IAAI,CAACvG,IAAI,CAACC,SAAS,CAAC3F,MAAM,CAAC,EAAE,QAAQ,CAAC,CAACkM,QAAQ,EAAE;AACjE,CAAC;;ACOD,IAAMpP,IAAI,GAAG,SAAPA,IAAIA,CAAIkD,MAAc;EAC1B,IAAMmM,IAAI,GAAG,IAAI5F,IAAI,CAACvG,MAAM,CAAC;EAC7B,IAAMoM,KAAK,GAAG,IAAI1C,KAAK,CAAC1J,MAAM,CAAC;EAC/B,IAAM8G,OAAO,GAAG,IAAI+C,OAAO,CAAC7J,MAAM,CAAC;EACnC,OAAO,CACL;IACEmM,IAAI,EAAJA,IAAI;IACJC,KAAK,EAALA,KAAK;IACLtF,OAAO,EAAPA;GACD,CACF;AACH,CAAC;AAAC,IAEIuF,MAAM;EAMV,SAAAA,OAAYrM,MAAqB;;IAC/B,IAAI,CAACA,MAAM,GAAG,IAAI9E,MAAM,CAAC8E,MAAM,CAAC;IAChC,IAAI,CAACsM,OAAO,GAAG,IAAId,GAAG,EAAE;IACxB,IAAA3G,KAAA,GAAc/H,IAAI,CAAC,IAAI,CAACkD,MAAM,CAAC;MAAxBrE,GAAG,GAAAkJ,KAAA;IACV,IAAI,CAAClJ,GAAG,GAAGA,GAAG;IACd,IAAI,CAAC4Q,OAAO,GAAG,IAAIjB,SAAS,CAAC,IAAI,CAACtL,MAAM,CAAC;IAEzC7B,aAAa,CAAC,UAAC3C,QAAQ;MACrB+H,KAAI,CAAC/H,QAAQ,GAAGA,QAAQ;KACzB,CAAC;IACF+C,WAAW,CAAC,UAAC7C,MAAM;MACjB6H,KAAI,CAAC7H,MAAM,GAAGA,MAAM;KACrB,CAAC;IACFiD,UAAU,CAAC,UAACjE,KAAK;MACf6I,KAAI,CAAC7I,KAAK,GAAGA,KAAK;KACnB,CAAC;;EACH,IAAA0C,MAAA,GAAAiP,MAAA,CAAAhP,SAAA;EAAAD,MAAA,CAEDoP,SAAS,GAAT,SAAAA,UAAUV,GAAW;IACnB,IAAI,CAAC9L,MAAM,GAAG,IAAI9E,MAAM,CAAC4Q,GAAG,CAAC;GAC9B;;;;;;EAwED1O,MAAA,CAMAqP,WAAW,GAAX,SAAAA,YAAYzM,MAAsB;IAChC,IAAM7E,OAAO,GAAAuB,QAAA,KAAQ,IAAI,CAACsD,MAAM,EAAKA,MAAM,CAAE;IAC7C,IAAM0M,QAAQ,GAAGb,WAAW,CAAC1Q,OAAO,CAAC;IACrC,IAAMwR,eAAe,GAAGZ,YAAY,CAAC,IAAI,CAAC/L,MAAM,CAAC;IACjD,IAAI0M,QAAQ,KAAKC,eAAe,EAAE;MAChC,OAAO,IAAI;;IAEb,IAAMf,QAAQ,GAAG,IAAI,CAACU,OAAO,CAACxR,GAAG,CAAC4R,QAAQ,CAAC;IAC3C,IAAId,QAAQ,EAAE;MACZ,OAAOA,QAAQ;;IAEjB,IAAI,CAACU,OAAO,CAACvR,GAAG,CAAC2R,QAAQ,EAAE,IAAIL,MAAM,CAAClR,OAAO,CAAC,CAAC;IAC/C,OAAO,IAAI,CAACmR,OAAO,CAACxR,GAAG,CAAC4R,QAAQ,CAAsB;GACvD;EAAA9R,YAAA,CAAAyR,MAAA;IAAAxR,GAAA;IAAAE,GAAA,EAzFD,SAAAA,IAAa0D,GAAkB;MAC7B,IAAIA,GAAG,EAAE;QACP,IAAI,CAACuB,MAAM,CAAC5E,QAAQ,GAAGqD,GAAG;QAC1B,IAAI,CAACuB,MAAM,CAAC9D,EAAE,CAACC,UAAU,CAACf,QAAQ,GAAGqD,GAAG;QACxC,IAAI,CAAC9C,GAAG,CAACwQ,IAAI,CAAC/Q,QAAQ,GAAGqD,GAAG;QAC5B,IAAI,CAAC9C,GAAG,CAACyQ,KAAK,CAAChR,QAAQ,GAAGqD,GAAG;QAC7B,IAAI,CAAC9C,GAAG,CAACmL,OAAO,CAAC1L,QAAQ,GAAGqD,GAAG;;;;IAElC5D,GAAA;IAAAE,GAAA,EAED,SAAAA,IAAc0D,GAAkB;MAC9B,IAAIA,GAAG,EAAE;QACP,IAAI,CAACuB,MAAM,CAAC1E,SAAS,GAAGmD,GAAG;QAC3B,IAAI,CAAC9C,GAAG,CAACwQ,IAAI,CAAC7Q,SAAS,GAAGmD,GAAG;QAC7B,IAAI,CAAC9C,GAAG,CAACyQ,KAAK,CAAC9Q,SAAS,GAAGmD,GAAG;QAC9B,IAAI,CAAC9C,GAAG,CAACmL,OAAO,CAACxL,SAAS,GAAGmD,GAAG;;;;IAEnC5D,GAAA;IAAAC,GAAA,EAED,SAAAA;MACE,OAAO,IAAI,CAACkF,MAAM,CAACtE,MAAM;KAC1B;IAAAX,GAAA,EAED,SAAAA,IAAWW,MAAiC;MAC1C,IAAI,CAACN,QAAQ,GAAG,IAAI,CAAC4E,MAAM,CAAC5E,QAAQ;MAEpC,IAAI,CAAC4E,MAAM,CAACtE,MAAM,GAAGA,MAAM;MAE3B,IAAI,IAAI,CAACC,GAAG,EAAE;QACZ,IAAI,CAACA,GAAG,CAACwQ,IAAI,CAACzQ,MAAM,GAAG,IAAI,CAACsE,MAAM,CAACtE,MAAM;QACzC,IAAI,CAACC,GAAG,CAACyQ,KAAK,CAAC1Q,MAAM,GAAG,IAAI,CAACsE,MAAM,CAACtE,MAAM;QAC1C,IAAI,CAACC,GAAG,CAACmL,OAAO,CAACpL,MAAM,GAAG,IAAI,CAACsE,MAAM,CAACtE,MAAM;;;;IAE/Cb,GAAA;IAAAC,GAAA,EAED,SAAAA;MACE,OAAO,IAAI,CAACkF,MAAM,CAACxE,QAAQ;KAC5B;IAAAT,GAAA,EAED,SAAAA,IAAaS,QAAmC;MAC9C,IAAI,CAACJ,QAAQ,GAAG,IAAI,CAAC4E,MAAM,CAAC5E,QAAQ;MACpC,IAAI,CAAC4E,MAAM,CAACxE,QAAQ,GAAGA,QAAQ;MAE/B,IAAI,IAAI,CAACG,GAAG,EAAE;QACZ,IAAI,CAACA,GAAG,CAACwQ,IAAI,CAAC3Q,QAAQ,GAAGA,QAAQ;QACjC,IAAI,CAACG,GAAG,CAACyQ,KAAK,CAAC5Q,QAAQ,GAAGA,QAAQ;QAClC,IAAI,CAACG,GAAG,CAACmL,OAAO,CAACtL,QAAQ,GAAGA,QAAQ;;;;IAEvCX,GAAA;IAAAC,GAAA,EAED,SAAAA;;MACE,QAAA8R,YAAA,GAAO,IAAI,CAAC5M,MAAM,cAAA4M,YAAA,GAAXA,YAAA,CAAajR,GAAG,qBAAhBiR,YAAA,CAAkBlS,KAAK;KAC/B;IAAAK,GAAA,EAED,SAAAA,IAAUL,KAAgC;MACxC,IAAIA,KAAK,EAAE;QACT,IAAI,CAACsF,MAAM,CAACrE,GAAG,CAACjB,KAAK,GAAGA,KAAK;QAC7B,IAAI,IAAI,CAACiB,GAAG,EAAE;UACZ,IAAI,CAACA,GAAG,CAACwQ,IAAI,CAACxQ,GAAG,CAACjB,KAAK,GAAGA,KAAK;UAC/B,IAAI,CAACiB,GAAG,CAACyQ,KAAK,CAACzQ,GAAG,CAACjB,KAAK,GAAGA,KAAK;UAChC,IAAI,CAACiB,GAAG,CAACmL,OAAO,CAACnL,GAAG,CAACjB,KAAK,GAAGA,KAAK;;;;;IAGvCG,GAAA;IAAAC,GAAA,EACD,SAAAA;;;MAGE,OAAO,IAAI,CAACyR,OAAO,CAACZ,aAAa,CAAC,IAAI,CAAC3L,MAAM,CAAC,CAAC6K,IAAI;;;EACpD,OAAAwB,MAAA;AAAA;AAyBH,SAAwBQ,IAAIA,CAAC7M,MAAoB;EAC/C,IAAM8M,MAAM,GAAG,IAAIT,MAAM,CAACrM,MAAM,CAAC;EACjC8M,MAAM,CAACN,SAAS,CAAC,IAAItR,MAAM,CAAC8E,MAAsB,CAAC,CAAC;EACpD,OAAO8M,MAAM;AACf;;ACxJAC,MAAM,CAACC,OAAO,GAAGX,IAAM;;;;"}