1 PostgreSQL介绍

1.1 定义

01.介绍1
    a.概念
        PostgreSQL 是一个功能强大的开源对象关系型数据库管理系统(ORDBMS)
        它使用和扩展了 SQL 语言,并结合了许多安全存储和扩展最复杂数据工作负载的特性
        PostgreSQL 的起源可以追溯到 1986 年,作为加州大学伯克利分校 POSTGRES 项目的一部分
        在核心平台上已经有超过 35 年的积极开发历史
        -----------------------------------------------------------------------------------------------------
        PostgreSQL 以其可靠性、功能健壮性和性能而闻名
        它是一个真正的关系型数据库,支持外键、连接、视图、触发器和存储过程
        同时也是一个对象关系型数据库,支持用户定义的类型、继承和多态
        -----------------------------------------------------------------------------------------------------
        PostgreSQL 采用多进程架构,而不是多线程架构
        这种设计使得系统更加稳定,即使某个进程崩溃也不会影响整个数据库系统
        PostgreSQL 使用 MVCC(多版本并发控制)来处理并发,避免了读写锁的竞争
        -----------------------------------------------------------------------------------------------------
        PostgreSQL 是完全开源的,使用 PostgreSQL License(类似于 BSD 或 MIT 许可证)
        这意味着用户可以自由使用、修改和分发 PostgreSQL,无需支付任何费用
        也不需要担心供应商锁定的问题
    b.主要特点
        ACID 完全兼容:PostgreSQL 完全支持 ACID(原子性、一致性、隔离性、持久性)特性,确保数据的可靠性和一致性
        丰富的数据类型:除了标准的 SQL 数据类型外,PostgreSQL 还支持 JSON、JSONB、数组、hstore、UUID、几何类型、网络地址类型等
        可扩展性强:用户可以定义自己的数据类型、操作符、索引类型和函数,甚至可以用不同的编程语言编写存储过程
        高级索引:支持 B-tree、Hash、GiST、SP-GiST、GIN 和 BRIN 等多种索引类型,满足不同场景的查询需求
        -----------------------------------------------------------------------------------------------------
        全文检索:内置强大的全文检索功能,支持多种语言的分词和搜索,无需依赖外部搜索引擎
        外键约束:完整支持外键约束,包括级联更新和级联删除,确保数据的引用完整性
        事务支持:支持嵌套事务(保存点)、两阶段提交(2PC)等高级事务特性
        并发控制:使用 MVCC 实现高效的并发控制,读操作不会阻塞写操作,写操作也不会阻塞读操作
        -----------------------------------------------------------------------------------------------------
        复制和高可用:支持流复制、逻辑复制、级联复制等多种复制方式,可以构建高可用和读写分离架构
        分区表:原生支持范围分区、列表分区和哈希分区,提高大表的查询和维护性能
        并行查询:支持并行顺序扫描、并行连接、并行聚合等,充分利用多核 CPU 提升查询性能
        JSON 支持:原生支持 JSON 和 JSONB 数据类型,提供丰富的 JSON 操作函数和索引支持
        -----------------------------------------------------------------------------------------------------
        外部数据包装器:通过 FDW(Foreign Data Wrapper)可以访问外部数据源,如其他 PostgreSQL 数据库、MySQL、Oracle、Redis 等
        窗口函数:支持强大的窗口函数,可以进行复杂的分析查询
        公用表表达式:支持 CTE(Common Table Expression)和递归查询,简化复杂查询的编写
        触发器和规则:支持行级和语句级触发器,以及规则系统,实现复杂的业务逻辑
        -----------------------------------------------------------------------------------------------------
        多语言支持:支持多种过程语言,包括 PL/pgSQL、PL/Python、PL/Perl、PL/Tcl、PL/Java 等
        安全性:支持 SSL 连接、行级安全策略(RLS)、列级权限控制等多层次的安全机制
        国际化:支持多种字符集和排序规则,可以处理各种语言的数据
        跨平台:支持 Linux、Windows、macOS、BSD 等多种操作系统
    c.业务应用场景
        PostgreSQL 的强大功能和灵活性使其适用于各种业务场景
        从小型应用到大型企业级系统,从 OLTP 到 OLAP,PostgreSQL 都能胜任
        -----------------------------------------------------------------------------------------------------
        金融行业:PostgreSQL 的 ACID 特性和高可靠性使其非常适合金融交易系统、支付系统、风控系统等对数据一致性要求极高的场景
        电商平台:支持高并发的订单处理、库存管理、用户画像分析等,JSON 支持使其能够灵活存储商品属性等半结构化数据
        地理信息系统:通过 PostGIS 扩展,PostgreSQL 成为最强大的开源地理信息数据库,广泛应用于地图服务、位置服务、空间分析等
        数据仓库:支持分区表、并行查询、物化视图等特性,可以构建高性能的数据仓库和 OLAP 系统
        -----------------------------------------------------------------------------------------------------
        内容管理系统:全文检索功能使其非常适合构建博客、论坛、文档管理等内容密集型应用
        物联网:可以高效存储和查询时序数据,通过 TimescaleDB 扩展可以进一步增强时序数据处理能力
        社交网络:支持复杂的关系查询、图数据存储(通过扩展)、用户行为分析等
        科研和学术:支持复杂的数据类型和查询,适合存储和分析科研数据
        -----------------------------------------------------------------------------------------------------
        政府和公共服务:开源免费的特性使其成为政府部门的首选,避免了商业数据库的高昂成本和供应商锁定
        企业应用:ERP、CRM、OA 等企业应用系统的后端数据库
        日志分析:可以存储和分析大量的日志数据,结合 JSON 支持可以灵活处理各种格式的日志
        实时分析:通过流复制和逻辑复制,可以构建实时数据同步和分析系统
        -----------------------------------------------------------------------------------------------------
        这些应用场景中,数据操作方面的共同特点是:
        (1)对数据一致性和可靠性要求高
        (2)需要支持复杂的查询和事务
        (3)数据类型多样,包括结构化和半结构化数据
        (4)需要良好的扩展性和性能

02.介绍2
    a.对比(PostgreSQL vs MySQL)
        PostgreSQL                                          MySQL
        对象关系型数据库(ORDBMS)                           关系型数据库(RDBMS)
        完全遵循 SQL 标准                                    部分遵循 SQL 标准
        支持复杂数据类型(JSON、数组、hstore等)              数据类型相对简单
        支持表继承                                          不支持表继承
        -----------------------------------------------------------------------------------------------------
        特性对比:
        事务支持        PostgreSQL 完全支持 ACID,所有存储引擎都支持事务          MySQL 的 InnoDB 支持事务,MyISAM 不支持
        并发控制        使用 MVCC,读写不阻塞                                    InnoDB 使用 MVCC,MyISAM 使用表锁
        外键约束        完整支持外键约束                                         InnoDB 支持外键,MyISAM 不支持
        全文检索        内置全文检索,支持多语言                                  需要使用 FULLTEXT 索引或外部工具
        JSON 支持       原生支持 JSON 和 JSONB,功能强大                         支持 JSON,但功能相对简单
        -----------------------------------------------------------------------------------------------------
        索引类型        B-tree、Hash、GiST、SP-GiST、GIN、BRIN                  B-tree、Hash、FULLTEXT、R-tree
        复制方式        流复制、逻辑复制、级联复制                                主从复制、组复制
        分区表          原生支持范围、列表、哈希分区                              支持范围、列表、哈希、键分区
        存储过程        支持多种语言(PL/pgSQL、Python、Perl等)                 主要使用 SQL 和少量编程语言
        触发器          支持行级和语句级触发器                                   主要支持行级触发器
        -----------------------------------------------------------------------------------------------------
        视图            支持普通视图和物化视图                                   支持普通视图,不支持物化视图
        窗口函数        完整支持窗口函数                                         MySQL 8.0+ 开始支持窗口函数
        CTE             支持递归和非递归 CTE                                     MySQL 8.0+ 开始支持 CTE
        并行查询        支持并行查询                                            不支持并行查询
        扩展性          高度可扩展,可自定义类型、函数、索引                      扩展性相对有限
        -----------------------------------------------------------------------------------------------------
        性能对比:
        读密集型        两者性能相近,MySQL 在简单查询上可能略快                  PostgreSQL 在复杂查询上更优
        写密集型        PostgreSQL 的 MVCC 在高并发写入时表现更好                MySQL InnoDB 在简单写入时性能不错
        复杂查询        PostgreSQL 的查询优化器更强大                            MySQL 在简单查询上优化较好
        大数据量        PostgreSQL 的分区和并行查询更适合大数据                   MySQL 在中小数据量上表现良好
        -----------------------------------------------------------------------------------------------------
        使用场景:
        PostgreSQL 更适合:复杂查询、数据分析、地理信息系统、需要严格数据一致性的场景、需要高级特性的企业应用
        MySQL 更适合:简单的 CRUD 操作、Web 应用、读多写少的场景、需要快速部署的项目
    b.术语
        数据库(Database):存储数据的容器,一个 PostgreSQL 实例可以包含多个数据库
        模式(Schema):数据库中的命名空间,用于组织表、视图、函数等对象,一个数据库可以包含多个模式
        表(Table):存储数据的基本单位,由行和列组成
        行(Row):表中的一条记录,也称为元组(Tuple)
        列(Column):表中的一个字段,也称为属性(Attribute)
        -----------------------------------------------------------------------------------------------------
        主键(Primary Key):唯一标识表中每一行的列或列组合
        外键(Foreign Key):用于建立表之间关系的列,引用另一个表的主键
        索引(Index):用于加速查询的数据结构
        视图(View):基于查询结果的虚拟表
        物化视图(Materialized View):存储查询结果的视图,需要手动刷新
        -----------------------------------------------------------------------------------------------------
        事务(Transaction):一组作为单个逻辑工作单元执行的数据库操作
        MVCC(Multi-Version Concurrency Control):多版本并发控制,PostgreSQL 用于处理并发的机制
        WAL(Write-Ahead Logging):预写式日志,用于保证数据持久性和支持复制
        VACUUM:清理死元组和更新统计信息的维护操作
        ANALYZE:收集表的统计信息,用于查询优化
        -----------------------------------------------------------------------------------------------------
        表空间(Tablespace):存储数据库对象的物理位置
        角色(Role):用户和用户组的统一概念,用于权限管理
        扩展(Extension):为 PostgreSQL 添加额外功能的模块
        FDW(Foreign Data Wrapper):用于访问外部数据源的接口
        触发器(Trigger):在特定事件发生时自动执行的函数
        -----------------------------------------------------------------------------------------------------
        存储过程(Stored Procedure):存储在数据库中的可执行程序
        函数(Function):返回值的可执行程序
        聚合函数(Aggregate Function):对一组值进行计算并返回单个值的函数
        窗口函数(Window Function):对查询结果集的窗口执行计算的函数
        CTE(Common Table Expression):公用表表达式,用于简化复杂查询
        -----------------------------------------------------------------------------------------------------
        分区表(Partitioned Table):将大表分割成多个小表的技术
        继承(Inheritance):子表继承父表的结构和数据
        TOAST(The Oversized-Attribute Storage Technique):用于存储大字段的技术
        连接池(Connection Pool):管理数据库连接的中间件
        复制(Replication):将数据从主服务器复制到从服务器的过程
    c.架构组件
        Postmaster 主进程:PostgreSQL 的守护进程,负责监听客户端连接请求,为每个连接创建后端进程
        Backend 进程:处理客户端请求的工作进程,每个客户端连接对应一个后端进程
        共享内存:所有进程共享的内存区域,包括共享缓冲区、WAL 缓冲区等
        -----------------------------------------------------------------------------------------------------
        后台辅助进程:
        Background Writer:将脏页写入磁盘
        WAL Writer:将 WAL 缓冲区的内容写入 WAL 文件
        Checkpointer:执行检查点操作,将脏页批量写入磁盘
        Autovacuum Launcher:启动自动清理进程
        Autovacuum Worker:执行自动清理操作
        Stats Collector:收集数据库统计信息
        Logical Replication Launcher:启动逻辑复制进程
        -----------------------------------------------------------------------------------------------------
        存储结构:
        数据文件:存储表和索引数据的文件,默认位于 $PGDATA/base 目录
        WAL 文件:预写式日志文件,默认位于 $PGDATA/pg_wal 目录
        配置文件:postgresql.conf(主配置文件)、pg_hba.conf(客户端认证配置)、pg_ident.conf(用户映射配置)
        -----------------------------------------------------------------------------------------------------
        内存结构:
        共享缓冲区(Shared Buffers):缓存表和索引数据
        WAL 缓冲区(WAL Buffers):缓存 WAL 日志
        工作内存(Work Mem):用于排序和哈希操作
        维护工作内存(Maintenance Work Mem):用于 VACUUM、CREATE INDEX 等维护操作
        临时缓冲区(Temp Buffers):用于临时表

03.最新动态
    a.版本演进
        PostgreSQL 8.x(2005-2010):引入了 MVCC、PITR、表空间等核心特性
        PostgreSQL 9.0(2010):引入流复制、热备份
        PostgreSQL 9.1(2011):引入同步复制、外部数据包装器(FDW)
        PostgreSQL 9.2(2012):引入级联复制、JSON 数据类型
        PostgreSQL 9.3(2013):引入物化视图、可更新视图
        PostgreSQL 9.4(2014):引入 JSONB 数据类型、逻辑解码
        -----------------------------------------------------------------------------------------------------
        PostgreSQL 9.5(2016):引入 UPSERT(INSERT ON CONFLICT)、行级安全策略(RLS)
        PostgreSQL 9.6(2016):引入并行查询、多个同步备库
        PostgreSQL 10(2017):引入声明式分区表、逻辑复制
        PostgreSQL 11(2018):增强分区表性能、支持存储过程中的事务控制
        PostgreSQL 12(2019):改进分区表性能、支持生成列
        -----------------------------------------------------------------------------------------------------
        PostgreSQL 13(2020):改进索引性能、增强分区表功能
        PostgreSQL 14(2021):支持多范围数据类型、改进查询并行度
        PostgreSQL 15(2022):引入 MERGE 语句、改进排序性能
        PostgreSQL 16(2023):增强逻辑复制、改进查询性能
        PostgreSQL 17(2024):持续优化性能和稳定性
        -----------------------------------------------------------------------------------------------------
        版本策略:
        从 PostgreSQL 10 开始,版本号从三位改为两位(如 10.0、11.0)
        主版本每年发布一次,通常在 9-10 月份
        每个主版本支持 5 年,包括安全更新和 bug 修复
        小版本每季度发布一次,修复 bug 和安全问题
    b.服务形态
        自托管(Self-Hosted):在自己的服务器上安装和管理 PostgreSQL,完全控制但需要自行维护
        云托管(Cloud-Hosted):使用云服务商提供的 PostgreSQL 服务,如 AWS RDS、Azure Database、Google Cloud SQL
        托管服务(Managed Service):专门的 PostgreSQL 托管服务,如 Heroku Postgres、Aiven、Crunchy Data
        -----------------------------------------------------------------------------------------------------
        容器化部署:使用 Docker、Kubernetes 等容器技术部署 PostgreSQL,便于管理和扩展
        DBaaS(Database as a Service):数据库即服务,云服务商提供的完全托管的数据库服务
        Serverless:无服务器数据库服务,如 AWS Aurora Serverless、Neon
        -----------------------------------------------------------------------------------------------------
        主流云服务商的 PostgreSQL 服务:
        AWS RDS for PostgreSQL:亚马逊提供的托管 PostgreSQL 服务,支持自动备份、高可用、读副本等
        AWS Aurora PostgreSQL:兼容 PostgreSQL 的云原生数据库,性能更高
        Azure Database for PostgreSQL:微软提供的托管服务,支持单服务器、灵活服务器、超大规模(Citus)
        Google Cloud SQL for PostgreSQL:谷歌提供的托管服务,集成 GCP 生态
        阿里云 RDS PostgreSQL:阿里云提供的托管服务,针对中国市场优化
        腾讯云 PostgreSQL:腾讯云提供的托管服务
    c.新特性
        并行查询增强:PostgreSQL 持续改进并行查询能力,支持更多类型的并行操作,如并行哈希连接、并行聚合等
        分区表优化:分区表的性能持续优化,支持更多分区操作,如分区裁剪、分区智能连接等
        JSON/JSONB 功能增强:持续增强 JSON 数据类型的功能,支持更多 JSON 操作和索引优化
        逻辑复制改进:逻辑复制功能持续改进,支持更多场景,如双向复制、过滤复制等
        -----------------------------------------------------------------------------------------------------
        JIT 编译:引入 JIT(Just-In-Time)编译,通过 LLVM 加速查询执行
        增量备份:支持增量备份,减少备份时间和存储空间
        可插拔存储引擎:支持可插拔的存储引擎,允许使用不同的存储后端
        改进的统计信息:更准确的统计信息收集,改进查询优化器的决策
        -----------------------------------------------------------------------------------------------------
        安全性增强:持续增强安全特性,如 SCRAM-SHA-256 认证、SSL/TLS 改进、审计日志等
        性能监控:改进的性能监控工具和视图,如 pg_stat_statements 增强、等待事件监控等
        国际化支持:更好的国际化支持,包括 ICU 排序规则、多语言全文检索等
        扩展生态:丰富的扩展生态,如 PostGIS(地理信息)、TimescaleDB(时序数据)、Citus(分布式)等

1.2 安装

01.Windows安装
    a.环境变量
        下载 PostgreSQL Windows 安装包(https://www.postgresql.org/download/windows/)
        运行安装程序,选择安装路径(如 C:\Program Files\PostgreSQL\16)
        安装过程中会提示设置超级用户 postgres 的密码
        安装完成后,系统会自动添加环境变量
        -----------------------------------------------------------------------------------------------------
        手动配置环境变量(如果需要):
        PGDATA=C:\Program Files\PostgreSQL\16\data
        PATH 添加:C:\Program Files\PostgreSQL\16\bin
        PGHOST=localhost
        PGPORT=5432
        PGUSER=postgres
    b.配置文件
        主配置文件位置:C:\Program Files\PostgreSQL\16\data\postgresql.conf
        客户端认证配置:C:\Program Files\PostgreSQL\16\data\pg_hba.conf
        用户映射配置:C:\Program Files\PostgreSQL\16\data\pg_ident.conf
        -----------------------------------------------------------------------------------------------------
        常用配置项(postgresql.conf):
        listen_addresses = '*'                      # 监听所有 IP 地址
        port = 5432                                 # 端口号
        max_connections = 100                       # 最大连接数
        shared_buffers = 128MB                      # 共享缓冲区大小
        work_mem = 4MB                              # 工作内存
        maintenance_work_mem = 64MB                 # 维护工作内存
        effective_cache_size = 4GB                  # 有效缓存大小
        -----------------------------------------------------------------------------------------------------
        日志配置:
        logging_collector = on                      # 启用日志收集
        log_directory = 'log'                       # 日志目录
        log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'  # 日志文件名
        log_statement = 'all'                       # 记录所有 SQL 语句
        log_duration = on                           # 记录语句执行时间
        -----------------------------------------------------------------------------------------------------
        客户端认证配置(pg_hba.conf):
        # TYPE  DATABASE        USER            ADDRESS                 METHOD
        local   all             all                                     trust
        host    all             all             127.0.0.1/32            md5
        host    all             all             0.0.0.0/0               md5
        host    all             all             ::1/128                 md5
    c.服务管理
        启动服务:
        net start postgresql-x64-16
        或通过服务管理器启动(services.msc)
        -----------------------------------------------------------------------------------------------------
        停止服务:
        net stop postgresql-x64-16
        -----------------------------------------------------------------------------------------------------
        重启服务:
        net stop postgresql-x64-16
        net start postgresql-x64-16
        -----------------------------------------------------------------------------------------------------
        查看服务状态:
        sc query postgresql-x64-16
        -----------------------------------------------------------------------------------------------------
        使用 pg_ctl 管理(需要在 bin 目录下执行):
        pg_ctl start -D "C:\Program Files\PostgreSQL\16\data"
        pg_ctl stop -D "C:\Program Files\PostgreSQL\16\data"
        pg_ctl restart -D "C:\Program Files\PostgreSQL\16\data"
        pg_ctl status -D "C:\Program Files\PostgreSQL\16\data"
    d.创建用户
        使用 psql 连接数据库:
        psql -U postgres
        输入安装时设置的密码
        -----------------------------------------------------------------------------------------------------
        创建用户:
        CREATE USER myuser WITH PASSWORD 'mypassword';
        CREATE USER admin WITH PASSWORD 'admin123' SUPERUSER;
        CREATE USER readonly WITH PASSWORD 'readonly123';
        -----------------------------------------------------------------------------------------------------
        授予权限:
        GRANT ALL PRIVILEGES ON DATABASE mydb TO myuser;
        GRANT CONNECT ON DATABASE mydb TO readonly;
        GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;
        -----------------------------------------------------------------------------------------------------
        修改用户密码:
        ALTER USER myuser WITH PASSWORD 'newpassword';
        -----------------------------------------------------------------------------------------------------
        删除用户:
        DROP USER myuser;
        -----------------------------------------------------------------------------------------------------
        查看所有用户:
        \du
        或
        SELECT usename FROM pg_user;
    e.客户端连接
        使用 psql 命令行:
        psql -h localhost -p 5432 -U postgres -d postgres
        psql -h 127.0.0.1 -U myuser -d mydb
        -----------------------------------------------------------------------------------------------------
        常用 psql 命令:
        \l                      # 列出所有数据库
        \c dbname               # 切换数据库
        \dt                     # 列出当前数据库的所有表
        \d tablename            # 查看表结构
        \du                     # 列出所有用户
        \q                      # 退出 psql
        \?                      # 查看帮助
        -----------------------------------------------------------------------------------------------------
        使用 pgAdmin(图形界面工具):
        安装时会自动安装 pgAdmin
        打开 pgAdmin,右键 Servers -> Register -> Server
        填写连接信息:
            Name: Local PostgreSQL
            Host: localhost
            Port: 5432
            Username: postgres
            Password: 安装时设置的密码

02.Linux安装
    a.yum/apt安装
        CentOS/RHEL(使用 yum):
        # 安装 PostgreSQL 仓库
        sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
        # 安装 PostgreSQL 16
        sudo yum install -y postgresql16-server postgresql16
        # 初始化数据库
        sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
        # 启动服务
        sudo systemctl start postgresql-16
        sudo systemctl enable postgresql-16
        -----------------------------------------------------------------------------------------------------
        Ubuntu/Debian(使用 apt):
        # 添加 PostgreSQL 仓库
        sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
        wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
        # 更新包列表
        sudo apt-get update
        # 安装 PostgreSQL 16
        sudo apt-get install -y postgresql-16 postgresql-contrib-16
        # 服务会自动启动
        sudo systemctl status postgresql
        -----------------------------------------------------------------------------------------------------
        验证安装:
        psql --version
        sudo -u postgres psql -c "SELECT version();"
    b.源码编译
        安装依赖:
        # CentOS/RHEL
        sudo yum install -y gcc make readline-devel zlib-devel
        # Ubuntu/Debian
        sudo apt-get install -y build-essential libreadline-dev zlib1g-dev
        -----------------------------------------------------------------------------------------------------
        下载源码:
        wget https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.gz
        tar -xzf postgresql-16.0.tar.gz
        cd postgresql-16.0
        -----------------------------------------------------------------------------------------------------
        编译安装:
        ./configure --prefix=/usr/local/pgsql
        make
        sudo make install
        -----------------------------------------------------------------------------------------------------
        创建用户和数据目录:
        sudo useradd postgres
        sudo mkdir /usr/local/pgsql/data
        sudo chown postgres:postgres /usr/local/pgsql/data
        -----------------------------------------------------------------------------------------------------
        初始化数据库:
        sudo -u postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
        -----------------------------------------------------------------------------------------------------
        启动数据库:
        sudo -u postgres /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
    c.配置优化
        修改配置文件(/var/lib/pgsql/16/data/postgresql.conf):
        listen_addresses = '*'                      # 监听所有 IP
        max_connections = 200                       # 根据服务器配置调整
        shared_buffers = 256MB                      # 建议设置为系统内存的 25%
        effective_cache_size = 1GB                  # 建议设置为系统内存的 50-75%
        work_mem = 8MB                              # 根据查询复杂度调整
        maintenance_work_mem = 128MB                # 用于维护操作
        -----------------------------------------------------------------------------------------------------
        修改认证配置(/var/lib/pgsql/16/data/pg_hba.conf):
        # 允许本地连接
        local   all             all                                     peer
        # 允许局域网连接
        host    all             all             192.168.1.0/24          md5
        # 允许所有 IP 连接(生产环境不推荐)
        host    all             all             0.0.0.0/0               md5
        -----------------------------------------------------------------------------------------------------
        重启服务使配置生效:
        sudo systemctl restart postgresql-16
        -----------------------------------------------------------------------------------------------------
        设置 postgres 用户密码:
        sudo -u postgres psql
        ALTER USER postgres WITH PASSWORD 'newpassword';
        \q
        -----------------------------------------------------------------------------------------------------
        防火墙配置:
        # CentOS/RHEL
        sudo firewall-cmd --permanent --add-port=5432/tcp
        sudo firewall-cmd --reload
        # Ubuntu/Debian
        sudo ufw allow 5432/tcp

03.Docker安装
    a.镜像拉取
        拉取官方镜像:
        docker pull postgres:16
        docker pull postgres:latest
        docker pull postgres:16-alpine          # 轻量级版本
        -----------------------------------------------------------------------------------------------------
        查看镜像:
        docker images | grep postgres
        -----------------------------------------------------------------------------------------------------
        查看镜像详细信息:
        docker inspect postgres:16
    b.容器启动
        基本启动:
        docker run --name postgres-container \
            -e POSTGRES_PASSWORD=mypassword \
            -p 5432:5432 \
            -d postgres:16
        -----------------------------------------------------------------------------------------------------
        完整配置启动:
        docker run --name postgres-container \
            -e POSTGRES_USER=myuser \
            -e POSTGRES_PASSWORD=mypassword \
            -e POSTGRES_DB=mydb \
            -e PGDATA=/var/lib/postgresql/data/pgdata \
            -p 5432:5432 \
            -v /my/local/path:/var/lib/postgresql/data \
            -d postgres:16
        -----------------------------------------------------------------------------------------------------
        使用自定义配置文件:
        docker run --name postgres-container \
            -e POSTGRES_PASSWORD=mypassword \
            -p 5432:5432 \
            -v /my/custom/postgresql.conf:/etc/postgresql/postgresql.conf \
            -v /my/local/data:/var/lib/postgresql/data \
            -d postgres:16 \
            -c 'config_file=/etc/postgresql/postgresql.conf'
        -----------------------------------------------------------------------------------------------------
        查看容器状态:
        docker ps
        docker logs postgres-container
        -----------------------------------------------------------------------------------------------------
        进入容器:
        docker exec -it postgres-container bash
        psql -U postgres
        -----------------------------------------------------------------------------------------------------
        停止和启动容器:
        docker stop postgres-container
        docker start postgres-container
        docker restart postgres-container
        -----------------------------------------------------------------------------------------------------
        删除容器:
        docker rm postgres-container
        docker rm -f postgres-container         # 强制删除
    c.数据持久化
        使用数据卷(Volume):
        # 创建数据卷
        docker volume create postgres-data
        # 使用数据卷启动容器
        docker run --name postgres-container \
            -e POSTGRES_PASSWORD=mypassword \
            -p 5432:5432 \
            -v postgres-data:/var/lib/postgresql/data \
            -d postgres:16
        -----------------------------------------------------------------------------------------------------
        使用绑定挂载(Bind Mount):
        # 创建本地目录
        mkdir -p /my/local/postgres/data
        # 启动容器并挂载
        docker run --name postgres-container \
            -e POSTGRES_PASSWORD=mypassword \
            -p 5432:5432 \
            -v /my/local/postgres/data:/var/lib/postgresql/data \
            -d postgres:16
        -----------------------------------------------------------------------------------------------------
        备份数据:
        # 备份整个数据目录
        docker exec postgres-container pg_dumpall -U postgres > backup.sql
        # 备份单个数据库
        docker exec postgres-container pg_dump -U postgres mydb > mydb_backup.sql
        -----------------------------------------------------------------------------------------------------
        恢复数据:
        # 恢复整个数据库
        cat backup.sql | docker exec -i postgres-container psql -U postgres
        # 恢复单个数据库
        cat mydb_backup.sql | docker exec -i postgres-container psql -U postgres -d mydb
        -----------------------------------------------------------------------------------------------------
        使用 docker-compose:
        version: '3.8'
        services:
          postgres:
            image: postgres:16
            container_name: postgres-container
            environment:
              POSTGRES_USER: myuser
              POSTGRES_PASSWORD: mypassword
              POSTGRES_DB: mydb
            ports:
              - "5432:5432"
            volumes:
              - postgres-data:/var/lib/postgresql/data
            restart: unless-stopped
        volumes:
          postgres-data:

04.连接工具
    a.psql命令行
        基本连接:
        psql -h localhost -p 5432 -U postgres -d postgres
        psql -h 127.0.0.1 -U myuser -d mydb
        psql postgresql://myuser:mypassword@localhost:5432/mydb
        -----------------------------------------------------------------------------------------------------
        常用命令:
        \l                              # 列出所有数据库
        \c dbname                       # 切换数据库
        \dt                             # 列出当前数据库的所有表
        \dt+                            # 列出表及其大小
        \d tablename                    # 查看表结构
        \d+ tablename                   # 查看表详细信息
        \di                             # 列出所有索引
        \dv                             # 列出所有视图
        \df                             # 列出所有函数
        \du                             # 列出所有用户
        \dn                             # 列出所有模式
        \dx                             # 列出所有扩展
        -----------------------------------------------------------------------------------------------------
        \timing                         # 显示查询执行时间
        \x                              # 切换扩展显示模式
        \e                              # 使用外部编辑器编辑查询
        \i filename.sql                 # 执行 SQL 文件
        \o filename.txt                 # 将查询结果输出到文件
        \q                              # 退出 psql
        \?                              # 查看帮助
        \h SELECT                       # 查看 SELECT 命令的帮助
        -----------------------------------------------------------------------------------------------------
        执行 SQL 查询:
        SELECT version();
        SELECT current_database();
        SELECT current_user;
        SELECT now();
    b.pgAdmin
        安装 pgAdmin:
        # Windows:下载安装包 https://www.pgadmin.org/download/
        # Linux(Ubuntu/Debian):
        sudo apt-get install pgadmin4
        # macOS:
        brew install --cask pgadmin4
        -----------------------------------------------------------------------------------------------------
        使用 pgAdmin:
        1. 打开 pgAdmin
        2. 右键 Servers -> Register -> Server
        3. 填写连接信息:
           General 标签:
               Name: My PostgreSQL Server
           Connection 标签:
               Host: localhost
               Port: 5432
               Maintenance database: postgres
               Username: postgres
               Password: your_password
        4. 点击 Save
        -----------------------------------------------------------------------------------------------------
        常用功能:
        查看数据库对象:在左侧树形结构中浏览
        执行 SQL 查询:Tools -> Query Tool
        查看表数据:右键表 -> View/Edit Data -> All Rows
        导入导出数据:右键数据库 -> Backup/Restore
        查看执行计划:Query Tool 中点击 Explain 按钮
    c.DBeaver
        安装 DBeaver:
        下载地址:https://dbeaver.io/download/
        支持 Windows、Linux、macOS
        -----------------------------------------------------------------------------------------------------
        连接 PostgreSQL:
        1. 打开 DBeaver
        2. 点击 Database -> New Database Connection
        3. 选择 PostgreSQL
        4. 填写连接信息:
           Host: localhost
           Port: 5432
           Database: postgres
           Username: postgres
           Password: your_password
        5. 点击 Test Connection 测试连接
        6. 点击 Finish
        -----------------------------------------------------------------------------------------------------
        常用功能:
        SQL 编辑器:右键数据库 -> SQL Editor -> New SQL Script
        数据浏览:双击表查看数据
        ER 图:右键数据库 -> View Diagram
        数据导入导出:右键表 -> Import Data / Export Data
        查询执行计划:SQL 编辑器中按 Ctrl+Shift+E
    d.Navicat
        安装 Navicat:
        下载地址:https://www.navicat.com/
        商业软件,提供试用版
        -----------------------------------------------------------------------------------------------------
        连接 PostgreSQL:
        1. 打开 Navicat
        2. 点击 Connection -> PostgreSQL
        3. 填写连接信息:
           Connection Name: My PostgreSQL
           Host: localhost
           Port: 5432
           Initial Database: postgres
           User Name: postgres
           Password: your_password
        4. 点击 Test Connection 测试连接
        5. 点击 OK
        -----------------------------------------------------------------------------------------------------
        常用功能:
        查询编辑器:双击连接 -> 点击 Query -> New Query
        数据浏览:双击表查看数据
        数据传输:Tools -> Data Transfer
        数据同步:Tools -> Data Synchronization
        备份还原:右键数据库 -> Dump SQL File / Execute SQL File
        ER 图:Tools -> ER Diagram

1.3 架构

01.进程架构
    a.Postmaster主进程
        PostgreSQL 的守护进程,是整个数据库系统的入口
        负责监听客户端连接请求(默认端口 5432)
        为每个新的客户端连接创建一个独立的后端进程(Backend Process)
        管理和监控所有子进程的状态
        -----------------------------------------------------------------------------------------------------
        启动时的主要工作:
        读取配置文件(postgresql.conf、pg_hba.conf)
        初始化共享内存
        启动后台辅助进程
        创建监听套接字
        -----------------------------------------------------------------------------------------------------
        当接收到连接请求时:
        验证客户端身份(根据 pg_hba.conf)
        fork 一个新的后端进程处理该连接
        将连接信息传递给后端进程
    b.Backend进程
        每个客户端连接对应一个独立的后端进程
        负责处理客户端发送的 SQL 查询和命令
        执行查询计划、访问数据、返回结果
        进程之间相互独立,一个进程崩溃不会影响其他进程
        -----------------------------------------------------------------------------------------------------
        后端进程的生命周期:
        由 Postmaster 创建
        与客户端建立连接
        处理客户端请求
        客户端断开连接后,进程终止
        -----------------------------------------------------------------------------------------------------
        后端进程的内存结构:
        本地内存(Local Memory):每个进程独有
        共享内存(Shared Memory):所有进程共享
    c.后台辅助进程
        Background Writer(后台写进程):
        定期将共享缓冲区中的脏页写入磁盘
        减少检查点时的 I/O 压力
        提高系统整体性能
        -----------------------------------------------------------------------------------------------------
        WAL Writer(WAL 写进程):
        将 WAL 缓冲区的内容写入 WAL 文件
        确保事务的持久性
        支持崩溃恢复和复制
        -----------------------------------------------------------------------------------------------------
        Checkpointer(检查点进程):
        执行检查点操作
        将所有脏页批量写入磁盘
        更新控制文件,记录检查点位置
        -----------------------------------------------------------------------------------------------------
        Autovacuum Launcher(自动清理启动器):
        监控数据库的统计信息
        根据需要启动 Autovacuum Worker 进程
        自动执行 VACUUM 和 ANALYZE 操作
        -----------------------------------------------------------------------------------------------------
        Autovacuum Worker(自动清理工作进程):
        清理死元组(Dead Tuples)
        回收空间
        更新统计信息
        防止事务 ID 回卷
        -----------------------------------------------------------------------------------------------------
        Stats Collector(统计信息收集器):
        收集数据库运行时的统计信息
        包括表访问次数、索引使用情况等
        为查询优化器提供数据
        -----------------------------------------------------------------------------------------------------
        Logical Replication Launcher(逻辑复制启动器):
        管理逻辑复制的订阅
        启动逻辑复制工作进程
        监控复制状态
    d.进程间通信
        共享内存:
        最主要的进程间通信方式
        所有进程共享同一块内存区域
        包括共享缓冲区、锁表、事务状态等
        -----------------------------------------------------------------------------------------------------
        信号量(Semaphore):
        用于进程同步
        控制对共享资源的访问
        -----------------------------------------------------------------------------------------------------
        管道(Pipe):
        用于进程间传递消息
        Postmaster 与后端进程之间的通信
        -----------------------------------------------------------------------------------------------------
        套接字(Socket):
        客户端与服务器之间的通信
        支持 TCP/IP 和 Unix Domain Socket

02.内存架构
    a.共享内存
        共享缓冲区(Shared Buffers):
        缓存表和索引的数据页
        所有后端进程共享
        默认大小为 128MB,建议设置为系统内存的 25%
        配置参数:shared_buffers
        -----------------------------------------------------------------------------------------------------
        WAL 缓冲区(WAL Buffers):
        缓存 WAL 日志数据
        在写入磁盘前暂存
        默认大小为 shared_buffers 的 1/32
        配置参数:wal_buffers
        -----------------------------------------------------------------------------------------------------
        提交日志缓冲区(CLOG Buffers):
        缓存事务提交状态
        记录事务是否已提交
        -----------------------------------------------------------------------------------------------------
        锁表(Lock Table):
        管理各种锁信息
        包括表锁、行锁、页锁等
        -----------------------------------------------------------------------------------------------------
        进程信息数组:
        记录所有后端进程的状态
        包括进程 ID、连接信息、当前执行的查询等
    b.本地内存
        工作内存(Work Mem):
        用于排序、哈希、连接等操作
        每个操作独立分配
        配置参数:work_mem(默认 4MB)
        如果内存不足,会使用临时文件
        -----------------------------------------------------------------------------------------------------
        维护工作内存(Maintenance Work Mem):
        用于 VACUUM、CREATE INDEX、ALTER TABLE 等维护操作
        配置参数:maintenance_work_mem(默认 64MB)
        建议设置为 work_mem 的 10-20 倍
        -----------------------------------------------------------------------------------------------------
        临时缓冲区(Temp Buffers):
        用于访问临时表
        每个会话独立分配
        配置参数:temp_buffers(默认 8MB)
    c.内存参数配置
        shared_buffers:
        建议值:系统内存的 25%
        最小值:128KB
        最大值:取决于操作系统
        -----------------------------------------------------------------------------------------------------
        effective_cache_size:
        告诉优化器操作系统和 PostgreSQL 可用的缓存大小
        不实际分配内存,仅用于查询计划
        建议值:系统内存的 50-75%
        -----------------------------------------------------------------------------------------------------
        work_mem:
        影响排序、哈希、连接操作的性能
        设置过大可能导致内存不足
        建议值:根据并发连接数和查询复杂度调整
        计算公式:(总内存 - shared_buffers) / (max_connections * 2-3)
        -----------------------------------------------------------------------------------------------------
        maintenance_work_mem:
        影响维护操作的性能
        建议值:256MB - 1GB
        对于大表的索引创建,可以设置更大
        -----------------------------------------------------------------------------------------------------
        内存配置示例(16GB 内存的服务器):
        shared_buffers = 4GB
        effective_cache_size = 12GB
        work_mem = 16MB
        maintenance_work_mem = 512MB

03.存储架构
    a.数据文件组织
        数据目录(PGDATA):
        PostgreSQL 的根目录
        包含所有数据文件、配置文件、日志文件
        默认位置:/var/lib/postgresql/data(Linux)或 C:\Program Files\PostgreSQL\data(Windows)
        -----------------------------------------------------------------------------------------------------
        主要子目录:
        base/:存储数据库文件,每个数据库一个子目录
        global/:存储集群级别的表(如 pg_database)
        pg_wal/:存储 WAL 日志文件(旧版本为 pg_xlog)
        pg_tblspc/:存储表空间的符号链接
        pg_stat/:存储统计信息文件
        pg_stat_tmp/:存储临时统计信息
        -----------------------------------------------------------------------------------------------------
        数据文件命名:
        每个表和索引对应一个或多个文件
        文件名为对象的 OID(对象标识符)
        单个文件最大 1GB,超过后创建新文件(如 12345.1、12345.2)
        -----------------------------------------------------------------------------------------------------
        查看表的文件位置:
        SELECT pg_relation_filepath('tablename');
    b.表空间
        概念:
        表空间是数据库对象的物理存储位置
        可以将不同的表存储在不同的磁盘上
        用于优化 I/O 性能和管理存储空间
        -----------------------------------------------------------------------------------------------------
        默认表空间:
        pg_default:存储用户数据
        pg_global:存储系统表
        -----------------------------------------------------------------------------------------------------
        创建表空间:
        CREATE TABLESPACE fastspace LOCATION '/ssd/postgresql/data';
        CREATE TABLESPACE slowspace LOCATION '/hdd/postgresql/data';
        -----------------------------------------------------------------------------------------------------
        使用表空间:
        CREATE TABLE mytable (id int) TABLESPACE fastspace;
        CREATE INDEX myindex ON mytable(id) TABLESPACE fastspace;
        -----------------------------------------------------------------------------------------------------
        查看表空间:
        \db                                 # psql 命令
        SELECT * FROM pg_tablespace;        # SQL 查询
    c.数据页结构
        页(Page)是 PostgreSQL 存储的基本单位
        默认大小为 8KB(可在编译时修改)
        每个页包含页头、行指针数组、空闲空间、实际数据
        -----------------------------------------------------------------------------------------------------
        页头(Page Header):
        包含页的元数据
        如页的 LSN(日志序列号)、校验和、空闲空间指针等
        大小为 24 字节
        -----------------------------------------------------------------------------------------------------
        行指针数组(Item Pointers):
        指向页内实际数据的指针
        每个指针 4 字节
        从页头后开始,向后增长
        -----------------------------------------------------------------------------------------------------
        实际数据(Tuples):
        存储表的行数据
        从页尾开始,向前增长
        -----------------------------------------------------------------------------------------------------
        空闲空间(Free Space):
        位于行指针数组和实际数据之间
        用于插入新数据
    d.TOAST机制
        TOAST(The Oversized-Attribute Storage Technique):
        用于存储超大字段的技术
        当行数据超过页大小时自动触发
        -----------------------------------------------------------------------------------------------------
        TOAST 策略:
        PLAIN:不压缩,不移出主表(用于定长类型)
        EXTENDED:先压缩,再移出主表(默认策略)
        EXTERNAL:不压缩,直接移出主表
        MAIN:先压缩,尽量不移出主表
        -----------------------------------------------------------------------------------------------------
        TOAST 表:
        每个包含可 TOAST 字段的表都有一个关联的 TOAST 表
        TOAST 表存储在 pg_toast 模式中
        自动创建和管理,用户无需关心
        -----------------------------------------------------------------------------------------------------
        查看 TOAST 信息:
        SELECT relname, reltoastrelid FROM pg_class WHERE relname = 'mytable';

04.事务架构
    a.MVCC多版本并发控制
        概念:
        MVCC 允许多个事务同时访问同一数据
        读操作不阻塞写操作,写操作不阻塞读操作
        每个事务看到的是数据的一个快照
        -----------------------------------------------------------------------------------------------------
        实现原理:
        每行数据都有隐藏的系统列:xmin(插入事务 ID)、xmax(删除事务 ID)
        更新操作实际上是插入新版本 + 标记旧版本为删除
        每个事务根据自己的快照判断哪些版本可见
        -----------------------------------------------------------------------------------------------------
        优点:
        高并发性能
        读写不冲突
        无需读锁
        -----------------------------------------------------------------------------------------------------
        缺点:
        产生死元组,需要 VACUUM 清理
        占用更多存储空间
        需要定期维护
    b.事务ID
        事务 ID(XID):
        每个事务都有一个唯一的 32 位整数 ID
        用于 MVCC 的版本控制
        从 3 开始递增(0、1、2 为特殊 ID)
        -----------------------------------------------------------------------------------------------------
        事务 ID 回卷:
        事务 ID 是 32 位整数,最大值约 42 亿
        达到上限后会回卷到 3
        如果不及时 VACUUM,可能导致数据丢失
        -----------------------------------------------------------------------------------------------------
        冻结事务 ID:
        VACUUM 会将旧的事务 ID 冻结为特殊值 2(FrozenXID)
        冻结后的行对所有事务可见
        防止事务 ID 回卷问题
        -----------------------------------------------------------------------------------------------------
        查看事务 ID 信息:
        SELECT txid_current();                      # 当前事务 ID
        SELECT age(datfrozenxid) FROM pg_database;  # 数据库年龄
    c.快照隔离
        快照(Snapshot):
        记录事务开始时的数据库状态
        包含当前活跃的事务列表
        用于判断数据版本的可见性
        -----------------------------------------------------------------------------------------------------
        可见性规则:
        如果行的 xmin 在快照之前提交,且 xmax 未设置或在快照之后,则该行可见
        如果行的 xmin 在快照之后,则该行不可见
        如果行的 xmax 在快照之前提交,则该行不可见
        -----------------------------------------------------------------------------------------------------
        隔离级别:
        READ UNCOMMITTED:实际上等同于 READ COMMITTED
        READ COMMITTED:每个语句开始时获取新快照(默认)
        REPEATABLE READ:事务开始时获取快照,整个事务使用同一快照
        SERIALIZABLE:最严格的隔离级别,模拟串行执行
    d.死锁检测
        死锁的产生:
        两个或多个事务相互等待对方释放锁
        形成循环等待
        -----------------------------------------------------------------------------------------------------
        死锁检测机制:
        PostgreSQL 定期检测死锁(默认每秒一次)
        检测到死锁后,选择一个事务回滚
        被选中的事务会收到错误:deadlock detected
        -----------------------------------------------------------------------------------------------------
        死锁超时参数:
        deadlock_timeout:死锁检测的超时时间(默认 1 秒)
        如果事务等待锁的时间超过此值,启动死锁检测
        -----------------------------------------------------------------------------------------------------
        避免死锁:
        按相同顺序访问对象
        使用较低的隔离级别
        保持事务简短
        使用 SELECT FOR UPDATE NOWAIT 避免等待

1.4 高可用

01.主从复制
    a.流复制
        概念:
        流复制是 PostgreSQL 的物理复制方式
        主库将 WAL 日志实时传输到从库
        从库重放 WAL 日志,保持与主库同步
        -----------------------------------------------------------------------------------------------------
        流复制的优点:
        简单易配置
        性能开销小
        延迟低
        支持多个从库
        -----------------------------------------------------------------------------------------------------
        配置主库(postgresql.conf):
        wal_level = replica                         # 设置 WAL 级别
        max_wal_senders = 10                        # 最大 WAL 发送进程数
        wal_keep_size = 1GB                         # 保留的 WAL 大小
        hot_standby = on                            # 允许从库只读查询
        -----------------------------------------------------------------------------------------------------
        配置主库(pg_hba.conf):
        host    replication     replicator      192.168.1.0/24      md5
        -----------------------------------------------------------------------------------------------------
        创建复制用户:
        CREATE USER replicator WITH REPLICATION PASSWORD 'password';
        -----------------------------------------------------------------------------------------------------
        配置从库:
        1. 使用 pg_basebackup 创建从库
        pg_basebackup -h 192.168.1.100 -U replicator -D /var/lib/postgresql/data -P -v
        2. 创建 standby.signal 文件(PostgreSQL 12+)
        touch /var/lib/postgresql/data/standby.signal
        3. 配置 postgresql.conf
        primary_conninfo = 'host=192.168.1.100 port=5432 user=replicator password=password'
        4. 启动从库
        pg_ctl start -D /var/lib/postgresql/data
        -----------------------------------------------------------------------------------------------------
        查看复制状态:
        # 主库
        SELECT * FROM pg_stat_replication;
        # 从库
        SELECT * FROM pg_stat_wal_receiver;
    b.逻辑复制
        概念:
        逻辑复制基于发布-订阅模型
        复制的是数据变更,而不是 WAL 日志
        可以选择性复制表和数据
        支持跨版本复制
        -----------------------------------------------------------------------------------------------------
        逻辑复制的优点:
        灵活性高,可以选择复制哪些表
        支持双向复制
        支持跨版本复制
        可以在从库上写入数据
        -----------------------------------------------------------------------------------------------------
        配置主库(postgresql.conf):
        wal_level = logical                         # 设置 WAL 级别为逻辑
        max_replication_slots = 10                  # 最大复制槽数
        max_wal_senders = 10                        # 最大 WAL 发送进程数
        -----------------------------------------------------------------------------------------------------
        创建发布(主库):
        CREATE PUBLICATION mypub FOR TABLE users, orders;
        CREATE PUBLICATION allpub FOR ALL TABLES;
        -----------------------------------------------------------------------------------------------------
        创建订阅(从库):
        CREATE SUBSCRIPTION mysub
        CONNECTION 'host=192.168.1.100 port=5432 dbname=mydb user=replicator password=password'
        PUBLICATION mypub;
        -----------------------------------------------------------------------------------------------------
        查看发布和订阅:
        # 主库
        SELECT * FROM pg_publication;
        SELECT * FROM pg_publication_tables;
        # 从库
        SELECT * FROM pg_subscription;
        SELECT * FROM pg_stat_subscription;
    c.级联复制
        概念:
        从库可以作为其他从库的主库
        形成级联复制链
        减轻主库的复制压力
        -----------------------------------------------------------------------------------------------------
        配置级联从库:
        1. 在第一个从库上配置(postgresql.conf)
        hot_standby = on
        max_wal_senders = 10
        2. 在第二个从库上配置
        primary_conninfo = 'host=first_standby port=5432 user=replicator password=password'
        3. 创建 standby.signal 文件
        -----------------------------------------------------------------------------------------------------
        级联复制的优点:
        减轻主库负担
        支持多层级复制
        提高复制的可扩展性
    d.同步复制vs异步复制
        异步复制(默认):
        主库提交事务后立即返回
        不等待从库确认
        性能高,但可能丢失数据
        -----------------------------------------------------------------------------------------------------
        同步复制:
        主库提交事务后等待从库确认
        确保数据不丢失
        性能略低,但数据安全性高
        -----------------------------------------------------------------------------------------------------
        配置同步复制(postgresql.conf):
        synchronous_commit = on                     # 启用同步提交
        synchronous_standby_names = 'standby1,standby2'  # 同步从库列表
        -----------------------------------------------------------------------------------------------------
        同步模式:
        FIRST n:等待前 n 个从库确认
        ANY n:等待任意 n 个从库确认
        示例:
        synchronous_standby_names = 'FIRST 2 (standby1, standby2, standby3)'
        synchronous_standby_names = 'ANY 1 (standby1, standby2)'

02.故障转移
    a.自动故障转移
        概念:
        当主库故障时,自动将从库提升为主库
        需要使用高可用工具实现
        常用工具:Patroni、Repmgr、Pgpool-II
        -----------------------------------------------------------------------------------------------------
        Patroni 自动故障转移:
        Patroni 是基于 etcd/Consul/ZooKeeper 的高可用解决方案
        自动检测主库故障
        自动选举新主库
        自动重新配置从库
        -----------------------------------------------------------------------------------------------------
        Patroni 配置示例:
        scope: postgres-cluster
        name: node1
        restapi:
          listen: 0.0.0.0:8008
          connect_address: 192.168.1.101:8008
        etcd:
          host: 192.168.1.100:2379
        bootstrap:
          dcs:
            ttl: 30
            loop_wait: 10
            retry_timeout: 10
            maximum_lag_on_failover: 1048576
        postgresql:
          listen: 0.0.0.0:5432
          connect_address: 192.168.1.101:5432
          data_dir: /var/lib/postgresql/data
          authentication:
            replication:
              username: replicator
              password: password
            superuser:
              username: postgres
              password: password
    b.手动切换
        手动提升从库为主库:
        1. 停止主库(如果还在运行)
        pg_ctl stop -D /var/lib/postgresql/data
        2. 提升从库为主库
        pg_ctl promote -D /var/lib/postgresql/data
        或
        SELECT pg_promote();
        3. 重新配置其他从库指向新主库
        -----------------------------------------------------------------------------------------------------
        计划内切换(Switchover):
        1. 在主库上执行
        SELECT pg_switch_wal();                     # 切换 WAL 文件
        2. 等待从库追上主库
        SELECT pg_last_wal_receive_lsn() = pg_last_wal_replay_lsn();
        3. 停止主库
        4. 提升从库
        5. 将旧主库配置为从库
    c.脑裂问题
        脑裂的产生:
        网络分区导致主从失联
        从库被提升为新主库
        旧主库仍在运行
        出现两个主库同时写入
        -----------------------------------------------------------------------------------------------------
        脑裂的危害:
        数据不一致
        数据丢失
        难以恢复
        -----------------------------------------------------------------------------------------------------
        避免脑裂:
        使用 Fencing 机制:
        STONITH(Shoot The Other Node In The Head)
        在提升从库前,确保旧主库已停止
        -----------------------------------------------------------------------------------------------------
        使用分布式锁:
        通过 etcd/Consul/ZooKeeper 获取锁
        只有持有锁的节点才能成为主库
        -----------------------------------------------------------------------------------------------------
        使用仲裁机制:
        需要多数节点同意才能提升为主库
        防止网络分区时出现多个主库

03.高可用方案
    a.Patroni
        介绍:
        基于 Python 的高可用解决方案
        使用 etcd/Consul/ZooKeeper 作为 DCS(分布式配置存储)
        自动故障检测和故障转移
        支持同步复制和异步复制
        -----------------------------------------------------------------------------------------------------
        架构:
        DCS(etcd/Consul/ZooKeeper):存储集群状态
        Patroni:运行在每个 PostgreSQL 节点上
        HAProxy/Pgbouncer:提供统一的连接入口
        -----------------------------------------------------------------------------------------------------
        安装 Patroni:
        # 安装依赖
        pip install patroni[etcd]
        # 创建配置文件
        /etc/patroni/patroni.yml
        # 启动 Patroni
        patroni /etc/patroni/patroni.yml
        -----------------------------------------------------------------------------------------------------
        Patroni 命令:
        patronictl list                             # 查看集群状态
        patronictl switchover                       # 手动切换
        patronictl failover                         # 手动故障转移
        patronictl restart                          # 重启节点
        patronictl reload                           # 重新加载配置
    b.Repmgr
        介绍:
        PostgreSQL 的复制管理工具
        提供故障检测和故障转移
        支持级联复制
        提供命令行工具管理集群
        -----------------------------------------------------------------------------------------------------
        安装 Repmgr:
        # CentOS/RHEL
        sudo yum install repmgr16
        # Ubuntu/Debian
        sudo apt-get install postgresql-16-repmgr
        -----------------------------------------------------------------------------------------------------
        配置 Repmgr:
        # 创建配置文件 /etc/repmgr.conf
        node_id=1
        node_name=node1
        conninfo='host=node1 user=repmgr dbname=repmgr connect_timeout=2'
        data_directory='/var/lib/postgresql/data'
        -----------------------------------------------------------------------------------------------------
        Repmgr 命令:
        repmgr primary register                     # 注册主库
        repmgr standby clone                        # 克隆从库
        repmgr standby register                     # 注册从库
        repmgr standby promote                      # 提升从库
        repmgr cluster show                         # 查看集群状态
        repmgr cluster event                        # 查看集群事件
    c.Pgpool-II
        介绍:
        PostgreSQL 的中间件
        提供连接池、负载均衡、高可用
        支持读写分离
        支持自动故障转移
        -----------------------------------------------------------------------------------------------------
        功能:
        连接池:减少连接开销
        负载均衡:将读请求分发到多个从库
        高可用:自动检测故障并切换
        查询缓存:缓存查询结果
        -----------------------------------------------------------------------------------------------------
        安装 Pgpool-II:
        # CentOS/RHEL
        sudo yum install pgpool-II-pg16
        # Ubuntu/Debian
        sudo apt-get install pgpool2
        -----------------------------------------------------------------------------------------------------
        配置 Pgpool-II:
        # 编辑 /etc/pgpool-II/pgpool.conf
        listen_addresses = '*'
        port = 9999
        backend_hostname0 = '192.168.1.101'
        backend_port0 = 5432
        backend_weight0 = 1
        backend_hostname1 = '192.168.1.102'
        backend_port1 = 5432
        backend_weight1 = 1
        load_balance_mode = on
        master_slave_mode = on
        -----------------------------------------------------------------------------------------------------
        Pgpool-II 命令:
        pgpool -n                                   # 前台启动
        pgpool -m fast stop                         # 停止
        pcp_node_info                               # 查看节点信息
        pcp_watchdog_info                           # 查看 watchdog 信息
    d.Stolon
        介绍:
        基于 Go 的 PostgreSQL 高可用解决方案
        使用 etcd/Consul 作为存储
        支持 Kubernetes 部署
        自动故障检测和故障转移
        -----------------------------------------------------------------------------------------------------
        架构:
        Keeper:运行在每个 PostgreSQL 节点上,管理 PostgreSQL 实例
        Sentinel:监控集群状态,执行故障转移
        Proxy:提供统一的连接入口
        Store:etcd/Consul,存储集群状态
        -----------------------------------------------------------------------------------------------------
        安装 Stolon:
        # 下载二进制文件
        wget https://github.com/sorintlab/stolon/releases/download/v0.17.0/stolon-v0.17.0-linux-amd64.tar.gz
        tar -xzf stolon-v0.17.0-linux-amd64.tar.gz
        # 启动 Keeper
        stolon-keeper --cluster-name mycluster --store-backend etcd --store-endpoints http://localhost:2379
        # 启动 Sentinel
        stolon-sentinel --cluster-name mycluster --store-backend etcd --store-endpoints http://localhost:2379
        # 启动 Proxy
        stolon-proxy --cluster-name mycluster --store-backend etcd --store-endpoints http://localhost:2379
        -----------------------------------------------------------------------------------------------------
        Stolon 命令:
        stolonctl status                            # 查看集群状态
        stolonctl failkeeper                        # 手动故障转移
        stolonctl update                            # 更新集群配置

04.备份恢复
    a.物理备份(pg_basebackup)
        概念:
        复制整个数据目录
        包含所有数据库和配置文件
        可以用于创建从库或恢复数据
        -----------------------------------------------------------------------------------------------------
        使用 pg_basebackup:
        # 基本用法
        pg_basebackup -h localhost -U postgres -D /backup/pgdata -P -v
        # 压缩备份
        pg_basebackup -h localhost -U postgres -D /backup/pgdata -P -v -z
        # 使用 tar 格式
        pg_basebackup -h localhost -U postgres -D /backup -Ft -z
        -----------------------------------------------------------------------------------------------------
        参数说明:
        -h:主机名
        -U:用户名
        -D:目标目录
        -P:显示进度
        -v:详细输出
        -z:压缩
        -Ft:tar 格式
        -----------------------------------------------------------------------------------------------------
        恢复物理备份:
        1. 停止 PostgreSQL
        2. 删除或移动旧的数据目录
        3. 解压备份到数据目录
        4. 启动 PostgreSQL
    b.逻辑备份(pg_dump)
        概念:
        导出数据库的 SQL 语句
        可以选择性备份表和数据
        支持跨版本恢复
        -----------------------------------------------------------------------------------------------------
        使用 pg_dump:
        # 备份单个数据库
        pg_dump -h localhost -U postgres mydb > mydb_backup.sql
        # 备份所有数据库
        pg_dumpall -h localhost -U postgres > all_backup.sql
        # 备份为自定义格式(推荐)
        pg_dump -h localhost -U postgres -Fc mydb > mydb_backup.dump
        # 只备份表结构
        pg_dump -h localhost -U postgres -s mydb > schema_only.sql
        # 只备份数据
        pg_dump -h localhost -U postgres -a mydb > data_only.sql
        # 备份单个表
        pg_dump -h localhost -U postgres -t mytable mydb > mytable_backup.sql
        -----------------------------------------------------------------------------------------------------
        恢复逻辑备份:
        # 恢复 SQL 格式
        psql -h localhost -U postgres -d mydb < mydb_backup.sql
        # 恢复自定义格式
        pg_restore -h localhost -U postgres -d mydb mydb_backup.dump
        # 并行恢复
        pg_restore -h localhost -U postgres -d mydb -j 4 mydb_backup.dump
    c.PITR时间点恢复
        概念:
        Point-In-Time Recovery(时间点恢复)
        可以恢复到任意时间点
        基于基础备份 + WAL 日志
        -----------------------------------------------------------------------------------------------------
        配置 WAL 归档(postgresql.conf):
        wal_level = replica
        archive_mode = on
        archive_command = 'cp %p /archive/%f'
        -----------------------------------------------------------------------------------------------------
        创建基础备份:
        pg_basebackup -h localhost -U postgres -D /backup/base -P -v
        -----------------------------------------------------------------------------------------------------
        恢复到指定时间点:
        1. 停止 PostgreSQL
        2. 清空数据目录
        3. 恢复基础备份
        cp -r /backup/base/* /var/lib/postgresql/data/
        4. 创建 recovery.signal 文件
        touch /var/lib/postgresql/data/recovery.signal
        5. 配置恢复参数(postgresql.conf)
        restore_command = 'cp /archive/%f %p'
        recovery_target_time = '2024-01-01 12:00:00'
        6. 启动 PostgreSQL
        -----------------------------------------------------------------------------------------------------
        恢复目标:
        recovery_target_time:恢复到指定时间
        recovery_target_xid:恢复到指定事务 ID
        recovery_target_name:恢复到指定还原点
        recovery_target_lsn:恢复到指定 LSN
        recovery_target = 'immediate':恢复到备份结束点
    d.备份策略
        完整备份策略:
        每周一次完整备份(pg_basebackup)
        每天一次增量备份(WAL 归档)
        保留最近 4 周的备份
        -----------------------------------------------------------------------------------------------------
        自动化备份脚本:
        #!/bin/bash
        BACKUP_DIR="/backup"
        DATE=$(date +%Y%m%d)
        # 完整备份
        pg_basebackup -h localhost -U postgres -D $BACKUP_DIR/base_$DATE -P -v -z
        # 清理旧备份
        find $BACKUP_DIR -type d -name "base_*" -mtime +28 -exec rm -rf {} \;
        -----------------------------------------------------------------------------------------------------
        备份验证:
        定期测试备份恢复
        验证备份文件的完整性
        监控备份任务的执行状态
        -----------------------------------------------------------------------------------------------------
        异地备份:
        将备份文件复制到远程服务器
        使用云存储(如 AWS S3、阿里云 OSS)
        确保备份的安全性和可用性

2 PostgreSQL基础

2.1 数据库

01.介绍
    a.说明
        数据库是 PostgreSQL 中存储数据的容器
        一个 PostgreSQL 实例可以包含多个数据库
        每个数据库相互独立,有自己的表、视图、函数等对象
        不同数据库之间不能直接查询(除非使用 dblink 或 FDW)
        -----------------------------------------------------------------------------------------------------
        系统数据库:
        postgres:默认数据库,用于管理和连接
        template0:原始模板数据库,不可修改
        template1:用户模板数据库,创建新数据库时的模板
        -----------------------------------------------------------------------------------------------------
        数据库的物理存储:
        每个数据库在 $PGDATA/base 目录下有一个子目录
        子目录名为数据库的 OID
        查看数据库 OID:SELECT oid, datname FROM pg_database;
    b.命名规范
        数据库名必须以字母或下划线开头
        只能包含字母、数字、下划线
        长度不超过 63 个字符
        不能使用 PostgreSQL 保留字(如 SELECT、TABLE 等)
        建议使用小写字母和下划线
        -----------------------------------------------------------------------------------------------------
        命名示例:
        mydb                    # 推荐
        my_database             # 推荐
        app_db_2024             # 推荐
        MyDatabase              # 不推荐(大小写敏感)
        123db                   # 错误(不能以数字开头)
    c.系统数据库
        postgres:
        默认的管理数据库
        用于连接和执行管理命令
        不建议在此数据库中创建业务表
        -----------------------------------------------------------------------------------------------------
        template0:
        原始的模板数据库
        不可修改,用于恢复 template1
        创建数据库时可以指定使用 template0
        -----------------------------------------------------------------------------------------------------
        template1:
        默认的模板数据库
        创建新数据库时会复制 template1 的内容
        可以在 template1 中创建表、函数等,新数据库会自动包含这些对象

02.命令
    a.创建数据库
        基本创建:
        CREATE DATABASE mydb;
        -----------------------------------------------------------------------------------------------------
        指定所有者:
        CREATE DATABASE mydb OWNER myuser;
        -----------------------------------------------------------------------------------------------------
        指定模板:
        CREATE DATABASE mydb TEMPLATE template0;
        -----------------------------------------------------------------------------------------------------
        指定字符集和排序规则:
        CREATE DATABASE mydb
            ENCODING 'UTF8'
            LC_COLLATE 'zh_CN.UTF-8'
            LC_CTYPE 'zh_CN.UTF-8'
            TEMPLATE template0;
        -----------------------------------------------------------------------------------------------------
        指定连接限制:
        CREATE DATABASE mydb CONNECTION LIMIT 100;
        -----------------------------------------------------------------------------------------------------
        完整示例:
        CREATE DATABASE mydb
            OWNER myuser
            ENCODING 'UTF8'
            LC_COLLATE 'en_US.UTF-8'
            LC_CTYPE 'en_US.UTF-8'
            TABLESPACE pg_default
            CONNECTION LIMIT -1
            TEMPLATE template0;
    b.查看数据库
        列出所有数据库:
        \l                                          # psql 命令
        \l+                                         # 显示详细信息
        SELECT datname FROM pg_database;            # SQL 查询
        -----------------------------------------------------------------------------------------------------
        查看当前数据库:
        SELECT current_database();
        \c                                          # psql 命令
        -----------------------------------------------------------------------------------------------------
        查看数据库详细信息:
        SELECT * FROM pg_database WHERE datname = 'mydb';
        -----------------------------------------------------------------------------------------------------
        查看数据库大小:
        SELECT pg_database_size('mydb');
        SELECT pg_size_pretty(pg_database_size('mydb'));
        -----------------------------------------------------------------------------------------------------
        查看所有数据库大小:
        SELECT datname, pg_size_pretty(pg_database_size(datname))
        FROM pg_database
        ORDER BY pg_database_size(datname) DESC;
    c.切换数据库
        使用 psql 切换:
        \c mydb                                     # 切换到 mydb
        \c mydb myuser                              # 以 myuser 身份切换到 mydb
        \c mydb myuser localhost 5432               # 指定主机和端口
        -----------------------------------------------------------------------------------------------------
        使用连接字符串:
        psql -h localhost -U myuser -d mydb
        psql postgresql://myuser:password@localhost:5432/mydb
    d.删除数据库
        删除数据库:
        DROP DATABASE mydb;
        DROP DATABASE IF EXISTS mydb;               # 如果存在则删除
        -----------------------------------------------------------------------------------------------------
        强制删除(断开所有连接):
        # PostgreSQL 13+
        DROP DATABASE mydb WITH (FORCE);
        -----------------------------------------------------------------------------------------------------
        手动断开连接后删除:
        # 查看连接
        SELECT pid, usename, application_name, client_addr
        FROM pg_stat_activity
        WHERE datname = 'mydb';
        # 终止连接
        SELECT pg_terminate_backend(pid)
        FROM pg_stat_activity
        WHERE datname = 'mydb' AND pid <> pg_backend_pid();
        # 删除数据库
        DROP DATABASE mydb;
    e.修改数据库
        重命名数据库:
        ALTER DATABASE mydb RENAME TO newdb;
        -----------------------------------------------------------------------------------------------------
        修改所有者:
        ALTER DATABASE mydb OWNER TO newuser;
        -----------------------------------------------------------------------------------------------------
        修改连接限制:
        ALTER DATABASE mydb CONNECTION LIMIT 50;
        -----------------------------------------------------------------------------------------------------
        修改配置参数:
        ALTER DATABASE mydb SET timezone TO 'Asia/Shanghai';
        ALTER DATABASE mydb SET work_mem TO '16MB';
        -----------------------------------------------------------------------------------------------------
        重置配置参数:
        ALTER DATABASE mydb RESET timezone;
        ALTER DATABASE mydb RESET ALL;

03.权限管理
    a.角色与用户
        在 PostgreSQL 中,用户和角色是统一的概念
        角色可以拥有登录权限(用户)或不拥有登录权限(组)
        -----------------------------------------------------------------------------------------------------
        创建角色:
        CREATE ROLE myrole;
        CREATE ROLE myuser LOGIN PASSWORD 'password';
        CREATE USER myuser PASSWORD 'password';     # 等同于 CREATE ROLE ... LOGIN
        -----------------------------------------------------------------------------------------------------
        创建超级用户:
        CREATE USER admin PASSWORD 'password' SUPERUSER;
        -----------------------------------------------------------------------------------------------------
        创建角色并授予权限:
        CREATE ROLE readonly;
        CREATE ROLE readwrite;
        CREATE USER app_user PASSWORD 'password' IN ROLE readwrite;
        -----------------------------------------------------------------------------------------------------
        查看角色:
        \du                                         # psql 命令
        SELECT rolname FROM pg_roles;               # SQL 查询
    b.权限授予
        授予数据库连接权限:
        GRANT CONNECT ON DATABASE mydb TO myuser;
        -----------------------------------------------------------------------------------------------------
        授予模式使用权限:
        GRANT USAGE ON SCHEMA public TO myuser;
        -----------------------------------------------------------------------------------------------------
        授予表权限:
        GRANT SELECT ON TABLE mytable TO myuser;
        GRANT INSERT, UPDATE, DELETE ON TABLE mytable TO myuser;
        GRANT ALL PRIVILEGES ON TABLE mytable TO myuser;
        -----------------------------------------------------------------------------------------------------
        授予所有表权限:
        GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;
        GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myuser;
        -----------------------------------------------------------------------------------------------------
        授予未来创建的表权限:
        ALTER DEFAULT PRIVILEGES IN SCHEMA public
        GRANT SELECT ON TABLES TO myuser;
        -----------------------------------------------------------------------------------------------------
        授予序列权限:
        GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO myuser;
        -----------------------------------------------------------------------------------------------------
        授予函数执行权限:
        GRANT EXECUTE ON FUNCTION myfunction TO myuser;
        GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO myuser;
    c.权限回收
        回收数据库连接权限:
        REVOKE CONNECT ON DATABASE mydb FROM myuser;
        -----------------------------------------------------------------------------------------------------
        回收表权限:
        REVOKE SELECT ON TABLE mytable FROM myuser;
        REVOKE ALL PRIVILEGES ON TABLE mytable FROM myuser;
        -----------------------------------------------------------------------------------------------------
        回收所有表权限:
        REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM myuser;
        -----------------------------------------------------------------------------------------------------
        查看权限:
        \dp mytable                                 # psql 命令
        \z mytable                                  # 同上
        SELECT grantee, privilege_type
        FROM information_schema.table_privileges
        WHERE table_name = 'mytable';

2.2 模式

01.介绍
    a.概念
        模式(Schema)是数据库中的命名空间
        用于组织和管理数据库对象(表、视图、函数等)
        一个数据库可以包含多个模式
        不同模式中可以有同名的对象
        -----------------------------------------------------------------------------------------------------
        默认模式:
        public:默认的公共模式,所有用户都可以访问
        pg_catalog:系统目录模式,存储系统表和视图
        information_schema:标准信息模式,提供数据库元数据视图
        -----------------------------------------------------------------------------------------------------
        模式的作用:
        组织数据库对象,避免命名冲突
        实现多租户应用(每个租户一个模式)
        权限隔离,不同用户访问不同模式
        逻辑分组,按业务模块划分模式
    b.搜索路径
        搜索路径(search_path)决定了查找对象的顺序
        默认搜索路径:$user, public
        -----------------------------------------------------------------------------------------------------
        查看搜索路径:
        SHOW search_path;
        SELECT current_schemas(true);
        -----------------------------------------------------------------------------------------------------
        设置搜索路径:
        SET search_path TO myschema, public;
        SET search_path TO "$user", public, myschema;
        -----------------------------------------------------------------------------------------------------
        永久设置搜索路径:
        ALTER DATABASE mydb SET search_path TO myschema, public;
        ALTER ROLE myuser SET search_path TO myschema, public;
        -----------------------------------------------------------------------------------------------------
        搜索路径的影响:
        创建对象时,如果不指定模式,会在搜索路径的第一个模式中创建
        查询对象时,按搜索路径顺序查找
    c.命名空间
        完全限定名:schema_name.object_name
        示例:public.users、myschema.orders
        -----------------------------------------------------------------------------------------------------
        使用完全限定名的好处:
        避免歧义,明确指定对象所在的模式
        不受搜索路径影响
        提高查询性能(减少查找时间)
        -----------------------------------------------------------------------------------------------------
        示例:
        SELECT * FROM public.users;
        SELECT * FROM myschema.orders;
        INSERT INTO myschema.products VALUES (1, 'Product A');

02.命令
    a.创建模式
        基本创建:
        CREATE SCHEMA myschema;
        -----------------------------------------------------------------------------------------------------
        指定所有者:
        CREATE SCHEMA myschema AUTHORIZATION myuser;
        -----------------------------------------------------------------------------------------------------
        创建模式并创建对象:
        CREATE SCHEMA myschema
            CREATE TABLE users (id int, name text)
            CREATE VIEW user_view AS SELECT * FROM users;
        -----------------------------------------------------------------------------------------------------
        如果不存在则创建:
        CREATE SCHEMA IF NOT EXISTS myschema;
    b.查看模式
        列出所有模式:
        \dn                                         # psql 命令
        \dn+                                        # 显示详细信息
        SELECT schema_name FROM information_schema.schemata;
        -----------------------------------------------------------------------------------------------------
        查看当前模式:
        SELECT current_schema();
        -----------------------------------------------------------------------------------------------------
        查看模式中的对象:
        \dt myschema.*                              # 查看模式中的表
        \dv myschema.*                              # 查看模式中的视图
        \df myschema.*                              # 查看模式中的函数
        -----------------------------------------------------------------------------------------------------
        查看模式大小:
        SELECT schema_name,
               pg_size_pretty(sum(pg_total_relation_size(quote_ident(schemaname)||'.'||quote_ident(tablename)))::bigint)
        FROM pg_tables
        WHERE schemaname = 'myschema'
        GROUP BY schema_name;
    c.删除模式
        删除空模式:
        DROP SCHEMA myschema;
        DROP SCHEMA IF EXISTS myschema;
        -----------------------------------------------------------------------------------------------------
        删除模式及其所有对象:
        DROP SCHEMA myschema CASCADE;
        -----------------------------------------------------------------------------------------------------
        注意事项:
        CASCADE 会删除模式中的所有对象,包括表、视图、函数等
        如果其他模式的对象依赖于该模式的对象,也会被删除
        删除前务必确认,避免误删重要数据
    d.修改模式
        重命名模式:
        ALTER SCHEMA myschema RENAME TO newschema;
        -----------------------------------------------------------------------------------------------------
        修改所有者:
        ALTER SCHEMA myschema OWNER TO newuser;
        -----------------------------------------------------------------------------------------------------
        授予模式权限:
        GRANT USAGE ON SCHEMA myschema TO myuser;
        GRANT CREATE ON SCHEMA myschema TO myuser;
        GRANT ALL ON SCHEMA myschema TO myuser;
        -----------------------------------------------------------------------------------------------------
        回收模式权限:
        REVOKE USAGE ON SCHEMA myschema FROM myuser;
        REVOKE CREATE ON SCHEMA myschema FROM myuser;

2.3 表

01.介绍
    a.表类型
        普通表(Regular Table):
        最常用的表类型
        数据持久化存储在磁盘上
        支持所有 PostgreSQL 特性
        -----------------------------------------------------------------------------------------------------
        临时表(Temporary Table):
        会话级别的表,会话结束后自动删除
        只对创建它的会话可见
        不记录 WAL 日志,性能更高
        -----------------------------------------------------------------------------------------------------
        不记录日志表(Unlogged Table):
        不记录 WAL 日志,写入性能更高
        崩溃后数据会丢失
        适用于临时数据或可重建的数据
        -----------------------------------------------------------------------------------------------------
        分区表(Partitioned Table):
        将大表分割成多个小表
        提高查询和维护性能
        支持范围分区、列表分区、哈希分区
        -----------------------------------------------------------------------------------------------------
        外部表(Foreign Table):
        通过 FDW 访问外部数据源
        数据不存储在本地
        可以查询其他数据库或文件
    b.命名规范
        表名必须以字母或下划线开头
        只能包含字母、数字、下划线
        长度不超过 63 个字符
        建议使用小写字母和下划线
        使用复数形式(如 users、orders)
        -----------------------------------------------------------------------------------------------------
        命名示例:
        users                   # 推荐
        user_orders             # 推荐
        order_items             # 推荐
        UserOrders              # 不推荐(大小写敏感)
        123_table               # 错误(不能以数字开头)
    c.约束类型
        主键约束(PRIMARY KEY):
        唯一标识表中的每一行
        不允许 NULL 值
        一个表只能有一个主键
        -----------------------------------------------------------------------------------------------------
        外键约束(FOREIGN KEY):
        建立表之间的关系
        引用另一个表的主键或唯一键
        支持级联更新和删除
        -----------------------------------------------------------------------------------------------------
        唯一约束(UNIQUE):
        确保列或列组合的值唯一
        允许 NULL 值(NULL 不等于 NULL)
        一个表可以有多个唯一约束
        -----------------------------------------------------------------------------------------------------
        检查约束(CHECK):
        确保列值满足指定条件
        可以引用多个列
        -----------------------------------------------------------------------------------------------------
        非空约束(NOT NULL):
        确保列值不为 NULL
        -----------------------------------------------------------------------------------------------------
        默认值(DEFAULT):
        为列指定默认值
        插入数据时如果不指定该列,使用默认值

02.表操作
    a.创建表
        基本创建:
        CREATE TABLE users (
            id SERIAL PRIMARY KEY,
            username VARCHAR(50) NOT NULL UNIQUE,
            email VARCHAR(100) NOT NULL,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        );
        -----------------------------------------------------------------------------------------------------
        完整示例:
        CREATE TABLE orders (
            order_id SERIAL PRIMARY KEY,
            user_id INT NOT NULL,
            order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            total_amount DECIMAL(10, 2) CHECK (total_amount >= 0),
            status VARCHAR(20) DEFAULT 'pending',
            FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
        );
        -----------------------------------------------------------------------------------------------------
        创建临时表:
        CREATE TEMP TABLE temp_users (
            id INT,
            name TEXT
        );
        -----------------------------------------------------------------------------------------------------
        创建不记录日志表:
        CREATE UNLOGGED TABLE logs (
            log_id SERIAL PRIMARY KEY,
            message TEXT,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        );
        -----------------------------------------------------------------------------------------------------
        从查询结果创建表:
        CREATE TABLE users_backup AS SELECT * FROM users;
        CREATE TABLE active_users AS SELECT * FROM users WHERE status = 'active';
        -----------------------------------------------------------------------------------------------------
        如果不存在则创建:
        CREATE TABLE IF NOT EXISTS users (id INT, name TEXT);
    b.修改表结构
        添加列:
        ALTER TABLE users ADD COLUMN age INT;
        ALTER TABLE users ADD COLUMN phone VARCHAR(20) DEFAULT '';
        -----------------------------------------------------------------------------------------------------
        删除列:
        ALTER TABLE users DROP COLUMN age;
        ALTER TABLE users DROP COLUMN IF EXISTS age;
        -----------------------------------------------------------------------------------------------------
        修改列类型:
        ALTER TABLE users ALTER COLUMN age TYPE BIGINT;
        ALTER TABLE users ALTER COLUMN email TYPE VARCHAR(200);
        -----------------------------------------------------------------------------------------------------
        修改列名:
        ALTER TABLE users RENAME COLUMN username TO user_name;
        -----------------------------------------------------------------------------------------------------
        设置默认值:
        ALTER TABLE users ALTER COLUMN status SET DEFAULT 'active';
        -----------------------------------------------------------------------------------------------------
        删除默认值:
        ALTER TABLE users ALTER COLUMN status DROP DEFAULT;
        -----------------------------------------------------------------------------------------------------
        设置非空约束:
        ALTER TABLE users ALTER COLUMN email SET NOT NULL;
        -----------------------------------------------------------------------------------------------------
        删除非空约束:
        ALTER TABLE users ALTER COLUMN email DROP NOT NULL;
        -----------------------------------------------------------------------------------------------------
        添加约束:
        ALTER TABLE users ADD CONSTRAINT users_email_unique UNIQUE (email);
        ALTER TABLE users ADD CONSTRAINT users_age_check CHECK (age >= 0);
        ALTER TABLE orders ADD CONSTRAINT orders_user_fk
            FOREIGN KEY (user_id) REFERENCES users(id);
        -----------------------------------------------------------------------------------------------------
        删除约束:
        ALTER TABLE users DROP CONSTRAINT users_email_unique;
        ALTER TABLE users DROP CONSTRAINT IF EXISTS users_age_check;
        -----------------------------------------------------------------------------------------------------
        重命名表:
        ALTER TABLE users RENAME TO app_users;
        -----------------------------------------------------------------------------------------------------
        修改表所有者:
        ALTER TABLE users OWNER TO newuser;
        -----------------------------------------------------------------------------------------------------
        修改表空间:
        ALTER TABLE users SET TABLESPACE fastspace;
    c.删除表
        删除表:
        DROP TABLE users;
        DROP TABLE IF EXISTS users;
        -----------------------------------------------------------------------------------------------------
        删除表及其依赖对象:
        DROP TABLE users CASCADE;
        -----------------------------------------------------------------------------------------------------
        清空表数据:
        TRUNCATE TABLE users;
        TRUNCATE TABLE users RESTART IDENTITY;      # 重置自增序列
        TRUNCATE TABLE users CASCADE;               # 级联清空相关表
    d.查看表结构
        查看表结构:
        \d users                                    # psql 命令
        \d+ users                                   # 显示详细信息
        -----------------------------------------------------------------------------------------------------
        查看表定义:
        SELECT column_name, data_type, is_nullable, column_default
        FROM information_schema.columns
        WHERE table_name = 'users';
        -----------------------------------------------------------------------------------------------------
        查看表约束:
        \d+ users                                   # psql 命令
        SELECT constraint_name, constraint_type
        FROM information_schema.table_constraints
        WHERE table_name = 'users';
        -----------------------------------------------------------------------------------------------------
        查看表大小:
        SELECT pg_size_pretty(pg_total_relation_size('users'));
        SELECT pg_size_pretty(pg_relation_size('users'));          # 表本身大小
        SELECT pg_size_pretty(pg_indexes_size('users'));           # 索引大小
        -----------------------------------------------------------------------------------------------------
        查看表的行数:
        SELECT COUNT(*) FROM users;
        SELECT reltuples::bigint FROM pg_class WHERE relname = 'users';  # 估算值

03.表设计
    a.分区表
        范围分区:
        CREATE TABLE orders (
            order_id SERIAL,
            order_date DATE NOT NULL,
            amount DECIMAL(10, 2)
        ) PARTITION BY RANGE (order_date);

        CREATE TABLE orders_2023 PARTITION OF orders
            FOR VALUES FROM ('2023-01-01') TO ('2024-01-01');
        CREATE TABLE orders_2024 PARTITION OF orders
            FOR VALUES FROM ('2024-01-01') TO ('2025-01-01');
        -----------------------------------------------------------------------------------------------------
        列表分区:
        CREATE TABLE users (
            user_id SERIAL,
            country VARCHAR(50),
            name TEXT
        ) PARTITION BY LIST (country);

        CREATE TABLE users_cn PARTITION OF users
            FOR VALUES IN ('China', 'CN');
        CREATE TABLE users_us PARTITION OF users
            FOR VALUES IN ('USA', 'US');
        -----------------------------------------------------------------------------------------------------
        哈希分区:
        CREATE TABLE logs (
            log_id SERIAL,
            message TEXT,
            created_at TIMESTAMP
        ) PARTITION BY HASH (log_id);

        CREATE TABLE logs_p0 PARTITION OF logs
            FOR VALUES WITH (MODULUS 4, REMAINDER 0);
        CREATE TABLE logs_p1 PARTITION OF logs
            FOR VALUES WITH (MODULUS 4, REMAINDER 1);
    b.继承表
        创建父表:
        CREATE TABLE cities (
            name TEXT,
            population REAL,
            elevation INT
        );
        -----------------------------------------------------------------------------------------------------
        创建子表:
        CREATE TABLE capitals (
            state CHAR(2)
        ) INHERITS (cities);
        -----------------------------------------------------------------------------------------------------
        查询父表(包含子表数据):
        SELECT * FROM cities;
        -----------------------------------------------------------------------------------------------------
        只查询父表:
        SELECT * FROM ONLY cities;
    c.临时表
        创建会话级临时表:
        CREATE TEMP TABLE temp_data (
            id INT,
            value TEXT
        );
        -----------------------------------------------------------------------------------------------------
        创建事务级临时表:
        CREATE TEMP TABLE temp_data (
            id INT,
            value TEXT
        ) ON COMMIT DROP;                           # 事务结束后删除

        CREATE TEMP TABLE temp_data (
            id INT,
            value TEXT
        ) ON COMMIT DELETE ROWS;                    # 事务结束后删除数据,保留表结构
    d.外部表
        安装 FDW 扩展:
        CREATE EXTENSION postgres_fdw;
        -----------------------------------------------------------------------------------------------------
        创建外部服务器:
        CREATE SERVER foreign_server
            FOREIGN DATA WRAPPER postgres_fdw
            OPTIONS (host '192.168.1.100', port '5432', dbname 'remotedb');
        -----------------------------------------------------------------------------------------------------
        创建用户映射:
        CREATE USER MAPPING FOR myuser
            SERVER foreign_server
            OPTIONS (user 'remoteuser', password 'password');
        -----------------------------------------------------------------------------------------------------
        创建外部表:
        CREATE FOREIGN TABLE foreign_users (
            id INT,
            name TEXT,
            email TEXT
        ) SERVER foreign_server
        OPTIONS (schema_name 'public', table_name 'users');
        -----------------------------------------------------------------------------------------------------
        查询外部表:
        SELECT * FROM foreign_users;

2.4 数据类型

01.数值类型
    a.整数类型
        SMALLINT:2 字节,范围 -32768 到 32767
        INTEGER(INT):4 字节,范围 -2147483648 到 2147483647
        BIGINT:8 字节,范围 -9223372036854775808 到 9223372036854775807
        -----------------------------------------------------------------------------------------------------
        自增类型:
        SMALLSERIAL:自增 SMALLINT
        SERIAL:自增 INTEGER
        BIGSERIAL:自增 BIGINT
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE TABLE products (
            id SERIAL PRIMARY KEY,
            quantity INT,
            stock BIGINT
        );
    b.浮点类型
        REAL:4 字节,6 位十进制精度
        DOUBLE PRECISION:8 字节,15 位十进制精度
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE TABLE measurements (
            temperature REAL,
            pressure DOUBLE PRECISION
        );
        -----------------------------------------------------------------------------------------------------
        注意:
        浮点数存在精度问题,不适合存储货币
        对于货币,应使用 NUMERIC 或 DECIMAL
    c.任意精度类型
        NUMERIC(precision, scale):可变长度,精确数值
        DECIMAL(precision, scale):等同于 NUMERIC
        -----------------------------------------------------------------------------------------------------
        参数说明:
        precision:总位数(包括小数点前后)
        scale:小数点后的位数
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE TABLE financial (
            price NUMERIC(10, 2),        -- 最多 10 位,小数点后 2 位
            amount DECIMAL(15, 4)        -- 最多 15 位,小数点后 4 位
        );
        -----------------------------------------------------------------------------------------------------
        使用场景:
        货币金额:NUMERIC(10, 2)
        百分比:NUMERIC(5, 2)
        科学计算:NUMERIC(20, 10)

02.字符类型
    a.CHAR
        固定长度字符串
        不足长度用空格填充
        最大长度 10485760 字节
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE TABLE codes (
            country_code CHAR(2),        -- 固定 2 字符
            zip_code CHAR(6)             -- 固定 6 字符
        );
        -----------------------------------------------------------------------------------------------------
        使用场景:
        固定长度的代码(如国家代码、邮编)
        性能要求高的场景(避免长度计算)
    b.VARCHAR
        可变长度字符串
        需要指定最大长度
        实际存储长度根据内容决定
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE TABLE users (
            username VARCHAR(50),
            email VARCHAR(100),
            address VARCHAR(255)
        );
        -----------------------------------------------------------------------------------------------------
        使用场景:
        用户名、邮箱等有长度限制的字段
        需要限制输入长度的场景
    c.TEXT
        可变长度字符串
        无长度限制(理论上限 1GB)
        性能与 VARCHAR 相同
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE TABLE articles (
            title TEXT,
            content TEXT,
            description TEXT
        );
        -----------------------------------------------------------------------------------------------------
        使用场景:
        文章内容、评论等长文本
        不确定长度的字符串
        -----------------------------------------------------------------------------------------------------
        VARCHAR vs TEXT:
        VARCHAR 需要指定长度,TEXT 不需要
        性能上没有区别
        建议:已知长度限制用 VARCHAR,否则用 TEXT

03.日期时间类型
    a.DATE
        日期类型,只存储年月日
        格式:YYYY-MM-DD
        范围:4713 BC 到 5874897 AD
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE TABLE events (
            event_date DATE,
            birth_date DATE
        );
        -----------------------------------------------------------------------------------------------------
        常用函数:
        CURRENT_DATE:当前日期
        DATE '2024-01-01':日期字面量
        date_column + INTERVAL '1 day':日期运算
    b.TIME
        时间类型,只存储时分秒
        格式:HH:MI:SS
        支持时区:TIME WITH TIME ZONE
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE TABLE schedules (
            start_time TIME,
            end_time TIME WITH TIME ZONE
        );
        -----------------------------------------------------------------------------------------------------
        常用函数:
        CURRENT_TIME:当前时间
        TIME '14:30:00':时间字面量
    c.TIMESTAMP
        日期时间类型,存储年月日时分秒
        格式:YYYY-MM-DD HH:MI:SS
        支持时区:TIMESTAMP WITH TIME ZONE(推荐)
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE TABLE logs (
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
            updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
        );
        -----------------------------------------------------------------------------------------------------
        常用函数:
        CURRENT_TIMESTAMP:当前时间戳
        NOW():当前时间戳(等同于 CURRENT_TIMESTAMP)
        TIMESTAMP '2024-01-01 14:30:00':时间戳字面量
        -----------------------------------------------------------------------------------------------------
        TIMESTAMP vs TIMESTAMPTZ:
        TIMESTAMP:不存储时区信息
        TIMESTAMPTZ:存储时区信息(推荐使用)
    d.INTERVAL
        时间间隔类型
        用于表示一段时间
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE TABLE tasks (
            duration INTERVAL,
            deadline TIMESTAMP
        );
        -----------------------------------------------------------------------------------------------------
        使用示例:
        INTERVAL '1 day'
        INTERVAL '2 hours 30 minutes'
        INTERVAL '1 year 2 months'
        -----------------------------------------------------------------------------------------------------
        时间运算:
        SELECT CURRENT_TIMESTAMP + INTERVAL '1 day';
        SELECT CURRENT_DATE - INTERVAL '1 week';
        SELECT age(TIMESTAMP '2024-01-01', TIMESTAMP '2023-01-01');

04.特殊类型
    a.JSON/JSONB
        JSON:文本格式存储,保留原始格式
        JSONB:二进制格式存储,支持索引,性能更好(推荐)
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE TABLE products (
            id SERIAL PRIMARY KEY,
            name TEXT,
            attributes JSON,
            metadata JSONB
        );
        -----------------------------------------------------------------------------------------------------
        插入数据:
        INSERT INTO products (name, attributes, metadata) VALUES
        ('Product A', '{"color": "red", "size": "M"}', '{"tags": ["new", "sale"]}');
        -----------------------------------------------------------------------------------------------------
        查询操作:
        SELECT metadata->>'tags' FROM products;                    -- 提取字段
        SELECT * FROM products WHERE metadata @> '{"tags": ["new"]}';  -- 包含查询
        SELECT * FROM products WHERE metadata ? 'tags';            -- 键存在查询
        -----------------------------------------------------------------------------------------------------
        JSONB 索引:
        CREATE INDEX idx_metadata ON products USING GIN (metadata);
    b.数组
        PostgreSQL 支持任意数据类型的数组
        可以是一维或多维数组
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE TABLE posts (
            id SERIAL PRIMARY KEY,
            tags TEXT[],
            scores INT[]
        );
        -----------------------------------------------------------------------------------------------------
        插入数据:
        INSERT INTO posts (tags, scores) VALUES
        (ARRAY['postgresql', 'database'], ARRAY[90, 85, 95]);
        INSERT INTO posts (tags, scores) VALUES
        ('{"tag1", "tag2"}', '{80, 90}');
        -----------------------------------------------------------------------------------------------------
        查询操作:
        SELECT tags[1] FROM posts;                                 -- 访问元素(从 1 开始)
        SELECT * FROM posts WHERE 'postgresql' = ANY(tags);        -- 包含查询
        SELECT * FROM posts WHERE tags @> ARRAY['postgresql'];     -- 包含查询
        SELECT array_length(tags, 1) FROM posts;                   -- 数组长度
        -----------------------------------------------------------------------------------------------------
        数组索引:
        CREATE INDEX idx_tags ON posts USING GIN (tags);
    c.UUID
        通用唯一标识符
        128 位,通常表示为 32 个十六进制数字
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

        CREATE TABLE sessions (
            session_id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
            user_id INT,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        );
        -----------------------------------------------------------------------------------------------------
        生成 UUID:
        SELECT uuid_generate_v4();
        SELECT gen_random_uuid();                                  -- PostgreSQL 13+
    d.枚举
        用户自定义的枚举类型
        限制列值为预定义的集合
        -----------------------------------------------------------------------------------------------------
        创建枚举类型:
        CREATE TYPE status_enum AS ENUM ('pending', 'active', 'inactive', 'deleted');
        CREATE TYPE priority_enum AS ENUM ('low', 'medium', 'high', 'urgent');
        -----------------------------------------------------------------------------------------------------
        使用枚举:
        CREATE TABLE tasks (
            id SERIAL PRIMARY KEY,
            title TEXT,
            status status_enum DEFAULT 'pending',
            priority priority_enum DEFAULT 'medium'
        );
        -----------------------------------------------------------------------------------------------------
        插入数据:
        INSERT INTO tasks (title, status, priority) VALUES
        ('Task 1', 'active', 'high');
        -----------------------------------------------------------------------------------------------------
        修改枚举:
        ALTER TYPE status_enum ADD VALUE 'archived';
        ALTER TYPE status_enum RENAME VALUE 'deleted' TO 'removed';
    e.几何类型
        用于存储二维几何数据
        需要 PostGIS 扩展支持更复杂的地理信息
        -----------------------------------------------------------------------------------------------------
        几何类型:
        POINT:点 (x, y)
        LINE:直线
        LSEG:线段
        BOX:矩形
        PATH:路径
        POLYGON:多边形
        CIRCLE:圆
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE TABLE locations (
            id SERIAL PRIMARY KEY,
            name TEXT,
            position POINT,
            area POLYGON
        );
        -----------------------------------------------------------------------------------------------------
        插入数据:
        INSERT INTO locations (name, position, area) VALUES
        ('Location A', POINT(10, 20), POLYGON('((0,0),(0,10),(10,10),(10,0))'));
        -----------------------------------------------------------------------------------------------------
        查询操作:
        SELECT position[0], position[1] FROM locations;            -- 提取坐标
        SELECT * FROM locations WHERE position <-> POINT(5, 5) < 10;  -- 距离查询
    f.网络地址类型
        用于存储网络地址
        -----------------------------------------------------------------------------------------------------
        网络地址类型:
        INET:IPv4 或 IPv6 地址
        CIDR:网络地址
        MACADDR:MAC 地址
        MACADDR8:EUI-64 MAC 地址
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE TABLE servers (
            id SERIAL PRIMARY KEY,
            name TEXT,
            ip_address INET,
            network CIDR,
            mac_address MACADDR
        );
        -----------------------------------------------------------------------------------------------------
        插入数据:
        INSERT INTO servers (name, ip_address, network, mac_address) VALUES
        ('Server 1', '192.168.1.100', '192.168.1.0/24', '08:00:2b:01:02:03');
        -----------------------------------------------------------------------------------------------------
        查询操作:
        SELECT * FROM servers WHERE ip_address << INET '192.168.1.0/24';  -- 包含查询
        SELECT * FROM servers WHERE ip_address && INET '192.168.1.0/24';  -- 重叠查询

2.5 索引

01.索引类型
    a.B-tree索引
        默认索引类型
        适用于大多数场景
        支持等值查询、范围查询、排序
        -----------------------------------------------------------------------------------------------------
        创建 B-tree 索引:
        CREATE INDEX idx_users_email ON users(email);
        CREATE INDEX idx_users_name ON users(name);
        -----------------------------------------------------------------------------------------------------
        适用场景:
        等值查询:WHERE email = 'user@example.com'
        范围查询:WHERE age BETWEEN 18 AND 30
        排序:ORDER BY created_at
        模式匹配:WHERE name LIKE 'John%'(前缀匹配)
        -----------------------------------------------------------------------------------------------------
        不适用场景:
        后缀匹配:WHERE name LIKE '%John'
        全文检索
    b.Hash索引
        基于哈希表的索引
        只支持等值查询
        不支持范围查询和排序
        -----------------------------------------------------------------------------------------------------
        创建 Hash 索引:
        CREATE INDEX idx_users_id_hash ON users USING HASH (id);
        -----------------------------------------------------------------------------------------------------
        适用场景:
        等值查询:WHERE id = 123
        -----------------------------------------------------------------------------------------------------
        注意:
        PostgreSQL 10 之前 Hash 索引不支持 WAL 日志
        现在已经支持,但实际使用较少
        大多数情况下 B-tree 性能更好
    c.GiST索引
        通用搜索树(Generalized Search Tree)
        支持多种数据类型和操作符
        适用于几何数据、全文检索、范围类型
        -----------------------------------------------------------------------------------------------------
        创建 GiST 索引:
        CREATE INDEX idx_locations_position ON locations USING GIST (position);
        CREATE INDEX idx_ranges ON reservations USING GIST (time_range);
        -----------------------------------------------------------------------------------------------------
        适用场景:
        几何数据查询
        范围类型查询
        全文检索(配合 tsvector)
        最近邻查询
    d.GIN索引
        倒排索引(Generalized Inverted Index)
        适用于包含多个值的列
        如数组、JSONB、全文检索
        -----------------------------------------------------------------------------------------------------
        创建 GIN 索引:
        CREATE INDEX idx_posts_tags ON posts USING GIN (tags);
        CREATE INDEX idx_products_metadata ON products USING GIN (metadata);
        CREATE INDEX idx_documents_content ON documents USING GIN (to_tsvector('english', content));
        -----------------------------------------------------------------------------------------------------
        适用场景:
        数组包含查询:WHERE tags @> ARRAY['postgresql']
        JSONB 查询:WHERE metadata @> '{"status": "active"}'
        全文检索:WHERE to_tsvector('english', content) @@ to_tsquery('postgresql')
        -----------------------------------------------------------------------------------------------------
        GIN vs GiST:
        GIN:查询速度快,但创建和更新慢,占用空间大
        GiST:创建和更新快,但查询速度慢,占用空间小
    e.BRIN索引
        块范围索引(Block Range Index)
        适用于大表且数据有序
        索引非常小,但查询性能取决于数据分布
        -----------------------------------------------------------------------------------------------------
        创建 BRIN 索引:
        CREATE INDEX idx_logs_created_at ON logs USING BRIN (created_at);
        CREATE INDEX idx_orders_order_date ON orders USING BRIN (order_date);
        -----------------------------------------------------------------------------------------------------
        适用场景:
        时间序列数据
        日志表
        数据按某列自然排序的大表
        -----------------------------------------------------------------------------------------------------
        优点:
        索引非常小(几 KB 到几 MB)
        创建和维护成本低
        -----------------------------------------------------------------------------------------------------
        缺点:
        查询性能取决于数据分布
        不适合随机分布的数据
    f.SP-GiST索引
        空间分区 GiST 索引(Space-Partitioned GiST)
        适用于非平衡数据结构
        如四叉树、k-d 树
        -----------------------------------------------------------------------------------------------------
        创建 SP-GiST 索引:
        CREATE INDEX idx_points ON points USING SPGIST (location);
        -----------------------------------------------------------------------------------------------------
        适用场景:
        电话号码
        IP 地址
        几何数据
        文本前缀搜索

02.索引操作
    a.创建索引
        基本创建:
        CREATE INDEX idx_users_email ON users(email);
        -----------------------------------------------------------------------------------------------------
        创建唯一索引:
        CREATE UNIQUE INDEX idx_users_username ON users(username);
        -----------------------------------------------------------------------------------------------------
        创建多列索引:
        CREATE INDEX idx_users_name_age ON users(name, age);
        -----------------------------------------------------------------------------------------------------
        创建部分索引:
        CREATE INDEX idx_active_users ON users(email) WHERE status = 'active';
        -----------------------------------------------------------------------------------------------------
        创建表达式索引:
        CREATE INDEX idx_users_lower_email ON users(LOWER(email));
        CREATE INDEX idx_users_full_name ON users((first_name || ' ' || last_name));
        -----------------------------------------------------------------------------------------------------
        并发创建索引:
        CREATE INDEX CONCURRENTLY idx_users_email ON users(email);
        -----------------------------------------------------------------------------------------------------
        如果不存在则创建:
        CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);
    b.查看索引
        查看表的索引:
        \di users                                   # psql 命令
        \d users                                    # 查看表结构(包含索引)
        -----------------------------------------------------------------------------------------------------
        查询索引信息:
        SELECT indexname, indexdef
        FROM pg_indexes
        WHERE tablename = 'users';
        -----------------------------------------------------------------------------------------------------
        查看索引大小:
        SELECT pg_size_pretty(pg_relation_size('idx_users_email'));
        -----------------------------------------------------------------------------------------------------
        查看索引使用情况:
        SELECT schemaname, tablename, indexname, idx_scan, idx_tup_read, idx_tup_fetch
        FROM pg_stat_user_indexes
        WHERE tablename = 'users';
        -----------------------------------------------------------------------------------------------------
        查找未使用的索引:
        SELECT schemaname, tablename, indexname, idx_scan
        FROM pg_stat_user_indexes
        WHERE idx_scan = 0 AND indexname NOT LIKE '%_pkey';
    c.删除索引
        删除索引:
        DROP INDEX idx_users_email;
        DROP INDEX IF EXISTS idx_users_email;
        -----------------------------------------------------------------------------------------------------
        并发删除索引:
        DROP INDEX CONCURRENTLY idx_users_email;
        -----------------------------------------------------------------------------------------------------
        删除表的所有索引:
        DROP INDEX idx1, idx2, idx3;
    d.重建索引
        重建单个索引:
        REINDEX INDEX idx_users_email;
        -----------------------------------------------------------------------------------------------------
        重建表的所有索引:
        REINDEX TABLE users;
        -----------------------------------------------------------------------------------------------------
        重建数据库的所有索引:
        REINDEX DATABASE mydb;
        -----------------------------------------------------------------------------------------------------
        并发重建索引:
        REINDEX INDEX CONCURRENTLY idx_users_email;
        -----------------------------------------------------------------------------------------------------
        重建索引的场景:
        索引损坏
        索引膨胀
        性能下降

03.索引优化
    a.部分索引
        只为满足条件的行创建索引
        减少索引大小,提高性能
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE INDEX idx_active_users ON users(email) WHERE status = 'active';
        CREATE INDEX idx_recent_orders ON orders(order_date) WHERE order_date > '2024-01-01';
        -----------------------------------------------------------------------------------------------------
        查询时必须包含相同条件:
        SELECT * FROM users WHERE email = 'user@example.com' AND status = 'active';
    b.表达式索引
        对表达式的结果创建索引
        适用于经常使用表达式的查询
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE INDEX idx_users_lower_email ON users(LOWER(email));
        CREATE INDEX idx_orders_year ON orders(EXTRACT(YEAR FROM order_date));
        CREATE INDEX idx_users_age ON users((CURRENT_DATE - birth_date));
        -----------------------------------------------------------------------------------------------------
        查询时必须使用相同表达式:
        SELECT * FROM users WHERE LOWER(email) = 'user@example.com';
    c.多列索引
        为多个列创建单个索引
        适用于经常一起查询的列
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE INDEX idx_users_name_age ON users(name, age);
        CREATE INDEX idx_orders_user_date ON orders(user_id, order_date);
        -----------------------------------------------------------------------------------------------------
        列的顺序很重要:
        最常用于过滤的列放在前面
        基数高的列放在前面
        -----------------------------------------------------------------------------------------------------
        索引可以用于:
        WHERE name = 'John' AND age = 30
        WHERE name = 'John'
        ORDER BY name, age
        -----------------------------------------------------------------------------------------------------
        索引不能用于:
        WHERE age = 30(跳过了第一列)
    d.覆盖索引
        索引包含查询所需的所有列
        查询可以只扫描索引,不需要访问表
        -----------------------------------------------------------------------------------------------------
        创建覆盖索引:
        CREATE INDEX idx_users_email_name ON users(email) INCLUDE (name);
        -----------------------------------------------------------------------------------------------------
        查询示例:
        SELECT name FROM users WHERE email = 'user@example.com';
        -- 只需扫描索引,不需要访问表
    e.索引选择策略
        为经常出现在 WHERE 子句的列创建索引
        为经常用于 JOIN 的列创建索引
        为经常用于 ORDER BY 的列创建索引
        不要为小表创建索引
        不要为低基数列创建索引(如性别、状态等)
        -----------------------------------------------------------------------------------------------------
        监控索引使用情况:
        定期检查索引的使用频率
        删除未使用的索引
        重建膨胀的索引
        -----------------------------------------------------------------------------------------------------
        索引的代价:
        占用磁盘空间
        降低写入性能(INSERT、UPDATE、DELETE)
        需要维护成本

2.6 视图

01.普通视图
    a.创建视图
        基本创建:
        CREATE VIEW active_users AS
        SELECT id, username, email
        FROM users
        WHERE status = 'active';
        -----------------------------------------------------------------------------------------------------
        创建或替换视图:
        CREATE OR REPLACE VIEW active_users AS
        SELECT id, username, email, created_at
        FROM users
        WHERE status = 'active';
        -----------------------------------------------------------------------------------------------------
        创建带列名的视图:
        CREATE VIEW user_summary (user_id, user_name, user_email) AS
        SELECT id, username, email
        FROM users;
        -----------------------------------------------------------------------------------------------------
        创建复杂视图:
        CREATE VIEW order_summary AS
        SELECT
            u.id AS user_id,
            u.username,
            COUNT(o.order_id) AS total_orders,
            SUM(o.total_amount) AS total_spent
        FROM users u
        LEFT JOIN orders o ON u.id = o.user_id
        GROUP BY u.id, u.username;
    b.修改视图
        替换视图:
        CREATE OR REPLACE VIEW active_users AS
        SELECT id, username, email, phone
        FROM users
        WHERE status = 'active';
        -----------------------------------------------------------------------------------------------------
        重命名视图:
        ALTER VIEW active_users RENAME TO current_users;
        -----------------------------------------------------------------------------------------------------
        修改视图所有者:
        ALTER VIEW active_users OWNER TO newuser;
        -----------------------------------------------------------------------------------------------------
        修改视图模式:
        ALTER VIEW active_users SET SCHEMA newschema;
    c.删除视图
        删除视图:
        DROP VIEW active_users;
        DROP VIEW IF EXISTS active_users;
        -----------------------------------------------------------------------------------------------------
        删除视图及其依赖对象:
        DROP VIEW active_users CASCADE;
        -----------------------------------------------------------------------------------------------------
        删除多个视图:
        DROP VIEW view1, view2, view3;
    d.查询视图
        查询视图与查询表相同:
        SELECT * FROM active_users;
        SELECT * FROM active_users WHERE username LIKE 'John%';
        -----------------------------------------------------------------------------------------------------
        查看视图定义:
        \d+ active_users                            # psql 命令
        SELECT definition FROM pg_views WHERE viewname = 'active_users';
        -----------------------------------------------------------------------------------------------------
        查看所有视图:
        \dv                                         # psql 命令
        SELECT viewname FROM pg_views WHERE schemaname = 'public';

02.物化视图
    a.创建物化视图
        基本创建:
        CREATE MATERIALIZED VIEW user_stats AS
        SELECT
            DATE_TRUNC('day', created_at) AS date,
            COUNT(*) AS user_count
        FROM users
        GROUP BY DATE_TRUNC('day', created_at);
        -----------------------------------------------------------------------------------------------------
        创建带索引的物化视图:
        CREATE MATERIALIZED VIEW user_stats AS
        SELECT
            DATE_TRUNC('day', created_at) AS date,
            COUNT(*) AS user_count
        FROM users
        GROUP BY DATE_TRUNC('day', created_at);

        CREATE UNIQUE INDEX idx_user_stats_date ON user_stats(date);
        -----------------------------------------------------------------------------------------------------
        创建不存储数据的物化视图:
        CREATE MATERIALIZED VIEW user_stats AS
        SELECT
            DATE_TRUNC('day', created_at) AS date,
            COUNT(*) AS user_count
        FROM users
        GROUP BY DATE_TRUNC('day', created_at)
        WITH NO DATA;
    b.刷新物化视图
        完全刷新:
        REFRESH MATERIALIZED VIEW user_stats;
        -----------------------------------------------------------------------------------------------------
        并发刷新(不阻塞查询):
        REFRESH MATERIALIZED VIEW CONCURRENTLY user_stats;
        -- 需要在物化视图上创建唯一索引
        -----------------------------------------------------------------------------------------------------
        刷新策略:
        定时刷新:使用 cron 或 pg_cron 扩展
        触发器刷新:在基表更新时触发刷新
        手动刷新:根据业务需求手动刷新
    c.使用场景
        复杂聚合查询:
        避免每次查询都执行复杂的聚合计算
        预先计算结果,提高查询性能
        -----------------------------------------------------------------------------------------------------
        报表查询:
        生成日报、周报、月报
        避免实时计算,减轻数据库压力
        -----------------------------------------------------------------------------------------------------
        数据仓库:
        ETL 过程中的中间结果
        数据汇总和分析
        -----------------------------------------------------------------------------------------------------
        缓存查询结果:
        对于变化不频繁的数据
        可以使用物化视图缓存查询结果
    d.物化视图 vs 普通视图
        普通视图:
        不存储数据,每次查询都执行底层查询
        数据始终是最新的
        适合简单查询和实时数据
        -----------------------------------------------------------------------------------------------------
        物化视图:
        存储查询结果,查询速度快
        数据可能不是最新的,需要手动刷新
        适合复杂查询和对实时性要求不高的场景
        -----------------------------------------------------------------------------------------------------
        选择建议:
        实时性要求高:使用普通视图
        查询复杂且数据变化不频繁:使用物化视图
        需要频繁刷新:考虑使用触发器或定时任务

3 PostgreSQL进阶

3.1 SQL语句

01.DQL查询
    a.基础查询
        查询所有列:
        SELECT * FROM users;
        -----------------------------------------------------------------------------------------------------
        查询指定列:
        SELECT id, username, email FROM users;
        -----------------------------------------------------------------------------------------------------
        查询去重:
        SELECT DISTINCT country FROM users;
        -----------------------------------------------------------------------------------------------------
        查询限制行数:
        SELECT * FROM users LIMIT 10;
        SELECT * FROM users LIMIT 10 OFFSET 20;     -- 跳过前 20 行
        -----------------------------------------------------------------------------------------------------
        查询别名:
        SELECT id AS user_id, username AS name FROM users;
        SELECT u.id, u.username FROM users AS u;
    b.条件查询
        WHERE 子句:
        SELECT * FROM users WHERE age > 18;
        SELECT * FROM users WHERE status = 'active';
        SELECT * FROM users WHERE email LIKE '%@gmail.com';
        -----------------------------------------------------------------------------------------------------
        比较运算符:
        =, !=, <>, >, <, >=, <=
        SELECT * FROM products WHERE price >= 100;
        -----------------------------------------------------------------------------------------------------
        逻辑运算符:
        AND, OR, NOT
        SELECT * FROM users WHERE age > 18 AND status = 'active';
        SELECT * FROM users WHERE country = 'US' OR country = 'UK';
        SELECT * FROM users WHERE NOT status = 'deleted';
        -----------------------------------------------------------------------------------------------------
        范围查询:
        BETWEEN ... AND ...
        SELECT * FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';
        -----------------------------------------------------------------------------------------------------
        IN 查询:
        SELECT * FROM users WHERE country IN ('US', 'UK', 'CA');
        SELECT * FROM users WHERE id IN (1, 2, 3, 4, 5);
        -----------------------------------------------------------------------------------------------------
        NULL 查询:
        SELECT * FROM users WHERE phone IS NULL;
        SELECT * FROM users WHERE phone IS NOT NULL;
        -----------------------------------------------------------------------------------------------------
        模糊查询:
        LIKE, ILIKE(不区分大小写)
        SELECT * FROM users WHERE username LIKE 'John%';        -- 前缀匹配
        SELECT * FROM users WHERE username LIKE '%Smith';       -- 后缀匹配
        SELECT * FROM users WHERE username LIKE '%admin%';      -- 包含匹配
        SELECT * FROM users WHERE username ILIKE 'JOHN%';       -- 不区分大小写
        -----------------------------------------------------------------------------------------------------
        正则表达式:
        ~ 区分大小写,~* 不区分大小写
        SELECT * FROM users WHERE username ~ '^[A-Z]';
        SELECT * FROM users WHERE email ~* '@gmail\.com$';
    c.聚合查询
        聚合函数:
        COUNT(*):计数
        SUM(column):求和
        AVG(column):平均值
        MAX(column):最大值
        MIN(column):最小值
        -----------------------------------------------------------------------------------------------------
        示例:
        SELECT COUNT(*) FROM users;
        SELECT COUNT(DISTINCT country) FROM users;
        SELECT SUM(total_amount) FROM orders;
        SELECT AVG(age) FROM users;
        SELECT MAX(created_at), MIN(created_at) FROM users;
    d.分组查询
        GROUP BY:
        SELECT country, COUNT(*) FROM users GROUP BY country;
        SELECT status, AVG(age) FROM users GROUP BY status;
        -----------------------------------------------------------------------------------------------------
        HAVING:
        SELECT country, COUNT(*) as user_count
        FROM users
        GROUP BY country
        HAVING COUNT(*) > 100;
        -----------------------------------------------------------------------------------------------------
        多列分组:
        SELECT country, status, COUNT(*)
        FROM users
        GROUP BY country, status;
    e.排序与分页
        ORDER BY:
        SELECT * FROM users ORDER BY created_at DESC;
        SELECT * FROM users ORDER BY age ASC, username DESC;
        -----------------------------------------------------------------------------------------------------
        分页:
        SELECT * FROM users ORDER BY id LIMIT 10 OFFSET 0;      -- 第 1 页
        SELECT * FROM users ORDER BY id LIMIT 10 OFFSET 10;     -- 第 2 页
        SELECT * FROM users ORDER BY id LIMIT 10 OFFSET 20;     -- 第 3 页
    f.子查询
        WHERE 子查询:
        SELECT * FROM users WHERE id IN (SELECT user_id FROM orders WHERE total_amount > 1000);
        -----------------------------------------------------------------------------------------------------
        FROM 子查询:
        SELECT * FROM (SELECT * FROM users WHERE age > 18) AS adults;
        -----------------------------------------------------------------------------------------------------
        EXISTS 子查询:
        SELECT * FROM users u WHERE EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id);
        -----------------------------------------------------------------------------------------------------
        标量子查询:
        SELECT username, (SELECT COUNT(*) FROM orders WHERE user_id = users.id) AS order_count
        FROM users;
    g.连接查询
        INNER JOIN:
        SELECT u.username, o.order_id, o.total_amount
        FROM users u
        INNER JOIN orders o ON u.id = o.user_id;
        -----------------------------------------------------------------------------------------------------
        LEFT JOIN:
        SELECT u.username, o.order_id
        FROM users u
        LEFT JOIN orders o ON u.id = o.user_id;
        -----------------------------------------------------------------------------------------------------
        RIGHT JOIN:
        SELECT u.username, o.order_id
        FROM users u
        RIGHT JOIN orders o ON u.id = o.user_id;
        -----------------------------------------------------------------------------------------------------
        FULL OUTER JOIN:
        SELECT u.username, o.order_id
        FROM users u
        FULL OUTER JOIN orders o ON u.id = o.user_id;
        -----------------------------------------------------------------------------------------------------
        CROSS JOIN:
        SELECT u.username, p.product_name
        FROM users u
        CROSS JOIN products p;
        -----------------------------------------------------------------------------------------------------
        SELF JOIN:
        SELECT e1.name AS employee, e2.name AS manager
        FROM employees e1
        LEFT JOIN employees e2 ON e1.manager_id = e2.id;
    h.窗口函数
        ROW_NUMBER():
        SELECT username, age, ROW_NUMBER() OVER (ORDER BY age DESC) AS rank
        FROM users;
        -----------------------------------------------------------------------------------------------------
        RANK() 和 DENSE_RANK():
        SELECT username, score,
               RANK() OVER (ORDER BY score DESC) AS rank,
               DENSE_RANK() OVER (ORDER BY score DESC) AS dense_rank
        FROM users;
        -----------------------------------------------------------------------------------------------------
        PARTITION BY:
        SELECT username, country, age,
               ROW_NUMBER() OVER (PARTITION BY country ORDER BY age DESC) AS rank_in_country
        FROM users;
        -----------------------------------------------------------------------------------------------------
        聚合窗口函数:
        SELECT username, salary,
               SUM(salary) OVER (ORDER BY id) AS running_total,
               AVG(salary) OVER (ORDER BY id ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_avg
        FROM employees;
        -----------------------------------------------------------------------------------------------------
        LEAD() 和 LAG():
        SELECT order_date,
               total_amount,
               LAG(total_amount) OVER (ORDER BY order_date) AS prev_amount,
               LEAD(total_amount) OVER (ORDER BY order_date) AS next_amount
        FROM orders;
    i.CTE公用表表达式
        基本 CTE:
        WITH active_users AS (
            SELECT * FROM users WHERE status = 'active'
        )
        SELECT * FROM active_users WHERE age > 18;
        -----------------------------------------------------------------------------------------------------
        多个 CTE:
        WITH
        active_users AS (
            SELECT * FROM users WHERE status = 'active'
        ),
        user_orders AS (
            SELECT user_id, COUNT(*) AS order_count
            FROM orders
            GROUP BY user_id
        )
        SELECT u.username, uo.order_count
        FROM active_users u
        LEFT JOIN user_orders uo ON u.id = uo.user_id;
        -----------------------------------------------------------------------------------------------------
        递归 CTE:
        WITH RECURSIVE subordinates AS (
            SELECT id, name, manager_id, 1 AS level
            FROM employees
            WHERE manager_id IS NULL
            UNION ALL
            SELECT e.id, e.name, e.manager_id, s.level + 1
            FROM employees e
            INNER JOIN subordinates s ON e.manager_id = s.id
        )
        SELECT * FROM subordinates;

02.DML操作
    a.INSERT插入
        插入单行:
        INSERT INTO users (username, email, age) VALUES ('john', 'john@example.com', 25);
        -----------------------------------------------------------------------------------------------------
        插入多行:
        INSERT INTO users (username, email, age) VALUES
        ('alice', 'alice@example.com', 30),
        ('bob', 'bob@example.com', 28),
        ('charlie', 'charlie@example.com', 35);
        -----------------------------------------------------------------------------------------------------
        从查询结果插入:
        INSERT INTO users_backup SELECT * FROM users WHERE status = 'active';
        -----------------------------------------------------------------------------------------------------
        插入并返回:
        INSERT INTO users (username, email) VALUES ('david', 'david@example.com')
        RETURNING id, username, created_at;
    b.UPDATE更新
        更新单行:
        UPDATE users SET email = 'newemail@example.com' WHERE id = 1;
        -----------------------------------------------------------------------------------------------------
        更新多列:
        UPDATE users SET email = 'new@example.com', age = 26 WHERE id = 1;
        -----------------------------------------------------------------------------------------------------
        更新多行:
        UPDATE users SET status = 'inactive' WHERE last_login < '2023-01-01';
        -----------------------------------------------------------------------------------------------------
        使用子查询更新:
        UPDATE orders SET status = 'shipped'
        WHERE user_id IN (SELECT id FROM users WHERE country = 'US');
        -----------------------------------------------------------------------------------------------------
        更新并返回:
        UPDATE users SET status = 'active' WHERE id = 1
        RETURNING id, username, status, updated_at;
    c.DELETE删除
        删除单行:
        DELETE FROM users WHERE id = 1;
        -----------------------------------------------------------------------------------------------------
        删除多行:
        DELETE FROM users WHERE status = 'deleted' AND created_at < '2020-01-01';
        -----------------------------------------------------------------------------------------------------
        使用子查询删除:
        DELETE FROM orders WHERE user_id IN (SELECT id FROM users WHERE status = 'deleted');
        -----------------------------------------------------------------------------------------------------
        删除并返回:
        DELETE FROM users WHERE id = 1 RETURNING *;
    d.UPSERT(INSERT ON CONFLICT)
        插入或更新:
        INSERT INTO users (id, username, email)
        VALUES (1, 'john', 'john@example.com')
        ON CONFLICT (id) DO UPDATE SET email = EXCLUDED.email;
        -----------------------------------------------------------------------------------------------------
        插入或忽略:
        INSERT INTO users (username, email)
        VALUES ('john', 'john@example.com')
        ON CONFLICT (username) DO NOTHING;
        -----------------------------------------------------------------------------------------------------
        条件更新:
        INSERT INTO products (id, name, price)
        VALUES (1, 'Product A', 100)
        ON CONFLICT (id) DO UPDATE
        SET price = EXCLUDED.price
        WHERE products.price < EXCLUDED.price;
    e.RETURNING子句
        INSERT RETURNING:
        INSERT INTO users (username, email) VALUES ('john', 'john@example.com')
        RETURNING id, username, created_at;
        -----------------------------------------------------------------------------------------------------
        UPDATE RETURNING:
        UPDATE users SET status = 'active' WHERE id = 1
        RETURNING id, username, status;
        -----------------------------------------------------------------------------------------------------
        DELETE RETURNING:
        DELETE FROM users WHERE id = 1 RETURNING *;

03.DDL定义
    a.CREATE创建
        创建表:
        CREATE TABLE users (
            id SERIAL PRIMARY KEY,
            username VARCHAR(50) NOT NULL UNIQUE,
            email VARCHAR(100) NOT NULL,
            created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
        );
        -----------------------------------------------------------------------------------------------------
        创建索引:
        CREATE INDEX idx_users_email ON users(email);
        -----------------------------------------------------------------------------------------------------
        创建视图:
        CREATE VIEW active_users AS SELECT * FROM users WHERE status = 'active';
        -----------------------------------------------------------------------------------------------------
        创建函数:
        CREATE FUNCTION get_user_count() RETURNS INTEGER AS $$
        BEGIN
            RETURN (SELECT COUNT(*) FROM users);
        END;
        $$ LANGUAGE plpgsql;
    b.ALTER修改
        修改表:
        ALTER TABLE users ADD COLUMN phone VARCHAR(20);
        ALTER TABLE users DROP COLUMN phone;
        ALTER TABLE users ALTER COLUMN email TYPE VARCHAR(200);
        ALTER TABLE users RENAME COLUMN username TO user_name;
        -----------------------------------------------------------------------------------------------------
        修改索引:
        ALTER INDEX idx_users_email RENAME TO idx_users_email_new;
        -----------------------------------------------------------------------------------------------------
        修改视图:
        CREATE OR REPLACE VIEW active_users AS
        SELECT id, username, email FROM users WHERE status = 'active';
    c.DROP删除
        删除表:
        DROP TABLE users;
        DROP TABLE IF EXISTS users CASCADE;
        -----------------------------------------------------------------------------------------------------
        删除索引:
        DROP INDEX idx_users_email;
        -----------------------------------------------------------------------------------------------------
        删除视图:
        DROP VIEW active_users;
    d.TRUNCATE清空
        清空表:
        TRUNCATE TABLE users;
        TRUNCATE TABLE users RESTART IDENTITY;
        TRUNCATE TABLE users CASCADE;

04.DCL控制
    a.GRANT授权
        授予表权限:
        GRANT SELECT ON users TO myuser;
        GRANT INSERT, UPDATE, DELETE ON users TO myuser;
        GRANT ALL PRIVILEGES ON users TO myuser;
        -----------------------------------------------------------------------------------------------------
        授予所有表权限:
        GRANT SELECT ON ALL TABLES IN SCHEMA public TO myuser;
        -----------------------------------------------------------------------------------------------------
        授予数据库权限:
        GRANT CONNECT ON DATABASE mydb TO myuser;
        -----------------------------------------------------------------------------------------------------
        授予模式权限:
        GRANT USAGE ON SCHEMA public TO myuser;
    b.REVOKE撤销
        撤销表权限:
        REVOKE SELECT ON users FROM myuser;
        REVOKE ALL PRIVILEGES ON users FROM myuser;
        -----------------------------------------------------------------------------------------------------
        撤销所有表权限:
        REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM myuser;
    c.角色管理
        创建角色:
        CREATE ROLE readonly;
        CREATE ROLE readwrite;
        CREATE USER myuser PASSWORD 'password' IN ROLE readwrite;
        -----------------------------------------------------------------------------------------------------
        授予角色:
        GRANT readonly TO myuser;
        GRANT readwrite TO myuser;
        -----------------------------------------------------------------------------------------------------
        撤销角色:
        REVOKE readonly FROM myuser;

05.TCL事务
    a.BEGIN开启事务
        开启事务:
        BEGIN;
        BEGIN TRANSACTION;
        START TRANSACTION;
    b.COMMIT提交
        提交事务:
        COMMIT;
        COMMIT TRANSACTION;
    c.ROLLBACK回滚
        回滚事务:
        ROLLBACK;
        ROLLBACK TRANSACTION;
        -----------------------------------------------------------------------------------------------------
        回滚到保存点:
        ROLLBACK TO SAVEPOINT sp1;
    d.SAVEPOINT保存点
        创建保存点:
        BEGIN;
        INSERT INTO users (username) VALUES ('user1');
        SAVEPOINT sp1;
        INSERT INTO users (username) VALUES ('user2');
        SAVEPOINT sp2;
        INSERT INTO users (username) VALUES ('user3');
        ROLLBACK TO SAVEPOINT sp2;
        COMMIT;
        -----------------------------------------------------------------------------------------------------
        释放保存点:
        RELEASE SAVEPOINT sp1;

3.2 函数

01.内置函数
    a.字符串函数
        LENGTH():返回字符串长度
        SELECT LENGTH('Hello');                                 -- 5
        -----------------------------------------------------------------------------------------------------
        CONCAT():连接字符串
        SELECT CONCAT('Hello', ' ', 'World');                   -- Hello World
        SELECT 'Hello' || ' ' || 'World';                       -- Hello World
        -----------------------------------------------------------------------------------------------------
        UPPER() / LOWER():大小写转换
        SELECT UPPER('hello');                                  -- HELLO
        SELECT LOWER('HELLO');                                  -- hello
        -----------------------------------------------------------------------------------------------------
        TRIM() / LTRIM() / RTRIM():去除空格
        SELECT TRIM('  hello  ');                               -- hello
        SELECT LTRIM('  hello  ');                              -- 'hello  '
        SELECT RTRIM('  hello  ');                              -- '  hello'
        -----------------------------------------------------------------------------------------------------
        SUBSTRING():提取子字符串
        SELECT SUBSTRING('Hello World', 1, 5);                  -- Hello
        SELECT SUBSTRING('Hello World' FROM 7);                 -- World
        -----------------------------------------------------------------------------------------------------
        REPLACE():替换字符串
        SELECT REPLACE('Hello World', 'World', 'PostgreSQL');   -- Hello PostgreSQL
        -----------------------------------------------------------------------------------------------------
        SPLIT_PART():分割字符串
        SELECT SPLIT_PART('a,b,c', ',', 2);                     -- b
        -----------------------------------------------------------------------------------------------------
        POSITION():查找子字符串位置
        SELECT POSITION('World' IN 'Hello World');              -- 7
        -----------------------------------------------------------------------------------------------------
        LEFT() / RIGHT():提取左右子字符串
        SELECT LEFT('Hello World', 5);                          -- Hello
        SELECT RIGHT('Hello World', 5);                         -- World
    b.数值函数
        ABS():绝对值
        SELECT ABS(-10);                                        -- 10
        -----------------------------------------------------------------------------------------------------
        ROUND():四舍五入
        SELECT ROUND(3.14159, 2);                               -- 3.14
        -----------------------------------------------------------------------------------------------------
        CEIL() / FLOOR():向上/向下取整
        SELECT CEIL(3.14);                                      -- 4
        SELECT FLOOR(3.14);                                     -- 3
        -----------------------------------------------------------------------------------------------------
        MOD():取模
        SELECT MOD(10, 3);                                      -- 1
        -----------------------------------------------------------------------------------------------------
        POWER():幂运算
        SELECT POWER(2, 3);                                     -- 8
        -----------------------------------------------------------------------------------------------------
        SQRT():平方根
        SELECT SQRT(16);                                        -- 4
        -----------------------------------------------------------------------------------------------------
        RANDOM():随机数
        SELECT RANDOM();                                        -- 0 到 1 之间的随机数
        SELECT FLOOR(RANDOM() * 100);                           -- 0 到 99 之间的随机整数
    c.日期时间函数
        CURRENT_DATE / CURRENT_TIME / CURRENT_TIMESTAMP:当前日期时间
        SELECT CURRENT_DATE;                                    -- 2024-01-01
        SELECT CURRENT_TIME;                                    -- 14:30:00
        SELECT CURRENT_TIMESTAMP;                               -- 2024-01-01 14:30:00
        SELECT NOW();                                           -- 等同于 CURRENT_TIMESTAMP
        -----------------------------------------------------------------------------------------------------
        EXTRACT():提取日期部分
        SELECT EXTRACT(YEAR FROM TIMESTAMP '2024-01-01 14:30:00');     -- 2024
        SELECT EXTRACT(MONTH FROM TIMESTAMP '2024-01-01 14:30:00');    -- 1
        SELECT EXTRACT(DAY FROM TIMESTAMP '2024-01-01 14:30:00');      -- 1
        SELECT EXTRACT(HOUR FROM TIMESTAMP '2024-01-01 14:30:00');     -- 14
        -----------------------------------------------------------------------------------------------------
        DATE_TRUNC():截断日期
        SELECT DATE_TRUNC('day', TIMESTAMP '2024-01-01 14:30:00');     -- 2024-01-01 00:00:00
        SELECT DATE_TRUNC('month', TIMESTAMP '2024-01-15 14:30:00');   -- 2024-01-01 00:00:00
        SELECT DATE_TRUNC('year', TIMESTAMP '2024-06-15 14:30:00');    -- 2024-01-01 00:00:00
        -----------------------------------------------------------------------------------------------------
        AGE():计算时间差
        SELECT AGE(TIMESTAMP '2024-01-01', TIMESTAMP '2023-01-01');     -- 1 year
        SELECT AGE(TIMESTAMP '2024-01-01');                             -- 从当前时间到指定时间的差
        -----------------------------------------------------------------------------------------------------
        TO_CHAR():格式化日期
        SELECT TO_CHAR(NOW(), 'YYYY-MM-DD HH24:MI:SS');
        SELECT TO_CHAR(NOW(), 'Day, DD Month YYYY');
        -----------------------------------------------------------------------------------------------------
        TO_DATE() / TO_TIMESTAMP():字符串转日期
        SELECT TO_DATE('2024-01-01', 'YYYY-MM-DD');
        SELECT TO_TIMESTAMP('2024-01-01 14:30:00', 'YYYY-MM-DD HH24:MI:SS');
    d.聚合函数
        COUNT():计数
        SELECT COUNT(*) FROM users;
        SELECT COUNT(DISTINCT country) FROM users;
        -----------------------------------------------------------------------------------------------------
        SUM():求和
        SELECT SUM(total_amount) FROM orders;
        -----------------------------------------------------------------------------------------------------
        AVG():平均值
        SELECT AVG(age) FROM users;
        -----------------------------------------------------------------------------------------------------
        MAX() / MIN():最大值/最小值
        SELECT MAX(created_at) FROM users;
        SELECT MIN(created_at) FROM users;
        -----------------------------------------------------------------------------------------------------
        STRING_AGG():字符串聚合
        SELECT STRING_AGG(username, ', ') FROM users;
        SELECT STRING_AGG(username, ', ' ORDER BY username) FROM users;
        -----------------------------------------------------------------------------------------------------
        ARRAY_AGG():数组聚合
        SELECT ARRAY_AGG(username) FROM users;
        SELECT ARRAY_AGG(username ORDER BY username) FROM users;
    e.JSON函数
        JSON 提取:
        SELECT '{"name": "John", "age": 30}'::json -> 'name';           -- "John"
        SELECT '{"name": "John", "age": 30}'::json ->> 'name';          -- John
        -----------------------------------------------------------------------------------------------------
        JSONB 提取:
        SELECT '{"name": "John", "age": 30}'::jsonb -> 'name';
        SELECT '{"name": "John", "age": 30}'::jsonb ->> 'name';
        -----------------------------------------------------------------------------------------------------
        JSON 路径提取:
        SELECT '{"user": {"name": "John"}}'::jsonb #> '{user,name}';
        SELECT '{"user": {"name": "John"}}'::jsonb #>> '{user,name}';
        -----------------------------------------------------------------------------------------------------
        JSON 包含:
        SELECT '{"name": "John", "age": 30}'::jsonb @> '{"name": "John"}';     -- true
        -----------------------------------------------------------------------------------------------------
        JSON 键存在:
        SELECT '{"name": "John", "age": 30}'::jsonb ? 'name';                  -- true
        -----------------------------------------------------------------------------------------------------
        JSONB_BUILD_OBJECT():构建 JSON 对象
        SELECT JSONB_BUILD_OBJECT('name', 'John', 'age', 30);
        -----------------------------------------------------------------------------------------------------
        JSONB_AGG():聚合为 JSON 数组
        SELECT JSONB_AGG(username) FROM users;

02.自定义函数
    a.创建函数
        基本函数:
        CREATE FUNCTION add_numbers(a INTEGER, b INTEGER) RETURNS INTEGER AS $$
        BEGIN
            RETURN a + b;
        END;
        $$ LANGUAGE plpgsql;
        -----------------------------------------------------------------------------------------------------
        调用函数:
        SELECT add_numbers(10, 20);                             -- 30
        -----------------------------------------------------------------------------------------------------
        返回表的函数:
        CREATE FUNCTION get_active_users() RETURNS TABLE(id INT, username TEXT) AS $$
        BEGIN
            RETURN QUERY SELECT id, username FROM users WHERE status = 'active';
        END;
        $$ LANGUAGE plpgsql;
        -----------------------------------------------------------------------------------------------------
        调用返回表的函数:
        SELECT * FROM get_active_users();
        -----------------------------------------------------------------------------------------------------
        带默认参数的函数:
        CREATE FUNCTION greet(name TEXT DEFAULT 'World') RETURNS TEXT AS $$
        BEGIN
            RETURN 'Hello, ' || name || '!';
        END;
        $$ LANGUAGE plpgsql;

        SELECT greet();                                         -- Hello, World!
        SELECT greet('John');                                   -- Hello, John!
    b.函数语言
        PL/pgSQL:
        PostgreSQL 的过程语言,类似 SQL
        支持变量、控制结构、异常处理
        -----------------------------------------------------------------------------------------------------
        SQL:
        纯 SQL 函数,性能更好
        CREATE FUNCTION get_user_count() RETURNS BIGINT AS $$
            SELECT COUNT(*) FROM users;
        $$ LANGUAGE sql;
        -----------------------------------------------------------------------------------------------------
        PL/Python:
        使用 Python 编写函数
        CREATE EXTENSION plpythonu;
        CREATE FUNCTION pymax(a INTEGER, b INTEGER) RETURNS INTEGER AS $$
            return max(a, b)
        $$ LANGUAGE plpythonu;
        -----------------------------------------------------------------------------------------------------
        PL/Perl:
        使用 Perl 编写函数
        CREATE EXTENSION plperl;
    c.控制结构
        IF 语句:
        CREATE FUNCTION check_age(age INTEGER) RETURNS TEXT AS $$
        BEGIN
            IF age < 18 THEN
                RETURN 'Minor';
            ELSIF age < 65 THEN
                RETURN 'Adult';
            ELSE
                RETURN 'Senior';
            END IF;
        END;
        $$ LANGUAGE plpgsql;
        -----------------------------------------------------------------------------------------------------
        CASE 语句:
        CREATE FUNCTION get_grade(score INTEGER) RETURNS CHAR AS $$
        BEGIN
            RETURN CASE
                WHEN score >= 90 THEN 'A'
                WHEN score >= 80 THEN 'B'
                WHEN score >= 70 THEN 'C'
                WHEN score >= 60 THEN 'D'
                ELSE 'F'
            END;
        END;
        $$ LANGUAGE plpgsql;
        -----------------------------------------------------------------------------------------------------
        LOOP 循环:
        CREATE FUNCTION sum_to_n(n INTEGER) RETURNS INTEGER AS $$
        DECLARE
            i INTEGER := 1;
            total INTEGER := 0;
        BEGIN
            LOOP
                EXIT WHEN i > n;
                total := total + i;
                i := i + 1;
            END LOOP;
            RETURN total;
        END;
        $$ LANGUAGE plpgsql;
        -----------------------------------------------------------------------------------------------------
        WHILE 循环:
        CREATE FUNCTION factorial(n INTEGER) RETURNS INTEGER AS $$
        DECLARE
            result INTEGER := 1;
            i INTEGER := 1;
        BEGIN
            WHILE i <= n LOOP
                result := result * i;
                i := i + 1;
            END LOOP;
            RETURN result;
        END;
        $$ LANGUAGE plpgsql;
        -----------------------------------------------------------------------------------------------------
        FOR 循环:
        CREATE FUNCTION print_numbers(n INTEGER) RETURNS VOID AS $$
        DECLARE
            i INTEGER;
        BEGIN
            FOR i IN 1..n LOOP
                RAISE NOTICE 'Number: %', i;
            END LOOP;
        END;
        $$ LANGUAGE plpgsql;
    d.异常处理
        捕获异常:
        CREATE FUNCTION safe_divide(a NUMERIC, b NUMERIC) RETURNS NUMERIC AS $$
        BEGIN
            RETURN a / b;
        EXCEPTION
            WHEN division_by_zero THEN
                RAISE NOTICE 'Division by zero!';
                RETURN NULL;
        END;
        $$ LANGUAGE plpgsql;
        -----------------------------------------------------------------------------------------------------
        抛出异常:
        CREATE FUNCTION check_positive(n INTEGER) RETURNS VOID AS $$
        BEGIN
            IF n <= 0 THEN
                RAISE EXCEPTION 'Number must be positive';
            END IF;
        END;
        $$ LANGUAGE plpgsql;
    e.删除函数
        删除函数:
        DROP FUNCTION add_numbers(INTEGER, INTEGER);
        DROP FUNCTION IF EXISTS add_numbers(INTEGER, INTEGER);
        -----------------------------------------------------------------------------------------------------
        替换函数:
        CREATE OR REPLACE FUNCTION add_numbers(a INTEGER, b INTEGER) RETURNS INTEGER AS $$
        BEGIN
            RETURN a + b;
        END;
        $$ LANGUAGE plpgsql;

3.3 触发器

01.触发器基础
    a.触发器类型
        行级触发器(FOR EACH ROW):
        每影响一行就触发一次
        可以访问 NEW 和 OLD 变量
        -----------------------------------------------------------------------------------------------------
        语句级触发器(FOR EACH STATEMENT):
        每个 SQL 语句触发一次
        不能访问 NEW 和 OLD 变量
        -----------------------------------------------------------------------------------------------------
        触发时机:
        BEFORE:在操作执行前触发
        AFTER:在操作执行后触发
        INSTEAD OF:替代操作(仅用于视图)
        -----------------------------------------------------------------------------------------------------
        触发事件:
        INSERT:插入时触发
        UPDATE:更新时触发
        DELETE:删除时触发
        TRUNCATE:清空表时触发(仅语句级)
    b.创建触发器
        基本触发器:
        CREATE TRIGGER update_timestamp
        BEFORE UPDATE ON users
        FOR EACH ROW
        EXECUTE FUNCTION update_modified_column();
        -----------------------------------------------------------------------------------------------------
        触发器函数:
        CREATE FUNCTION update_modified_column() RETURNS TRIGGER AS $$
        BEGIN
            NEW.updated_at = NOW();
            RETURN NEW;
        END;
        $$ LANGUAGE plpgsql;
        -----------------------------------------------------------------------------------------------------
        完整示例:
        CREATE TABLE users (
            id SERIAL PRIMARY KEY,
            username VARCHAR(50),
            created_at TIMESTAMP DEFAULT NOW(),
            updated_at TIMESTAMP DEFAULT NOW()
        );

        CREATE FUNCTION update_timestamp() RETURNS TRIGGER AS $$
        BEGIN
            NEW.updated_at = NOW();
            RETURN NEW;
        END;
        $$ LANGUAGE plpgsql;

        CREATE TRIGGER users_update_timestamp
        BEFORE UPDATE ON users
        FOR EACH ROW
        EXECUTE FUNCTION update_timestamp();
    c.NEW和OLD变量
        NEW:新行数据(INSERT 和 UPDATE 可用)
        OLD:旧行数据(UPDATE 和 DELETE 可用)
        -----------------------------------------------------------------------------------------------------
        示例:
        CREATE FUNCTION log_user_changes() RETURNS TRIGGER AS $$
        BEGIN
            IF TG_OP = 'INSERT' THEN
                INSERT INTO user_audit (user_id, action, new_data)
                VALUES (NEW.id, 'INSERT', row_to_json(NEW));
            ELSIF TG_OP = 'UPDATE' THEN
                INSERT INTO user_audit (user_id, action, old_data, new_data)
                VALUES (NEW.id, 'UPDATE', row_to_json(OLD), row_to_json(NEW));
            ELSIF TG_OP = 'DELETE' THEN
                INSERT INTO user_audit (user_id, action, old_data)
                VALUES (OLD.id, 'DELETE', row_to_json(OLD));
            END IF;
            RETURN NEW;
        END;
        $$ LANGUAGE plpgsql;

02.触发器应用
    a.审计日志
        创建审计表:
        CREATE TABLE audit_log (
            id SERIAL PRIMARY KEY,
            table_name TEXT,
            operation TEXT,
            user_name TEXT,
            old_data JSONB,
            new_data JSONB,
            created_at TIMESTAMP DEFAULT NOW()
        );
        -----------------------------------------------------------------------------------------------------
        创建审计触发器:
        CREATE FUNCTION audit_trigger() RETURNS TRIGGER AS $$
        BEGIN
            IF TG_OP = 'INSERT' THEN
                INSERT INTO audit_log (table_name, operation, user_name, new_data)
                VALUES (TG_TABLE_NAME, TG_OP, current_user, row_to_json(NEW));
            ELSIF TG_OP = 'UPDATE' THEN
                INSERT INTO audit_log (table_name, operation, user_name, old_data, new_data)
                VALUES (TG_TABLE_NAME, TG_OP, current_user, row_to_json(OLD), row_to_json(NEW));
            ELSIF TG_OP = 'DELETE' THEN
                INSERT INTO audit_log (table_name, operation, user_name, old_data)
                VALUES (TG_TABLE_NAME, TG_OP, current_user, row_to_json(OLD));
            END IF;
            RETURN NEW;
        END;
        $$ LANGUAGE plpgsql;

        CREATE TRIGGER users_audit
        AFTER INSERT OR UPDATE OR DELETE ON users
        FOR EACH ROW
        EXECUTE FUNCTION audit_trigger();
    b.数据验证
        验证触发器:
        CREATE FUNCTION validate_email() RETURNS TRIGGER AS $$
        BEGIN
            IF NEW.email !~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$' THEN
                RAISE EXCEPTION 'Invalid email format: %', NEW.email;
            END IF;
            RETURN NEW;
        END;
        $$ LANGUAGE plpgsql;

        CREATE TRIGGER users_validate_email
        BEFORE INSERT OR UPDATE ON users
        FOR EACH ROW
        EXECUTE FUNCTION validate_email();
    c.自动更新
        级联更新:
        CREATE FUNCTION update_order_total() RETURNS TRIGGER AS $$
        BEGIN
            UPDATE orders
            SET total_amount = (
                SELECT SUM(quantity * price)
                FROM order_items
                WHERE order_id = NEW.order_id
            )
            WHERE id = NEW.order_id;
            RETURN NEW;
        END;
        $$ LANGUAGE plpgsql;

        CREATE TRIGGER order_items_update_total
        AFTER INSERT OR UPDATE OR DELETE ON order_items
        FOR EACH ROW
        EXECUTE FUNCTION update_order_total();
    d.防止操作
        防止删除:
        CREATE FUNCTION prevent_delete() RETURNS TRIGGER AS $$
        BEGIN
            RAISE EXCEPTION 'Deletion is not allowed on this table';
        END;
        $$ LANGUAGE plpgsql;

        CREATE TRIGGER users_prevent_delete
        BEFORE DELETE ON users
        FOR EACH ROW
        EXECUTE FUNCTION prevent_delete();
        -----------------------------------------------------------------------------------------------------
        条件防止:
        CREATE FUNCTION prevent_admin_delete() RETURNS TRIGGER AS $$
        BEGIN
            IF OLD.role = 'admin' THEN
                RAISE EXCEPTION 'Cannot delete admin users';
            END IF;
            RETURN OLD;
        END;
        $$ LANGUAGE plpgsql;

03.触发器管理
    a.查看触发器
        查看表的触发器:
        \dS users                                               # psql 命令
        -----------------------------------------------------------------------------------------------------
        查询触发器:
        SELECT trigger_name, event_manipulation, event_object_table
        FROM information_schema.triggers
        WHERE event_object_table = 'users';
    b.禁用触发器
        禁用单个触发器:
        ALTER TABLE users DISABLE TRIGGER users_update_timestamp;
        -----------------------------------------------------------------------------------------------------
        启用触发器:
        ALTER TABLE users ENABLE TRIGGER users_update_timestamp;
        -----------------------------------------------------------------------------------------------------
        禁用所有触发器:
        ALTER TABLE users DISABLE TRIGGER ALL;
        -----------------------------------------------------------------------------------------------------
        启用所有触发器:
        ALTER TABLE users ENABLE TRIGGER ALL;
    c.删除触发器
        删除触发器:
        DROP TRIGGER users_update_timestamp ON users;
        DROP TRIGGER IF EXISTS users_update_timestamp ON users;

3.4 事务与锁

01.事务基础
    a.ACID特性
        原子性(Atomicity):
        事务中的所有操作要么全部成功,要么全部失败
        不会出现部分成功的情况
        -----------------------------------------------------------------------------------------------------
        一致性(Consistency):
        事务执行前后,数据库从一个一致状态转换到另一个一致状态
        满足所有约束和规则
        -----------------------------------------------------------------------------------------------------
        隔离性(Isolation):
        多个事务并发执行时,相互之间不会干扰
        每个事务都感觉像是独占数据库
        -----------------------------------------------------------------------------------------------------
        持久性(Durability):
        事务一旦提交,其结果就是永久性的
        即使系统崩溃,数据也不会丢失
    b.事务操作
        开始事务:
        BEGIN;
        BEGIN TRANSACTION;
        START TRANSACTION;
        -----------------------------------------------------------------------------------------------------
        提交事务:
        COMMIT;
        COMMIT TRANSACTION;
        -----------------------------------------------------------------------------------------------------
        回滚事务:
        ROLLBACK;
        ROLLBACK TRANSACTION;
        -----------------------------------------------------------------------------------------------------
        保存点:
        SAVEPOINT sp1;
        ROLLBACK TO SAVEPOINT sp1;
        RELEASE SAVEPOINT sp1;
        -----------------------------------------------------------------------------------------------------
        示例:
        BEGIN;
        INSERT INTO users (username) VALUES ('user1');
        SAVEPOINT sp1;
        INSERT INTO users (username) VALUES ('user2');
        ROLLBACK TO SAVEPOINT sp1;  -- 回滚到 sp1,user2 不会插入
        COMMIT;                      -- 提交,user1 插入成功
    c.隔离级别
        READ UNCOMMITTED:
        最低隔离级别(PostgreSQL 实际上等同于 READ COMMITTED)
        可以读取未提交的数据(脏读)
        -----------------------------------------------------------------------------------------------------
        READ COMMITTED(默认):
        只能读取已提交的数据
        避免脏读,但可能出现不可重复读和幻读
        -----------------------------------------------------------------------------------------------------
        REPEATABLE READ:
        事务期间多次读取同一数据,结果相同
        避免脏读和不可重复读,但可能出现幻读
        -----------------------------------------------------------------------------------------------------
        SERIALIZABLE:
        最高隔离级别
        完全隔离,避免所有并发问题
        性能最低
        -----------------------------------------------------------------------------------------------------
        设置隔离级别:
        SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
        SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
        SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
        -----------------------------------------------------------------------------------------------------
        查看隔离级别:
        SHOW transaction_isolation;
        SELECT current_setting('transaction_isolation');

02.锁机制
    a.锁类型
        表级锁:
        ACCESS SHARE:SELECT 获取
        ROW SHARE:SELECT FOR UPDATE/SHARE 获取
        ROW EXCLUSIVE:INSERT、UPDATE、DELETE 获取
        SHARE UPDATE EXCLUSIVE:VACUUM、CREATE INDEX CONCURRENTLY 获取
        SHARE:CREATE INDEX 获取
        SHARE ROW EXCLUSIVE:较少使用
        EXCLUSIVE:较少使用
        ACCESS EXCLUSIVE:DROP TABLE、TRUNCATE、VACUUM FULL 获取
        -----------------------------------------------------------------------------------------------------
        行级锁:
        FOR UPDATE:排他锁,阻止其他事务读取和修改
        FOR NO KEY UPDATE:排他锁,但不阻止外键检查
        FOR SHARE:共享锁,阻止其他事务修改
        FOR KEY SHARE:共享锁,但不阻止 UPDATE(非键列)
        -----------------------------------------------------------------------------------------------------
        页级锁:
        PostgreSQL 内部使用,用户无法直接控制
        -----------------------------------------------------------------------------------------------------
        咨询锁(Advisory Lock):
        应用层自定义的锁
        不与表或行关联
    b.显式锁定
        表级锁定:
        LOCK TABLE users IN ACCESS SHARE MODE;
        LOCK TABLE users IN ROW EXCLUSIVE MODE;
        LOCK TABLE users IN ACCESS EXCLUSIVE MODE;
        -----------------------------------------------------------------------------------------------------
        行级锁定:
        SELECT * FROM users WHERE id = 1 FOR UPDATE;
        SELECT * FROM users WHERE id = 1 FOR SHARE;
        SELECT * FROM users WHERE id = 1 FOR NO KEY UPDATE;
        SELECT * FROM users WHERE id = 1 FOR KEY SHARE;
        -----------------------------------------------------------------------------------------------------
        NOWAIT 选项:
        SELECT * FROM users WHERE id = 1 FOR UPDATE NOWAIT;
        -- 如果无法立即获取锁,立即返回错误
        -----------------------------------------------------------------------------------------------------
        SKIP LOCKED 选项:
        SELECT * FROM users WHERE status = 'pending' FOR UPDATE SKIP LOCKED LIMIT 10;
        -- 跳过已锁定的行,处理未锁定的行
    c.死锁
        死锁的产生:
        事务 A 锁定资源 1,等待资源 2
        事务 B 锁定资源 2,等待资源 1
        形成循环等待
        -----------------------------------------------------------------------------------------------------
        死锁检测:
        PostgreSQL 自动检测死锁
        默认超时时间:1 秒(deadlock_timeout)
        检测到死锁后,回滚其中一个事务
        -----------------------------------------------------------------------------------------------------
        避免死锁:
        按相同顺序访问资源
        保持事务简短
        使用较低的隔离级别
        使用 NOWAIT 或 SKIP LOCKED
        -----------------------------------------------------------------------------------------------------
        死锁示例:
        -- 事务 A
        BEGIN;
        UPDATE users SET age = 30 WHERE id = 1;
        -- 等待...
        UPDATE users SET age = 25 WHERE id = 2;
        COMMIT;

        -- 事务 B
        BEGIN;
        UPDATE users SET age = 28 WHERE id = 2;
        -- 等待...
        UPDATE users SET age = 32 WHERE id = 1;
        COMMIT;

        -- 其中一个事务会被回滚
    d.锁监控
        查看当前锁:
        SELECT * FROM pg_locks;
        -----------------------------------------------------------------------------------------------------
        查看阻塞的查询:
        SELECT
            blocked_locks.pid AS blocked_pid,
            blocked_activity.usename AS blocked_user,
            blocking_locks.pid AS blocking_pid,
            blocking_activity.usename AS blocking_user,
            blocked_activity.query AS blocked_statement,
            blocking_activity.query AS blocking_statement
        FROM pg_catalog.pg_locks blocked_locks
        JOIN pg_catalog.pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pid
        JOIN pg_catalog.pg_locks blocking_locks ON blocking_locks.locktype = blocked_locks.locktype
        JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid
        WHERE NOT blocked_locks.granted;
        -----------------------------------------------------------------------------------------------------
        终止阻塞的进程:
        SELECT pg_terminate_backend(pid);

03.并发控制
    a.MVCC
        多版本并发控制:
        PostgreSQL 使用 MVCC 实现并发控制
        每个事务看到的是数据的一个快照
        读操作不阻塞写操作,写操作不阻塞读操作
        -----------------------------------------------------------------------------------------------------
        版本管理:
        每行数据都有隐藏列:xmin(插入事务 ID)、xmax(删除事务 ID)
        UPDATE 操作实际上是 INSERT 新版本 + 标记旧版本为删除
        旧版本数据称为死元组(Dead Tuple)
        -----------------------------------------------------------------------------------------------------
        可见性判断:
        根据事务快照判断数据版本是否可见
        如果行的 xmin 在快照之前提交,且 xmax 未设置或在快照之后,则可见
    b.乐观锁
        概念:
        假设冲突很少发生
        读取时不加锁,更新时检查版本
        -----------------------------------------------------------------------------------------------------
        实现方式:
        使用版本号或时间戳
        UPDATE users SET age = 30, version = version + 1
        WHERE id = 1 AND version = 5;
        -- 如果 version 不匹配,说明数据已被其他事务修改
        -----------------------------------------------------------------------------------------------------
        优点:
        并发性能高
        不会产生死锁
        -----------------------------------------------------------------------------------------------------
        缺点:
        冲突时需要重试
        不适合高冲突场景
    c.悲观锁
        概念:
        假设冲突经常发生
        读取时就加锁,防止其他事务修改
        -----------------------------------------------------------------------------------------------------
        实现方式:
        SELECT * FROM users WHERE id = 1 FOR UPDATE;
        -- 其他事务无法修改该行,直到当前事务提交或回滚
        -----------------------------------------------------------------------------------------------------
        优点:
        避免冲突
        适合高冲突场景
        -----------------------------------------------------------------------------------------------------
        缺点:
        并发性能低
        可能产生死锁

04.事务最佳实践
    a.事务设计
        保持事务简短:
        减少锁定时间
        降低死锁风险
        提高并发性能
        -----------------------------------------------------------------------------------------------------
        避免长事务:
        长事务会阻塞 VACUUM
        导致表膨胀
        影响性能
        -----------------------------------------------------------------------------------------------------
        合理使用隔离级别:
        根据业务需求选择合适的隔离级别
        不要盲目使用最高隔离级别
    b.错误处理
        捕获异常:
        BEGIN;
        -- 执行操作
        EXCEPTION WHEN others THEN
            ROLLBACK;
            RAISE;
        END;
        -----------------------------------------------------------------------------------------------------
        重试机制:
        对于死锁或序列化失败,实现重试逻辑
        设置最大重试次数
        使用指数退避策略
    c.性能优化
        批量操作:
        使用批量插入代替单条插入
        INSERT INTO users (username) VALUES ('user1'), ('user2'), ('user3');
        -----------------------------------------------------------------------------------------------------
        减少锁竞争:
        避免热点行
        使用分区表
        使用队列表

3.5 性能优化

01.查询优化
    a.EXPLAIN分析
        基本用法:
        EXPLAIN SELECT * FROM users WHERE age > 18;
        -----------------------------------------------------------------------------------------------------
        详细分析:
        EXPLAIN ANALYZE SELECT * FROM users WHERE age > 18;
        -- 实际执行查询并显示执行时间
        -----------------------------------------------------------------------------------------------------
        输出格式:
        EXPLAIN (FORMAT JSON) SELECT * FROM users WHERE age > 18;
        EXPLAIN (FORMAT YAML) SELECT * FROM users WHERE age > 18;
        EXPLAIN (FORMAT XML) SELECT * FROM users WHERE age > 18;
        -----------------------------------------------------------------------------------------------------
        详细选项:
        EXPLAIN (ANALYZE, BUFFERS, VERBOSE) SELECT * FROM users WHERE age > 18;
        -----------------------------------------------------------------------------------------------------
        执行计划解读:
        Seq Scan:全表扫描(性能差)
        Index Scan:索引扫描(性能好)
        Index Only Scan:只扫描索引(性能最好)
        Bitmap Index Scan:位图索引扫描
        Nested Loop:嵌套循环连接
        Hash Join:哈希连接
        Merge Join:归并连接
    b.索引优化
        创建合适的索引:
        为 WHERE 子句中的列创建索引
        为 JOIN 列创建索引
        为 ORDER BY 列创建索引
        -----------------------------------------------------------------------------------------------------
        使用部分索引:
        CREATE INDEX idx_active_users ON users(email) WHERE status = 'active';
        -----------------------------------------------------------------------------------------------------
        使用表达式索引:
        CREATE INDEX idx_lower_email ON users(LOWER(email));
        -----------------------------------------------------------------------------------------------------
        使用覆盖索引:
        CREATE INDEX idx_users_email_name ON users(email) INCLUDE (name);
        -----------------------------------------------------------------------------------------------------
        删除未使用的索引:
        SELECT schemaname, tablename, indexname, idx_scan
        FROM pg_stat_user_indexes
        WHERE idx_scan = 0 AND indexname NOT LIKE '%_pkey';
    c.查询重写
        避免 SELECT *:
        SELECT id, username, email FROM users;  -- 好
        SELECT * FROM users;                     -- 差
        -----------------------------------------------------------------------------------------------------
        使用 EXISTS 代替 IN:
        SELECT * FROM users WHERE EXISTS (SELECT 1 FROM orders WHERE user_id = users.id);  -- 好
        SELECT * FROM users WHERE id IN (SELECT user_id FROM orders);                      -- 差
        -----------------------------------------------------------------------------------------------------
        使用 JOIN 代替子查询:
        SELECT u.*, o.order_count
        FROM users u
        LEFT JOIN (SELECT user_id, COUNT(*) as order_count FROM orders GROUP BY user_id) o
        ON u.id = o.user_id;  -- 好

        SELECT *, (SELECT COUNT(*) FROM orders WHERE user_id = users.id) as order_count
        FROM users;  -- 差
        -----------------------------------------------------------------------------------------------------
        避免函数包裹索引列:
        SELECT * FROM users WHERE LOWER(email) = 'user@example.com';  -- 差,无法使用索引
        SELECT * FROM users WHERE email = 'user@example.com';         -- 好,可以使用索引
        -- 或创建表达式索引
        CREATE INDEX idx_lower_email ON users(LOWER(email));
    d.分页优化
        传统分页(性能差):
        SELECT * FROM users ORDER BY id LIMIT 10 OFFSET 1000000;
        -- OFFSET 很大时性能很差
        -----------------------------------------------------------------------------------------------------
        游标分页(性能好):
        SELECT * FROM users WHERE id > 1000000 ORDER BY id LIMIT 10;
        -- 使用上一页的最后一个 ID 作为起点
        -----------------------------------------------------------------------------------------------------
        使用 FETCH:
        SELECT * FROM users ORDER BY id OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY;

02.配置优化
    a.内存配置
        shared_buffers:
        建议值:系统内存的 25%
        默认值:128MB(太小)
        配置:shared_buffers = 4GB
        -----------------------------------------------------------------------------------------------------
        effective_cache_size:
        建议值:系统内存的 50-75%
        用于查询计划,不实际分配内存
        配置:effective_cache_size = 12GB
        -----------------------------------------------------------------------------------------------------
        work_mem:
        用于排序、哈希、连接操作
        建议值:根据并发连接数调整
        配置:work_mem = 16MB
        -----------------------------------------------------------------------------------------------------
        maintenance_work_mem:
        用于维护操作(VACUUM、CREATE INDEX)
        建议值:256MB - 1GB
        配置:maintenance_work_mem = 512MB
    b.连接配置
        max_connections:
        最大连接数
        默认值:100
        建议:根据实际需求调整,不要设置过大
        配置:max_connections = 200
        -----------------------------------------------------------------------------------------------------
        使用连接池:
        PgBouncer、Pgpool-II
        减少连接开销
        提高并发性能
    c.WAL配置
        wal_level:
        minimal:最小 WAL(不支持复制)
        replica:支持物理复制(默认)
        logical:支持逻辑复制
        -----------------------------------------------------------------------------------------------------
        wal_buffers:
        WAL 缓冲区大小
        默认值:shared_buffers 的 1/32
        建议值:16MB
        -----------------------------------------------------------------------------------------------------
        checkpoint_timeout:
        检查点超时时间
        默认值:5 分钟
        建议值:10-30 分钟
        -----------------------------------------------------------------------------------------------------
        checkpoint_completion_target:
        检查点完成目标
        默认值:0.5
        建议值:0.9
    d.查询配置
        random_page_cost:
        随机页访问成本
        默认值:4.0
        SSD 建议值:1.1
        HDD 建议值:4.0
        -----------------------------------------------------------------------------------------------------
        effective_io_concurrency:
        I/O 并发度
        默认值:1
        SSD 建议值:200
        HDD 建议值:2
        -----------------------------------------------------------------------------------------------------
        default_statistics_target:
        统计信息目标
        默认值:100
        建议值:100-1000(根据表大小)

03.维护优化
    a.VACUUM
        自动 VACUUM:
        autovacuum = on(默认开启)
        autovacuum_naptime = 1min
        autovacuum_vacuum_threshold = 50
        autovacuum_vacuum_scale_factor = 0.2
        -----------------------------------------------------------------------------------------------------
        手动 VACUUM:
        VACUUM users;                               # 清理死元组
        VACUUM ANALYZE users;                       # 清理 + 更新统计信息
        VACUUM FULL users;                          # 完全清理(锁表)
        VACUUM VERBOSE users;                       # 显示详细信息
        -----------------------------------------------------------------------------------------------------
        VACUUM 策略:
        定期执行 VACUUM
        对于频繁更新的表,增加 VACUUM 频率
        避免在高峰期执行 VACUUM FULL
    b.ANALYZE
        更新统计信息:
        ANALYZE users;
        ANALYZE;                                    # 分析所有表
        -----------------------------------------------------------------------------------------------------
        自动 ANALYZE:
        autovacuum_analyze_threshold = 50
        autovacuum_analyze_scale_factor = 0.1
        -----------------------------------------------------------------------------------------------------
        查看统计信息:
        SELECT * FROM pg_stats WHERE tablename = 'users';
    c.REINDEX
        重建索引:
        REINDEX INDEX idx_users_email;
        REINDEX TABLE users;
        REINDEX DATABASE mydb;
        -----------------------------------------------------------------------------------------------------
        并发重建:
        REINDEX INDEX CONCURRENTLY idx_users_email;
        -----------------------------------------------------------------------------------------------------
        重建时机:
        索引膨胀
        索引损坏
        性能下降
    d.表膨胀
        查看表膨胀:
        SELECT
            schemaname,
            tablename,
            pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size,
            pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename) - pg_relation_size(schemaname||'.'||tablename)) AS bloat
        FROM pg_tables
        WHERE schemaname = 'public'
        ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;
        -----------------------------------------------------------------------------------------------------
        减少膨胀:
        定期 VACUUM
        调整 autovacuum 参数
        使用 VACUUM FULL(锁表)
        使用 pg_repack 扩展(不锁表)

04.监控优化
    a.性能监控
        pg_stat_statements:
        CREATE EXTENSION pg_stat_statements;
        SELECT query, calls, total_time, mean_time
        FROM pg_stat_statements
        ORDER BY total_time DESC
        LIMIT 10;
        -----------------------------------------------------------------------------------------------------
        慢查询日志:
        log_min_duration_statement = 1000           # 记录超过 1 秒的查询
        log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '
        -----------------------------------------------------------------------------------------------------
        查看活动查询:
        SELECT pid, usename, application_name, state, query
        FROM pg_stat_activity
        WHERE state = 'active';
    b.资源监控
        查看数据库大小:
        SELECT pg_database_size('mydb');
        SELECT pg_size_pretty(pg_database_size('mydb'));
        -----------------------------------------------------------------------------------------------------
        查看表大小:
        SELECT pg_size_pretty(pg_total_relation_size('users'));
        -----------------------------------------------------------------------------------------------------
        查看索引大小:
        SELECT pg_size_pretty(pg_indexes_size('users'));
        -----------------------------------------------------------------------------------------------------
        查看缓存命中率:
        SELECT
            sum(heap_blks_read) as heap_read,
            sum(heap_blks_hit) as heap_hit,
            sum(heap_blks_hit) / (sum(heap_blks_hit) + sum(heap_blks_read)) as ratio
        FROM pg_statio_user_tables;
    c.连接监控
        查看连接数:
        SELECT COUNT(*) FROM pg_stat_activity;
        -----------------------------------------------------------------------------------------------------
        查看每个数据库的连接数:
        SELECT datname, COUNT(*) FROM pg_stat_activity GROUP BY datname;
        -----------------------------------------------------------------------------------------------------
        查看空闲连接:
        SELECT COUNT(*) FROM pg_stat_activity WHERE state = 'idle';

4 PostgreSQL高级

4.1 分区表

01.分区表介绍
    a.概念
        分区表:
        将一个大表按照某种规则分割成多个小表
        每个小表称为分区(Partition)
        逻辑上是一个表,物理上是多个表
        -----------------------------------------------------------------------------------------------------
        分区键:
        用于确定数据存储在哪个分区的列
        可以是单列或多列
        -----------------------------------------------------------------------------------------------------
        优势:
        提高查询性能(分区裁剪)
        简化数据维护(删除整个分区)
        提高并发性能(减少锁竞争)
        便于数据归档
    b.分区类型
        范围分区(Range Partitioning):
        按照值的范围分区
        适用于时间序列数据、数值范围
        -----------------------------------------------------------------------------------------------------
        列表分区(List Partitioning):
        按照离散值分区
        适用于枚举类型、地区代码
        -----------------------------------------------------------------------------------------------------
        哈希分区(Hash Partitioning):
        按照哈希值分区
        适用于均匀分布数据
        -----------------------------------------------------------------------------------------------------
        组合分区:
        多级分区,如先按时间范围分区,再按哈希分区

02.范围分区
    a.创建范围分区表
        创建父表:
        CREATE TABLE orders (
            id SERIAL,
            user_id INTEGER,
            total_amount DECIMAL(10, 2),
            created_at TIMESTAMP NOT NULL,
            PRIMARY KEY (id, created_at)
        ) PARTITION BY RANGE (created_at);
        -----------------------------------------------------------------------------------------------------
        创建分区:
        CREATE TABLE orders_2023_q1 PARTITION OF orders
        FOR VALUES FROM ('2023-01-01') TO ('2023-04-01');

        CREATE TABLE orders_2023_q2 PARTITION OF orders
        FOR VALUES FROM ('2023-04-01') TO ('2023-07-01');

        CREATE TABLE orders_2023_q3 PARTITION OF orders
        FOR VALUES FROM ('2023-07-01') TO ('2023-10-01');

        CREATE TABLE orders_2023_q4 PARTITION OF orders
        FOR VALUES FROM ('2023-10-01') TO ('2024-01-01');
        -----------------------------------------------------------------------------------------------------
        创建默认分区:
        CREATE TABLE orders_default PARTITION OF orders DEFAULT;
        -- 不满足任何分区条件的数据存储在默认分区
    b.分区操作
        插入数据:
        INSERT INTO orders (user_id, total_amount, created_at)
        VALUES (1, 100.00, '2023-05-15');
        -- 自动路由到 orders_2023_q2 分区
        -----------------------------------------------------------------------------------------------------
        查询数据:
        SELECT * FROM orders WHERE created_at >= '2023-04-01' AND created_at < '2023-07-01';
        -- 自动进行分区裁剪,只扫描 orders_2023_q2 分区
        -----------------------------------------------------------------------------------------------------
        更新数据:
        UPDATE orders SET total_amount = 150.00 WHERE id = 1;
        -- 如果更新分区键,可能导致行移动
        -----------------------------------------------------------------------------------------------------
        删除数据:
        DELETE FROM orders WHERE created_at < '2023-01-01';
        -- 只扫描相关分区
    c.分区维护
        添加分区:
        CREATE TABLE orders_2024_q1 PARTITION OF orders
        FOR VALUES FROM ('2024-01-01') TO ('2024-04-01');
        -----------------------------------------------------------------------------------------------------
        删除分区:
        DROP TABLE orders_2023_q1;
        -- 直接删除分区表,数据也会被删除
        -----------------------------------------------------------------------------------------------------
        分离分区:
        ALTER TABLE orders DETACH PARTITION orders_2023_q1;
        -- 分区变成独立的表,数据保留
        -----------------------------------------------------------------------------------------------------
        附加分区:
        ALTER TABLE orders ATTACH PARTITION orders_2023_q1
        FOR VALUES FROM ('2023-01-01') TO ('2023-04-01');
        -- 将独立表附加为分区

03.列表分区
    a.创建列表分区表
        创建父表:
        CREATE TABLE users (
            id SERIAL,
            username VARCHAR(50),
            country VARCHAR(2) NOT NULL,
            created_at TIMESTAMP DEFAULT NOW(),
            PRIMARY KEY (id, country)
        ) PARTITION BY LIST (country);
        -----------------------------------------------------------------------------------------------------
        创建分区:
        CREATE TABLE users_cn PARTITION OF users
        FOR VALUES IN ('CN');

        CREATE TABLE users_us PARTITION OF users
        FOR VALUES IN ('US');

        CREATE TABLE users_eu PARTITION OF users
        FOR VALUES IN ('UK', 'DE', 'FR', 'IT', 'ES');

        CREATE TABLE users_other PARTITION OF users DEFAULT;
    b.多列列表分区
        创建父表:
        CREATE TABLE sales (
            id SERIAL,
            product_id INTEGER,
            region VARCHAR(10),
            country VARCHAR(2),
            amount DECIMAL(10, 2),
            PRIMARY KEY (id, region, country)
        ) PARTITION BY LIST (region, country);
        -----------------------------------------------------------------------------------------------------
        创建分区:
        CREATE TABLE sales_asia_cn PARTITION OF sales
        FOR VALUES IN (('ASIA', 'CN'));

        CREATE TABLE sales_asia_jp PARTITION OF sales
        FOR VALUES IN (('ASIA', 'JP'));

        CREATE TABLE sales_europe PARTITION OF sales
        FOR VALUES IN (('EU', 'UK'), ('EU', 'DE'), ('EU', 'FR'));

04.哈希分区
    a.创建哈希分区表
        创建父表:
        CREATE TABLE logs (
            id SERIAL,
            user_id INTEGER NOT NULL,
            action VARCHAR(50),
            created_at TIMESTAMP DEFAULT NOW(),
            PRIMARY KEY (id, user_id)
        ) PARTITION BY HASH (user_id);
        -----------------------------------------------------------------------------------------------------
        创建分区:
        CREATE TABLE logs_p0 PARTITION OF logs
        FOR VALUES WITH (MODULUS 4, REMAINDER 0);

        CREATE TABLE logs_p1 PARTITION OF logs
        FOR VALUES WITH (MODULUS 4, REMAINDER 1);

        CREATE TABLE logs_p2 PARTITION OF logs
        FOR VALUES WITH (MODULUS 4, REMAINDER 2);

        CREATE TABLE logs_p3 PARTITION OF logs
        FOR VALUES WITH (MODULUS 4, REMAINDER 3);
        -----------------------------------------------------------------------------------------------------
        说明:
        MODULUS:分区总数
        REMAINDER:分区编号(0 到 MODULUS-1)
        数据根据 HASH(user_id) % MODULUS 的结果分配到对应分区

05.组合分区
    a.多级分区
        创建父表(按时间范围分区):
        CREATE TABLE events (
            id SERIAL,
            user_id INTEGER NOT NULL,
            event_type VARCHAR(50),
            created_at TIMESTAMP NOT NULL,
            PRIMARY KEY (id, created_at, user_id)
        ) PARTITION BY RANGE (created_at);
        -----------------------------------------------------------------------------------------------------
        创建一级分区(按时间):
        CREATE TABLE events_2023 PARTITION OF events
        FOR VALUES FROM ('2023-01-01') TO ('2024-01-01')
        PARTITION BY HASH (user_id);

        CREATE TABLE events_2024 PARTITION OF events
        FOR VALUES FROM ('2024-01-01') TO ('2025-01-01')
        PARTITION BY HASH (user_id);
        -----------------------------------------------------------------------------------------------------
        创建二级分区(按哈希):
        CREATE TABLE events_2023_p0 PARTITION OF events_2023
        FOR VALUES WITH (MODULUS 4, REMAINDER 0);

        CREATE TABLE events_2023_p1 PARTITION OF events_2023
        FOR VALUES WITH (MODULUS 4, REMAINDER 1);

        CREATE TABLE events_2023_p2 PARTITION OF events_2023
        FOR VALUES WITH (MODULUS 4, REMAINDER 2);

        CREATE TABLE events_2023_p3 PARTITION OF events_2023
        FOR VALUES WITH (MODULUS 4, REMAINDER 3);

06.分区表最佳实践
    a.设计原则
        选择合适的分区键:
        根据查询模式选择分区键
        分区键应该出现在大多数查询的 WHERE 子句中
        -----------------------------------------------------------------------------------------------------
        合理的分区数量:
        分区数量不宜过多(建议不超过几千个)
        每个分区应该有足够的数据量
        -----------------------------------------------------------------------------------------------------
        分区大小:
        单个分区建议在 10GB - 100GB
        根据硬件和查询模式调整
    b.索引策略
        在父表上创建索引:
        CREATE INDEX idx_orders_user_id ON orders(user_id);
        -- 自动在所有分区上创建相同的索引
        -----------------------------------------------------------------------------------------------------
        在分区上创建独立索引:
        CREATE INDEX idx_orders_2023_q1_user_id ON orders_2023_q1(user_id);
        -- 只在特定分区上创建索引
    c.查询优化
        启用分区裁剪:
        SET enable_partition_pruning = on;  -- 默认开启
        -----------------------------------------------------------------------------------------------------
        查看分区裁剪:
        EXPLAIN SELECT * FROM orders WHERE created_at >= '2023-04-01' AND created_at < '2023-07-01';
        -- 查看执行计划,确认只扫描相关分区
    d.维护策略
        定期创建新分区:
        提前创建未来的分区
        避免数据插入到默认分区
        -----------------------------------------------------------------------------------------------------
        定期归档旧分区:
        分离旧分区
        导出数据到归档存储
        删除分区表
        -----------------------------------------------------------------------------------------------------
        监控分区大小:
        SELECT
            schemaname,
            tablename,
            pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size
        FROM pg_tables
        WHERE tablename LIKE 'orders_%'
        ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;

4.2 扩展

01.扩展管理
    a.扩展基础
        查看可用扩展:
        SELECT * FROM pg_available_extensions;
        -----------------------------------------------------------------------------------------------------
        查看已安装扩展:
        SELECT * FROM pg_extension;
        \dx                                         # psql 命令
        -----------------------------------------------------------------------------------------------------
        安装扩展:
        CREATE EXTENSION extension_name;
        CREATE EXTENSION IF NOT EXISTS extension_name;
        -----------------------------------------------------------------------------------------------------
        删除扩展:
        DROP EXTENSION extension_name;
        DROP EXTENSION IF EXISTS extension_name CASCADE;
        -----------------------------------------------------------------------------------------------------
        更新扩展:
        ALTER EXTENSION extension_name UPDATE;
        ALTER EXTENSION extension_name UPDATE TO '1.5';

02.常用扩展
    a.pg_stat_statements
        功能:
        跟踪所有 SQL 语句的执行统计信息
        分析慢查询、热点查询
        -----------------------------------------------------------------------------------------------------
        安装:
        CREATE EXTENSION pg_stat_statements;
        -----------------------------------------------------------------------------------------------------
        配置(postgresql.conf):
        shared_preload_libraries = 'pg_stat_statements'
        pg_stat_statements.max = 10000
        pg_stat_statements.track = all
        -----------------------------------------------------------------------------------------------------
        使用:
        SELECT
            query,
            calls,
            total_exec_time,
            mean_exec_time,
            max_exec_time
        FROM pg_stat_statements
        ORDER BY total_exec_time DESC
        LIMIT 10;
        -----------------------------------------------------------------------------------------------------
        重置统计:
        SELECT pg_stat_statements_reset();
    b.pgcrypto
        功能:
        提供加密函数
        支持哈希、对称加密、非对称加密
        -----------------------------------------------------------------------------------------------------
        安装:
        CREATE EXTENSION pgcrypto;
        -----------------------------------------------------------------------------------------------------
        哈希函数:
        SELECT digest('password', 'sha256');
        SELECT encode(digest('password', 'sha256'), 'hex');
        -----------------------------------------------------------------------------------------------------
        密码加密:
        SELECT crypt('password', gen_salt('bf'));
        -- 使用 Blowfish 算法加密密码
        -----------------------------------------------------------------------------------------------------
        密码验证:
        SELECT crypt('password', stored_hash) = stored_hash;
        -----------------------------------------------------------------------------------------------------
        UUID 生成:
        SELECT gen_random_uuid();
    c.uuid-ossp
        功能:
        生成 UUID
        -----------------------------------------------------------------------------------------------------
        安装:
        CREATE EXTENSION "uuid-ossp";
        -----------------------------------------------------------------------------------------------------
        使用:
        SELECT uuid_generate_v1();                  # 基于时间和 MAC 地址
        SELECT uuid_generate_v4();                  # 随机 UUID
    d.hstore
        功能:
        键值对存储
        类似 JSON,但性能更好
        -----------------------------------------------------------------------------------------------------
        安装:
        CREATE EXTENSION hstore;
        -----------------------------------------------------------------------------------------------------
        创建表:
        CREATE TABLE products (
            id SERIAL PRIMARY KEY,
            name VARCHAR(100),
            attributes hstore
        );
        -----------------------------------------------------------------------------------------------------
        插入数据:
        INSERT INTO products (name, attributes) VALUES
        ('Product 1', 'color => "red", size => "L", weight => "1.5kg"');
        -----------------------------------------------------------------------------------------------------
        查询数据:
        SELECT name, attributes -> 'color' AS color FROM products;
        SELECT * FROM products WHERE attributes @> 'color => red';
        -----------------------------------------------------------------------------------------------------
        更新数据:
        UPDATE products SET attributes = attributes || 'price => "99.99"' WHERE id = 1;
    e.PostGIS
        功能:
        地理空间数据支持
        GIS 功能
        -----------------------------------------------------------------------------------------------------
        安装:
        CREATE EXTENSION postgis;
        -----------------------------------------------------------------------------------------------------
        创建表:
        CREATE TABLE locations (
            id SERIAL PRIMARY KEY,
            name VARCHAR(100),
            geom GEOMETRY(Point, 4326)
        );
        -----------------------------------------------------------------------------------------------------
        插入数据:
        INSERT INTO locations (name, geom) VALUES
        ('Beijing', ST_GeomFromText('POINT(116.4074 39.9042)', 4326));
        -----------------------------------------------------------------------------------------------------
        查询距离:
        SELECT name, ST_Distance(
            geom,
            ST_GeomFromText('POINT(116.4074 39.9042)', 4326)
        ) AS distance
        FROM locations
        ORDER BY distance;
    f.pg_trgm
        功能:
        三元组相似度搜索
        模糊匹配
        -----------------------------------------------------------------------------------------------------
        安装:
        CREATE EXTENSION pg_trgm;
        -----------------------------------------------------------------------------------------------------
        相似度查询:
        SELECT similarity('hello', 'hallo');
        SELECT * FROM users WHERE username % 'jhon';  -- 模糊匹配 'john'
        -----------------------------------------------------------------------------------------------------
        创建 GIN 索引:
        CREATE INDEX idx_users_username_trgm ON users USING gin(username gin_trgm_ops);
    g.tablefunc
        功能:
        表函数,如交叉表(crosstab)
        -----------------------------------------------------------------------------------------------------
        安装:
        CREATE EXTENSION tablefunc;
        -----------------------------------------------------------------------------------------------------
        交叉表:
        SELECT * FROM crosstab(
            'SELECT year, month, revenue FROM sales ORDER BY 1, 2',
            'SELECT DISTINCT month FROM sales ORDER BY 1'
        ) AS ct(year INT, jan NUMERIC, feb NUMERIC, mar NUMERIC);

03.自定义扩展
    a.创建扩展
        创建扩展文件:
        -- myextension.control
        comment = 'My custom extension'
        default_version = '1.0'
        relocatable = true
        -----------------------------------------------------------------------------------------------------
        创建 SQL 文件:
        -- myextension--1.0.sql
        CREATE FUNCTION my_function() RETURNS TEXT AS $$
        BEGIN
            RETURN 'Hello from my extension';
        END;
        $$ LANGUAGE plpgsql;
        -----------------------------------------------------------------------------------------------------
        安装扩展:
        将文件放到 PostgreSQL 的 extension 目录
        CREATE EXTENSION myextension;

4.3 全文检索

01.全文检索基础
    a.概念
        全文检索:
        在文本中搜索关键词
        支持词干提取、停用词过滤、相关性排序
        -----------------------------------------------------------------------------------------------------
        tsvector:
        文本搜索向量
        存储经过处理的文本(分词、词干提取)
        -----------------------------------------------------------------------------------------------------
        tsquery:
        文本搜索查询
        表示搜索条件
        -----------------------------------------------------------------------------------------------------
        文本搜索配置:
        定义语言、词典、停用词
        默认配置:english
    b.基本用法
        创建 tsvector:
        SELECT to_tsvector('english', 'The quick brown fox jumps over the lazy dog');
        -- 'brown':3 'dog':9 'fox':4 'jump':5 'lazi':8 'quick':2
        -----------------------------------------------------------------------------------------------------
        创建 tsquery:
        SELECT to_tsquery('english', 'quick & fox');
        SELECT to_tsquery('english', 'quick | fox');
        SELECT to_tsquery('english', 'quick & !lazy');
        -----------------------------------------------------------------------------------------------------
        匹配查询:
        SELECT to_tsvector('english', 'The quick brown fox') @@ to_tsquery('english', 'quick & fox');
        -- true

02.全文检索实践
    a.创建全文检索表
        创建表:
        CREATE TABLE articles (
            id SERIAL PRIMARY KEY,
            title VARCHAR(200),
            content TEXT,
            tsv tsvector
        );
        -----------------------------------------------------------------------------------------------------
        生成 tsvector:
        UPDATE articles SET tsv =
            setweight(to_tsvector('english', coalesce(title, '')), 'A') ||
            setweight(to_tsvector('english', coalesce(content, '')), 'B');
        -----------------------------------------------------------------------------------------------------
        自动更新 tsvector(触发器):
        CREATE FUNCTION articles_tsv_trigger() RETURNS TRIGGER AS $$
        BEGIN
            NEW.tsv :=
                setweight(to_tsvector('english', coalesce(NEW.title, '')), 'A') ||
                setweight(to_tsvector('english', coalesce(NEW.content, '')), 'B');
            RETURN NEW;
        END;
        $$ LANGUAGE plpgsql;

        CREATE TRIGGER articles_tsv_update
        BEFORE INSERT OR UPDATE ON articles
        FOR EACH ROW
        EXECUTE FUNCTION articles_tsv_trigger();
    b.创建索引
        GIN 索引(推荐):
        CREATE INDEX idx_articles_tsv ON articles USING gin(tsv);
        -----------------------------------------------------------------------------------------------------
        GiST 索引:
        CREATE INDEX idx_articles_tsv ON articles USING gist(tsv);
    c.搜索查询
        基本搜索:
        SELECT * FROM articles WHERE tsv @@ to_tsquery('english', 'postgresql');
        -----------------------------------------------------------------------------------------------------
        多关键词搜索:
        SELECT * FROM articles WHERE tsv @@ to_tsquery('english', 'postgresql & database');
        SELECT * FROM articles WHERE tsv @@ to_tsquery('english', 'postgresql | mysql');
        -----------------------------------------------------------------------------------------------------
        短语搜索:
        SELECT * FROM articles WHERE tsv @@ phraseto_tsquery('english', 'postgresql database');
        -----------------------------------------------------------------------------------------------------
        相关性排序:
        SELECT
            id,
            title,
            ts_rank(tsv, to_tsquery('english', 'postgresql')) AS rank
        FROM articles
        WHERE tsv @@ to_tsquery('english', 'postgresql')
        ORDER BY rank DESC;
        -----------------------------------------------------------------------------------------------------
        高亮显示:
        SELECT
            id,
            title,
            ts_headline('english', content, to_tsquery('english', 'postgresql')) AS snippet
        FROM articles
        WHERE tsv @@ to_tsquery('english', 'postgresql');

03.中文全文检索
    a.zhparser扩展
        安装 zhparser:
        # 需要先安装 scws 分词库
        # 然后编译安装 zhparser 扩展
        CREATE EXTENSION zhparser;
        -----------------------------------------------------------------------------------------------------
        创建中文配置:
        CREATE TEXT SEARCH CONFIGURATION chinese_zh (PARSER = zhparser);
        ALTER TEXT SEARCH CONFIGURATION chinese_zh ADD MAPPING FOR n,v,a,i,e,l WITH simple;
        -----------------------------------------------------------------------------------------------------
        使用中文搜索:
        SELECT to_tsvector('chinese_zh', '我爱PostgreSQL数据库');
        SELECT to_tsquery('chinese_zh', 'PostgreSQL & 数据库');
        -----------------------------------------------------------------------------------------------------
        创建中文搜索表:
        CREATE TABLE articles_cn (
            id SERIAL PRIMARY KEY,
            title VARCHAR(200),
            content TEXT,
            tsv tsvector
        );

        CREATE FUNCTION articles_cn_tsv_trigger() RETURNS TRIGGER AS $$
        BEGIN
            NEW.tsv :=
                setweight(to_tsvector('chinese_zh', coalesce(NEW.title, '')), 'A') ||
                setweight(to_tsvector('chinese_zh', coalesce(NEW.content, '')), 'B');
            RETURN NEW;
        END;
        $$ LANGUAGE plpgsql;

        CREATE TRIGGER articles_cn_tsv_update
        BEFORE INSERT OR UPDATE ON articles_cn
        FOR EACH ROW
        EXECUTE FUNCTION articles_cn_tsv_trigger();

        CREATE INDEX idx_articles_cn_tsv ON articles_cn USING gin(tsv);

4.4 JSON支持

01.JSON类型
    a.JSON vs JSONB
        JSON:
        存储原始文本
        保留空格、键顺序
        插入快,查询慢
        -----------------------------------------------------------------------------------------------------
        JSONB(推荐):
        存储二进制格式
        不保留空格、键顺序(自动去重)
        插入慢,查询快
        支持索引
        -----------------------------------------------------------------------------------------------------
        选择建议:
        大多数情况使用 JSONB
        需要保留原始格式时使用 JSON
    b.创建JSON表
        创建表:
        CREATE TABLE users (
            id SERIAL PRIMARY KEY,
            username VARCHAR(50),
            profile JSONB,
            settings JSON
        );
        -----------------------------------------------------------------------------------------------------
        插入数据:
        INSERT INTO users (username, profile) VALUES
        ('user1', '{"age": 25, "city": "Beijing", "hobbies": ["reading", "coding"]}');

        INSERT INTO users (username, profile) VALUES
        ('user2', '{"age": 30, "city": "Shanghai", "hobbies": ["music", "travel"]}');

02.JSON操作
    a.提取数据
        提取 JSON 字段(返回 JSON):
        SELECT profile -> 'age' FROM users;                     -- 返回 JSON: 25
        SELECT profile -> 'hobbies' FROM users;                 -- 返回 JSON: ["reading", "coding"]
        -----------------------------------------------------------------------------------------------------
        提取 JSON 字段(返回文本):
        SELECT profile ->> 'age' FROM users;                    -- 返回文本: 25
        SELECT profile ->> 'city' FROM users;                   -- 返回文本: Beijing
        -----------------------------------------------------------------------------------------------------
        提取嵌套字段:
        SELECT profile -> 'address' -> 'city' FROM users;
        SELECT profile #> '{address,city}' FROM users;          -- 路径提取
        SELECT profile #>> '{address,city}' FROM users;         -- 路径提取(返回文本)
        -----------------------------------------------------------------------------------------------------
        提取数组元素:
        SELECT profile -> 'hobbies' -> 0 FROM users;            -- 第一个元素
        SELECT profile -> 'hobbies' -> 1 FROM users;            -- 第二个元素
    b.查询数据
        包含查询:
        SELECT * FROM users WHERE profile @> '{"city": "Beijing"}';
        SELECT * FROM users WHERE profile @> '{"hobbies": ["reading"]}';
        -----------------------------------------------------------------------------------------------------
        被包含查询:
        SELECT * FROM users WHERE '{"age": 25}' <@ profile;
        -----------------------------------------------------------------------------------------------------
        键存在查询:
        SELECT * FROM users WHERE profile ? 'age';              -- 是否存在 age 键
        SELECT * FROM users WHERE profile ?| array['age', 'city'];  -- 是否存在任一键
        SELECT * FROM users WHERE profile ?& array['age', 'city'];  -- 是否存在所有键
        -----------------------------------------------------------------------------------------------------
        路径查询:
        SELECT * FROM users WHERE profile @? '$.age ? (@ > 25)';
        SELECT * FROM users WHERE profile @@ '$.age > 25';
    c.修改数据
        更新整个 JSON:
        UPDATE users SET profile = '{"age": 26, "city": "Beijing"}' WHERE id = 1;
        -----------------------------------------------------------------------------------------------------
        更新 JSON 字段:
        UPDATE users SET profile = jsonb_set(profile, '{age}', '26') WHERE id = 1;
        UPDATE users SET profile = jsonb_set(profile, '{address,city}', '"Beijing"') WHERE id = 1;
        -----------------------------------------------------------------------------------------------------
        删除 JSON 字段:
        UPDATE users SET profile = profile - 'age' WHERE id = 1;
        UPDATE users SET profile = profile - 'hobbies' WHERE id = 1;
        -----------------------------------------------------------------------------------------------------
        删除嵌套字段:
        UPDATE users SET profile = profile #- '{address,city}' WHERE id = 1;
        -----------------------------------------------------------------------------------------------------
        合并 JSON:
        UPDATE users SET profile = profile || '{"email": "user@example.com"}' WHERE id = 1;

03.JSON函数
    a.构建JSON
        JSONB_BUILD_OBJECT:
        SELECT JSONB_BUILD_OBJECT('name', 'John', 'age', 30);
        -- {"name": "John", "age": 30}
        -----------------------------------------------------------------------------------------------------
        JSONB_BUILD_ARRAY:
        SELECT JSONB_BUILD_ARRAY('a', 'b', 'c');
        -- ["a", "b", "c"]
        -----------------------------------------------------------------------------------------------------
        ROW_TO_JSON:
        SELECT ROW_TO_JSON(users) FROM users;
        -----------------------------------------------------------------------------------------------------
        JSON_AGG:
        SELECT JSON_AGG(username) FROM users;
        -- ["user1", "user2"]
        -----------------------------------------------------------------------------------------------------
        JSONB_OBJECT_AGG:
        SELECT JSONB_OBJECT_AGG(username, profile) FROM users;
        -- {"user1": {...}, "user2": {...}}
    b.解析JSON
        JSONB_EACH:
        SELECT * FROM JSONB_EACH('{"a": 1, "b": 2}'::jsonb);
        -- key | value
        -- a   | 1
        -- b   | 2
        -----------------------------------------------------------------------------------------------------
        JSONB_EACH_TEXT:
        SELECT * FROM JSONB_EACH_TEXT('{"a": 1, "b": 2}'::jsonb);
        -----------------------------------------------------------------------------------------------------
        JSONB_ARRAY_ELEMENTS:
        SELECT * FROM JSONB_ARRAY_ELEMENTS('["a", "b", "c"]'::jsonb);
        -- value
        -- "a"
        -- "b"
        -- "c"
        -----------------------------------------------------------------------------------------------------
        JSONB_ARRAY_ELEMENTS_TEXT:
        SELECT * FROM JSONB_ARRAY_ELEMENTS_TEXT('["a", "b", "c"]'::jsonb);
        -----------------------------------------------------------------------------------------------------
        JSONB_TO_RECORD:
        SELECT * FROM JSONB_TO_RECORD('{"name": "John", "age": 30}'::jsonb)
        AS x(name TEXT, age INTEGER);
    c.JSON工具函数
        JSONB_TYPEOF:
        SELECT JSONB_TYPEOF('{"a": 1}'::jsonb);                 -- object
        SELECT JSONB_TYPEOF('[1, 2, 3]'::jsonb);                -- array
        SELECT JSONB_TYPEOF('123'::jsonb);                      -- number
        -----------------------------------------------------------------------------------------------------
        JSONB_ARRAY_LENGTH:
        SELECT JSONB_ARRAY_LENGTH('["a", "b", "c"]'::jsonb);    -- 3
        -----------------------------------------------------------------------------------------------------
        JSONB_PRETTY:
        SELECT JSONB_PRETTY('{"name":"John","age":30}'::jsonb);
        -- {
        --     "name": "John",
        --     "age": 30
        -- }
        -----------------------------------------------------------------------------------------------------
        JSONB_STRIP_NULLS:
        SELECT JSONB_STRIP_NULLS('{"a": 1, "b": null, "c": 3}'::jsonb);
        -- {"a": 1, "c": 3}

04.JSON索引
    a.GIN索引
        默认 GIN 索引:
        CREATE INDEX idx_users_profile ON users USING gin(profile);
        -- 支持 @>、?、?|、?& 操作符
        -----------------------------------------------------------------------------------------------------
        路径 GIN 索引:
        CREATE INDEX idx_users_profile_path ON users USING gin(profile jsonb_path_ops);
        -- 只支持 @> 操作符,但性能更好,索引更小
    b.表达式索引
        为特定字段创建索引:
        CREATE INDEX idx_users_profile_age ON users((profile->>'age'));
        CREATE INDEX idx_users_profile_city ON users((profile->>'city'));
        -----------------------------------------------------------------------------------------------------
        查询使用索引:
        SELECT * FROM users WHERE profile->>'age' = '25';
        SELECT * FROM users WHERE profile->>'city' = 'Beijing';

05.JSON最佳实践
    a.设计原则
        合理使用 JSON:
        适合存储半结构化数据
        不适合频繁更新的字段
        不适合需要复杂查询的数据
        -----------------------------------------------------------------------------------------------------
        JSON vs 关系表:
        关系表:结构固定、需要 JOIN、强类型
        JSON:结构灵活、嵌套数据、弱类型
        -----------------------------------------------------------------------------------------------------
        混合使用:
        核心字段使用关系列
        扩展字段使用 JSON
    b.性能优化
        使用 JSONB 而非 JSON:
        JSONB 支持索引,查询性能更好
        -----------------------------------------------------------------------------------------------------
        创建合适的索引:
        根据查询模式选择索引类型
        为常用字段创建表达式索引
        -----------------------------------------------------------------------------------------------------
        避免过大的 JSON:
        单个 JSON 不宜超过几 MB
        考虑拆分为多个字段或关系表
    c.查询优化
        使用索引支持的操作符:
        @>、?、?|、?& 可以使用 GIN 索引
        ->、->> 需要表达式索引
        -----------------------------------------------------------------------------------------------------
        避免全表扫描:
        为常用查询创建索引
        使用 EXPLAIN 分析查询计划

4.5 外部数据包装器

01.FDW介绍
    a.概念
        外部数据包装器(Foreign Data Wrapper,FDW):
        访问外部数据源的接口
        将外部数据映射为 PostgreSQL 表
        支持查询、插入、更新、删除(取决于 FDW 实现)
        -----------------------------------------------------------------------------------------------------
        应用场景:
        跨数据库查询
        数据迁移
        数据联邦
        异构数据集成
    b.常用FDW
        postgres_fdw:
        连接其他 PostgreSQL 数据库
        官方扩展,功能完善
        -----------------------------------------------------------------------------------------------------
        mysql_fdw:
        连接 MySQL 数据库
        -----------------------------------------------------------------------------------------------------
        oracle_fdw:
        连接 Oracle 数据库
        -----------------------------------------------------------------------------------------------------
        file_fdw:
        读取文件(CSV、文本)
        -----------------------------------------------------------------------------------------------------
        mongo_fdw:
        连接 MongoDB

02.postgres_fdw
    a.安装配置
        安装扩展:
        CREATE EXTENSION postgres_fdw;
        -----------------------------------------------------------------------------------------------------
        创建外部服务器:
        CREATE SERVER foreign_server
        FOREIGN DATA WRAPPER postgres_fdw
        OPTIONS (host 'remote_host', port '5432', dbname 'remote_db');
        -----------------------------------------------------------------------------------------------------
        创建用户映射:
        CREATE USER MAPPING FOR local_user
        SERVER foreign_server
        OPTIONS (user 'remote_user', password 'remote_password');
        -----------------------------------------------------------------------------------------------------
        导入外部表:
        IMPORT FOREIGN SCHEMA public
        FROM SERVER foreign_server
        INTO local_schema;
        -----------------------------------------------------------------------------------------------------
        手动创建外部表:
        CREATE FOREIGN TABLE remote_users (
            id INTEGER,
            username VARCHAR(50),
            email VARCHAR(100)
        )
        SERVER foreign_server
        OPTIONS (schema_name 'public', table_name 'users');
    b.使用外部表
        查询外部表:
        SELECT * FROM remote_users;
        SELECT * FROM remote_users WHERE id > 100;
        -----------------------------------------------------------------------------------------------------
        JOIN 本地表和外部表:
        SELECT
            l.id,
            l.order_id,
            r.username
        FROM local_orders l
        JOIN remote_users r ON l.user_id = r.id;
        -----------------------------------------------------------------------------------------------------
        插入数据:
        INSERT INTO remote_users (username, email) VALUES ('user1', 'user1@example.com');
        -----------------------------------------------------------------------------------------------------
        更新数据:
        UPDATE remote_users SET email = 'new@example.com' WHERE id = 1;
        -----------------------------------------------------------------------------------------------------
        删除数据:
        DELETE FROM remote_users WHERE id = 1;
    c.性能优化
        推送查询条件:
        postgres_fdw 会自动将 WHERE 条件推送到远程服务器
        减少网络传输
        -----------------------------------------------------------------------------------------------------
        推送聚合:
        postgres_fdw 支持推送聚合函数(COUNT、SUM、AVG 等)
        -----------------------------------------------------------------------------------------------------
        批量操作:
        使用 batch_size 选项控制批量大小
        ALTER SERVER foreign_server OPTIONS (ADD batch_size '100');
        -----------------------------------------------------------------------------------------------------
        并行查询:
        使用 async_capable 选项启用异步查询
        ALTER SERVER foreign_server OPTIONS (ADD async_capable 'true');

03.file_fdw
    a.安装配置
        安装扩展:
        CREATE EXTENSION file_fdw;
        -----------------------------------------------------------------------------------------------------
        创建外部服务器:
        CREATE SERVER file_server
        FOREIGN DATA WRAPPER file_fdw;
        -----------------------------------------------------------------------------------------------------
        创建外部表:
        CREATE FOREIGN TABLE csv_data (
            id INTEGER,
            name VARCHAR(50),
            age INTEGER
        )
        SERVER file_server
        OPTIONS (filename '/path/to/data.csv', format 'csv', header 'true');
    b.使用外部表
        查询 CSV 文件:
        SELECT * FROM csv_data;
        SELECT * FROM csv_data WHERE age > 25;
        -----------------------------------------------------------------------------------------------------
        导入数据:
        INSERT INTO local_table SELECT * FROM csv_data;
        -----------------------------------------------------------------------------------------------------
        注意事项:
        file_fdw 只支持读取,不支持写入
        文件路径必须是服务器上的绝对路径
        需要 PostgreSQL 进程有读取权限

04.FDW管理
    a.查看FDW
        查看已安装的 FDW:
        SELECT * FROM pg_foreign_data_wrapper;
        -----------------------------------------------------------------------------------------------------
        查看外部服务器:
        SELECT * FROM pg_foreign_server;
        -----------------------------------------------------------------------------------------------------
        查看外部表:
        SELECT * FROM pg_foreign_table;
        -----------------------------------------------------------------------------------------------------
        查看用户映射:
        SELECT * FROM pg_user_mappings;
    b.修改FDW
        修改服务器选项:
        ALTER SERVER foreign_server OPTIONS (SET host 'new_host');
        ALTER SERVER foreign_server OPTIONS (ADD port '5433');
        ALTER SERVER foreign_server OPTIONS (DROP port);
        -----------------------------------------------------------------------------------------------------
        修改用户映射:
        ALTER USER MAPPING FOR local_user SERVER foreign_server
        OPTIONS (SET password 'new_password');
        -----------------------------------------------------------------------------------------------------
        修改外部表:
        ALTER FOREIGN TABLE remote_users OPTIONS (SET table_name 'new_users');
    c.删除FDW
        删除外部表:
        DROP FOREIGN TABLE remote_users;
        -----------------------------------------------------------------------------------------------------
        删除用户映射:
        DROP USER MAPPING FOR local_user SERVER foreign_server;
        -----------------------------------------------------------------------------------------------------
        删除服务器:
        DROP SERVER foreign_server CASCADE;
        -----------------------------------------------------------------------------------------------------
        删除扩展:
        DROP EXTENSION postgres_fdw CASCADE;

05.FDW最佳实践
    a.安全性
        使用密码文件:
        避免在 SQL 中硬编码密码
        使用 .pgpass 文件存储密码
        -----------------------------------------------------------------------------------------------------
        限制权限:
        只授予必要的权限
        使用只读用户访问外部数据
        -----------------------------------------------------------------------------------------------------
        加密连接:
        使用 SSL 连接远程数据库
        ALTER SERVER foreign_server OPTIONS (ADD sslmode 'require');
    b.性能优化
        减少网络传输:
        只查询需要的列
        使用 WHERE 条件过滤数据
        -----------------------------------------------------------------------------------------------------
        使用本地缓存:
        将常用数据缓存到本地表
        定期同步
        -----------------------------------------------------------------------------------------------------
        批量操作:
        使用批量插入代替单条插入
        调整 batch_size 参数
    c.监控维护
        监控查询性能:
        使用 EXPLAIN 分析查询计划
        检查是否正确推送条件
        -----------------------------------------------------------------------------------------------------
        监控连接:
        检查外部服务器连接状态
        设置连接超时
        -----------------------------------------------------------------------------------------------------
        定期测试:
        定期测试外部表连接
        监控远程数据库状态

5 PostgreSQL实战

5.1 连接池

01.连接池介绍
    a.为什么需要连接池
        问题:
        创建数据库连接开销大(TCP 握手、认证、初始化)
        频繁创建和销毁连接影响性能
        连接数有限(max_connections)
        -----------------------------------------------------------------------------------------------------
        解决方案:
        连接池:预先创建一定数量的连接
        复用连接,减少创建开销
        控制连接数量,避免超出限制
    b.连接池类型
        应用层连接池:
        集成在应用程序中
        如 HikariCP(Java)、psycopg2.pool(Python)
        -----------------------------------------------------------------------------------------------------
        独立连接池:
        独立的中间件
        如 PgBouncer、Pgpool-II
        支持多个应用共享

02.PgBouncer
    a.安装配置
        安装 PgBouncer:
        # Ubuntu/Debian
        sudo apt-get install pgbouncer

        # CentOS/RHEL
        sudo yum install pgbouncer

        # macOS
        brew install pgbouncer
        -----------------------------------------------------------------------------------------------------
        配置文件(pgbouncer.ini):
        [databases]
        mydb = host=localhost port=5432 dbname=mydb

        [pgbouncer]
        listen_addr = 0.0.0.0
        listen_port = 6432
        auth_type = md5
        auth_file = /etc/pgbouncer/userlist.txt
        pool_mode = transaction
        max_client_conn = 1000
        default_pool_size = 20
        reserve_pool_size = 5
        reserve_pool_timeout = 3
        -----------------------------------------------------------------------------------------------------
        用户认证文件(userlist.txt):
        "username" "md5_password_hash"
        -----------------------------------------------------------------------------------------------------
        启动 PgBouncer:
        pgbouncer -d /etc/pgbouncer/pgbouncer.ini
    b.连接模式
        session 模式:
        客户端连接期间,独占一个服务器连接
        支持所有 PostgreSQL 特性
        连接复用率低
        -----------------------------------------------------------------------------------------------------
        transaction 模式(推荐):
        事务结束后,释放服务器连接
        连接复用率高
        不支持某些特性(如 LISTEN/NOTIFY、临时表)
        -----------------------------------------------------------------------------------------------------
        statement 模式:
        每个语句结束后,释放服务器连接
        连接复用率最高
        不支持事务、预编译语句
    c.管理命令
        连接到管理控制台:
        psql -h localhost -p 6432 -U pgbouncer pgbouncer
        -----------------------------------------------------------------------------------------------------
        查看连接池状态:
        SHOW POOLS;
        SHOW CLIENTS;
        SHOW SERVERS;
        SHOW DATABASES;
        -----------------------------------------------------------------------------------------------------
        重载配置:
        RELOAD;
        -----------------------------------------------------------------------------------------------------
        暂停连接池:
        PAUSE;
        RESUME;
        -----------------------------------------------------------------------------------------------------
        关闭连接:
        KILL database;

03.应用层连接池
    a.Python(psycopg2)
        使用连接池:
        from psycopg2 import pool

        connection_pool = pool.SimpleConnectionPool(
            minconn=1, maxconn=10,
            host='localhost', database='mydb',
            user='username', password='password'
        )

        conn = connection_pool.getconn()
        cursor = conn.cursor()
        cursor.execute("SELECT * FROM users")
        results = cursor.fetchall()
        cursor.close()
        connection_pool.putconn(conn)
    b.Java(HikariCP)
        使用连接池:
        HikariConfig config = new HikariConfig();
        config.setJdbcUrl("jdbc:postgresql://localhost:5432/mydb");
        config.setUsername("username");
        config.setPassword("password");
        config.setMaximumPoolSize(10);

        HikariDataSource dataSource = new HikariDataSource(config);
        Connection conn = dataSource.getConnection();
        conn.close();
    c.Node.js(pg-pool)
        使用连接池:
        const { Pool } = require('pg');

        const pool = new Pool({
            host: 'localhost',
            database: 'mydb',
            user: 'username',
            password: 'password',
            max: 10
        });

        const client = await pool.connect();
        const res = await client.query('SELECT * FROM users');
        client.release();

5.2 读写分离

01.读写分离介绍
    a.概念
        读写分离:
        写操作发送到主库
        读操作发送到从库
        提高系统并发能力
        -----------------------------------------------------------------------------------------------------
        适用场景:
        读多写少的应用
        对数据一致性要求不高
        需要横向扩展读能力
    b.实现方式
        应用层实现:
        应用程序判断 SQL 类型
        手动路由到主库或从库
        -----------------------------------------------------------------------------------------------------
        中间件实现:
        使用 Pgpool-II、ProxySQL 等中间件
        自动路由 SQL

02.Pgpool-II读写分离
    a.配置主从复制
        主库配置(postgresql.conf):
        wal_level = replica
        max_wal_senders = 10
        wal_keep_size = 1GB
        -----------------------------------------------------------------------------------------------------
        从库配置:
        创建 standby.signal 文件
        配置 postgresql.conf:
        primary_conninfo = 'host=master_host port=5432 user=replicator password=password'
        hot_standby = on
    b.配置Pgpool-II
        配置文件(pgpool.conf):
        backend_hostname0 = 'master_host'
        backend_port0 = 5432
        backend_weight0 = 0
        backend_flag0 = 'ALWAYS_MASTER'

        backend_hostname1 = 'slave1_host'
        backend_port1 = 5432
        backend_weight1 = 1

        load_balance_mode = on
        master_slave_mode = on
        master_slave_sub_mode = 'stream'

5.3 数据迁移

01.导出导入
    a.pg_dump
        导出单个数据库:
        pg_dump -h localhost -U username -d mydb -f mydb.sql
        -----------------------------------------------------------------------------------------------------
        导出为自定义格式:
        pg_dump -h localhost -U username -d mydb -Fc -f mydb.dump
        -----------------------------------------------------------------------------------------------------
        只导出表结构:
        pg_dump -h localhost -U username -d mydb -s -f schema.sql
        -----------------------------------------------------------------------------------------------------
        只导出数据:
        pg_dump -h localhost -U username -d mydb -a -f data.sql
        -----------------------------------------------------------------------------------------------------
        导出指定表:
        pg_dump -h localhost -U username -d mydb -t users -f users.sql
        -----------------------------------------------------------------------------------------------------
        并行导出:
        pg_dump -h localhost -U username -d mydb -Fd -j 4 -f mydb_dir
    b.pg_restore
        恢复自定义格式备份:
        pg_restore -h localhost -U username -d mydb mydb.dump
        -----------------------------------------------------------------------------------------------------
        并行恢复:
        pg_restore -h localhost -U username -d mydb -j 4 mydb.dump
        -----------------------------------------------------------------------------------------------------
        只恢复表结构:
        pg_restore -h localhost -U username -d mydb -s mydb.dump
    c.COPY命令
        导出为 CSV:
        COPY users TO '/tmp/users.csv' WITH CSV HEADER;
        -----------------------------------------------------------------------------------------------------
        导入 CSV:
        COPY users FROM '/tmp/users.csv' WITH CSV HEADER;

02.跨数据库迁移
    a.PostgreSQL到PostgreSQL
        使用 pg_dump + psql:
        pg_dump -h source_host -U username -d source_db | psql -h target_host -U username -d target_db
    b.MySQL到PostgreSQL
        使用 pgloader:
        pgloader mysql://user:pass@mysql_host/mysql_db postgresql://user:pass@pg_host/pg_db

5.4 安全加固

01.认证安全
    a.密码策略
        强制密码复杂度:
        安装 passwordcheck 扩展
        CREATE EXTENSION passwordcheck;
        -----------------------------------------------------------------------------------------------------
        密码加密:
        使用 SCRAM-SHA-256 认证
        配置 postgresql.conf:
        password_encryption = scram-sha-256

        配置 pg_hba.conf:
        host all all 0.0.0.0/0 scram-sha-256
    b.访问控制
        限制访问IP:
        配置 pg_hba.conf:
        host all all 192.168.1.0/24 scram-sha-256
        host all all 10.0.0.0/8 reject
        -----------------------------------------------------------------------------------------------------
        禁用超级用户远程登录:
        host all postgres 0.0.0.0/0 reject
        host all postgres 127.0.0.1/32 scram-sha-256

02.权限管理
    a.最小权限原则
        创建只读用户:
        CREATE USER readonly_user WITH PASSWORD 'password';
        GRANT CONNECT ON DATABASE mydb TO readonly_user;
        GRANT USAGE ON SCHEMA public TO readonly_user;
        GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;
        -----------------------------------------------------------------------------------------------------
        创建应用用户:
        CREATE USER app_user WITH PASSWORD 'password';
        GRANT CONNECT ON DATABASE mydb TO app_user;
        GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;
    b.行级安全
        启用行级安全:
        ALTER TABLE users ENABLE ROW LEVEL SECURITY;
        -----------------------------------------------------------------------------------------------------
        创建策略:
        CREATE POLICY user_isolation ON users
        FOR ALL
        TO app_user
        USING (user_id = current_user_id());

03.数据加密
    a.传输加密
        配置 SSL:
        配置 postgresql.conf:
        ssl = on
        ssl_cert_file = 'server.crt'
        ssl_key_file = 'server.key'

        配置 pg_hba.conf:
        hostssl all all 0.0.0.0/0 scram-sha-256
    b.列级加密
        使用 pgcrypto 扩展:
        CREATE EXTENSION pgcrypto;

        加密存储:
        INSERT INTO users (username, password) VALUES
        ('user1', crypt('password', gen_salt('bf')));

        验证密码:
        SELECT * FROM users WHERE username = 'user1' AND password = crypt('input_password', password);

04.审计日志
    a.配置日志
        启用日志:
        配置 postgresql.conf:
        logging_collector = on
        log_directory = 'log'
        log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
        log_statement = 'all'
        log_duration = on
        log_min_duration_statement = 1000

5.5 常见问题

01.性能问题
    a.慢查询
        问题:
        查询执行时间过长
        -----------------------------------------------------------------------------------------------------
        排查:
        使用 EXPLAIN ANALYZE 分析查询计划
        检查是否使用索引
        检查统计信息是否过期
        -----------------------------------------------------------------------------------------------------
        解决:
        创建合适的索引
        优化查询语句
        更新统计信息:ANALYZE
    b.连接数过多
        问题:
        FATAL: sorry, too many clients already
        -----------------------------------------------------------------------------------------------------
        排查:
        SELECT COUNT(*) FROM pg_stat_activity;
        SELECT state, COUNT(*) FROM pg_stat_activity GROUP BY state;
        -----------------------------------------------------------------------------------------------------
        解决:
        增加 max_connections
        使用连接池
        关闭空闲连接
    c.表膨胀
        问题:
        表和索引占用空间过大
        查询性能下降
        -----------------------------------------------------------------------------------------------------
        排查:
        SELECT pg_size_pretty(pg_total_relation_size('users'));
        SELECT schemaname, tablename, n_dead_tup FROM pg_stat_user_tables ORDER BY n_dead_tup DESC;
        -----------------------------------------------------------------------------------------------------
        解决:
        执行 VACUUM
        调整 autovacuum 参数
        使用 VACUUM FULL(锁表)

02.复制问题
    a.复制延迟
        问题:
        从库数据落后主库
        -----------------------------------------------------------------------------------------------------
        排查:
        主库:SELECT pg_current_wal_lsn();
        从库:SELECT pg_last_wal_receive_lsn(), pg_last_wal_replay_lsn();
        -----------------------------------------------------------------------------------------------------
        解决:
        优化网络带宽
        调整 wal_sender_timeout
        增加从库硬件资源
    b.复制中断
        问题:
        从库停止复制
        -----------------------------------------------------------------------------------------------------
        排查:
        SELECT * FROM pg_stat_replication;
        查看从库日志
        -----------------------------------------------------------------------------------------------------
        解决:
        检查网络连接
        检查 WAL 文件是否被清理
        重新建立复制

03.锁问题
    a.死锁
        问题:
        ERROR: deadlock detected
        -----------------------------------------------------------------------------------------------------
        排查:
        查看日志中的死锁信息
        -----------------------------------------------------------------------------------------------------
        解决:
        按相同顺序访问资源
        保持事务简短
        使用较低的隔离级别
    b.锁等待
        问题:
        查询长时间等待
        -----------------------------------------------------------------------------------------------------
        排查:
        SELECT * FROM pg_locks WHERE NOT granted;
        SELECT * FROM pg_stat_activity WHERE state = 'active' AND wait_event IS NOT NULL;
        -----------------------------------------------------------------------------------------------------
        解决:
        终止阻塞的查询:SELECT pg_terminate_backend(pid);
        优化查询,减少锁定时间

04.数据问题
    a.数据损坏
        问题:
        ERROR: invalid page header
        -----------------------------------------------------------------------------------------------------
        排查:
        检查硬件故障
        检查文件系统
        -----------------------------------------------------------------------------------------------------
        解决:
        从备份恢复
        使用 pg_resetwal(谨慎使用)
    b.数据不一致
        问题:
        主从数据不一致
        -----------------------------------------------------------------------------------------------------
        排查:
        比较主从数据
        检查复制状态
        -----------------------------------------------------------------------------------------------------
        解决:
        重新建立从库
        使用 pg_rewind 同步

05.运维问题
    a.磁盘空间不足
        问题:
        ERROR: could not extend file
        -----------------------------------------------------------------------------------------------------
        排查:
        df -h
        SELECT pg_size_pretty(pg_database_size('mydb'));
        -----------------------------------------------------------------------------------------------------
        解决:
        清理日志文件
        删除旧的 WAL 文件
        执行 VACUUM FULL
        扩展磁盘空间
    b.内存不足
        问题:
        Out of memory
        -----------------------------------------------------------------------------------------------------
        排查:
        free -h
        SELECT * FROM pg_stat_activity;
        -----------------------------------------------------------------------------------------------------
        解决:
        调整 shared_buffers
        调整 work_mem
        优化查询
        增加物理内存

'+_e+"");let bn=$e?$e.createHTML(_e):_e;if(Ul===Qi)try{at=new U().parseFromString(bn,ih)}catch{}if(!at||!at.documentElement){at=qe.createDocument(Ul,"template",null);try{at.documentElement.innerHTML=_f?Ce:bn}catch{}}let ka=at.body||at.documentElement;return _e&&It&&ka.insertBefore(Oe.createTextNode(It),ka.childNodes[0]||null),Ul===Qi?ft.call(at,yn?"html":"body")[0]:yn?at.documentElement:ka},QO=function(_e){return lt.call(_e.ownerDocument||_e,_e,de.SHOW_ELEMENT|de.SHOW_COMMENT|de.SHOW_TEXT|de.SHOW_PROCESSING_INSTRUCTION|de.SHOW_CDATA_SECTION,null)},JO=function(_e){return _e instanceof he&&(typeof _e.nodeName!="string"||typeof _e.textContent!="string"||typeof _e.removeChild!="function"||!(_e.attributes instanceof ie)||typeof _e.removeAttribute!="function"||typeof _e.setAttribute!="function"||typeof _e.namespaceURI!="string"||typeof _e.insertBefore!="function"||typeof _e.hasChildNodes!="function")},eP=function(_e){return typeof xe=="function"&&_e instanceof xe},Yc=function(_e,at,It){st[_e]&&h(st[_e],bn=>{bn.call(Ee,at,It,bi)})},tP=function(_e){let at=null;if(Yc("beforeSanitizeElements",_e,null),JO(_e))return Wl(_e),!0;let It=xn(_e.nodeName);if(Yc("uponSanitizeElement",_e,{tagName:It,allowedTags:tt}),_e.hasChildNodes()&&!eP(_e.firstElementChild)&&_(/<[/\w]/g,_e.innerHTML)&&_(/<[/\w]/g,_e.textContent)||_e.nodeType===ue.progressingInstruction||Fa&&_e.nodeType===ue.comment&&_(/<[/\w]/g,_e.data))return Wl(_e),!0;if(!tt[It]||en[It]){if(!en[It]&&nP(It)&&(Jt.tagNameCheck instanceof RegExp&&_(Jt.tagNameCheck,It)||Jt.tagNameCheck instanceof Function&&Jt.tagNameCheck(It)))return!1;if(yt&&!me[It]){let bn=ge(_e)||_e.parentNode,ka=Fe(_e)||_e.childNodes;if(ka&&bn){let ea=ka.length;for(let ls=ea-1;ls>=0;--ls){let Hl=ye(ka[ls],!0);Hl.__removalCount=(_e.__removalCount||0)+1,bn.insertBefore(Hl,Ge(_e))}}}return Wl(_e),!0}return _e instanceof q&&!$a(_e)||(It==="noscript"||It==="noembed"||It==="noframes")&&_(/<\/no(script|embed|frames)/i,_e.innerHTML)?(Wl(_e),!0):(xi&&_e.nodeType===ue.text&&(at=_e.textContent,h([Ue,Ke,it],bn=>{at=y(at,bn," ")}),_e.textContent!==at&&(d(Ee.removed,{element:_e.cloneNode()}),_e.textContent=at)),Yc("afterSanitizeElements",_e,null),!1)},rP=function(_e,at,It){if(Rt&&(at==="id"||at==="name")&&(It in Oe||It in KO))return!1;if(!(cn&&!Cr[at]&&_(mt,at))){if(!(Kn&&_(Ht,at))){if(!ur[at]||Cr[at]){if(!(nP(_e)&&(Jt.tagNameCheck instanceof RegExp&&_(Jt.tagNameCheck,_e)||Jt.tagNameCheck instanceof Function&&Jt.tagNameCheck(_e))&&(Jt.attributeNameCheck instanceof RegExp&&_(Jt.attributeNameCheck,at)||Jt.attributeNameCheck instanceof Function&&Jt.attributeNameCheck(at))||at==="is"&&Jt.allowCustomizedBuiltInElements&&(Jt.tagNameCheck instanceof RegExp&&_(Jt.tagNameCheck,It)||Jt.tagNameCheck instanceof Function&&Jt.tagNameCheck(It))))return!1}else if(!m1[at]){if(!_(bt,y(It,et,""))){if(!((at==="src"||at==="xlink:href"||at==="href")&&_e!=="script"&&x(It,"data:")===0&&p1[_e])){if(!(Rn&&!_(ot,y(It,et,"")))){if(It)return!1}}}}}}return!0},nP=function(_e){return _e!=="annotation-xml"&&m(_e,ht)},iP=function(_e){Yc("beforeSanitizeAttributes",_e,null);let{attributes:at}=_e;if(!at)return;let It={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ur},bn=at.length;for(;bn--;){let ka=at[bn],{name:ea,namespaceURI:ls,value:Hl}=ka,b1=xn(ea),Ga=ea==="value"?Hl:b(Hl);if(It.attrName=b1,It.attrValue=Ga,It.keepAttr=!0,It.forceKeepAttr=void 0,Yc("uponSanitizeAttribute",_e,It),Ga=It.attrValue,Fa&&_(/((--!?|])>)|<\/(style|title)/i,Ga)){rb(ea,_e);continue}if(It.forceKeepAttr||(rb(ea,_e),!It.keepAttr))continue;if(!Vr&&_(/\/>/i,Ga)){rb(ea,_e);continue}xi&&h([Ue,Ke,it],sP=>{Ga=y(Ga,sP," ")});let aP=xn(_e.nodeName);if(rP(aP,b1,Ga)){if(wt&&(b1==="id"||b1==="name")&&(rb(ea,_e),Ga=He+Ga),$e&&typeof ke=="object"&&typeof ke.getAttributeType=="function"&&!ls)switch(ke.getAttributeType(aP,b1)){case"TrustedHTML":{Ga=$e.createHTML(Ga);break}case"TrustedScriptURL":{Ga=$e.createScriptURL(Ga);break}}try{ls?_e.setAttributeNS(ls,ea,Ga):_e.setAttribute(ea,Ga),JO(_e)?Wl(_e):f(Ee.removed)}catch{}}}Yc("afterSanitizeAttributes",_e,null)},Pme=function Gt(_e){let at=null,It=QO(_e);for(Yc("beforeSanitizeShadowDOM",_e,null);at=It.nextNode();)Yc("uponSanitizeShadowNode",at,null),!tP(at)&&(at.content instanceof Re&&Gt(at.content),iP(at));Yc("afterSanitizeShadowDOM",_e,null)};return Ee.sanitize=function(Gt){let _e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},at=null,It=null,bn=null,ka=null;if(_f=!Gt,_f&&(Gt=""),typeof Gt!="string"&&!eP(Gt))if(typeof Gt.toString=="function"){if(Gt=Gt.toString(),typeof Gt!="string")throw k("dirty is not a string, aborting")}else throw k("toString is not a function");if(!Ee.isSupported)return Gt;if(os||Vl(_e),Ee.removed=[],typeof Gt=="string"&&(fe=!1),fe){if(Gt.nodeName){let Hl=xn(Gt.nodeName);if(!tt[Hl]||en[Hl])throw k("root node is forbidden and cannot be sanitized in-place")}}else if(Gt instanceof xe)at=ZO(""),It=at.ownerDocument.importNode(Gt,!0),It.nodeType===ue.element&&It.nodeName==="BODY"||It.nodeName==="HTML"?at=It:at.appendChild(It);else{if(!Zi&&!xi&&!yn&&Gt.indexOf("<")===-1)return $e&&pt?$e.createHTML(Gt):Gt;if(at=ZO(Gt),!at)return Zi?null:pt?Ce:""}at&&fo&&Wl(at.firstChild);let ea=QO(fe?Gt:at);for(;bn=ea.nextNode();)tP(bn)||(bn.content instanceof Re&&Pme(bn.content),iP(bn));if(fe)return Gt;if(Zi){if($i)for(ka=xt.call(at.ownerDocument);at.firstChild;)ka.appendChild(at.firstChild);else ka=at;return(ur.shadowroot||ur.shadowrootmode)&&(ka=Ze.call(De,ka,!0)),ka}let ls=yn?at.outerHTML:at.innerHTML;return yn&&tt["!doctype"]&&at.ownerDocument&&at.ownerDocument.doctype&&at.ownerDocument.doctype.name&&_(Z,at.ownerDocument.doctype.name)&&(ls=" `+ls),xi&&h([Ue,Ke,it],Hl=>{ls=y(ls,Hl," ")}),$e&&pt?$e.createHTML(ls):ls},Ee.setConfig=function(){let Gt=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Vl(Gt),os=!0},Ee.clearConfig=function(){bi=null,os=!1},Ee.isValidAttribute=function(Gt,_e,at){bi||Vl({});let It=xn(Gt),bn=xn(_e);return rP(It,bn,at)},Ee.addHook=function(Gt,_e){typeof _e=="function"&&(st[Gt]=st[Gt]||[],d(st[Gt],_e))},Ee.removeHook=function(Gt){if(st[Gt])return f(st[Gt])},Ee.removeHooks=function(Gt){st[Gt]&&(st[Gt]=[])},Ee.removeAllHooks=function(){st={}},Ee}var we=ae();return we})});var cF={};vr(cF,{default:()=>Qve});function h1e(t){return String(t).replace(u1e,e=>c1e[e])}function g1e(t){if(t.default)return t.default;var e=t.type,r=Array.isArray(e)?e[0]:e;if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}function k1e(t){for(var e=0;e=i[0]&&t<=i[1])return r.name}return null}function gB(t){for(var e=0;e=wb[e]&&t<=wb[e+1])return!0;return!1}function M1e(t,e){jl[t]=e}function dS(t,e,r){if(!jl[e])throw new Error("Font metrics not found for font: "+e+".");var n=t.charCodeAt(0),i=jl[e][n];if(!i&&t[0]in FP&&(n=FP[t[0]].charCodeAt(0),i=jl[e][n]),!i&&r==="text"&&gB(n)&&(i=jl[e][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}function D1e(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!UE[e]){var r=UE[e]={cssEmPerMu:cb.quad[e]/18};for(var n in cb)cb.hasOwnProperty(n)&&(r[n]=cb[n][e])}return UE[e]}function GP(t){if(t instanceof hs)return t;throw new Error("Expected symbolNode but got "+String(t)+".")}function F1e(t){if(t instanceof Of)return t;throw new Error("Expected span but got "+String(t)+".")}function G(t,e,r,n,i,a){wn[t][i]={font:e,group:r,replace:n},a&&n&&(wn[t][n]=wn[t][i])}function vt(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,o={type:e,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:i},l=0;l0&&(a.push(mb(s,e)),s=[]),a.push(n[o]));s.length>0&&a.push(mb(s,e));var u;r?(u=mb(Ti(r,e,!0)),u.classes=["tag"],a.push(u)):i&&a.push(i);var h=eu(["katex-html"],a);if(h.setAttribute("aria-hidden","true"),u){var f=u.children[0];f.style.height=ut(h.height+h.depth),h.depth&&(f.style.verticalAlign=ut(-h.depth))}return h}function AB(t){return new Df(t)}function qP(t,e,r,n,i){var a=fs(t,r),s;a.length===1&&a[0]instanceof us&&qt.contains(["mrow","mtable"],a[0].type)?s=a[0]:s=new rt.MathNode("mrow",a);var o=new rt.MathNode("annotation",[new rt.TextNode(e)]);o.setAttribute("encoding","application/x-tex");var l=new rt.MathNode("semantics",[s,o]),u=new rt.MathNode("math",[l]);u.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&u.setAttribute("display","block");var h=i?"katex":"katex-mathml";return Be.makeSpan([h],[u])}function hr(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function vS(t){var e=Ib(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function Ib(t){return t&&(t.type==="atom"||$1e.hasOwnProperty(t.type))?t:null}function NB(t,e){var r=Ti(t.body,e,!0);return mve([t.mclass],r,e)}function IB(t,e){var r,n=fs(t.body,e);return t.mclass==="minner"?r=new rt.MathNode("mpadded",n):t.mclass==="mord"?t.isCharacterBox?(r=n[0],r.type="mi"):r=new rt.MathNode("mi",n):(t.isCharacterBox?(r=n[0],r.type="mo"):r=new rt.MathNode("mo",n),t.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):t.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):t.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}function xve(t,e,r){var n=vve[t];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var i=r.callFunction("\\\\cdleft",[e[0]],[]),a={type:"atom",text:n,mode:"math",family:"rel"},s=r.callFunction("\\Big",[a],[]),o=r.callFunction("\\\\cdright",[e[1]],[]),l={type:"ordgroup",mode:"math",body:[i,s,o]};return r.callFunction("\\\\cdparent",[l],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var u={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[u],[])}default:return{type:"textord",text:" ",mode:"math"}}}function bve(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var r=t.fetch().text;if(r==="&"||r==="\\\\")t.consume();else if(r==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new nt("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var n=[],i=[n],a=0;a-1))if("<>AV".indexOf(u)>-1)for(var f=0;f<2;f++){for(var d=!0,p=l+1;pAV=|." after @',s[l]);var g=xve(u,h,t),m={type:"styling",body:[g],mode:"math",style:"display"};n.push(m),o=YP()}a%2===0?n.push(o):n.shift(),n=[],i.push(n)}t.gullet.endGroup(),t.gullet.endGroup();var y=new Array(i[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:y,colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}function Db(t,e){var r=Ib(t);if(r&&qt.contains(Mve,r.text))return r;throw r?new nt("Invalid delimiter '"+r.text+"' after '"+e.funcName+"'",t):new nt("Invalid delimiter type '"+t.type+"'",t)}function KP(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}function Zl(t){for(var{type:e,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:s}=t,o={type:e,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},l=0;l1||!h)&&m.pop(),x.length{Gs=class t{constructor(e,r,n){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=r,this.end=n}static range(e,r){return r?!e||!e.loc||!r.loc||e.loc.lexer!==r.loc.lexer?null:new t(e.loc.lexer,e.loc.start,r.loc.end):e&&e.loc}},vo=class t{constructor(e,r){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=r}range(e,r){return new t(r,Gs.range(this,e))}},nt=class t{constructor(e,r){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var n="KaTeX parse error: "+e,i,a,s=r&&r.loc;if(s&&s.start<=s.end){var o=s.lexer.input;i=s.start,a=s.end,i===o.length?n+=" at end of input: ":n+=" at position "+(i+1)+": ";var l=o.slice(i,a).replace(/[^]/g,"$&\u0332"),u;i>15?u="\u2026"+o.slice(i-15,i):u=o.slice(0,i);var h;a+15":">","<":"<",'"':""","'":"'"},u1e=/[&><"']/g;pB=function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},f1e=function(e){var r=pB(e);return r.type==="mathord"||r.type==="textord"||r.type==="atom"},d1e=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},p1e=function(e){var r=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return r?r[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(r[1])?null:r[1].toLowerCase():"_relative"},qt={contains:a1e,deflt:s1e,escape:h1e,hyphenate:l1e,getBaseElem:pB,isCharacterBox:f1e,protocolFromUrl:p1e},bb={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:t=>"#"+t},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(t,e)=>(e.push(t),e)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:t=>Math.max(0,t),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:t=>Math.max(0,t),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:t=>Math.max(0,t),cli:"-e, --max-expand ",cliProcessor:t=>t==="Infinity"?1/0:parseInt(t)},globalGroup:{type:"boolean",cli:!1}};R1=class{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var r in bb)if(bb.hasOwnProperty(r)){var n=bb[r];this[r]=e[r]!==void 0?n.processor?n.processor(e[r]):e[r]:g1e(n)}}reportNonstrict(e,r,n){var i=this.strict;if(typeof i=="function"&&(i=i(e,r,n)),!(!i||i==="ignore")){if(i===!0||i==="error")throw new nt("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+e+"]"),n);i==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]"))}}useStrictBehavior(e,r,n){var i=this.strict;if(typeof i=="function")try{i=i(e,r,n)}catch{i="error"}return!i||i==="ignore"?!1:i===!0||i==="error"?!0:i==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var r=qt.protocolFromUrl(e.url);if(r==null)return!1;e.protocol=r}var n=typeof this.trust=="function"?this.trust(e):this.trust;return!!n}},Yl=class{constructor(e,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=r,this.cramped=n}sup(){return Xl[m1e[this.id]]}sub(){return Xl[v1e[this.id]]}fracNum(){return Xl[y1e[this.id]]}fracDen(){return Xl[x1e[this.id]]}cramp(){return Xl[b1e[this.id]]}text(){return Xl[w1e[this.id]]}isTight(){return this.size>=2}},fS=0,kb=1,Y0=2,Qc=3,N1=4,mo=5,X0=6,Ua=7,Xl=[new Yl(fS,0,!1),new Yl(kb,0,!0),new Yl(Y0,1,!1),new Yl(Qc,1,!0),new Yl(N1,2,!1),new Yl(mo,2,!0),new Yl(X0,3,!1),new Yl(Ua,3,!0)],m1e=[N1,mo,N1,mo,X0,Ua,X0,Ua],v1e=[mo,mo,mo,mo,Ua,Ua,Ua,Ua],y1e=[Y0,Qc,N1,mo,X0,Ua,X0,Ua],x1e=[Qc,Qc,mo,mo,Ua,Ua,Ua,Ua],b1e=[kb,kb,Qc,Qc,mo,mo,Ua,Ua],w1e=[fS,kb,Y0,Qc,Y0,Qc,Y0,Qc],Xt={DISPLAY:Xl[fS],TEXT:Xl[Y0],SCRIPT:Xl[N1],SCRIPTSCRIPT:Xl[X0]},eS=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];wb=[];eS.forEach(t=>t.blocks.forEach(e=>wb.push(...e)));q0=80,T1e=function(e,r){return"M95,"+(622+e+r)+` c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 c69,-144,104.5,-217.7,106.5,-221 l`+e/2.075+" -"+e+` c5.3,-9.3,12,-14,20,-14 H400000v`+(40+e)+`H845.2724 s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z M`+(834+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},E1e=function(e,r){return"M263,"+(601+e+r)+`c0.7,0,18,39.7,52,119 c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 c340,-704.7,510.7,-1060.3,512,-1067 l`+e/2.084+" -"+e+` c4.7,-7.3,11,-11,19,-11 H40000v`+(40+e)+`H1012.3 s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},S1e=function(e,r){return"M983 "+(10+e+r)+` l`+e/3.13+" -"+e+` c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 c53.7,-170.3,84.5,-266.8,92.5,-289.5z M`+(1001+e)+" "+r+"h400000v"+(40+e)+"h-400000z"},C1e=function(e,r){return"M424,"+(2398+e+r)+` c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 l`+e/4.223+" -"+e+`c4,-6.7,10,-10,18,-10 H400000 v`+(40+e)+`H1014.6 s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 c-2,6,-10,9,-24,9 c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+r+` h400000v`+(40+e)+"h-400000z"},A1e=function(e,r){return"M473,"+(2713+e+r)+` c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, 606zM`+(1001+e)+" "+r+"h400000v"+(40+e)+"H1017.7z"},_1e=function(e){var r=e/2;return"M400000 "+e+" H0 L"+r+" 0 l65 45 L145 "+(e-80)+" H400000z"},L1e=function(e,r,n){var i=n-54-r-e;return"M702 "+(e+r)+"H400000"+(40+e)+` H742v`+i+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 219 661 l218 661zM702 `+r+"H400000v"+(40+e)+"H742z"},R1e=function(e,r,n){r=1e3*r;var i="";switch(e){case"sqrtMain":i=T1e(r,q0);break;case"sqrtSize1":i=E1e(r,q0);break;case"sqrtSize2":i=S1e(r,q0);break;case"sqrtSize3":i=C1e(r,q0);break;case"sqrtSize4":i=A1e(r,q0);break;case"sqrtTall":i=L1e(r,q0,n)}return i},N1e=function(e,r){switch(e){case"\u239C":return"M291 0 H417 V"+r+" H291z M291 0 H417 V"+r+" H291z";case"\u2223":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z";case"\u2225":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z"+("M367 0 H410 V"+r+" H367z M367 0 H410 V"+r+" H367z");case"\u239F":return"M457 0 H583 V"+r+" H457z M457 0 H583 V"+r+" H457z";case"\u23A2":return"M319 0 H403 V"+r+" H319z M319 0 H403 V"+r+" H319z";case"\u23A5":return"M263 0 H347 V"+r+" H263z M263 0 H347 V"+r+" H263z";case"\u23AA":return"M384 0 H504 V"+r+" H384z M384 0 H504 V"+r+" H384z";case"\u23D0":return"M312 0 H355 V"+r+" H312z M312 0 H355 V"+r+" H312z";case"\u2016":return"M257 0 H300 V"+r+" H257z M257 0 H300 V"+r+" H257z"+("M478 0 H521 V"+r+" H478z M478 0 H521 V"+r+" H478z");default:return""}},BP={doubleleftarrow:`M262 157 l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 -86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 -2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l -10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 -33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 -17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 -13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 -107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 -5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 -45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 -331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 435 0h399565z`,leftgroupunder:`M400000 262 H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 -3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 -18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 -196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 -4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 -10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 -152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 -2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 -83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 -68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:`M40 281 V428 H0 V94 H40 V241 H400000 v40z M40 281 V428 H0 V94 H40 V241 H400000 v40z`,leftmapsto:`M40 281 V448H0V74H40V241H400000v40z M40 281 V448H0V74H40V241H400000v40z`,leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 -.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:`M0 50 h400000 v40H0z m0 194h40000v40H0z M0 50 h400000 v40H0z m0 194h40000v40H0z`,midbrace:`M200428 334 c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 -53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 -5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 -320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 -451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 -480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 -707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 -16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 -40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 -12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l -6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 -174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 -3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 -10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 -18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 -7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 -27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 -64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 -13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:`M399960 241 V94 h40 V428 h-40 V281 H0 v-40z M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`,rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 -52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 -167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 -70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 -40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 -37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 -19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 -2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 -68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 -8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 -11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 -11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 -1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 -7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 -11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 -11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 -11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, -5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, -11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, -11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, -11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 -27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 -84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 -119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 -12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, -231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, 1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, -152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, -231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},I1e=function(e,r){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 h347 v-84 H403z M403 1759 V0 H319 V1759 v`+r+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+" v585 h43z";case"doublevert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+` v585 h43z M367 15 v585 v`+r+` v585 c2.667,10,9.667,15,21,15 c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+r+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+r+` v1715 h263 v84 H319z MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+r+` v1799 H0 v-84 H319z MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v602 h84z M403 1759 V0 H319 V1759 v`+r+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v602 h84z M347 1759 V0 h-84 V1759 v`+r+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, -36,557 l0,`+(r+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, 949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, -544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 l0,-`+(r+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, -210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, 63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(r+9)+` c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, -470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}},Df=class{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return qt.contains(this.classes,e)}toNode(){for(var e=document.createDocumentFragment(),r=0;rr.toText();return this.children.map(e).join("")}},jl={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},cb={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},FP={\u00C5:"A",\u00D0:"D",\u00DE:"o",\u00E5:"a",\u00F0:"d",\u00FE:"o",\u0410:"A",\u0411:"B",\u0412:"B",\u0413:"F",\u0414:"A",\u0415:"E",\u0416:"K",\u0417:"3",\u0418:"N",\u0419:"N",\u041A:"K",\u041B:"N",\u041C:"M",\u041D:"H",\u041E:"O",\u041F:"N",\u0420:"P",\u0421:"C",\u0422:"T",\u0423:"y",\u0424:"O",\u0425:"X",\u0426:"U",\u0427:"h",\u0428:"W",\u0429:"W",\u042A:"B",\u042B:"X",\u042C:"B",\u042D:"3",\u042E:"X",\u042F:"R",\u0430:"a",\u0431:"b",\u0432:"a",\u0433:"r",\u0434:"y",\u0435:"e",\u0436:"m",\u0437:"e",\u0438:"n",\u0439:"n",\u043A:"n",\u043B:"n",\u043C:"m",\u043D:"n",\u043E:"o",\u043F:"n",\u0440:"p",\u0441:"c",\u0442:"o",\u0443:"y",\u0444:"b",\u0445:"x",\u0446:"n",\u0447:"n",\u0448:"w",\u0449:"w",\u044A:"a",\u044B:"m",\u044C:"a",\u044D:"e",\u044E:"m",\u044F:"r"};UE={};O1e=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],zP=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],$P=function(e,r){return r.size<2?e:O1e[e-1][r.size-1]},Tb=class t{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||t.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=zP[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var n in e)e.hasOwnProperty(n)&&(r[n]=e[n]);return new t(r)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:$P(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:zP[e-1]})}havingBaseStyle(e){e=e||this.style.text();var r=$P(t.BASESIZE,e);return this.size===r&&this.textSize===t.BASESIZE&&this.style===e?this:this.extend({style:e,size:r})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==t.BASESIZE?["sizing","reset-size"+this.size,"size"+t.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=D1e(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}};Tb.BASESIZE=6;tS={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},P1e={ex:!0,em:!0,mu:!0},mB=function(e){return typeof e!="string"&&(e=e.unit),e in tS||e in P1e||e==="ex"},Wn=function(e,r){var n;if(e.unit in tS)n=tS[e.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(e.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var i;if(r.style.isTight()?i=r.havingStyle(r.style.text()):i=r,e.unit==="ex")n=i.fontMetrics().xHeight;else if(e.unit==="em")n=i.fontMetrics().quad;else throw new nt("Invalid unit: '"+e.unit+"'");i!==r&&(n*=i.sizeMultiplier/r.sizeMultiplier)}return Math.min(e.number*n,r.maxSize)},ut=function(e){return+e.toFixed(4)+"em"},lh=function(e){return e.filter(r=>r).join(" ")},vB=function(e,r,n){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var i=r.getColor();i&&(this.style.color=i)}},yB=function(e){var r=document.createElement(e);r.className=lh(this.classes);for(var n in this.style)this.style.hasOwnProperty(n)&&(r.style[n]=this.style[n]);for(var i in this.attributes)this.attributes.hasOwnProperty(i)&&r.setAttribute(i,this.attributes[i]);for(var a=0;a",r},Of=class{constructor(e,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,vB.call(this,e,n,i),this.children=r||[]}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return qt.contains(this.classes,e)}toNode(){return yB.call(this,"span")}toMarkup(){return xB.call(this,"span")}},I1=class{constructor(e,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,vB.call(this,r,i),this.children=n||[],this.setAttribute("href",e)}setAttribute(e,r){this.attributes[e]=r}hasClass(e){return qt.contains(this.classes,e)}toNode(){return yB.call(this,"a")}toMarkup(){return xB.call(this,"a")}},rS=class{constructor(e,r,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=e,this.classes=["mord"],this.style=n}hasClass(e){return qt.contains(this.classes,e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var r in this.style)this.style.hasOwnProperty(r)&&(e.style[r]=this.style[r]);return e}toMarkup(){var e=''+qt.escape(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=ut(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=lh(this.classes));for(var n in this.style)this.style.hasOwnProperty(n)&&(r=r||document.createElement("span"),r.style[n]=this.style[n]);return r?(r.appendChild(e),r):e}toMarkup(){var e=!1,r="0&&(n+="margin-right:"+this.italic+"em;");for(var i in this.style)this.style.hasOwnProperty(i)&&(n+=qt.hyphenate(i)+":"+this.style[i]+";");n&&(e=!0,r+=' style="'+qt.escape(n)+'"');var a=qt.escape(this.text);return e?(r+=">",r+=a,r+="",r):a}},nl=class{constructor(e,r){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=r||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"svg");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);for(var i=0;i':''}},M1=class{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",r=document.createElementNS(e,"line");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var e="","\\gt",!0);G(V,ne,be,"\u2208","\\in",!0);G(V,ne,be,"\uE020","\\@not");G(V,ne,be,"\u2282","\\subset",!0);G(V,ne,be,"\u2283","\\supset",!0);G(V,ne,be,"\u2286","\\subseteq",!0);G(V,ne,be,"\u2287","\\supseteq",!0);G(V,ve,be,"\u2288","\\nsubseteq",!0);G(V,ve,be,"\u2289","\\nsupseteq",!0);G(V,ne,be,"\u22A8","\\models");G(V,ne,be,"\u2190","\\leftarrow",!0);G(V,ne,be,"\u2264","\\le");G(V,ne,be,"\u2264","\\leq",!0);G(V,ne,be,"<","\\lt",!0);G(V,ne,be,"\u2192","\\rightarrow",!0);G(V,ne,be,"\u2192","\\to");G(V,ve,be,"\u2271","\\ngeq",!0);G(V,ve,be,"\u2270","\\nleq",!0);G(V,ne,ru,"\xA0","\\ ");G(V,ne,ru,"\xA0","\\space");G(V,ne,ru,"\xA0","\\nobreakspace");G(Je,ne,ru,"\xA0","\\ ");G(Je,ne,ru,"\xA0"," ");G(Je,ne,ru,"\xA0","\\space");G(Je,ne,ru,"\xA0","\\nobreakspace");G(V,ne,ru,null,"\\nobreak");G(V,ne,ru,null,"\\allowbreak");G(V,ne,Rb,",",",");G(V,ne,Rb,";",";");G(V,ve,Tt,"\u22BC","\\barwedge",!0);G(V,ve,Tt,"\u22BB","\\veebar",!0);G(V,ne,Tt,"\u2299","\\odot",!0);G(V,ne,Tt,"\u2295","\\oplus",!0);G(V,ne,Tt,"\u2297","\\otimes",!0);G(V,ne,Se,"\u2202","\\partial",!0);G(V,ne,Tt,"\u2298","\\oslash",!0);G(V,ve,Tt,"\u229A","\\circledcirc",!0);G(V,ve,Tt,"\u22A1","\\boxdot",!0);G(V,ne,Tt,"\u25B3","\\bigtriangleup");G(V,ne,Tt,"\u25BD","\\bigtriangledown");G(V,ne,Tt,"\u2020","\\dagger");G(V,ne,Tt,"\u22C4","\\diamond");G(V,ne,Tt,"\u22C6","\\star");G(V,ne,Tt,"\u25C3","\\triangleleft");G(V,ne,Tt,"\u25B9","\\triangleright");G(V,ne,Us,"{","\\{");G(Je,ne,Se,"{","\\{");G(Je,ne,Se,"{","\\textbraceleft");G(V,ne,Va,"}","\\}");G(Je,ne,Se,"}","\\}");G(Je,ne,Se,"}","\\textbraceright");G(V,ne,Us,"{","\\lbrace");G(V,ne,Va,"}","\\rbrace");G(V,ne,Us,"[","\\lbrack",!0);G(Je,ne,Se,"[","\\lbrack",!0);G(V,ne,Va,"]","\\rbrack",!0);G(Je,ne,Se,"]","\\rbrack",!0);G(V,ne,Us,"(","\\lparen",!0);G(V,ne,Va,")","\\rparen",!0);G(Je,ne,Se,"<","\\textless",!0);G(Je,ne,Se,">","\\textgreater",!0);G(V,ne,Us,"\u230A","\\lfloor",!0);G(V,ne,Va,"\u230B","\\rfloor",!0);G(V,ne,Us,"\u2308","\\lceil",!0);G(V,ne,Va,"\u2309","\\rceil",!0);G(V,ne,Se,"\\","\\backslash");G(V,ne,Se,"\u2223","|");G(V,ne,Se,"\u2223","\\vert");G(Je,ne,Se,"|","\\textbar",!0);G(V,ne,Se,"\u2225","\\|");G(V,ne,Se,"\u2225","\\Vert");G(Je,ne,Se,"\u2225","\\textbardbl");G(Je,ne,Se,"~","\\textasciitilde");G(Je,ne,Se,"\\","\\textbackslash");G(Je,ne,Se,"^","\\textasciicircum");G(V,ne,be,"\u2191","\\uparrow",!0);G(V,ne,be,"\u21D1","\\Uparrow",!0);G(V,ne,be,"\u2193","\\downarrow",!0);G(V,ne,be,"\u21D3","\\Downarrow",!0);G(V,ne,be,"\u2195","\\updownarrow",!0);G(V,ne,be,"\u21D5","\\Updownarrow",!0);G(V,ne,pi,"\u2210","\\coprod");G(V,ne,pi,"\u22C1","\\bigvee");G(V,ne,pi,"\u22C0","\\bigwedge");G(V,ne,pi,"\u2A04","\\biguplus");G(V,ne,pi,"\u22C2","\\bigcap");G(V,ne,pi,"\u22C3","\\bigcup");G(V,ne,pi,"\u222B","\\int");G(V,ne,pi,"\u222B","\\intop");G(V,ne,pi,"\u222C","\\iint");G(V,ne,pi,"\u222D","\\iiint");G(V,ne,pi,"\u220F","\\prod");G(V,ne,pi,"\u2211","\\sum");G(V,ne,pi,"\u2A02","\\bigotimes");G(V,ne,pi,"\u2A01","\\bigoplus");G(V,ne,pi,"\u2A00","\\bigodot");G(V,ne,pi,"\u222E","\\oint");G(V,ne,pi,"\u222F","\\oiint");G(V,ne,pi,"\u2230","\\oiiint");G(V,ne,pi,"\u2A06","\\bigsqcup");G(V,ne,pi,"\u222B","\\smallint");G(Je,ne,j0,"\u2026","\\textellipsis");G(V,ne,j0,"\u2026","\\mathellipsis");G(Je,ne,j0,"\u2026","\\ldots",!0);G(V,ne,j0,"\u2026","\\ldots",!0);G(V,ne,j0,"\u22EF","\\@cdots",!0);G(V,ne,j0,"\u22F1","\\ddots",!0);G(V,ne,Se,"\u22EE","\\varvdots");G(V,ne,Mn,"\u02CA","\\acute");G(V,ne,Mn,"\u02CB","\\grave");G(V,ne,Mn,"\xA8","\\ddot");G(V,ne,Mn,"~","\\tilde");G(V,ne,Mn,"\u02C9","\\bar");G(V,ne,Mn,"\u02D8","\\breve");G(V,ne,Mn,"\u02C7","\\check");G(V,ne,Mn,"^","\\hat");G(V,ne,Mn,"\u20D7","\\vec");G(V,ne,Mn,"\u02D9","\\dot");G(V,ne,Mn,"\u02DA","\\mathring");G(V,ne,Yt,"\uE131","\\@imath");G(V,ne,Yt,"\uE237","\\@jmath");G(V,ne,Se,"\u0131","\u0131");G(V,ne,Se,"\u0237","\u0237");G(Je,ne,Se,"\u0131","\\i",!0);G(Je,ne,Se,"\u0237","\\j",!0);G(Je,ne,Se,"\xDF","\\ss",!0);G(Je,ne,Se,"\xE6","\\ae",!0);G(Je,ne,Se,"\u0153","\\oe",!0);G(Je,ne,Se,"\xF8","\\o",!0);G(Je,ne,Se,"\xC6","\\AE",!0);G(Je,ne,Se,"\u0152","\\OE",!0);G(Je,ne,Se,"\xD8","\\O",!0);G(Je,ne,Mn,"\u02CA","\\'");G(Je,ne,Mn,"\u02CB","\\`");G(Je,ne,Mn,"\u02C6","\\^");G(Je,ne,Mn,"\u02DC","\\~");G(Je,ne,Mn,"\u02C9","\\=");G(Je,ne,Mn,"\u02D8","\\u");G(Je,ne,Mn,"\u02D9","\\.");G(Je,ne,Mn,"\xB8","\\c");G(Je,ne,Mn,"\u02DA","\\r");G(Je,ne,Mn,"\u02C7","\\v");G(Je,ne,Mn,"\xA8",'\\"');G(Je,ne,Mn,"\u02DD","\\H");G(Je,ne,Mn,"\u25EF","\\textcircled");bB={"--":!0,"---":!0,"``":!0,"''":!0};G(Je,ne,Se,"\u2013","--",!0);G(Je,ne,Se,"\u2013","\\textendash");G(Je,ne,Se,"\u2014","---",!0);G(Je,ne,Se,"\u2014","\\textemdash");G(Je,ne,Se,"\u2018","`",!0);G(Je,ne,Se,"\u2018","\\textquoteleft");G(Je,ne,Se,"\u2019","'",!0);G(Je,ne,Se,"\u2019","\\textquoteright");G(Je,ne,Se,"\u201C","``",!0);G(Je,ne,Se,"\u201C","\\textquotedblleft");G(Je,ne,Se,"\u201D","''",!0);G(Je,ne,Se,"\u201D","\\textquotedblright");G(V,ne,Se,"\xB0","\\degree",!0);G(Je,ne,Se,"\xB0","\\degree");G(Je,ne,Se,"\xB0","\\textdegree",!0);G(V,ne,Se,"\xA3","\\pounds");G(V,ne,Se,"\xA3","\\mathsterling",!0);G(Je,ne,Se,"\xA3","\\pounds");G(Je,ne,Se,"\xA3","\\textsterling",!0);G(V,ve,Se,"\u2720","\\maltese");G(Je,ve,Se,"\u2720","\\maltese");UP='0123456789/@."';for(ub=0;ub0)return rl(a,u,i,r,s.concat(h));if(l){var f,d;if(l==="boldsymbol"){var p=V1e(a,i,r,s,n);f=p.fontName,d=[p.fontClass]}else o?(f=TB[l].fontName,d=[l]):(f=gb(l,r.fontWeight,r.fontShape),d=[l,r.fontWeight,r.fontShape]);if(Nb(a,f,i).metrics)return rl(a,f,i,r,s.concat(d));if(bB.hasOwnProperty(a)&&f.slice(0,10)==="Typewriter"){for(var g=[],m=0;m{if(lh(t.classes)!==lh(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var r=t.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n in t.style)if(t.style.hasOwnProperty(n)&&t.style[n]!==e.style[n])return!1;for(var i in e.style)if(e.style.hasOwnProperty(i)&&t.style[i]!==e.style[i])return!1;return!0},q1e=t=>{for(var e=0;er&&(r=s.height),s.depth>n&&(n=s.depth),s.maxFontSize>i&&(i=s.maxFontSize)}e.height=r,e.depth=n,e.maxFontSize=i},cs=function(e,r,n,i){var a=new Of(e,r,n,i);return pS(a),a},wB=(t,e,r,n)=>new Of(t,e,r,n),Y1e=function(e,r,n){var i=cs([e],[],r);return i.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),i.style.borderBottomWidth=ut(i.height),i.maxFontSize=1,i},X1e=function(e,r,n,i){var a=new I1(e,r,n,i);return pS(a),a},kB=function(e){var r=new Df(e);return pS(r),r},j1e=function(e,r){return e instanceof Df?cs([],[e],r):e},K1e=function(e){if(e.positionType==="individualShift"){for(var r=e.children,n=[r[0]],i=-r[0].shift-r[0].elem.depth,a=i,s=1;s{var r=cs(["mspace"],[],e),n=Wn(t,e);return r.style.marginRight=ut(n),r},gb=function(e,r,n){var i="";switch(e){case"amsrm":i="AMS";break;case"textrm":i="Main";break;case"textsf":i="SansSerif";break;case"texttt":i="Typewriter";break;default:i=e}var a;return r==="textbf"&&n==="textit"?a="BoldItalic":r==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",i+"-"+a},TB={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},EB={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},J1e=function(e,r){var[n,i,a]=EB[e],s=new Kl(n),o=new nl([s],{width:ut(i),height:ut(a),style:"width:"+ut(i),viewBox:"0 0 "+1e3*i+" "+1e3*a,preserveAspectRatio:"xMinYMin"}),l=wB(["overlay"],[o],r);return l.height=a,l.style.height=ut(a),l.style.width=ut(i),l},Be={fontMap:TB,makeSymbol:rl,mathsym:U1e,makeSpan:cs,makeSvgSpan:wB,makeLineSpan:Y1e,makeAnchor:X1e,makeFragment:kB,wrapFragment:j1e,makeVList:Z1e,makeOrd:W1e,makeGlue:Q1e,staticSvg:J1e,svgData:EB,tryCombineChars:q1e},Vn={number:3,unit:"mu"},If={number:4,unit:"mu"},Zc={number:5,unit:"mu"},eve={mord:{mop:Vn,mbin:If,mrel:Zc,minner:Vn},mop:{mord:Vn,mop:Vn,mrel:Zc,minner:Vn},mbin:{mord:If,mop:If,mopen:If,minner:If},mrel:{mord:Zc,mop:Zc,mopen:Zc,minner:Zc},mopen:{},mclose:{mop:Vn,mbin:If,mrel:Zc,minner:Vn},mpunct:{mord:Vn,mop:Vn,mrel:Zc,mopen:Vn,mclose:Vn,mpunct:Vn,minner:Vn},minner:{mord:Vn,mop:Vn,mbin:If,mrel:Zc,mopen:Vn,mpunct:Vn,minner:Vn}},tve={mord:{mop:Vn},mop:{mord:Vn,mop:Vn},mbin:{},mrel:{},mopen:{},mclose:{mop:Vn},mpunct:{},minner:{mop:Vn}},SB={},Sb={},Cb={};Ab=function(e){return e.type==="ordgroup"&&e.body.length===1?e.body[0]:e},si=function(e){return e.type==="ordgroup"?e.body:[e]},eu=Be.makeSpan,rve=["leftmost","mbin","mopen","mrel","mop","mpunct"],nve=["rightmost","mrel","mclose","mpunct"],ive={display:Xt.DISPLAY,text:Xt.TEXT,script:Xt.SCRIPT,scriptscript:Xt.SCRIPTSCRIPT},ave={mord:"mord",mop:"mop",mbin:"mbin",mrel:"mrel",mopen:"mopen",mclose:"mclose",mpunct:"mpunct",minner:"minner"},Ti=function(e,r,n,i){i===void 0&&(i=[null,null]);for(var a=[],s=0;s{var y=m.classes[0],x=g.classes[0];y==="mbin"&&qt.contains(nve,x)?m.classes[0]="mord":x==="mbin"&&qt.contains(rve,y)&&(g.classes[0]="mord")},{node:f},d,p),HP(a,(g,m)=>{var y=iS(m),x=iS(g),b=y&&x?g.hasClass("mtight")?tve[y][x]:eve[y][x]:null;if(b)return Be.makeGlue(b,u)},{node:f},d,p),a},HP=function t(e,r,n,i,a){i&&e.push(i);for(var s=0;sd=>{e.splice(f+1,0,d),s++})(s)}i&&e.pop()},CB=function(e){return e instanceof Df||e instanceof I1||e instanceof Of&&e.hasClass("enclosing")?e:null},sve=function t(e,r){var n=CB(e);if(n){var i=n.children;if(i.length){if(r==="right")return t(i[i.length-1],"right");if(r==="left")return t(i[0],"left")}}return e},iS=function(e,r){return e?(r&&(e=sve(e,r)),ave[e.classes[0]]||null):null},D1=function(e,r){var n=["nulldelimiter"].concat(e.baseSizingClasses());return eu(r.concat(n))},Ar=function(e,r,n){if(!e)return eu();if(Sb[e.type]){var i=Sb[e.type](e,r);if(n&&r.size!==n.size){i=eu(r.sizingClasses(n),[i],r);var a=r.sizeMultiplier/n.sizeMultiplier;i.height*=a,i.depth*=a}return i}else throw new nt("Got group of unknown type: '"+e.type+"'")};us=class{constructor(e,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(e,r){this.attributes[e]=r}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&e.setAttribute(r,this.attributes[r]);this.classes.length>0&&(e.className=lh(this.classes));for(var n=0;n0&&(e+=' class ="'+qt.escape(lh(this.classes))+'"'),e+=">";for(var n=0;n",e}toText(){return this.children.map(e=>e.toText()).join("")}},Mf=class{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return qt.escape(this.toText())}toText(){return this.text}},sS=class{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character="\u200A":e>=.1666&&e<=.1667?this.character="\u2009":e>=.2222&&e<=.2223?this.character="\u2005":e>=.2777&&e<=.2778?this.character="\u2005\u200A":e>=-.05556&&e<=-.05555?this.character="\u200A\u2063":e>=-.1667&&e<=-.1666?this.character="\u2009\u2063":e>=-.2223&&e<=-.2222?this.character="\u205F\u2063":e>=-.2778&&e<=-.2777?this.character="\u2005\u2063":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",ut(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},rt={MathNode:us,TextNode:Mf,SpaceNode:sS,newDocumentFragment:AB},yo=function(e,r,n){return wn[r][e]&&wn[r][e].replace&&e.charCodeAt(0)!==55349&&!(bB.hasOwnProperty(e)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(e=wn[r][e].replace),new rt.TextNode(e)},gS=function(e){return e.length===1?e[0]:new rt.MathNode("mrow",e)},mS=function(e,r){if(r.fontFamily==="texttt")return"monospace";if(r.fontFamily==="textsf")return r.fontShape==="textit"&&r.fontWeight==="textbf"?"sans-serif-bold-italic":r.fontShape==="textit"?"sans-serif-italic":r.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(r.fontShape==="textit"&&r.fontWeight==="textbf")return"bold-italic";if(r.fontShape==="textit")return"italic";if(r.fontWeight==="textbf")return"bold";var n=r.font;if(!n||n==="mathnormal")return null;var i=e.mode;if(n==="mathit")return"italic";if(n==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(n==="mathbf")return"bold";if(n==="mathbb")return"double-struck";if(n==="mathfrak")return"fraktur";if(n==="mathscr"||n==="mathcal")return"script";if(n==="mathsf")return"sans-serif";if(n==="mathtt")return"monospace";var a=e.text;if(qt.contains(["\\imath","\\jmath"],a))return null;wn[i][a]&&wn[i][a].replace&&(a=wn[i][a].replace);var s=Be.fontMap[n].fontName;return dS(a,s,i)?Be.fontMap[n].variant:null},fs=function(e,r,n){if(e.length===1){var i=hn(e[0],r);return n&&i instanceof us&&i.type==="mo"&&(i.setAttribute("lspace","0em"),i.setAttribute("rspace","0em")),[i]}for(var a=[],s,o=0;o0&&(f.text=f.text.slice(0,1)+"\u0338"+f.text.slice(1),a.pop())}}}a.push(l),s=l}return a},ch=function(e,r,n){return gS(fs(e,r,n))},hn=function(e,r){if(!e)return new rt.MathNode("mrow");if(Cb[e.type]){var n=Cb[e.type](e,r);return n}else throw new nt("Got group of unknown type: '"+e.type+"'")};_B=function(e){return new Tb({style:e.displayMode?Xt.DISPLAY:Xt.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},LB=function(e,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),e=Be.makeSpan(n,[e])}return e},ove=function(e,r,n){var i=_B(n),a;if(n.output==="mathml")return qP(e,r,i,n.displayMode,!0);if(n.output==="html"){var s=aS(e,i);a=Be.makeSpan(["katex"],[s])}else{var o=qP(e,r,i,n.displayMode,!1),l=aS(e,i);a=Be.makeSpan(["katex"],[o,l])}return LB(a,n)},lve=function(e,r,n){var i=_B(n),a=aS(e,i),s=Be.makeSpan(["katex"],[a]);return LB(s,n)},cve={widehat:"^",widecheck:"\u02C7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23DF",overbrace:"\u23DE",overgroup:"\u23E0",undergroup:"\u23E1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21D2",xRightarrow:"\u21D2",overleftharpoon:"\u21BC",xleftharpoonup:"\u21BC",overrightharpoon:"\u21C0",xrightharpoonup:"\u21C0",xLeftarrow:"\u21D0",xLeftrightarrow:"\u21D4",xhookleftarrow:"\u21A9",xhookrightarrow:"\u21AA",xmapsto:"\u21A6",xrightharpoondown:"\u21C1",xleftharpoondown:"\u21BD",xrightleftharpoons:"\u21CC",xleftrightharpoons:"\u21CB",xtwoheadleftarrow:"\u219E",xtwoheadrightarrow:"\u21A0",xlongequal:"=",xtofrom:"\u21C4",xrightleftarrows:"\u21C4",xrightequilibrium:"\u21CC",xleftequilibrium:"\u21CB","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},uve=function(e){var r=new rt.MathNode("mo",[new rt.TextNode(cve[e.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},hve={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},fve=function(e){return e.type==="ordgroup"?e.body.length:1},dve=function(e,r){function n(){var o=4e5,l=e.label.slice(1);if(qt.contains(["widehat","widecheck","widetilde","utilde"],l)){var u=e,h=fve(u.base),f,d,p;if(h>5)l==="widehat"||l==="widecheck"?(f=420,o=2364,p=.42,d=l+"4"):(f=312,o=2340,p=.34,d="tilde4");else{var g=[1,1,2,2,3,3][h];l==="widehat"||l==="widecheck"?(o=[0,1062,2364,2364,2364][g],f=[0,239,300,360,420][g],p=[0,.24,.3,.3,.36,.42][g],d=l+g):(o=[0,600,1033,2339,2340][g],f=[0,260,286,306,312][g],p=[0,.26,.286,.3,.306,.34][g],d="tilde"+g)}var m=new Kl(d),y=new nl([m],{width:"100%",height:ut(p),viewBox:"0 0 "+o+" "+f,preserveAspectRatio:"none"});return{span:Be.makeSvgSpan([],[y],r),minWidth:0,height:p}}else{var x=[],b=hve[l],[w,_,k]=b,E=k/1e3,L=w.length,S,C;if(L===1){var M=b[3];S=["hide-tail"],C=[M]}else if(L===2)S=["halfarrow-left","halfarrow-right"],C=["xMinYMin","xMaxYMin"];else if(L===3)S=["brace-left","brace-center","brace-right"],C=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support `+L+" children.");for(var R=0;R0&&(i.style.minWidth=ut(a)),i},pve=function(e,r,n,i,a){var s,o=e.height+e.depth+n+i;if(/fbox|color|angl/.test(r)){if(s=Be.makeSpan(["stretchy",r],[],a),r==="fbox"){var l=a.color&&a.getColor();l&&(s.style.borderColor=l)}}else{var u=[];/^[bx]cancel$/.test(r)&&u.push(new M1({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&u.push(new M1({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new nl(u,{width:"100%",height:ut(o)});s=Be.makeSvgSpan([],[h],a)}return s.height=o,s.style.height=ut(o),s},tu={encloseSpan:pve,mathMLnode:uve,svgSpan:dve};yS=(t,e)=>{var r,n,i;t&&t.type==="supsub"?(n=hr(t.base,"accent"),r=n.base,t.base=r,i=F1e(Ar(t,e)),t.base=n):(n=hr(t,"accent"),r=n.base);var a=Ar(r,e.havingCrampedStyle()),s=n.isShifty&&qt.isCharacterBox(r),o=0;if(s){var l=qt.getBaseElem(r),u=Ar(l,e.havingCrampedStyle());o=GP(u).skew}var h=n.label==="\\c",f=h?a.height+a.depth:Math.min(a.height,e.fontMetrics().xHeight),d;if(n.isStretchy)d=tu.svgSpan(n,e),d=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:d,wrapperClasses:["svg-align"],wrapperStyle:o>0?{width:"calc(100% - "+ut(2*o)+")",marginLeft:ut(2*o)}:void 0}]},e);else{var p,g;n.label==="\\vec"?(p=Be.staticSvg("vec",e),g=Be.svgData.vec[1]):(p=Be.makeOrd({mode:n.mode,text:n.label},e,"textord"),p=GP(p),p.italic=0,g=p.width,h&&(f+=p.depth)),d=Be.makeSpan(["accent-body"],[p]);var m=n.label==="\\textcircled";m&&(d.classes.push("accent-full"),f=a.height);var y=o;m||(y-=g/2),d.style.left=ut(y),n.label==="\\textcircled"&&(d.style.top=".2em"),d=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:-f},{type:"elem",elem:d}]},e)}var x=Be.makeSpan(["mord","accent"],[d],e);return i?(i.children[0]=x,i.height=Math.max(x.height,i.height),i.classes[0]="mord",i):x},RB=(t,e)=>{var r=t.isStretchy?tu.mathMLnode(t.label):new rt.MathNode("mo",[yo(t.label,t.mode)]),n=new rt.MathNode("mover",[hn(t.base,e),r]);return n.setAttribute("accent","true"),n},gve=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));vt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(t,e)=>{var r=Ab(e[0]),n=!gve.test(t.funcName),i=!n||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:n,isShifty:i,base:r}},htmlBuilder:yS,mathmlBuilder:RB});vt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(t,e)=>{var r=e[0],n=t.parser.mode;return n==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:yS,mathmlBuilder:RB});vt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"accentUnder",mode:r.mode,label:n,base:i}},htmlBuilder:(t,e)=>{var r=Ar(t.base,e),n=tu.svgSpan(t,e),i=t.label==="\\utilde"?.12:0,a=Be.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]},e);return Be.makeSpan(["mord","accentunder"],[a],e)},mathmlBuilder:(t,e)=>{var r=tu.mathMLnode(t.label),n=new rt.MathNode("munder",[hn(t.base,e),r]);return n.setAttribute("accentunder","true"),n}});vb=t=>{var e=new rt.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};vt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n,funcName:i}=t;return{type:"xArrow",mode:n.mode,label:i,body:e[0],below:r[0]}},htmlBuilder(t,e){var r=e.style,n=e.havingStyle(r.sup()),i=Be.wrapFragment(Ar(t.body,n,e),e),a=t.label.slice(0,2)==="\\x"?"x":"cd";i.classes.push(a+"-arrow-pad");var s;t.below&&(n=e.havingStyle(r.sub()),s=Be.wrapFragment(Ar(t.below,n,e),e),s.classes.push(a+"-arrow-pad"));var o=tu.svgSpan(t,e),l=-e.fontMetrics().axisHeight+.5*o.height,u=-e.fontMetrics().axisHeight-.5*o.height-.111;(i.depth>.25||t.label==="\\xleftequilibrium")&&(u-=i.depth);var h;if(s){var f=-e.fontMetrics().axisHeight+s.height+.5*o.height+.111;h=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:u},{type:"elem",elem:o,shift:l},{type:"elem",elem:s,shift:f}]},e)}else h=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:u},{type:"elem",elem:o,shift:l}]},e);return h.children[0].children[0].children[1].classes.push("svg-align"),Be.makeSpan(["mrel","x-arrow"],[h],e)},mathmlBuilder(t,e){var r=tu.mathMLnode(t.label);r.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(t.body){var i=vb(hn(t.body,e));if(t.below){var a=vb(hn(t.below,e));n=new rt.MathNode("munderover",[r,a,i])}else n=new rt.MathNode("mover",[r,i])}else if(t.below){var s=vb(hn(t.below,e));n=new rt.MathNode("munder",[r,s])}else n=vb(),n=new rt.MathNode("mover",[r,n]);return n}});mve=Be.makeSpan;vt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:si(i),isCharacterBox:qt.isCharacterBox(i)}},htmlBuilder:NB,mathmlBuilder:IB});Mb=t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};vt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:r}=t;return{type:"mclass",mode:r.mode,mclass:Mb(e[0]),body:si(e[1]),isCharacterBox:qt.isCharacterBox(e[1])}}});vt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:r,funcName:n}=t,i=e[1],a=e[0],s;n!=="\\stackrel"?s=Mb(i):s="mrel";var o={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:si(i)},l={type:"supsub",mode:a.mode,base:o,sup:n==="\\underset"?null:a,sub:n==="\\underset"?a:null};return{type:"mclass",mode:r.mode,mclass:s,body:[l],isCharacterBox:qt.isCharacterBox(l)}},htmlBuilder:NB,mathmlBuilder:IB});vt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"pmb",mode:r.mode,mclass:Mb(e[0]),body:si(e[0])}},htmlBuilder(t,e){var r=Ti(t.body,e,!0),n=Be.makeSpan([t.mclass],r,e);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(t,e){var r=fs(t.body,e),n=new rt.MathNode("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});vve={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},YP=()=>({type:"styling",body:[],mode:"math",style:"display"}),XP=t=>t.type==="textord"&&t.text==="@",yve=(t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e;vt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:e[0]}},htmlBuilder(t,e){var r=e.havingStyle(e.style.sup()),n=Be.wrapFragment(Ar(t.label,r,e),e);return n.classes.push("cd-label-"+t.side),n.style.bottom=ut(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(t,e){var r=new rt.MathNode("mrow",[hn(t.label,e)]);return r=new rt.MathNode("mpadded",[r]),r.setAttribute("width","0"),t.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new rt.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});vt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:r}=t;return{type:"cdlabelparent",mode:r.mode,fragment:e[0]}},htmlBuilder(t,e){var r=Be.wrapFragment(Ar(t.fragment,e),e);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(t,e){return new rt.MathNode("mrow",[hn(t.fragment,e)])}});vt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:r}=t,n=hr(e[0],"ordgroup"),i=n.body,a="",s=0;s=1114111)throw new nt("\\@char with invalid code point "+a);return l<=65535?u=String.fromCharCode(l):(l-=65536,u=String.fromCharCode((l>>10)+55296,(l&1023)+56320)),{type:"textord",mode:r.mode,text:u}}});MB=(t,e)=>{var r=Ti(t.body,e.withColor(t.color),!1);return Be.makeFragment(r)},DB=(t,e)=>{var r=fs(t.body,e.withColor(t.color)),n=new rt.MathNode("mstyle",r);return n.setAttribute("mathcolor",t.color),n};vt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:r}=t,n=hr(e[0],"color-token").color,i=e[1];return{type:"color",mode:r.mode,color:n,body:si(i)}},htmlBuilder:MB,mathmlBuilder:DB});vt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:r,breakOnTokenText:n}=t,i=hr(e[0],"color-token").color;r.gullet.macros.set("\\current@color",i);var a=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:i,body:a}},htmlBuilder:MB,mathmlBuilder:DB});vt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,r){var{parser:n}=t,i=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,a=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:a,size:i&&hr(i,"size").value}},htmlBuilder(t,e){var r=Be.makeSpan(["mspace"],[],e);return t.newLine&&(r.classes.push("newline"),t.size&&(r.style.marginTop=ut(Wn(t.size,e)))),r},mathmlBuilder(t,e){var r=new rt.MathNode("mspace");return t.newLine&&(r.setAttribute("linebreak","newline"),t.size&&r.setAttribute("height",ut(Wn(t.size,e)))),r}});oS={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},OB=t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new nt("Expected a control sequence",t);return e},wve=t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},PB=(t,e,r,n)=>{var i=t.gullet.macros.get(r.text);i==null&&(r.noexpand=!0,i={tokens:[r],numArgs:0,unexpandable:!t.gullet.isExpandable(r.text)}),t.gullet.macros.set(e,i,n)};vt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:r}=t;e.consumeSpaces();var n=e.fetch();if(oS[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=oS[n.text]),hr(e.parseFunction(),"internal");throw new nt("Invalid token after macro prefix",n)}});vt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=e.gullet.popToken(),i=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new nt("Expected a control sequence",n);for(var a=0,s,o=[[]];e.gullet.future().text!=="{";)if(n=e.gullet.popToken(),n.text==="#"){if(e.gullet.future().text==="{"){s=e.gullet.future(),o[a].push("{");break}if(n=e.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new nt('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==a+1)throw new nt('Argument number "'+n.text+'" out of order');a++,o.push([])}else{if(n.text==="EOF")throw new nt("Expected a macro definition");o[a].push(n.text)}var{tokens:l}=e.gullet.consumeArg();return s&&l.unshift(s),(r==="\\edef"||r==="\\xdef")&&(l=e.gullet.expandTokens(l),l.reverse()),e.gullet.macros.set(i,{tokens:l,numArgs:a,delimiters:o},r===oS[r]),{type:"internal",mode:e.mode}}});vt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=OB(e.gullet.popToken());e.gullet.consumeSpaces();var i=wve(e);return PB(e,n,i,r==="\\\\globallet"),{type:"internal",mode:e.mode}}});vt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:r}=t,n=OB(e.gullet.popToken()),i=e.gullet.popToken(),a=e.gullet.popToken();return PB(e,n,a,r==="\\\\globalfuture"),e.gullet.pushToken(a),e.gullet.pushToken(i),{type:"internal",mode:e.mode}}});_1=function(e,r,n){var i=wn.math[e]&&wn.math[e].replace,a=dS(i||e,r,n);if(!a)throw new Error("Unsupported symbol "+e+" and font size "+r+".");return a},xS=function(e,r,n,i){var a=n.havingBaseStyle(r),s=Be.makeSpan(i.concat(a.sizingClasses(n)),[e],n),o=a.sizeMultiplier/n.sizeMultiplier;return s.height*=o,s.depth*=o,s.maxFontSize=a.sizeMultiplier,s},BB=function(e,r,n){var i=r.havingBaseStyle(n),a=(1-r.sizeMultiplier/i.sizeMultiplier)*r.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=ut(a),e.height-=a,e.depth+=a},kve=function(e,r,n,i,a,s){var o=Be.makeSymbol(e,"Main-Regular",a,i),l=xS(o,r,i,s);return n&&BB(l,i,r),l},Tve=function(e,r,n,i){return Be.makeSymbol(e,"Size"+r+"-Regular",n,i)},FB=function(e,r,n,i,a,s){var o=Tve(e,r,a,i),l=xS(Be.makeSpan(["delimsizing","size"+r],[o],i),Xt.TEXT,i,s);return n&&BB(l,i,Xt.TEXT),l},HE=function(e,r,n){var i;r==="Size1-Regular"?i="delim-size1":i="delim-size4";var a=Be.makeSpan(["delimsizinginner",i],[Be.makeSpan([],[Be.makeSymbol(e,r,n)])]);return{type:"elem",elem:a}},qE=function(e,r,n){var i=jl["Size4-Regular"][e.charCodeAt(0)]?jl["Size4-Regular"][e.charCodeAt(0)][4]:jl["Size1-Regular"][e.charCodeAt(0)][4],a=new Kl("inner",N1e(e,Math.round(1e3*r))),s=new nl([a],{width:ut(i),height:ut(r),style:"width:"+ut(i),viewBox:"0 0 "+1e3*i+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),o=Be.makeSvgSpan([],[s],n);return o.height=r,o.style.height=ut(r),o.style.width=ut(i),{type:"elem",elem:o}},lS=.008,yb={type:"kern",size:-1*lS},Eve=["|","\\lvert","\\rvert","\\vert"],Sve=["\\|","\\lVert","\\rVert","\\Vert"],zB=function(e,r,n,i,a,s){var o,l,u,h,f="",d=0;o=u=h=e,l=null;var p="Size1-Regular";e==="\\uparrow"?u=h="\u23D0":e==="\\Uparrow"?u=h="\u2016":e==="\\downarrow"?o=u="\u23D0":e==="\\Downarrow"?o=u="\u2016":e==="\\updownarrow"?(o="\\uparrow",u="\u23D0",h="\\downarrow"):e==="\\Updownarrow"?(o="\\Uparrow",u="\u2016",h="\\Downarrow"):qt.contains(Eve,e)?(u="\u2223",f="vert",d=333):qt.contains(Sve,e)?(u="\u2225",f="doublevert",d=556):e==="["||e==="\\lbrack"?(o="\u23A1",u="\u23A2",h="\u23A3",p="Size4-Regular",f="lbrack",d=667):e==="]"||e==="\\rbrack"?(o="\u23A4",u="\u23A5",h="\u23A6",p="Size4-Regular",f="rbrack",d=667):e==="\\lfloor"||e==="\u230A"?(u=o="\u23A2",h="\u23A3",p="Size4-Regular",f="lfloor",d=667):e==="\\lceil"||e==="\u2308"?(o="\u23A1",u=h="\u23A2",p="Size4-Regular",f="lceil",d=667):e==="\\rfloor"||e==="\u230B"?(u=o="\u23A5",h="\u23A6",p="Size4-Regular",f="rfloor",d=667):e==="\\rceil"||e==="\u2309"?(o="\u23A4",u=h="\u23A5",p="Size4-Regular",f="rceil",d=667):e==="("||e==="\\lparen"?(o="\u239B",u="\u239C",h="\u239D",p="Size4-Regular",f="lparen",d=875):e===")"||e==="\\rparen"?(o="\u239E",u="\u239F",h="\u23A0",p="Size4-Regular",f="rparen",d=875):e==="\\{"||e==="\\lbrace"?(o="\u23A7",l="\u23A8",h="\u23A9",u="\u23AA",p="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(o="\u23AB",l="\u23AC",h="\u23AD",u="\u23AA",p="Size4-Regular"):e==="\\lgroup"||e==="\u27EE"?(o="\u23A7",h="\u23A9",u="\u23AA",p="Size4-Regular"):e==="\\rgroup"||e==="\u27EF"?(o="\u23AB",h="\u23AD",u="\u23AA",p="Size4-Regular"):e==="\\lmoustache"||e==="\u23B0"?(o="\u23A7",h="\u23AD",u="\u23AA",p="Size4-Regular"):(e==="\\rmoustache"||e==="\u23B1")&&(o="\u23AB",h="\u23A9",u="\u23AA",p="Size4-Regular");var g=_1(o,p,a),m=g.height+g.depth,y=_1(u,p,a),x=y.height+y.depth,b=_1(h,p,a),w=b.height+b.depth,_=0,k=1;if(l!==null){var E=_1(l,p,a);_=E.height+E.depth,k=2}var L=m+w+_,S=Math.max(0,Math.ceil((r-L)/(k*x))),C=L+S*k*x,M=i.fontMetrics().axisHeight;n&&(M*=i.sizeMultiplier);var R=C/2-M,T=[];if(f.length>0){var I=C-m-w,A=Math.round(C*1e3),D=I1e(f,Math.round(I*1e3)),N=new Kl(f,D),O=(d/1e3).toFixed(3)+"em",B=(A/1e3).toFixed(3)+"em",P=new nl([N],{width:O,height:B,viewBox:"0 0 "+d+" "+A}),$=Be.makeSvgSpan([],[P],i);$.height=A/1e3,$.style.width=O,$.style.height=B,T.push({type:"elem",elem:$})}else{if(T.push(HE(h,p,a)),T.push(yb),l===null){var z=C-m-w+2*lS;T.push(qE(u,z,i))}else{var H=(C-m-w-_)/2+2*lS;T.push(qE(u,H,i)),T.push(yb),T.push(HE(l,p,a)),T.push(yb),T.push(qE(u,H,i))}T.push(yb),T.push(HE(o,p,a))}var J=i.havingBaseStyle(Xt.TEXT),X=Be.makeVList({positionType:"bottom",positionData:R,children:T},J);return xS(Be.makeSpan(["delimsizing","mult"],[X],J),Xt.TEXT,i,s)},YE=80,XE=.08,jE=function(e,r,n,i,a){var s=R1e(e,i,n),o=new Kl(e,s),l=new nl([o],{width:"400em",height:ut(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return Be.makeSvgSpan(["hide-tail"],[l],a)},Cve=function(e,r){var n=r.havingBaseSizing(),i=VB("\\surd",e*n.sizeMultiplier,UB,n),a=n.sizeMultiplier,s=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),o,l=0,u=0,h=0,f;return i.type==="small"?(h=1e3+1e3*s+YE,e<1?a=1:e<1.4&&(a=.7),l=(1+s+XE)/a,u=(1+s)/a,o=jE("sqrtMain",l,h,s,r),o.style.minWidth="0.853em",f=.833/a):i.type==="large"?(h=(1e3+YE)*L1[i.size],u=(L1[i.size]+s)/a,l=(L1[i.size]+s+XE)/a,o=jE("sqrtSize"+i.size,l,h,s,r),o.style.minWidth="1.02em",f=1/a):(l=e+s+XE,u=e+s,h=Math.floor(1e3*e+s)+YE,o=jE("sqrtTall",l,h,s,r),o.style.minWidth="0.742em",f=1.056),o.height=u,o.style.height=ut(l),{span:o,advanceWidth:f,ruleWidth:(r.fontMetrics().sqrtRuleThickness+s)*a}},$B=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","\\surd"],Ave=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1"],GB=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],L1=[0,1.2,1.8,2.4,3],_ve=function(e,r,n,i,a){if(e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle"),qt.contains($B,e)||qt.contains(GB,e))return FB(e,r,!1,n,i,a);if(qt.contains(Ave,e))return zB(e,L1[r],!1,n,i,a);throw new nt("Illegal delimiter: '"+e+"'")},Lve=[{type:"small",style:Xt.SCRIPTSCRIPT},{type:"small",style:Xt.SCRIPT},{type:"small",style:Xt.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],Rve=[{type:"small",style:Xt.SCRIPTSCRIPT},{type:"small",style:Xt.SCRIPT},{type:"small",style:Xt.TEXT},{type:"stack"}],UB=[{type:"small",style:Xt.SCRIPTSCRIPT},{type:"small",style:Xt.SCRIPT},{type:"small",style:Xt.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],Nve=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},VB=function(e,r,n,i){for(var a=Math.min(2,3-i.style.size),s=a;sr)return n[s]}return n[n.length-1]},WB=function(e,r,n,i,a,s){e==="<"||e==="\\lt"||e==="\u27E8"?e="\\langle":(e===">"||e==="\\gt"||e==="\u27E9")&&(e="\\rangle");var o;qt.contains(GB,e)?o=Lve:qt.contains($B,e)?o=UB:o=Rve;var l=VB(e,r,o,i);return l.type==="small"?kve(e,l.style,n,i,a,s):l.type==="large"?FB(e,l.size,n,i,a,s):zB(e,r,n,i,a,s)},Ive=function(e,r,n,i,a,s){var o=i.fontMetrics().axisHeight*i.sizeMultiplier,l=901,u=5/i.fontMetrics().ptPerEm,h=Math.max(r-o,n+o),f=Math.max(h/500*l,2*h-u);return WB(e,f,!0,i,a,s)},Jc={sqrtImage:Cve,sizedDelim:_ve,sizeToMaxHeight:L1,customSizedDelim:WB,leftRightDelim:Ive},jP={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},Mve=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230A","\u230B","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27E8","\\rangle","\u27E9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27EE","\u27EF","\\lmoustache","\\rmoustache","\u23B0","\u23B1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];vt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,e)=>{var r=Db(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:jP[t.funcName].size,mclass:jP[t.funcName].mclass,delim:r.text}},htmlBuilder:(t,e)=>t.delim==="."?Be.makeSpan([t.mclass]):Jc.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),mathmlBuilder:t=>{var e=[];t.delim!=="."&&e.push(yo(t.delim,t.mode));var r=new rt.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=ut(Jc.sizeToMaxHeight[t.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}});vt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var r=t.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new nt("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:Db(e[0],t).text,color:r}}});vt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var r=Db(e[0],t),n=t.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=hr(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim,rightColor:a.color}},htmlBuilder:(t,e)=>{KP(t);for(var r=Ti(t.body,e,!0,["mopen","mclose"]),n=0,i=0,a=!1,s=0;s{KP(t);var r=fs(t.body,e);if(t.left!=="."){var n=new rt.MathNode("mo",[yo(t.left,t.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(t.right!=="."){var i=new rt.MathNode("mo",[yo(t.right,t.mode)]);i.setAttribute("fence","true"),t.rightColor&&i.setAttribute("mathcolor",t.rightColor),r.push(i)}return gS(r)}});vt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var r=Db(e[0],t);if(!t.parser.leftrightDepth)throw new nt("\\middle without preceding \\left",r);return{type:"middle",mode:t.parser.mode,delim:r.text}},htmlBuilder:(t,e)=>{var r;if(t.delim===".")r=D1(e,[]);else{r=Jc.sizedDelim(t.delim,1,e,t.mode,[]);var n={delim:t.delim,options:e};r.isMiddle=n}return r},mathmlBuilder:(t,e)=>{var r=t.delim==="\\vert"||t.delim==="|"?yo("|","text"):yo(t.delim,t.mode),n=new rt.MathNode("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});bS=(t,e)=>{var r=Be.wrapFragment(Ar(t.body,e),e),n=t.label.slice(1),i=e.sizeMultiplier,a,s=0,o=qt.isCharacterBox(t.body);if(n==="sout")a=Be.makeSpan(["stretchy","sout"]),a.height=e.fontMetrics().defaultRuleThickness/i,s=-.5*e.fontMetrics().xHeight;else if(n==="phase"){var l=Wn({number:.6,unit:"pt"},e),u=Wn({number:.35,unit:"ex"},e),h=e.havingBaseSizing();i=i/h.sizeMultiplier;var f=r.height+r.depth+l+u;r.style.paddingLeft=ut(f/2+l);var d=Math.floor(1e3*f*i),p=_1e(d),g=new nl([new Kl("phase",p)],{width:"400em",height:ut(d/1e3),viewBox:"0 0 400000 "+d,preserveAspectRatio:"xMinYMin slice"});a=Be.makeSvgSpan(["hide-tail"],[g],e),a.style.height=ut(f),s=r.depth+l+u}else{/cancel/.test(n)?o||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var m=0,y=0,x=0;/box/.test(n)?(x=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),m=e.fontMetrics().fboxsep+(n==="colorbox"?0:x),y=m):n==="angl"?(x=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),m=4*x,y=Math.max(0,.25-r.depth)):(m=o?.2:0,y=m),a=tu.encloseSpan(r,n,m,y,e),/fbox|boxed|fcolorbox/.test(n)?(a.style.borderStyle="solid",a.style.borderWidth=ut(x)):n==="angl"&&x!==.049&&(a.style.borderTopWidth=ut(x),a.style.borderRightWidth=ut(x)),s=r.depth+y,t.backgroundColor&&(a.style.backgroundColor=t.backgroundColor,t.borderColor&&(a.style.borderColor=t.borderColor))}var b;if(t.backgroundColor)b=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:s},{type:"elem",elem:r,shift:0}]},e);else{var w=/cancel|phase/.test(n)?["svg-align"]:[];b=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:a,shift:s,wrapperClasses:w}]},e)}return/cancel/.test(n)&&(b.height=r.height,b.depth=r.depth),/cancel/.test(n)&&!o?Be.makeSpan(["mord","cancel-lap"],[b],e):Be.makeSpan(["mord"],[b],e)},wS=(t,e)=>{var r=0,n=new rt.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[hn(t.body,e)]);switch(t.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),t.label==="\\fcolorbox"){var i=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);n.setAttribute("style","border: "+i+"em solid "+String(t.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&n.setAttribute("mathbackground",t.backgroundColor),n};vt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=hr(e[0],"color-token").color,s=e[1];return{type:"enclose",mode:n.mode,label:i,backgroundColor:a,body:s}},htmlBuilder:bS,mathmlBuilder:wS});vt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,r){var{parser:n,funcName:i}=t,a=hr(e[0],"color-token").color,s=hr(e[1],"color-token").color,o=e[2];return{type:"enclose",mode:n.mode,label:i,backgroundColor:s,borderColor:a,body:o}},htmlBuilder:bS,mathmlBuilder:wS});vt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\fbox",body:e[0]}}});vt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:bS,mathmlBuilder:wS});vt({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"enclose",mode:r.mode,label:"\\angl",body:e[0]}}});HB={};qB={};Ob=t=>{var e=t.parser.settings;if(!e.displayMode)throw new nt("{"+t.envName+"} can be used only in display mode.")};Ql=function(e,r){var n,i,a=e.body.length,s=e.hLinesBeforeRow,o=0,l=new Array(a),u=[],h=Math.max(r.fontMetrics().arrayRuleWidth,r.minRuleThickness),f=1/r.fontMetrics().ptPerEm,d=5*f;if(e.colSeparationType&&e.colSeparationType==="small"){var p=r.havingStyle(Xt.SCRIPT).sizeMultiplier;d=.2778*(p/r.sizeMultiplier)}var g=e.colSeparationType==="CD"?Wn({number:3,unit:"ex"},r):12*f,m=3*f,y=e.arraystretch*g,x=.7*y,b=.3*y,w=0;function _(we){for(var Ie=0;Ie0&&(w+=.25),u.push({pos:w,isDashed:we[Ie]})}for(_(s[0]),n=0;n0&&(R+=b,Lwe))for(n=0;n=o)){var ee=void 0;(i>0||e.hskipBeforeAndAfter)&&(ee=qt.deflt(H.pregap,d),ee!==0&&(D=Be.makeSpan(["arraycolsep"],[]),D.style.width=ut(ee),A.push(D)));var Q=[];for(n=0;n0){for(var se=Be.makeLineSpan("hline",r,h),ce=Be.makeLineSpan("hdashline",r,h),ue=[{type:"elem",elem:l,shift:0}];u.length>0;){var te=u.pop(),Ne=te.pos-T;te.isDashed?ue.push({type:"elem",elem:ce,shift:Ne}):ue.push({type:"elem",elem:se,shift:Ne})}l=Be.makeVList({positionType:"individualShift",children:ue},r)}if(O.length===0)return Be.makeSpan(["mord"],[l],r);var ae=Be.makeVList({positionType:"individualShift",children:O},r);return ae=Be.makeSpan(["tag"],[ae],r),Be.makeFragment([l,ae])},Dve={c:"center ",l:"left ",r:"right "},Jl=function(e,r){for(var n=[],i=new rt.MathNode("mtd",[],["mtr-glue"]),a=new rt.MathNode("mtd",[],["mml-eqn-num"]),s=0;s0){var g=e.cols,m="",y=!1,x=0,b=g.length;g[0].type==="separator"&&(d+="top ",x=1),g[g.length-1].type==="separator"&&(d+="bottom ",b-=1);for(var w=x;w0?"left ":"",d+=S[S.length-1].length>0?"right ":"";for(var C=1;C-1?"alignat":"align",a=e.envName==="split",s=uh(e.parser,{cols:n,addJot:!0,autoTag:a?void 0:kS(e.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:a?2:void 0,leqno:e.parser.settings.leqno},"display"),o,l=0,u={type:"ordgroup",mode:e.mode,body:[]};if(r[0]&&r[0].type==="ordgroup"){for(var h="",f=0;f0&&p&&(y=1),n[g]={type:"align",align:m,pregap:y,postgap:0}}return s.colSeparationType=p?"align":"alignat",s};Zl({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var r=Ib(e[0]),n=r?[e[0]]:hr(e[0],"ordgroup").body,i=n.map(function(s){var o=vS(s),l=o.text;if("lcr".indexOf(l)!==-1)return{type:"align",align:l};if(l==="|")return{type:"separator",separator:"|"};if(l===":")return{type:"separator",separator:":"};throw new nt("Unknown column alignment: "+l,s)}),a={cols:i,hskipBeforeAndAfter:!0,maxNumCols:i.length};return uh(t.parser,a,TS(t.envName))},htmlBuilder:Ql,mathmlBuilder:Jl});Zl({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(t.envName.charAt(t.envName.length-1)==="*"){var i=t.parser;if(i.consumeSpaces(),i.fetch().text==="["){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,"lcr".indexOf(r)===-1)throw new nt("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var a=uh(t.parser,n,TS(t.envName)),s=Math.max(0,...a.body.map(o=>o.length));return a.cols=new Array(s).fill({type:"align",align:r}),e?{type:"leftright",mode:t.mode,body:[a],left:e[0],right:e[1],rightColor:void 0}:a},htmlBuilder:Ql,mathmlBuilder:Jl});Zl({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},r=uh(t.parser,e,"script");return r.colSeparationType="small",r},htmlBuilder:Ql,mathmlBuilder:Jl});Zl({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var r=Ib(e[0]),n=r?[e[0]]:hr(e[0],"ordgroup").body,i=n.map(function(s){var o=vS(s),l=o.text;if("lc".indexOf(l)!==-1)return{type:"align",align:l};throw new nt("Unknown column alignment: "+l,s)});if(i.length>1)throw new nt("{subarray} can contain only one column");var a={cols:i,hskipBeforeAndAfter:!1,arraystretch:.5};if(a=uh(t.parser,a,"script"),a.body.length>0&&a.body[0].length>1)throw new nt("{subarray} can contain only one column");return a},htmlBuilder:Ql,mathmlBuilder:Jl});Zl({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=uh(t.parser,e,TS(t.envName));return{type:"leftright",mode:t.mode,body:[r],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:Ql,mathmlBuilder:Jl});Zl({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:YB,htmlBuilder:Ql,mathmlBuilder:Jl});Zl({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){qt.contains(["gather","gather*"],t.envName)&&Ob(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:kS(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return uh(t.parser,e,"display")},htmlBuilder:Ql,mathmlBuilder:Jl});Zl({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:YB,htmlBuilder:Ql,mathmlBuilder:Jl});Zl({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){Ob(t);var e={autoTag:kS(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return uh(t.parser,e,"display")},htmlBuilder:Ql,mathmlBuilder:Jl});Zl({type:"array",names:["CD"],props:{numArgs:0},handler(t){return Ob(t),bve(t.parser)},htmlBuilder:Ql,mathmlBuilder:Jl});le("\\nonumber","\\gdef\\@eqnsw{0}");le("\\notag","\\nonumber");vt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new nt(t.funcName+" valid only within array environment")}});QP=HB;vt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];if(i.type!=="ordgroup")throw new nt("Invalid environment name",i);for(var a="",s=0;s{var r=t.font,n=e.withFont(r);return Ar(t.body,n)},jB=(t,e)=>{var r=t.font,n=e.withFont(r);return hn(t.body,n)},JP={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};vt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=Ab(e[0]),a=n;return a in JP&&(a=JP[a]),{type:"font",mode:r.mode,font:a.slice(1),body:i}},htmlBuilder:XB,mathmlBuilder:jB});vt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(t,e)=>{var{parser:r}=t,n=e[0],i=qt.isCharacterBox(n);return{type:"mclass",mode:r.mode,mclass:Mb(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:i}}});vt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{parser:r,funcName:n,breakOnTokenText:i}=t,{mode:a}=r,s=r.parseExpression(!0,i),o="math"+n.slice(1);return{type:"font",mode:a,font:o,body:{type:"ordgroup",mode:r.mode,body:s}}},htmlBuilder:XB,mathmlBuilder:jB});KB=(t,e)=>{var r=e;return t==="display"?r=r.id>=Xt.SCRIPT.id?r.text():Xt.DISPLAY:t==="text"&&r.size===Xt.DISPLAY.size?r=Xt.TEXT:t==="script"?r=Xt.SCRIPT:t==="scriptscript"&&(r=Xt.SCRIPTSCRIPT),r},ES=(t,e)=>{var r=KB(t.size,e.style),n=r.fracNum(),i=r.fracDen(),a;a=e.havingStyle(n);var s=Ar(t.numer,a,e);if(t.continued){var o=8.5/e.fontMetrics().ptPerEm,l=3.5/e.fontMetrics().ptPerEm;s.height=s.height0?g=3*d:g=7*d,m=e.fontMetrics().denom1):(f>0?(p=e.fontMetrics().num2,g=d):(p=e.fontMetrics().num3,g=3*d),m=e.fontMetrics().denom2);var y;if(h){var b=e.fontMetrics().axisHeight;p-s.depth-(b+.5*f){var r=new rt.MathNode("mfrac",[hn(t.numer,e),hn(t.denom,e)]);if(!t.hasBarLine)r.setAttribute("linethickness","0px");else if(t.barSize){var n=Wn(t.barSize,e);r.setAttribute("linethickness",ut(n))}var i=KB(t.size,e.style);if(i.size!==e.style.size){r=new rt.MathNode("mstyle",[r]);var a=i.size===Xt.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",a),r.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var s=[];if(t.leftDelim!=null){var o=new rt.MathNode("mo",[new rt.TextNode(t.leftDelim.replace("\\",""))]);o.setAttribute("fence","true"),s.push(o)}if(s.push(r),t.rightDelim!=null){var l=new rt.MathNode("mo",[new rt.TextNode(t.rightDelim.replace("\\",""))]);l.setAttribute("fence","true"),s.push(l)}return gS(s)}return r};vt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1],s,o=null,l=null,u="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":s=!0;break;case"\\\\atopfrac":s=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":s=!1,o="(",l=")";break;case"\\\\bracefrac":s=!1,o="\\{",l="\\}";break;case"\\\\brackfrac":s=!1,o="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":u="display";break;case"\\tfrac":case"\\tbinom":u="text";break}return{type:"genfrac",mode:r.mode,continued:!1,numer:i,denom:a,hasBarLine:s,leftDelim:o,rightDelim:l,size:u,barSize:null}},htmlBuilder:ES,mathmlBuilder:SS});vt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=e[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:i,denom:a,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}});vt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:r,token:n}=t,i;switch(r){case"\\over":i="\\frac";break;case"\\choose":i="\\binom";break;case"\\atop":i="\\\\atopfrac";break;case"\\brace":i="\\\\bracefrac";break;case"\\brack":i="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:i,token:n}}});eB=["display","text","script","scriptscript"],tB=function(e){var r=null;return e.length>0&&(r=e,r=r==="."?null:r),r};vt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:r}=t,n=e[4],i=e[5],a=Ab(e[0]),s=a.type==="atom"&&a.family==="open"?tB(a.text):null,o=Ab(e[1]),l=o.type==="atom"&&o.family==="close"?tB(o.text):null,u=hr(e[2],"size"),h,f=null;u.isBlank?h=!0:(f=u.value,h=f.number>0);var d="auto",p=e[3];if(p.type==="ordgroup"){if(p.body.length>0){var g=hr(p.body[0],"textord");d=eB[Number(g.text)]}}else p=hr(p,"textord"),d=eB[Number(p.text)];return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:h,barSize:f,leftDelim:s,rightDelim:l,size:d}},htmlBuilder:ES,mathmlBuilder:SS});vt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:r,funcName:n,token:i}=t;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:hr(e[0],"size").value,token:i}}});vt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=e[0],a=d1e(hr(e[1],"infix").size),s=e[2],o=a.number>0;return{type:"genfrac",mode:r.mode,numer:i,denom:s,continued:!1,hasBarLine:o,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:ES,mathmlBuilder:SS});ZB=(t,e)=>{var r=e.style,n,i;t.type==="supsub"?(n=t.sup?Ar(t.sup,e.havingStyle(r.sup()),e):Ar(t.sub,e.havingStyle(r.sub()),e),i=hr(t.base,"horizBrace")):i=hr(t,"horizBrace");var a=Ar(i.base,e.havingBaseStyle(Xt.DISPLAY)),s=tu.svgSpan(i,e),o;if(i.isOver?(o=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:s}]},e),o.children[0].children[0].children[1].classes.push("svg-align")):(o=Be.makeVList({positionType:"bottom",positionData:a.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:a}]},e),o.children[0].children[0].children[0].classes.push("svg-align")),n){var l=Be.makeSpan(["mord",i.isOver?"mover":"munder"],[o],e);i.isOver?o=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:n}]},e):o=Be.makeVList({positionType:"bottom",positionData:l.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:l}]},e)}return Be.makeSpan(["mord",i.isOver?"mover":"munder"],[o],e)},Ove=(t,e)=>{var r=tu.mathMLnode(t.label);return new rt.MathNode(t.isOver?"mover":"munder",[hn(t.base,e),r])};vt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:r,funcName:n}=t;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:e[0]}},htmlBuilder:ZB,mathmlBuilder:Ove});vt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=e[1],i=hr(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:i})?{type:"href",mode:r.mode,href:i,body:si(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(t,e)=>{var r=Ti(t.body,e,!1);return Be.makeAnchor(t.href,[],r,e)},mathmlBuilder:(t,e)=>{var r=ch(t.body,e);return r instanceof us||(r=new us("mrow",[r])),r.setAttribute("href",t.href),r}});vt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=hr(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var i=[],a=0;a{var{parser:r,funcName:n,token:i}=t,a=hr(e[0],"raw").string,s=e[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var o,l={};switch(n){case"\\htmlClass":l.class=a,o={command:"\\htmlClass",class:a};break;case"\\htmlId":l.id=a,o={command:"\\htmlId",id:a};break;case"\\htmlStyle":l.style=a,o={command:"\\htmlStyle",style:a};break;case"\\htmlData":{for(var u=a.split(","),h=0;h{var r=Ti(t.body,e,!1),n=["enclosing"];t.attributes.class&&n.push(...t.attributes.class.trim().split(/\s+/));var i=Be.makeSpan(n,r,e);for(var a in t.attributes)a!=="class"&&t.attributes.hasOwnProperty(a)&&i.setAttribute(a,t.attributes[a]);return i},mathmlBuilder:(t,e)=>ch(t.body,e)});vt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(t,e)=>{var{parser:r}=t;return{type:"htmlmathml",mode:r.mode,html:si(e[0]),mathml:si(e[1])}},htmlBuilder:(t,e)=>{var r=Ti(t.html,e,!1);return Be.makeFragment(r)},mathmlBuilder:(t,e)=>ch(t.mathml,e)});KE=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!r)throw new nt("Invalid size: '"+e+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!mB(n))throw new nt("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n};vt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(t,e,r)=>{var{parser:n}=t,i={number:0,unit:"em"},a={number:.9,unit:"em"},s={number:0,unit:"em"},o="";if(r[0])for(var l=hr(r[0],"raw").string,u=l.split(","),h=0;h{var r=Wn(t.height,e),n=0;t.totalheight.number>0&&(n=Wn(t.totalheight,e)-r);var i=0;t.width.number>0&&(i=Wn(t.width,e));var a={height:ut(r+n)};i>0&&(a.width=ut(i)),n>0&&(a.verticalAlign=ut(-n));var s=new rS(t.src,t.alt,a);return s.height=r,s.depth=n,s},mathmlBuilder:(t,e)=>{var r=new rt.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var n=Wn(t.height,e),i=0;if(t.totalheight.number>0&&(i=Wn(t.totalheight,e)-n,r.setAttribute("valign",ut(-i))),r.setAttribute("height",ut(n+i)),t.width.number>0){var a=Wn(t.width,e);r.setAttribute("width",ut(a))}return r.setAttribute("src",t.src),r}});vt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=hr(e[0],"size");if(r.settings.strict){var a=n[1]==="m",s=i.value.unit==="mu";a?(s||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+i.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):s&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:i.value}},htmlBuilder(t,e){return Be.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var r=Wn(t.dimension,e);return new rt.SpaceNode(r)}});vt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:i}},htmlBuilder:(t,e)=>{var r;t.alignment==="clap"?(r=Be.makeSpan([],[Ar(t.body,e)]),r=Be.makeSpan(["inner"],[r],e)):r=Be.makeSpan(["inner"],[Ar(t.body,e)]);var n=Be.makeSpan(["fix"],[]),i=Be.makeSpan([t.alignment],[r,n],e),a=Be.makeSpan(["strut"]);return a.style.height=ut(i.height+i.depth),i.depth&&(a.style.verticalAlign=ut(-i.depth)),i.children.unshift(a),i=Be.makeSpan(["thinbox"],[i],e),Be.makeSpan(["mord","vbox"],[i],e)},mathmlBuilder:(t,e)=>{var r=new rt.MathNode("mpadded",[hn(t.body,e)]);if(t.alignment!=="rlap"){var n=t.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}});vt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:r,parser:n}=t,i=n.mode;n.switchMode("math");var a=r==="\\("?"\\)":"$",s=n.parseExpression(!1,a);return n.expect(a),n.switchMode(i),{type:"styling",mode:n.mode,style:"text",body:s}}});vt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new nt("Mismatched "+t.funcName)}});rB=(t,e)=>{switch(e.style.size){case Xt.DISPLAY.size:return t.display;case Xt.TEXT.size:return t.text;case Xt.SCRIPT.size:return t.script;case Xt.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};vt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(t,e)=>{var{parser:r}=t;return{type:"mathchoice",mode:r.mode,display:si(e[0]),text:si(e[1]),script:si(e[2]),scriptscript:si(e[3])}},htmlBuilder:(t,e)=>{var r=rB(t,e),n=Ti(r,e,!1);return Be.makeFragment(n)},mathmlBuilder:(t,e)=>{var r=rB(t,e);return ch(r,e)}});QB=(t,e,r,n,i,a,s)=>{t=Be.makeSpan([],[t]);var o=r&&qt.isCharacterBox(r),l,u;if(e){var h=Ar(e,n.havingStyle(i.sup()),n);u={elem:h,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-h.depth)}}if(r){var f=Ar(r,n.havingStyle(i.sub()),n);l={elem:f,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-f.height)}}var d;if(u&&l){var p=n.fontMetrics().bigOpSpacing5+l.elem.height+l.elem.depth+l.kern+t.depth+s;d=Be.makeVList({positionType:"bottom",positionData:p,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:ut(-a)},{type:"kern",size:l.kern},{type:"elem",elem:t},{type:"kern",size:u.kern},{type:"elem",elem:u.elem,marginLeft:ut(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(l){var g=t.height-s;d=Be.makeVList({positionType:"top",positionData:g,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:l.elem,marginLeft:ut(-a)},{type:"kern",size:l.kern},{type:"elem",elem:t}]},n)}else if(u){var m=t.depth+s;d=Be.makeVList({positionType:"bottom",positionData:m,children:[{type:"elem",elem:t},{type:"kern",size:u.kern},{type:"elem",elem:u.elem,marginLeft:ut(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else return t;var y=[d];if(l&&a!==0&&!o){var x=Be.makeSpan(["mspace"],[],n);x.style.marginRight=ut(a),y.unshift(x)}return Be.makeSpan(["mop","op-limits"],y,n)},JB=["\\smallint"],K0=(t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=hr(t.base,"op"),i=!0):a=hr(t,"op");var s=e.style,o=!1;s.size===Xt.DISPLAY.size&&a.symbol&&!qt.contains(JB,a.name)&&(o=!0);var l;if(a.symbol){var u=o?"Size2-Regular":"Size1-Regular",h="";if((a.name==="\\oiint"||a.name==="\\oiiint")&&(h=a.name.slice(1),a.name=h==="oiint"?"\\iint":"\\iiint"),l=Be.makeSymbol(a.name,u,"math",e,["mop","op-symbol",o?"large-op":"small-op"]),h.length>0){var f=l.italic,d=Be.staticSvg(h+"Size"+(o?"2":"1"),e);l=Be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:l,shift:0},{type:"elem",elem:d,shift:o?.08:0}]},e),a.name="\\"+h,l.classes.unshift("mop"),l.italic=f}}else if(a.body){var p=Ti(a.body,e,!0);p.length===1&&p[0]instanceof hs?(l=p[0],l.classes[0]="mop"):l=Be.makeSpan(["mop"],p,e)}else{for(var g=[],m=1;m{var r;if(t.symbol)r=new us("mo",[yo(t.name,t.mode)]),qt.contains(JB,t.name)&&r.setAttribute("largeop","false");else if(t.body)r=new us("mo",fs(t.body,e));else{r=new us("mi",[new Mf(t.name.slice(1))]);var n=new us("mo",[yo("\u2061","text")]);t.parentIsSupSub?r=new us("mrow",[r,n]):r=AB([r,n])}return r},Pve={"\u220F":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22C0":"\\bigwedge","\u22C1":"\\bigvee","\u22C2":"\\bigcap","\u22C3":"\\bigcup","\u2A00":"\\bigodot","\u2A01":"\\bigoplus","\u2A02":"\\bigotimes","\u2A04":"\\biguplus","\u2A06":"\\bigsqcup"};vt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220F","\u2210","\u2211","\u22C0","\u22C1","\u22C2","\u22C3","\u2A00","\u2A01","\u2A02","\u2A04","\u2A06"],props:{numArgs:0},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=n;return i.length===1&&(i=Pve[i]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:i}},htmlBuilder:K0,mathmlBuilder:O1});vt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var{parser:r}=t,n=e[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:si(n)}},htmlBuilder:K0,mathmlBuilder:O1});Bve={"\u222B":"\\int","\u222C":"\\iint","\u222D":"\\iiint","\u222E":"\\oint","\u222F":"\\oiint","\u2230":"\\oiiint"};vt({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:K0,mathmlBuilder:O1});vt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:K0,mathmlBuilder:O1});vt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222B","\u222C","\u222D","\u222E","\u222F","\u2230"],props:{numArgs:0},handler(t){var{parser:e,funcName:r}=t,n=r;return n.length===1&&(n=Bve[n]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:K0,mathmlBuilder:O1});eF=(t,e)=>{var r,n,i=!1,a;t.type==="supsub"?(r=t.sup,n=t.sub,a=hr(t.base,"operatorname"),i=!0):a=hr(t,"operatorname");var s;if(a.body.length>0){for(var o=a.body.map(f=>{var d=f.text;return typeof d=="string"?{type:"textord",mode:f.mode,text:d}:f}),l=Ti(o,e.withFont("mathrm"),!0),u=0;u{for(var r=fs(t.body,e.withFont("mathrm")),n=!0,i=0;ih.toText()).join("");r=[new rt.TextNode(o)]}var l=new rt.MathNode("mi",r);l.setAttribute("mathvariant","normal");var u=new rt.MathNode("mo",[yo("\u2061","text")]);return t.parentIsSupSub?new rt.MathNode("mrow",[l,u]):rt.newDocumentFragment([l,u])};vt({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(t,e)=>{var{parser:r,funcName:n}=t,i=e[0];return{type:"operatorname",mode:r.mode,body:si(i),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:eF,mathmlBuilder:Fve});le("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Pf({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?Be.makeFragment(Ti(t.body,e,!1)):Be.makeSpan(["mord"],Ti(t.body,e,!0),e)},mathmlBuilder(t,e){return ch(t.body,e,!0)}});vt({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:r}=t,n=e[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(t,e){var r=Ar(t.body,e.havingCrampedStyle()),n=Be.makeLineSpan("overline-line",e),i=e.fontMetrics().defaultRuleThickness,a=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*i},{type:"elem",elem:n},{type:"kern",size:i}]},e);return Be.makeSpan(["mord","overline"],[a],e)},mathmlBuilder(t,e){var r=new rt.MathNode("mo",[new rt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new rt.MathNode("mover",[hn(t.body,e),r]);return n.setAttribute("accent","true"),n}});vt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=e[0];return{type:"phantom",mode:r.mode,body:si(n)}},htmlBuilder:(t,e)=>{var r=Ti(t.body,e.withPhantom(),!1);return Be.makeFragment(r)},mathmlBuilder:(t,e)=>{var r=fs(t.body,e);return new rt.MathNode("mphantom",r)}});vt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=e[0];return{type:"hphantom",mode:r.mode,body:n}},htmlBuilder:(t,e)=>{var r=Be.makeSpan([],[Ar(t.body,e.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n{var r=fs(si(t.body),e),n=new rt.MathNode("mphantom",r),i=new rt.MathNode("mpadded",[n]);return i.setAttribute("height","0px"),i.setAttribute("depth","0px"),i}});vt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:r}=t,n=e[0];return{type:"vphantom",mode:r.mode,body:n}},htmlBuilder:(t,e)=>{var r=Be.makeSpan(["inner"],[Ar(t.body,e.withPhantom())]),n=Be.makeSpan(["fix"],[]);return Be.makeSpan(["mord","rlap"],[r,n],e)},mathmlBuilder:(t,e)=>{var r=fs(si(t.body),e),n=new rt.MathNode("mphantom",r),i=new rt.MathNode("mpadded",[n]);return i.setAttribute("width","0px"),i}});vt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:r}=t,n=hr(e[0],"size").value,i=e[1];return{type:"raisebox",mode:r.mode,dy:n,body:i}},htmlBuilder(t,e){var r=Ar(t.body,e),n=Wn(t.dy,e);return Be.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){var r=new rt.MathNode("mpadded",[hn(t.body,e)]),n=t.dy.number+t.dy.unit;return r.setAttribute("voffset",n),r}});vt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});vt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},handler(t,e,r){var{parser:n}=t,i=r[0],a=hr(e[0],"size"),s=hr(e[1],"size");return{type:"rule",mode:n.mode,shift:i&&hr(i,"size").value,width:a.value,height:s.value}},htmlBuilder(t,e){var r=Be.makeSpan(["mord","rule"],[],e),n=Wn(t.width,e),i=Wn(t.height,e),a=t.shift?Wn(t.shift,e):0;return r.style.borderRightWidth=ut(n),r.style.borderTopWidth=ut(i),r.style.bottom=ut(a),r.width=n,r.height=i+a,r.depth=-a,r.maxFontSize=i*1.125*e.sizeMultiplier,r},mathmlBuilder(t,e){var r=Wn(t.width,e),n=Wn(t.height,e),i=t.shift?Wn(t.shift,e):0,a=e.color&&e.getColor()||"black",s=new rt.MathNode("mspace");s.setAttribute("mathbackground",a),s.setAttribute("width",ut(r)),s.setAttribute("height",ut(n));var o=new rt.MathNode("mpadded",[s]);return i>=0?o.setAttribute("height",ut(i)):(o.setAttribute("height",ut(i)),o.setAttribute("depth",ut(-i))),o.setAttribute("voffset",ut(i)),o}});nB=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],zve=(t,e)=>{var r=e.havingSize(t.size);return tF(t.body,r,e)};vt({type:"sizing",names:nB,props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!1,r);return{type:"sizing",mode:i.mode,size:nB.indexOf(n)+1,body:a}},htmlBuilder:zve,mathmlBuilder:(t,e)=>{var r=e.havingSize(t.size),n=fs(t.body,r),i=new rt.MathNode("mstyle",n);return i.setAttribute("mathsize",ut(r.sizeMultiplier)),i}});vt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(t,e,r)=>{var{parser:n}=t,i=!1,a=!1,s=r[0]&&hr(r[0],"ordgroup");if(s)for(var o="",l=0;l{var r=Be.makeSpan([],[Ar(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return r;if(t.smashHeight&&(r.height=0,r.children))for(var n=0;n{var r=new rt.MathNode("mpadded",[hn(t.body,e)]);return t.smashHeight&&r.setAttribute("height","0px"),t.smashDepth&&r.setAttribute("depth","0px"),r}});vt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,r){var{parser:n}=t,i=r[0],a=e[0];return{type:"sqrt",mode:n.mode,body:a,index:i}},htmlBuilder(t,e){var r=Ar(t.body,e.havingCrampedStyle());r.height===0&&(r.height=e.fontMetrics().xHeight),r=Be.wrapFragment(r,e);var n=e.fontMetrics(),i=n.defaultRuleThickness,a=i;e.style.idr.height+r.depth+s&&(s=(s+f-r.height-r.depth)/2);var d=l.height-r.height-s-u;r.style.paddingLeft=ut(h);var p=Be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+d)},{type:"elem",elem:l},{type:"kern",size:u}]},e);if(t.index){var g=e.havingStyle(Xt.SCRIPTSCRIPT),m=Ar(t.index,g,e),y=.6*(p.height-p.depth),x=Be.makeVList({positionType:"shift",positionData:-y,children:[{type:"elem",elem:m}]},e),b=Be.makeSpan(["root"],[x]);return Be.makeSpan(["mord","sqrt"],[b,p],e)}else return Be.makeSpan(["mord","sqrt"],[p],e)},mathmlBuilder(t,e){var{body:r,index:n}=t;return n?new rt.MathNode("mroot",[hn(r,e),hn(n,e)]):new rt.MathNode("msqrt",[hn(r,e)])}});iB={display:Xt.DISPLAY,text:Xt.TEXT,script:Xt.SCRIPT,scriptscript:Xt.SCRIPTSCRIPT};vt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:r,funcName:n,parser:i}=t,a=i.parseExpression(!0,r),s=n.slice(1,n.length-5);return{type:"styling",mode:i.mode,style:s,body:a}},htmlBuilder(t,e){var r=iB[t.style],n=e.havingStyle(r).withFont("");return tF(t.body,n,e)},mathmlBuilder(t,e){var r=iB[t.style],n=e.havingStyle(r),i=fs(t.body,n),a=new rt.MathNode("mstyle",i),s={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},o=s[t.style];return a.setAttribute("scriptlevel",o[0]),a.setAttribute("displaystyle",o[1]),a}});$ve=function(e,r){var n=e.base;if(n)if(n.type==="op"){var i=n.limits&&(r.style.size===Xt.DISPLAY.size||n.alwaysHandleSupSub);return i?K0:null}else if(n.type==="operatorname"){var a=n.alwaysHandleSupSub&&(r.style.size===Xt.DISPLAY.size||n.limits);return a?eF:null}else{if(n.type==="accent")return qt.isCharacterBox(n.base)?yS:null;if(n.type==="horizBrace"){var s=!e.sub;return s===n.isOver?ZB:null}else return null}else return null};Pf({type:"supsub",htmlBuilder(t,e){var r=$ve(t,e);if(r)return r(t,e);var{base:n,sup:i,sub:a}=t,s=Ar(n,e),o,l,u=e.fontMetrics(),h=0,f=0,d=n&&qt.isCharacterBox(n);if(i){var p=e.havingStyle(e.style.sup());o=Ar(i,p,e),d||(h=s.height-p.fontMetrics().supDrop*p.sizeMultiplier/e.sizeMultiplier)}if(a){var g=e.havingStyle(e.style.sub());l=Ar(a,g,e),d||(f=s.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}var m;e.style===Xt.DISPLAY?m=u.sup1:e.style.cramped?m=u.sup3:m=u.sup2;var y=e.sizeMultiplier,x=ut(.5/u.ptPerEm/y),b=null;if(l){var w=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(s instanceof hs||w)&&(b=ut(-s.italic))}var _;if(o&&l){h=Math.max(h,m,o.depth+.25*u.xHeight),f=Math.max(f,u.sub2);var k=u.defaultRuleThickness,E=4*k;if(h-o.depth-(l.height-f)0&&(h+=L,f-=L)}var S=[{type:"elem",elem:l,shift:f,marginRight:x,marginLeft:b},{type:"elem",elem:o,shift:-h,marginRight:x}];_=Be.makeVList({positionType:"individualShift",children:S},e)}else if(l){f=Math.max(f,u.sub1,l.height-.8*u.xHeight);var C=[{type:"elem",elem:l,marginLeft:b,marginRight:x}];_=Be.makeVList({positionType:"shift",positionData:f,children:C},e)}else if(o)h=Math.max(h,m,o.depth+.25*u.xHeight),_=Be.makeVList({positionType:"shift",positionData:-h,children:[{type:"elem",elem:o,marginRight:x}]},e);else throw new Error("supsub must have either sup or sub.");var M=iS(s,"right")||"mord";return Be.makeSpan([M],[s,Be.makeSpan(["msupsub"],[_])],e)},mathmlBuilder(t,e){var r=!1,n,i;t.base&&t.base.type==="horizBrace"&&(i=!!t.sup,i===t.base.isOver&&(r=!0,n=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var a=[hn(t.base,e)];t.sub&&a.push(hn(t.sub,e)),t.sup&&a.push(hn(t.sup,e));var s;if(r)s=n?"mover":"munder";else if(t.sub)if(t.sup){var u=t.base;u&&u.type==="op"&&u.limits&&e.style===Xt.DISPLAY||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(e.style===Xt.DISPLAY||u.limits)?s="munderover":s="msubsup"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===Xt.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===Xt.DISPLAY)?s="munder":s="msub"}else{var o=t.base;o&&o.type==="op"&&o.limits&&(e.style===Xt.DISPLAY||o.alwaysHandleSupSub)||o&&o.type==="operatorname"&&o.alwaysHandleSupSub&&(o.limits||e.style===Xt.DISPLAY)?s="mover":s="msup"}return new rt.MathNode(s,a)}});Pf({type:"atom",htmlBuilder(t,e){return Be.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var r=new rt.MathNode("mo",[yo(t.text,t.mode)]);if(t.family==="bin"){var n=mS(t,e);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else t.family==="punct"?r.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&r.setAttribute("stretchy","false");return r}});rF={mi:"italic",mn:"normal",mtext:"normal"};Pf({type:"mathord",htmlBuilder(t,e){return Be.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var r=new rt.MathNode("mi",[yo(t.text,t.mode,e)]),n=mS(t,e)||"italic";return n!==rF[r.type]&&r.setAttribute("mathvariant",n),r}});Pf({type:"textord",htmlBuilder(t,e){return Be.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var r=yo(t.text,t.mode,e),n=mS(t,e)||"normal",i;return t.mode==="text"?i=new rt.MathNode("mtext",[r]):/[0-9]/.test(t.text)?i=new rt.MathNode("mn",[r]):t.text==="\\prime"?i=new rt.MathNode("mo",[r]):i=new rt.MathNode("mi",[r]),n!==rF[i.type]&&i.setAttribute("mathvariant",n),i}});ZE={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},QE={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Pf({type:"spacing",htmlBuilder(t,e){if(QE.hasOwnProperty(t.text)){var r=QE[t.text].className||"";if(t.mode==="text"){var n=Be.makeOrd(t,e,"textord");return n.classes.push(r),n}else return Be.makeSpan(["mspace",r],[Be.mathsym(t.text,t.mode,e)],e)}else{if(ZE.hasOwnProperty(t.text))return Be.makeSpan(["mspace",ZE[t.text]],[],e);throw new nt('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var r;if(QE.hasOwnProperty(t.text))r=new rt.MathNode("mtext",[new rt.TextNode("\xA0")]);else{if(ZE.hasOwnProperty(t.text))return new rt.MathNode("mspace");throw new nt('Unknown type of space "'+t.text+'"')}return r}});aB=()=>{var t=new rt.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};Pf({type:"tag",mathmlBuilder(t,e){var r=new rt.MathNode("mtable",[new rt.MathNode("mtr",[aB(),new rt.MathNode("mtd",[ch(t.body,e)]),aB(),new rt.MathNode("mtd",[ch(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});sB={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},oB={"\\textbf":"textbf","\\textmd":"textmd"},Gve={"\\textit":"textit","\\textup":"textup"},lB=(t,e)=>{var r=t.font;if(r){if(sB[r])return e.withTextFontFamily(sB[r]);if(oB[r])return e.withTextFontWeight(oB[r]);if(r==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(Gve[r])};vt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:r,funcName:n}=t,i=e[0];return{type:"text",mode:r.mode,body:si(i),font:n}},htmlBuilder(t,e){var r=lB(t,e),n=Ti(t.body,r,!0);return Be.makeSpan(["mord","text"],n,r)},mathmlBuilder(t,e){var r=lB(t,e);return ch(t.body,r)}});vt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:r}=t;return{type:"underline",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Ar(t.body,e),n=Be.makeLineSpan("underline-line",e),i=e.fontMetrics().defaultRuleThickness,a=Be.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:i},{type:"elem",elem:n},{type:"kern",size:3*i},{type:"elem",elem:r}]},e);return Be.makeSpan(["mord","underline"],[a],e)},mathmlBuilder(t,e){var r=new rt.MathNode("mo",[new rt.TextNode("\u203E")]);r.setAttribute("stretchy","true");var n=new rt.MathNode("munder",[hn(t.body,e),r]);return n.setAttribute("accentunder","true"),n}});vt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:r}=t;return{type:"vcenter",mode:r.mode,body:e[0]}},htmlBuilder(t,e){var r=Ar(t.body,e),n=e.fontMetrics().axisHeight,i=.5*(r.height-n-(r.depth+n));return Be.makeVList({positionType:"shift",positionData:i,children:[{type:"elem",elem:r}]},e)},mathmlBuilder(t,e){return new rt.MathNode("mpadded",[hn(t.body,e)],["vcenter"])}});vt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,r){throw new nt("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var r=cB(t),n=[],i=e.havingStyle(e.style.text()),a=0;at.body.replace(/ /g,t.star?"\u2423":"\xA0"),oh=SB,nF=`[ \r ]`,Uve="\\\\[a-zA-Z@]+",Vve="\\\\[^\uD800-\uDFFF]",Wve="("+Uve+")"+nF+"*",Hve=`\\\\( |[ \r ]+ ?)[ \r ]*`,cS="[\u0300-\u036F]",qve=new RegExp(cS+"+$"),Yve="("+nF+"+)|"+(Hve+"|")+"([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]"+(cS+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(cS+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+Wve)+("|"+Vve+")"),_b=class{constructor(e,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=r,this.tokenRegex=new RegExp(Yve,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,r){this.catcodes[e]=r}lex(){var e=this.input,r=this.tokenRegex.lastIndex;if(r===e.length)return new vo("EOF",new Gs(this,r,r));var n=this.tokenRegex.exec(e);if(n===null||n.index!==r)throw new nt("Unexpected character: '"+e[r]+"'",new vo(e[r],new Gs(this,r,r+1)));var i=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[i]===14){var a=e.indexOf(` `,this.tokenRegex.lastIndex);return a===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=a+1,this.lex()}return new vo(i,new Gs(this,r,this.tokenRegex.lastIndex))}},uS=class{constructor(e,r){e===void 0&&(e={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new nt("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var r in e)e.hasOwnProperty(r)&&(e[r]==null?delete this.current[r]:this.current[r]=e[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,r,n){if(n===void 0&&(n=!1),n){for(var i=0;i0&&(this.undefStack[this.undefStack.length-1][e]=r)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}r==null?delete this.current[e]:this.current[e]=r}},Xve=qB;le("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});le("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});le("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});le("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});le("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var r=t.future();return e[0].length===1&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});le("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");le("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});uB={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};le("\\char",function(t){var e=t.popToken(),r,n="";if(e.text==="'")r=8,e=t.popToken();else if(e.text==='"')r=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")n=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new nt("\\char` missing argument");n=e.text.charCodeAt(0)}else r=10;if(r){if(n=uB[e.text],n==null||n>=r)throw new nt("Invalid base-"+r+" digit "+e.text);for(var i;(i=uB[t.future().text])!=null&&i{var n=t.consumeArg().tokens;if(n.length!==1)throw new nt("\\newcommand's first argument must be a macro name");var i=n[0].text,a=t.isDefined(i);if(a&&!e)throw new nt("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!a&&!r)throw new nt("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var s=0;if(n=t.consumeArg().tokens,n.length===1&&n[0].text==="["){for(var o="",l=t.expandNextToken();l.text!=="]"&&l.text!=="EOF";)o+=l.text,l=t.expandNextToken();if(!o.match(/^\s*[0-9]+\s*$/))throw new nt("Invalid number of arguments: "+o);s=parseInt(o),n=t.consumeArg().tokens}return t.macros.set(i,{tokens:n,numArgs:s}),""};le("\\newcommand",t=>CS(t,!1,!0));le("\\renewcommand",t=>CS(t,!0,!1));le("\\providecommand",t=>CS(t,!0,!0));le("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(r=>r.text).join("")),""});le("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(r=>r.text).join("")),""});le("\\show",t=>{var e=t.popToken(),r=e.text;return console.log(e,t.macros.get(r),oh[r],wn.math[r],wn.text[r]),""});le("\\bgroup","{");le("\\egroup","}");le("~","\\nobreakspace");le("\\lq","`");le("\\rq","'");le("\\aa","\\r a");le("\\AA","\\r A");le("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xA9}");le("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");le("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xAE}");le("\u212C","\\mathscr{B}");le("\u2130","\\mathscr{E}");le("\u2131","\\mathscr{F}");le("\u210B","\\mathscr{H}");le("\u2110","\\mathscr{I}");le("\u2112","\\mathscr{L}");le("\u2133","\\mathscr{M}");le("\u211B","\\mathscr{R}");le("\u212D","\\mathfrak{C}");le("\u210C","\\mathfrak{H}");le("\u2128","\\mathfrak{Z}");le("\\Bbbk","\\Bbb{k}");le("\xB7","\\cdotp");le("\\llap","\\mathllap{\\textrm{#1}}");le("\\rlap","\\mathrlap{\\textrm{#1}}");le("\\clap","\\mathclap{\\textrm{#1}}");le("\\mathstrut","\\vphantom{(}");le("\\underbar","\\underline{\\text{#1}}");le("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');le("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}");le("\\ne","\\neq");le("\u2260","\\neq");le("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}");le("\u2209","\\notin");le("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}");le("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}");le("\u225A","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225A}}");le("\u225B","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225B}}");le("\u225D","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225D}}");le("\u225E","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225E}}");le("\u225F","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225F}}");le("\u27C2","\\perp");le("\u203C","\\mathclose{!\\mkern-0.8mu!}");le("\u220C","\\notni");le("\u231C","\\ulcorner");le("\u231D","\\urcorner");le("\u231E","\\llcorner");le("\u231F","\\lrcorner");le("\xA9","\\copyright");le("\xAE","\\textregistered");le("\uFE0F","\\textregistered");le("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');le("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');le("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');le("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');le("\\vdots","\\mathord{\\varvdots\\rule{0pt}{15pt}}");le("\u22EE","\\vdots");le("\\varGamma","\\mathit{\\Gamma}");le("\\varDelta","\\mathit{\\Delta}");le("\\varTheta","\\mathit{\\Theta}");le("\\varLambda","\\mathit{\\Lambda}");le("\\varXi","\\mathit{\\Xi}");le("\\varPi","\\mathit{\\Pi}");le("\\varSigma","\\mathit{\\Sigma}");le("\\varUpsilon","\\mathit{\\Upsilon}");le("\\varPhi","\\mathit{\\Phi}");le("\\varPsi","\\mathit{\\Psi}");le("\\varOmega","\\mathit{\\Omega}");le("\\substack","\\begin{subarray}{c}#1\\end{subarray}");le("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");le("\\boxed","\\fbox{$\\displaystyle{#1}$}");le("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");le("\\implies","\\DOTSB\\;\\Longrightarrow\\;");le("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");hB={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};le("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in hB?e=hB[r]:(r.slice(0,4)==="\\not"||r in wn.math&&qt.contains(["bin","rel"],wn.math[r].group))&&(e="\\dotsb"),e});AS={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};le("\\dotso",function(t){var e=t.future().text;return e in AS?"\\ldots\\,":"\\ldots"});le("\\dotsc",function(t){var e=t.future().text;return e in AS&&e!==","?"\\ldots\\,":"\\ldots"});le("\\cdots",function(t){var e=t.future().text;return e in AS?"\\@cdots\\,":"\\@cdots"});le("\\dotsb","\\cdots");le("\\dotsm","\\cdots");le("\\dotsi","\\!\\cdots");le("\\dotsx","\\ldots\\,");le("\\DOTSI","\\relax");le("\\DOTSB","\\relax");le("\\DOTSX","\\relax");le("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");le("\\,","\\tmspace+{3mu}{.1667em}");le("\\thinspace","\\,");le("\\>","\\mskip{4mu}");le("\\:","\\tmspace+{4mu}{.2222em}");le("\\medspace","\\:");le("\\;","\\tmspace+{5mu}{.2777em}");le("\\thickspace","\\;");le("\\!","\\tmspace-{3mu}{.1667em}");le("\\negthinspace","\\!");le("\\negmedspace","\\tmspace-{4mu}{.2222em}");le("\\negthickspace","\\tmspace-{5mu}{.277em}");le("\\enspace","\\kern.5em ");le("\\enskip","\\hskip.5em\\relax");le("\\quad","\\hskip1em\\relax");le("\\qquad","\\hskip2em\\relax");le("\\tag","\\@ifstar\\tag@literal\\tag@paren");le("\\tag@paren","\\tag@literal{({#1})}");le("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new nt("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});le("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");le("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");le("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");le("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");le("\\newline","\\\\\\relax");le("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");iF=ut(jl["Main-Regular"][84][1]-.7*jl["Main-Regular"][65][1]);le("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+iF+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");le("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+iF+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");le("\\hspace","\\@ifstar\\@hspacer\\@hspace");le("\\@hspace","\\hskip #1\\relax");le("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");le("\\ordinarycolon",":");le("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");le("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');le("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');le("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');le("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');le("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');le("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');le("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');le("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');le("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');le("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');le("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');le("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');le("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');le("\u2237","\\dblcolon");le("\u2239","\\eqcolon");le("\u2254","\\coloneqq");le("\u2255","\\eqqcolon");le("\u2A74","\\Coloneqq");le("\\ratio","\\vcentcolon");le("\\coloncolon","\\dblcolon");le("\\colonequals","\\coloneqq");le("\\coloncolonequals","\\Coloneqq");le("\\equalscolon","\\eqqcolon");le("\\equalscoloncolon","\\Eqqcolon");le("\\colonminus","\\coloneq");le("\\coloncolonminus","\\Coloneq");le("\\minuscolon","\\eqcolon");le("\\minuscoloncolon","\\Eqcolon");le("\\coloncolonapprox","\\Colonapprox");le("\\coloncolonsim","\\Colonsim");le("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");le("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");le("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");le("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");le("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220C}}");le("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");le("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");le("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");le("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");le("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");le("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");le("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");le("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");le("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}");le("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}");le("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}");le("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}");le("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}");le("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}");le("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}");le("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}");le("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}");le("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}");le("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228A}");le("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2ACB}");le("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228B}");le("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2ACC}");le("\\imath","\\html@mathml{\\@imath}{\u0131}");le("\\jmath","\\html@mathml{\\@jmath}{\u0237}");le("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27E6}}");le("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27E7}}");le("\u27E6","\\llbracket");le("\u27E7","\\rrbracket");le("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}");le("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}");le("\u2983","\\lBrace");le("\u2984","\\rBrace");le("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29B5}}");le("\u29B5","\\minuso");le("\\darr","\\downarrow");le("\\dArr","\\Downarrow");le("\\Darr","\\Downarrow");le("\\lang","\\langle");le("\\rang","\\rangle");le("\\uarr","\\uparrow");le("\\uArr","\\Uparrow");le("\\Uarr","\\Uparrow");le("\\N","\\mathbb{N}");le("\\R","\\mathbb{R}");le("\\Z","\\mathbb{Z}");le("\\alef","\\aleph");le("\\alefsym","\\aleph");le("\\Alpha","\\mathrm{A}");le("\\Beta","\\mathrm{B}");le("\\bull","\\bullet");le("\\Chi","\\mathrm{X}");le("\\clubs","\\clubsuit");le("\\cnums","\\mathbb{C}");le("\\Complex","\\mathbb{C}");le("\\Dagger","\\ddagger");le("\\diamonds","\\diamondsuit");le("\\empty","\\emptyset");le("\\Epsilon","\\mathrm{E}");le("\\Eta","\\mathrm{H}");le("\\exist","\\exists");le("\\harr","\\leftrightarrow");le("\\hArr","\\Leftrightarrow");le("\\Harr","\\Leftrightarrow");le("\\hearts","\\heartsuit");le("\\image","\\Im");le("\\infin","\\infty");le("\\Iota","\\mathrm{I}");le("\\isin","\\in");le("\\Kappa","\\mathrm{K}");le("\\larr","\\leftarrow");le("\\lArr","\\Leftarrow");le("\\Larr","\\Leftarrow");le("\\lrarr","\\leftrightarrow");le("\\lrArr","\\Leftrightarrow");le("\\Lrarr","\\Leftrightarrow");le("\\Mu","\\mathrm{M}");le("\\natnums","\\mathbb{N}");le("\\Nu","\\mathrm{N}");le("\\Omicron","\\mathrm{O}");le("\\plusmn","\\pm");le("\\rarr","\\rightarrow");le("\\rArr","\\Rightarrow");le("\\Rarr","\\Rightarrow");le("\\real","\\Re");le("\\reals","\\mathbb{R}");le("\\Reals","\\mathbb{R}");le("\\Rho","\\mathrm{P}");le("\\sdot","\\cdot");le("\\sect","\\S");le("\\spades","\\spadesuit");le("\\sub","\\subset");le("\\sube","\\subseteq");le("\\supe","\\supseteq");le("\\Tau","\\mathrm{T}");le("\\thetasym","\\vartheta");le("\\weierp","\\wp");le("\\Zeta","\\mathrm{Z}");le("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");le("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");le("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");le("\\bra","\\mathinner{\\langle{#1}|}");le("\\ket","\\mathinner{|{#1}\\rangle}");le("\\braket","\\mathinner{\\langle{#1}\\rangle}");le("\\Bra","\\left\\langle#1\\right|");le("\\Ket","\\left|#1\\right\\rangle");aF=t=>e=>{var r=e.consumeArg().tokens,n=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.consumeArg().tokens,s=e.macros.get("|"),o=e.macros.get("\\|");e.macros.beginGroup();var l=f=>d=>{t&&(d.macros.set("|",s),i.length&&d.macros.set("\\|",o));var p=f;if(!f&&i.length){var g=d.future();g.text==="|"&&(d.popToken(),p=!0)}return{tokens:p?i:n,numArgs:0}};e.macros.set("|",l(!1)),i.length&&e.macros.set("\\|",l(!0));var u=e.consumeArg().tokens,h=e.expandTokens([...a,...u,...r]);return e.macros.endGroup(),{tokens:h.reverse(),numArgs:0}};le("\\bra@ket",aF(!1));le("\\bra@set",aF(!0));le("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");le("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");le("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");le("\\angln","{\\angl n}");le("\\blue","\\textcolor{##6495ed}{#1}");le("\\orange","\\textcolor{##ffa500}{#1}");le("\\pink","\\textcolor{##ff00af}{#1}");le("\\red","\\textcolor{##df0030}{#1}");le("\\green","\\textcolor{##28ae7b}{#1}");le("\\gray","\\textcolor{gray}{#1}");le("\\purple","\\textcolor{##9d38bd}{#1}");le("\\blueA","\\textcolor{##ccfaff}{#1}");le("\\blueB","\\textcolor{##80f6ff}{#1}");le("\\blueC","\\textcolor{##63d9ea}{#1}");le("\\blueD","\\textcolor{##11accd}{#1}");le("\\blueE","\\textcolor{##0c7f99}{#1}");le("\\tealA","\\textcolor{##94fff5}{#1}");le("\\tealB","\\textcolor{##26edd5}{#1}");le("\\tealC","\\textcolor{##01d1c1}{#1}");le("\\tealD","\\textcolor{##01a995}{#1}");le("\\tealE","\\textcolor{##208170}{#1}");le("\\greenA","\\textcolor{##b6ffb0}{#1}");le("\\greenB","\\textcolor{##8af281}{#1}");le("\\greenC","\\textcolor{##74cf70}{#1}");le("\\greenD","\\textcolor{##1fab54}{#1}");le("\\greenE","\\textcolor{##0d923f}{#1}");le("\\goldA","\\textcolor{##ffd0a9}{#1}");le("\\goldB","\\textcolor{##ffbb71}{#1}");le("\\goldC","\\textcolor{##ff9c39}{#1}");le("\\goldD","\\textcolor{##e07d10}{#1}");le("\\goldE","\\textcolor{##a75a05}{#1}");le("\\redA","\\textcolor{##fca9a9}{#1}");le("\\redB","\\textcolor{##ff8482}{#1}");le("\\redC","\\textcolor{##f9685d}{#1}");le("\\redD","\\textcolor{##e84d39}{#1}");le("\\redE","\\textcolor{##bc2612}{#1}");le("\\maroonA","\\textcolor{##ffbde0}{#1}");le("\\maroonB","\\textcolor{##ff92c6}{#1}");le("\\maroonC","\\textcolor{##ed5fa6}{#1}");le("\\maroonD","\\textcolor{##ca337c}{#1}");le("\\maroonE","\\textcolor{##9e034e}{#1}");le("\\purpleA","\\textcolor{##ddd7ff}{#1}");le("\\purpleB","\\textcolor{##c6b9fc}{#1}");le("\\purpleC","\\textcolor{##aa87ff}{#1}");le("\\purpleD","\\textcolor{##7854ab}{#1}");le("\\purpleE","\\textcolor{##543b78}{#1}");le("\\mintA","\\textcolor{##f5f9e8}{#1}");le("\\mintB","\\textcolor{##edf2df}{#1}");le("\\mintC","\\textcolor{##e0e5cc}{#1}");le("\\grayA","\\textcolor{##f6f7f7}{#1}");le("\\grayB","\\textcolor{##f0f1f2}{#1}");le("\\grayC","\\textcolor{##e3e5e6}{#1}");le("\\grayD","\\textcolor{##d6d8da}{#1}");le("\\grayE","\\textcolor{##babec2}{#1}");le("\\grayF","\\textcolor{##888d93}{#1}");le("\\grayG","\\textcolor{##626569}{#1}");le("\\grayH","\\textcolor{##3b3e40}{#1}");le("\\grayI","\\textcolor{##21242c}{#1}");le("\\kaBlue","\\textcolor{##314453}{#1}");le("\\kaGreen","\\textcolor{##71B307}{#1}");sF={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},hS=class{constructor(e,r,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(e),this.macros=new uS(Xve,r.macros),this.mode=n,this.stack=[]}feed(e){this.lexer=new _b(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var r,n,i;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:i,end:n}=this.consumeArg(["]"])}else({tokens:i,start:r,end:n}=this.consumeArg());return this.pushToken(new vo("EOF",n.loc)),this.pushTokens(i),r.range(n,"")}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var r=[],n=e&&e.length>0;n||this.consumeSpaces();var i=this.future(),a,s=0,o=0;do{if(a=this.popToken(),r.push(a),a.text==="{")++s;else if(a.text==="}"){if(--s,s===-1)throw new nt("Extra }",a)}else if(a.text==="EOF")throw new nt("Unexpected end of input in a macro argument, expected '"+(e&&n?e[o]:"}")+"'",a);if(e&&n)if((s===0||s===1&&e[o]==="{")&&a.text===e[o]){if(++o,o===e.length){r.splice(-o,o);break}}else o=0}while(s!==0||n);return i.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:i,end:a}}consumeArgs(e,r){if(r){if(r.length!==e+1)throw new nt("The length of delimiters doesn't match the number of args!");for(var n=r[0],i=0;ithis.settings.maxExpand)throw new nt("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var r=this.popToken(),n=r.text,i=r.noexpand?null:this._getExpansion(n);if(i==null||e&&i.unexpandable){if(e&&i==null&&n[0]==="\\"&&!this.isDefined(n))throw new nt("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var a=i.tokens,s=this.consumeArgs(i.numArgs,i.delimiters);if(i.numArgs){a=a.slice();for(var o=a.length-1;o>=0;--o){var l=a[o];if(l.text==="#"){if(o===0)throw new nt("Incomplete placeholder at end of macro body",l);if(l=a[--o],l.text==="#")a.splice(o+1,1);else if(/^[1-9]$/.test(l.text))a.splice(o,2,...s[+l.text-1]);else throw new nt("Not a valid argument number",l)}}}return this.pushTokens(a),a.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new vo(e)]):void 0}expandTokens(e){var r=[],n=this.stack.length;for(this.pushTokens(e);this.stack.length>n;)if(this.expandOnce(!0)===!1){var i=this.stack.pop();i.treatAsRelax&&(i.noexpand=!1,i.treatAsRelax=!1),r.push(i)}return this.countExpansion(r.length),r}expandMacroAsText(e){var r=this.expandMacro(e);return r&&r.map(n=>n.text).join("")}_getExpansion(e){var r=this.macros.get(e);if(r==null)return r;if(e.length===1){var n=this.lexer.catcodes[e];if(n!=null&&n!==13)return}var i=typeof r=="function"?r(this):r;if(typeof i=="string"){var a=0;if(i.indexOf("#")!==-1)for(var s=i.replace(/##/g,"");s.indexOf("#"+(a+1))!==-1;)++a;for(var o=new _b(i,this.settings),l=[],u=o.lex();u.text!=="EOF";)l.push(u),u=o.lex();l.reverse();var h={tokens:l,numArgs:a};return h}return i}isDefined(e){return this.macros.has(e)||oh.hasOwnProperty(e)||wn.math.hasOwnProperty(e)||wn.text.hasOwnProperty(e)||sF.hasOwnProperty(e)}isExpandable(e){var r=this.macros.get(e);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:oh.hasOwnProperty(e)&&!oh[e].primitive}},fB=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,xb=Object.freeze({"\u208A":"+","\u208B":"-","\u208C":"=","\u208D":"(","\u208E":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1D62":"i","\u2C7C":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209A":"p","\u1D63":"r","\u209B":"s","\u209C":"t","\u1D64":"u","\u1D65":"v","\u2093":"x","\u1D66":"\u03B2","\u1D67":"\u03B3","\u1D68":"\u03C1","\u1D69":"\u03D5","\u1D6A":"\u03C7","\u207A":"+","\u207B":"-","\u207C":"=","\u207D":"(","\u207E":")","\u2070":"0","\xB9":"1","\xB2":"2","\xB3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1D2C":"A","\u1D2E":"B","\u1D30":"D","\u1D31":"E","\u1D33":"G","\u1D34":"H","\u1D35":"I","\u1D36":"J","\u1D37":"K","\u1D38":"L","\u1D39":"M","\u1D3A":"N","\u1D3C":"O","\u1D3E":"P","\u1D3F":"R","\u1D40":"T","\u1D41":"U","\u2C7D":"V","\u1D42":"W","\u1D43":"a","\u1D47":"b","\u1D9C":"c","\u1D48":"d","\u1D49":"e","\u1DA0":"f","\u1D4D":"g",\u02B0:"h","\u2071":"i",\u02B2:"j","\u1D4F":"k",\u02E1:"l","\u1D50":"m",\u207F:"n","\u1D52":"o","\u1D56":"p",\u02B3:"r",\u02E2:"s","\u1D57":"t","\u1D58":"u","\u1D5B":"v",\u02B7:"w",\u02E3:"x",\u02B8:"y","\u1DBB":"z","\u1D5D":"\u03B2","\u1D5E":"\u03B3","\u1D5F":"\u03B4","\u1D60":"\u03D5","\u1D61":"\u03C7","\u1DBF":"\u03B8"}),JE={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030C":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030A":{text:"\\r",math:"\\mathring"},"\u030B":{text:"\\H"},"\u0327":{text:"\\c"}},dB={\u00E1:"a\u0301",\u00E0:"a\u0300",\u00E4:"a\u0308",\u01DF:"a\u0308\u0304",\u00E3:"a\u0303",\u0101:"a\u0304",\u0103:"a\u0306",\u1EAF:"a\u0306\u0301",\u1EB1:"a\u0306\u0300",\u1EB5:"a\u0306\u0303",\u01CE:"a\u030C",\u00E2:"a\u0302",\u1EA5:"a\u0302\u0301",\u1EA7:"a\u0302\u0300",\u1EAB:"a\u0302\u0303",\u0227:"a\u0307",\u01E1:"a\u0307\u0304",\u00E5:"a\u030A",\u01FB:"a\u030A\u0301",\u1E03:"b\u0307",\u0107:"c\u0301",\u1E09:"c\u0327\u0301",\u010D:"c\u030C",\u0109:"c\u0302",\u010B:"c\u0307",\u00E7:"c\u0327",\u010F:"d\u030C",\u1E0B:"d\u0307",\u1E11:"d\u0327",\u00E9:"e\u0301",\u00E8:"e\u0300",\u00EB:"e\u0308",\u1EBD:"e\u0303",\u0113:"e\u0304",\u1E17:"e\u0304\u0301",\u1E15:"e\u0304\u0300",\u0115:"e\u0306",\u1E1D:"e\u0327\u0306",\u011B:"e\u030C",\u00EA:"e\u0302",\u1EBF:"e\u0302\u0301",\u1EC1:"e\u0302\u0300",\u1EC5:"e\u0302\u0303",\u0117:"e\u0307",\u0229:"e\u0327",\u1E1F:"f\u0307",\u01F5:"g\u0301",\u1E21:"g\u0304",\u011F:"g\u0306",\u01E7:"g\u030C",\u011D:"g\u0302",\u0121:"g\u0307",\u0123:"g\u0327",\u1E27:"h\u0308",\u021F:"h\u030C",\u0125:"h\u0302",\u1E23:"h\u0307",\u1E29:"h\u0327",\u00ED:"i\u0301",\u00EC:"i\u0300",\u00EF:"i\u0308",\u1E2F:"i\u0308\u0301",\u0129:"i\u0303",\u012B:"i\u0304",\u012D:"i\u0306",\u01D0:"i\u030C",\u00EE:"i\u0302",\u01F0:"j\u030C",\u0135:"j\u0302",\u1E31:"k\u0301",\u01E9:"k\u030C",\u0137:"k\u0327",\u013A:"l\u0301",\u013E:"l\u030C",\u013C:"l\u0327",\u1E3F:"m\u0301",\u1E41:"m\u0307",\u0144:"n\u0301",\u01F9:"n\u0300",\u00F1:"n\u0303",\u0148:"n\u030C",\u1E45:"n\u0307",\u0146:"n\u0327",\u00F3:"o\u0301",\u00F2:"o\u0300",\u00F6:"o\u0308",\u022B:"o\u0308\u0304",\u00F5:"o\u0303",\u1E4D:"o\u0303\u0301",\u1E4F:"o\u0303\u0308",\u022D:"o\u0303\u0304",\u014D:"o\u0304",\u1E53:"o\u0304\u0301",\u1E51:"o\u0304\u0300",\u014F:"o\u0306",\u01D2:"o\u030C",\u00F4:"o\u0302",\u1ED1:"o\u0302\u0301",\u1ED3:"o\u0302\u0300",\u1ED7:"o\u0302\u0303",\u022F:"o\u0307",\u0231:"o\u0307\u0304",\u0151:"o\u030B",\u1E55:"p\u0301",\u1E57:"p\u0307",\u0155:"r\u0301",\u0159:"r\u030C",\u1E59:"r\u0307",\u0157:"r\u0327",\u015B:"s\u0301",\u1E65:"s\u0301\u0307",\u0161:"s\u030C",\u1E67:"s\u030C\u0307",\u015D:"s\u0302",\u1E61:"s\u0307",\u015F:"s\u0327",\u1E97:"t\u0308",\u0165:"t\u030C",\u1E6B:"t\u0307",\u0163:"t\u0327",\u00FA:"u\u0301",\u00F9:"u\u0300",\u00FC:"u\u0308",\u01D8:"u\u0308\u0301",\u01DC:"u\u0308\u0300",\u01D6:"u\u0308\u0304",\u01DA:"u\u0308\u030C",\u0169:"u\u0303",\u1E79:"u\u0303\u0301",\u016B:"u\u0304",\u1E7B:"u\u0304\u0308",\u016D:"u\u0306",\u01D4:"u\u030C",\u00FB:"u\u0302",\u016F:"u\u030A",\u0171:"u\u030B",\u1E7D:"v\u0303",\u1E83:"w\u0301",\u1E81:"w\u0300",\u1E85:"w\u0308",\u0175:"w\u0302",\u1E87:"w\u0307",\u1E98:"w\u030A",\u1E8D:"x\u0308",\u1E8B:"x\u0307",\u00FD:"y\u0301",\u1EF3:"y\u0300",\u00FF:"y\u0308",\u1EF9:"y\u0303",\u0233:"y\u0304",\u0177:"y\u0302",\u1E8F:"y\u0307",\u1E99:"y\u030A",\u017A:"z\u0301",\u017E:"z\u030C",\u1E91:"z\u0302",\u017C:"z\u0307",\u00C1:"A\u0301",\u00C0:"A\u0300",\u00C4:"A\u0308",\u01DE:"A\u0308\u0304",\u00C3:"A\u0303",\u0100:"A\u0304",\u0102:"A\u0306",\u1EAE:"A\u0306\u0301",\u1EB0:"A\u0306\u0300",\u1EB4:"A\u0306\u0303",\u01CD:"A\u030C",\u00C2:"A\u0302",\u1EA4:"A\u0302\u0301",\u1EA6:"A\u0302\u0300",\u1EAA:"A\u0302\u0303",\u0226:"A\u0307",\u01E0:"A\u0307\u0304",\u00C5:"A\u030A",\u01FA:"A\u030A\u0301",\u1E02:"B\u0307",\u0106:"C\u0301",\u1E08:"C\u0327\u0301",\u010C:"C\u030C",\u0108:"C\u0302",\u010A:"C\u0307",\u00C7:"C\u0327",\u010E:"D\u030C",\u1E0A:"D\u0307",\u1E10:"D\u0327",\u00C9:"E\u0301",\u00C8:"E\u0300",\u00CB:"E\u0308",\u1EBC:"E\u0303",\u0112:"E\u0304",\u1E16:"E\u0304\u0301",\u1E14:"E\u0304\u0300",\u0114:"E\u0306",\u1E1C:"E\u0327\u0306",\u011A:"E\u030C",\u00CA:"E\u0302",\u1EBE:"E\u0302\u0301",\u1EC0:"E\u0302\u0300",\u1EC4:"E\u0302\u0303",\u0116:"E\u0307",\u0228:"E\u0327",\u1E1E:"F\u0307",\u01F4:"G\u0301",\u1E20:"G\u0304",\u011E:"G\u0306",\u01E6:"G\u030C",\u011C:"G\u0302",\u0120:"G\u0307",\u0122:"G\u0327",\u1E26:"H\u0308",\u021E:"H\u030C",\u0124:"H\u0302",\u1E22:"H\u0307",\u1E28:"H\u0327",\u00CD:"I\u0301",\u00CC:"I\u0300",\u00CF:"I\u0308",\u1E2E:"I\u0308\u0301",\u0128:"I\u0303",\u012A:"I\u0304",\u012C:"I\u0306",\u01CF:"I\u030C",\u00CE:"I\u0302",\u0130:"I\u0307",\u0134:"J\u0302",\u1E30:"K\u0301",\u01E8:"K\u030C",\u0136:"K\u0327",\u0139:"L\u0301",\u013D:"L\u030C",\u013B:"L\u0327",\u1E3E:"M\u0301",\u1E40:"M\u0307",\u0143:"N\u0301",\u01F8:"N\u0300",\u00D1:"N\u0303",\u0147:"N\u030C",\u1E44:"N\u0307",\u0145:"N\u0327",\u00D3:"O\u0301",\u00D2:"O\u0300",\u00D6:"O\u0308",\u022A:"O\u0308\u0304",\u00D5:"O\u0303",\u1E4C:"O\u0303\u0301",\u1E4E:"O\u0303\u0308",\u022C:"O\u0303\u0304",\u014C:"O\u0304",\u1E52:"O\u0304\u0301",\u1E50:"O\u0304\u0300",\u014E:"O\u0306",\u01D1:"O\u030C",\u00D4:"O\u0302",\u1ED0:"O\u0302\u0301",\u1ED2:"O\u0302\u0300",\u1ED6:"O\u0302\u0303",\u022E:"O\u0307",\u0230:"O\u0307\u0304",\u0150:"O\u030B",\u1E54:"P\u0301",\u1E56:"P\u0307",\u0154:"R\u0301",\u0158:"R\u030C",\u1E58:"R\u0307",\u0156:"R\u0327",\u015A:"S\u0301",\u1E64:"S\u0301\u0307",\u0160:"S\u030C",\u1E66:"S\u030C\u0307",\u015C:"S\u0302",\u1E60:"S\u0307",\u015E:"S\u0327",\u0164:"T\u030C",\u1E6A:"T\u0307",\u0162:"T\u0327",\u00DA:"U\u0301",\u00D9:"U\u0300",\u00DC:"U\u0308",\u01D7:"U\u0308\u0301",\u01DB:"U\u0308\u0300",\u01D5:"U\u0308\u0304",\u01D9:"U\u0308\u030C",\u0168:"U\u0303",\u1E78:"U\u0303\u0301",\u016A:"U\u0304",\u1E7A:"U\u0304\u0308",\u016C:"U\u0306",\u01D3:"U\u030C",\u00DB:"U\u0302",\u016E:"U\u030A",\u0170:"U\u030B",\u1E7C:"V\u0303",\u1E82:"W\u0301",\u1E80:"W\u0300",\u1E84:"W\u0308",\u0174:"W\u0302",\u1E86:"W\u0307",\u1E8C:"X\u0308",\u1E8A:"X\u0307",\u00DD:"Y\u0301",\u1EF2:"Y\u0300",\u0178:"Y\u0308",\u1EF8:"Y\u0303",\u0232:"Y\u0304",\u0176:"Y\u0302",\u1E8E:"Y\u0307",\u0179:"Z\u0301",\u017D:"Z\u030C",\u1E90:"Z\u0302",\u017B:"Z\u0307",\u03AC:"\u03B1\u0301",\u1F70:"\u03B1\u0300",\u1FB1:"\u03B1\u0304",\u1FB0:"\u03B1\u0306",\u03AD:"\u03B5\u0301",\u1F72:"\u03B5\u0300",\u03AE:"\u03B7\u0301",\u1F74:"\u03B7\u0300",\u03AF:"\u03B9\u0301",\u1F76:"\u03B9\u0300",\u03CA:"\u03B9\u0308",\u0390:"\u03B9\u0308\u0301",\u1FD2:"\u03B9\u0308\u0300",\u1FD1:"\u03B9\u0304",\u1FD0:"\u03B9\u0306",\u03CC:"\u03BF\u0301",\u1F78:"\u03BF\u0300",\u03CD:"\u03C5\u0301",\u1F7A:"\u03C5\u0300",\u03CB:"\u03C5\u0308",\u03B0:"\u03C5\u0308\u0301",\u1FE2:"\u03C5\u0308\u0300",\u1FE1:"\u03C5\u0304",\u1FE0:"\u03C5\u0306",\u03CE:"\u03C9\u0301",\u1F7C:"\u03C9\u0300",\u038E:"\u03A5\u0301",\u1FEA:"\u03A5\u0300",\u03AB:"\u03A5\u0308",\u1FE9:"\u03A5\u0304",\u1FE8:"\u03A5\u0306",\u038F:"\u03A9\u0301",\u1FFA:"\u03A9\u0300"},Lb=class t{constructor(e,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new hS(e,r,this.mode),this.settings=r,this.leftrightDepth=0}expect(e,r){if(r===void 0&&(r=!0),this.fetch().text!==e)throw new nt("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var r=this.nextToken;this.consume(),this.gullet.pushToken(new vo("}")),this.gullet.pushTokens(e);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(e,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var i=this.fetch();if(t.endOfExpression.indexOf(i.text)!==-1||r&&i.text===r||e&&oh[i.text]&&oh[i.text].infix)break;var a=this.parseAtom(r);if(a){if(a.type==="internal")continue}else break;n.push(a)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(e){for(var r=-1,n,i=0;i=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+r[0]+'" used in math mode',e);var o=wn[this.mode][r].group,l=Gs.range(e),u;if(z1e.hasOwnProperty(o)){var h=o;u={type:"atom",mode:this.mode,family:h,loc:l,text:r}}else u={type:o,mode:this.mode,loc:l,text:r};s=u}else if(r.charCodeAt(0)>=128)this.settings.strict&&(gB(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),e)),s={type:"textord",mode:"text",loc:Gs.range(e),text:r};else return null;if(this.consume(),a)for(var f=0;f{e.tagName==="A"&&e.hasAttribute("target")&&e.setAttribute(t,e.getAttribute("target")??"")}),Q0.default.addHook("afterSanitizeAttributes",e=>{e.tagName==="A"&&e.hasAttribute(t)&&(e.setAttribute("target",e.getAttribute(t)??""),e.removeAttribute(t),e.getAttribute("target")==="_blank"&&e.setAttribute("rel","noopener"))})}var mF,Q0,gF,v,MS,nu,re,Fb,xo,DS,J0,Jve,OS,Bf,F1,PS,vF,yF,RS,Hn,zb,$b,Wa,eye,tye,rye,nye,iye,z1,aye,sye,oye,lye,ec,hh,xF,bF,cye,sr,B1,uye,Ff,ds,wF,Z0,P1,Gb,kF,TF,EF,BS,FS,Or,SF,CF,$1,hye,hF,fye,AF,zf,dye,pye,LF,fF,yr,gye,mye,vye,yye,RF,xye,Wr,bye,wye,iu,NS,kye,Tye,dF,IS,Ei,ep,fh,Xe,Eye,Sye,Hr,il,Pb,Cye,Aye,NF,Ub,zS,$S,GS,US,xr,Tr,_r,Lr,Rr,tn,qr,pF,_ye,pe,VS,Vb,WS,HS,Lye,Bb,G1,Wb,Rye,or=F(()=>{mF=Gi(nb(),1);go();go();go();go();go();go();Q0=Gi(GE(),1),gF=Object.defineProperty,v=(t,e)=>gF(t,"name",{value:e,configurable:!0}),MS=(t,e)=>{for(var r in e)gF(t,r,{get:e[r],enumerable:!0})},nu={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},re={trace:v((...t)=>{},"trace"),debug:v((...t)=>{},"debug"),info:v((...t)=>{},"info"),warn:v((...t)=>{},"warn"),error:v((...t)=>{},"error"),fatal:v((...t)=>{},"fatal")},Fb=v(function(t="fatal"){let e=nu.fatal;typeof t=="string"?t.toLowerCase()in nu&&(e=nu[t]):typeof t=="number"&&(e=t),re.trace=()=>{},re.debug=()=>{},re.info=()=>{},re.warn=()=>{},re.error=()=>{},re.fatal=()=>{},e<=nu.fatal&&(re.fatal=console.error?console.error.bind(console,xo("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",xo("FATAL"))),e<=nu.error&&(re.error=console.error?console.error.bind(console,xo("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",xo("ERROR"))),e<=nu.warn&&(re.warn=console.warn?console.warn.bind(console,xo("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",xo("WARN"))),e<=nu.info&&(re.info=console.info?console.info.bind(console,xo("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",xo("INFO"))),e<=nu.debug&&(re.debug=console.debug?console.debug.bind(console,xo("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",xo("DEBUG"))),e<=nu.trace&&(re.trace=console.debug?console.debug.bind(console,xo("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",xo("TRACE")))},"setLogLevel"),xo=v(t=>`%c${(0,mF.default)().format("ss.SSS")} : ${t} : `,"format"),DS=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,J0=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,Jve=/\s*%%.*\n/gm,OS=class extends Error{static{v(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}},Bf={},F1=v(function(t,e){t=t.replace(DS,"").replace(J0,"").replace(Jve,` `);for(let[r,{detector:n}]of Object.entries(Bf))if(n(t,e))return r;throw new OS(`No diagram type detected matching given configuration for text: ${t}`)},"detectType"),PS=v((...t)=>{for(let{id:e,detector:r,loader:n}of t)vF(e,r,n)},"registerLazyLoadedDiagrams"),vF=v((t,e,r)=>{Bf[t]&&re.warn(`Detector with key ${t} already exists. Overwriting.`),Bf[t]={detector:e,loader:r},re.debug(`Detector with key ${t} added${r?" with loader":""}`)},"addDetector"),yF=v(t=>Bf[t].loader,"getDiagramLoader"),RS=v((t,e,{depth:r=2,clobber:n=!1}={})=>{let i={depth:r,clobber:n};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach(a=>RS(t,a,i)),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach(a=>{t.includes(a)||t.push(a)}),t):t===void 0||r<=0?t!=null&&typeof t=="object"&&typeof e=="object"?Object.assign(t,e):e:(e!==void 0&&typeof t=="object"&&typeof e=="object"&&Object.keys(e).forEach(a=>{typeof e[a]=="object"&&(t[a]===void 0||typeof t[a]=="object")?(t[a]===void 0&&(t[a]=Array.isArray(e[a])?[]:{}),t[a]=RS(t[a],e[a],{depth:r-1,clobber:n})):(n||typeof t[a]!="object"&&typeof e[a]!="object")&&(t[a]=e[a])}),t)},"assignWithDepth"),Hn=RS,zb="#ffffff",$b="#f2f2f2",Wa=v((t,e)=>e?Me(t,{s:-40,l:10}):Me(t,{s:-40,l:-10}),"mkBorder"),eye=class{static{v(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||Me(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||Me(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Wa(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Wa(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Wa(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Wa(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||ct(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||ct(this.tertiaryColor),this.lineColor=this.lineColor||ct(this.background),this.arrowheadColor=this.arrowheadColor||ct(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Lt(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Lt(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||ct(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||kt(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e{this[r]=t[r]}),this.updateColors(),e.forEach(r=>{this[r]=t[r]})}},tye=v(t=>{let e=new eye;return e.calculate(t),e},"getThemeVariables"),rye=class{static{v(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=kt(this.primaryColor,16),this.tertiaryColor=Me(this.primaryColor,{h:-160}),this.primaryBorderColor=ct(this.background),this.secondaryBorderColor=Wa(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Wa(this.tertiaryColor,this.darkMode),this.primaryTextColor=ct(this.primaryColor),this.secondaryTextColor=ct(this.secondaryColor),this.tertiaryTextColor=ct(this.tertiaryColor),this.lineColor=ct(this.background),this.textColor=ct(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=kt(ct("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=$s(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=Lt("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Lt(this.sectionBkgColor,10),this.taskBorderColor=$s(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=$s(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=kt(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=kt(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=kt(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=Me(this.primaryColor,{h:64}),this.fillType3=Me(this.secondaryColor,{h:64}),this.fillType4=Me(this.primaryColor,{h:-64}),this.fillType5=Me(this.secondaryColor,{h:-64}),this.fillType6=Me(this.primaryColor,{h:128}),this.fillType7=Me(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330});for(let t=0;t{this[r]=t[r]}),this.updateColors(),e.forEach(r=>{this[r]=t[r]})}},nye=v(t=>{let e=new rye;return e.calculate(t),e},"getThemeVariables"),iye=class{static{v(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=Me(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=Me(this.primaryColor,{h:-160}),this.primaryBorderColor=Wa(this.primaryColor,this.darkMode),this.secondaryBorderColor=Wa(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Wa(this.tertiaryColor,this.darkMode),this.primaryTextColor=ct(this.primaryColor),this.secondaryTextColor=ct(this.secondaryColor),this.tertiaryTextColor=ct(this.tertiaryColor),this.lineColor=ct(this.background),this.textColor=ct(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=$s(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Lt(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Lt(this.tertiaryColor,40);for(let t=0;t{this[r]=t[r]}),this.updateColors(),e.forEach(r=>{this[r]=t[r]})}},z1=v(t=>{let e=new iye;return e.calculate(t),e},"getThemeVariables"),aye=class{static{v(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=kt("#cde498",10),this.primaryBorderColor=Wa(this.primaryColor,this.darkMode),this.secondaryBorderColor=Wa(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Wa(this.tertiaryColor,this.darkMode),this.primaryTextColor=ct(this.primaryColor),this.secondaryTextColor=ct(this.secondaryColor),this.tertiaryTextColor=ct(this.primaryColor),this.lineColor=ct(this.background),this.textColor=ct(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=Lt(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Me(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Me(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Me(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Me(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Me(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Me(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Me(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Me(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Me(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||Lt(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||Lt(this.tertiaryColor,40);for(let t=0;t{this[r]=t[r]}),this.updateColors(),e.forEach(r=>{this[r]=t[r]})}},sye=v(t=>{let e=new aye;return e.calculate(t),e},"getThemeVariables"),oye=class{static{v(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=kt(this.contrast,55),this.background="#ffffff",this.tertiaryColor=Me(this.primaryColor,{h:-160}),this.primaryBorderColor=Wa(this.primaryColor,this.darkMode),this.secondaryBorderColor=Wa(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Wa(this.tertiaryColor,this.darkMode),this.primaryTextColor=ct(this.primaryColor),this.secondaryTextColor=ct(this.secondaryColor),this.tertiaryTextColor=ct(this.tertiaryColor),this.lineColor=ct(this.background),this.textColor=ct(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=kt(this.contrast,55),this.border2=this.contrast,this.actorBorder=kt(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t{this[r]=t[r]}),this.updateColors(),e.forEach(r=>{this[r]=t[r]})}},lye=v(t=>{let e=new oye;return e.calculate(t),e},"getThemeVariables"),ec={base:{getThemeVariables:tye},dark:{getThemeVariables:nye},default:{getThemeVariables:z1},forest:{getThemeVariables:sye},neutral:{getThemeVariables:lye}},hh={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1},xF={...hh,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF"},themeCSS:void 0,themeVariables:ec.default.getThemeVariables(),sequence:{...hh.sequence,messageFont:v(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont"),noteFont:v(function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},"noteFont"),actorFont:v(function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}},"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...hh.gantt,tickInterval:void 0,useWidth:void 0},c4:{...hh.c4,useWidth:void 0,personFont:v(function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},"personFont"),external_personFont:v(function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},"external_personFont"),systemFont:v(function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},"systemFont"),external_systemFont:v(function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},"external_systemFont"),system_dbFont:v(function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},"system_dbFont"),external_system_dbFont:v(function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},"external_system_dbFont"),system_queueFont:v(function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},"system_queueFont"),external_system_queueFont:v(function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},"external_system_queueFont"),containerFont:v(function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},"containerFont"),external_containerFont:v(function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},"external_containerFont"),container_dbFont:v(function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},"container_dbFont"),external_container_dbFont:v(function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},"external_container_dbFont"),container_queueFont:v(function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},"container_queueFont"),external_container_queueFont:v(function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},"external_container_queueFont"),componentFont:v(function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},"componentFont"),external_componentFont:v(function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},"external_componentFont"),component_dbFont:v(function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},"component_dbFont"),external_component_dbFont:v(function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},"external_component_dbFont"),component_queueFont:v(function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},"component_queueFont"),external_component_queueFont:v(function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},"external_component_queueFont"),boundaryFont:v(function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},"boundaryFont"),messageFont:v(function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},"messageFont")},pie:{...hh.pie,useWidth:984},xyChart:{...hh.xyChart,useWidth:void 0},requirement:{...hh.requirement,useWidth:void 0},packet:{...hh.packet}},bF=v((t,e="")=>Object.keys(t).reduce((r,n)=>Array.isArray(t[n])?r:typeof t[n]=="object"&&t[n]!==null?[...r,e+n,...bF(t[n],"")]:[...r,e+n],[]),"keyify"),cye=new Set(bF(xF,"")),sr=xF,B1=v(t=>{if(re.debug("sanitizeDirective called with",t),!(typeof t!="object"||t==null)){if(Array.isArray(t)){t.forEach(e=>B1(e));return}for(let e of Object.keys(t)){if(re.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!cye.has(e)||t[e]==null){re.debug("sanitize deleting key: ",e),delete t[e];continue}if(typeof t[e]=="object"){re.debug("sanitizing object",e),B1(t[e]);continue}let r=["themeCSS","fontFamily","altFontFamily"];for(let n of r)e.includes(n)&&(re.debug("sanitizing css option",e),t[e]=uye(t[e]))}if(t.themeVariables)for(let e of Object.keys(t.themeVariables)){let r=t.themeVariables[e];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}re.debug("After sanitization",t)}},"sanitizeDirective"),uye=v(t=>{let e=0,r=0;for(let n of t){if(e{let r=Hn({},t),n={};for(let i of e)SF(i),n=Hn(n,i);if(r=Hn(r,n),n.theme&&n.theme in ec){let i=Hn({},wF),a=Hn(i.themeVariables||{},n.themeVariables);r.theme&&r.theme in ec&&(r.themeVariables=ec[r.theme].getThemeVariables(a))}return P1=r,AF(P1),P1},"updateCurrentConfig"),kF=v(t=>(ds=Hn({},Ff),ds=Hn(ds,t),t.theme&&ec[t.theme]&&(ds.themeVariables=ec[t.theme].getThemeVariables(t.themeVariables)),Gb(ds,Z0),ds),"setSiteConfig"),TF=v(t=>{wF=Hn({},t)},"saveConfigFromInitialize"),EF=v(t=>(ds=Hn(ds,t),Gb(ds,Z0),ds),"updateSiteConfig"),BS=v(()=>Hn({},ds),"getSiteConfig"),FS=v(t=>(AF(t),Hn(P1,t),Or()),"setConfig"),Or=v(()=>Hn({},P1),"getConfig"),SF=v(t=>{t&&(["secure",...ds.secure??[]].forEach(e=>{Object.hasOwn(t,e)&&(re.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])}),Object.keys(t).forEach(e=>{e.startsWith("__")&&delete t[e]}),Object.keys(t).forEach(e=>{typeof t[e]=="string"&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],typeof t[e]=="object"&&SF(t[e])}))},"sanitize"),CF=v(t=>{B1(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),Z0.push(t),Gb(ds,Z0)},"addDirective"),$1=v((t=ds)=>{Z0=[],Gb(t,Z0)},"reset"),hye={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},hF={},fye=v(t=>{hF[t]||(re.warn(hye[t]),hF[t]=!0)},"issueWarning"),AF=v(t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&&fye("LAZY_LOAD_DEPRECATED")},"checkConfig"),zf=//gi,dye=v(t=>t?RF(t).replace(/\\n/g,"#br#").split("#br#"):[""],"getRows"),pye=(()=>{let t=!1;return()=>{t||(_F(),t=!0)}})();v(_F,"setupDompurifyHooks");LF=v(t=>(pye(),Q0.default.sanitize(t)),"removeScript"),fF=v((t,e)=>{if(e.flowchart?.htmlLabels!==!1){let r=e.securityLevel;r==="antiscript"||r==="strict"?t=LF(t):r!=="loose"&&(t=RF(t),t=t.replace(//g,">"),t=t.replace(/=/g,"="),t=yye(t))}return t},"sanitizeMore"),yr=v((t,e)=>t&&(e.dompurifyConfig?t=Q0.default.sanitize(fF(t,e),e.dompurifyConfig).toString():t=Q0.default.sanitize(fF(t,e),{FORBID_TAGS:["style"]}).toString(),t),"sanitizeText"),gye=v((t,e)=>typeof t=="string"?yr(t,e):t.flat().map(r=>yr(r,e)),"sanitizeTextOrArray"),mye=v(t=>zf.test(t),"hasBreaks"),vye=v(t=>t.split(zf),"splitBreaks"),yye=v(t=>t.replace(/#br#/g,"
"),"placeholderToBreak"),RF=v(t=>t.replace(zf,"#br#"),"breakToPlaceholder"),xye=v(t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=e.replaceAll(/\(/g,"\\("),e=e.replaceAll(/\)/g,"\\)")),e},"getUrl"),Wr=v(t=>!(t===!1||["false","null","0"].includes(String(t).trim().toLowerCase())),"evaluate"),bye=v(function(...t){let e=t.filter(r=>!isNaN(r));return Math.max(...e)},"getMax"),wye=v(function(...t){let e=t.filter(r=>!isNaN(r));return Math.min(...e)},"getMin"),iu=v(function(t){let e=t.split(/(,)/),r=[];for(let n=0;n0&&n+1Math.max(0,t.split(e).length-1),"countOccurrence"),kye=v((t,e)=>{let r=NS(t,"~"),n=NS(e,"~");return r===1&&n===1},"shouldCombineSets"),Tye=v(t=>{let e=NS(t,"~"),r=!1;if(e<=1)return t;e%2!==0&&t.startsWith("~")&&(t=t.substring(1),r=!0);let n=[...t],i=n.indexOf("~"),a=n.lastIndexOf("~");for(;i!==-1&&a!==-1&&i!==a;)n[i]="<",n[a]=">",i=n.indexOf("~"),a=n.lastIndexOf("~");return r&&n.unshift("~"),n.join("")},"processSet"),dF=v(()=>window.MathMLElement!==void 0,"isMathMLSupported"),IS=/\$\$(.*)\$\$/g,Ei=v(t=>(t.match(IS)?.length??0)>0,"hasKatex"),ep=v(async(t,e)=>{t=await fh(t,e);let r=document.createElement("div");r.innerHTML=t,r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0",document.querySelector("body")?.insertAdjacentElement("beforeend",r);let i={width:r.clientWidth,height:r.clientHeight};return r.remove(),i},"calculateMathMLDimensions"),fh=v(async(t,e)=>{if(!Ei(t))return t;if(!(dF()||e.legacyMathML||e.forceLegacyMathML))return t.replace(IS,"MathML is unsupported in this environment.");let{default:r}=await Promise.resolve().then(()=>(uF(),cF)),n=e.forceLegacyMathML||!dF()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(zf).map(i=>Ei(i)?`
${i}
`:`
${i}
`).join("").replace(IS,(i,a)=>r.renderToString(a,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(//g,""))},"renderKatex"),Xe={getRows:dye,sanitizeText:yr,sanitizeTextOrArray:gye,hasBreaks:mye,splitBreaks:vye,lineBreakRegex:zf,removeScript:LF,getUrl:xye,evaluate:Wr,getMax:bye,getMin:wye},Eye=v(function(t,e){for(let r of e)t.attr(r[0],r[1])},"d3Attrs"),Sye=v(function(t,e,r){let n=new Map;return r?(n.set("width","100%"),n.set("style",`max-width: ${e}px;`)):(n.set("height",t),n.set("width",e)),n},"calculateSvgSizeAttrs"),Hr=v(function(t,e,r,n){let i=Sye(e,r,n);Eye(t,i)},"configureSvgSize"),il=v(function(t,e,r,n){let i=e.node().getBBox(),a=i.width,s=i.height;re.info(`SVG bounds: ${a}x${s}`,i);let o=0,l=0;re.info(`Graph bounds: ${o}x${l}`,t),o=a+r*2,l=s+r*2,re.info(`Calculated bounds: ${o}x${l}`),Hr(e,l,o,n);let u=`${i.x-r} ${i.y-r} ${i.width+2*r} ${i.height+2*r}`;e.attr("viewBox",u)},"setupGraphViewbox"),Pb={},Cye=v((t,e,r)=>{let n="";return t in Pb&&Pb[t]?n=Pb[t](r):re.warn(`No theme found for ${t}`),` & { font-family: ${r.fontFamily}; font-size: ${r.fontSize}; fill: ${r.textColor} } /* Classes common for multiple diagrams */ & .error-icon { fill: ${r.errorBkgColor}; } & .error-text { fill: ${r.errorTextColor}; stroke: ${r.errorTextColor}; } & .edge-thickness-normal { stroke-width: 1px; } & .edge-thickness-thick { stroke-width: 3.5px } & .edge-pattern-solid { stroke-dasharray: 0; } & .edge-thickness-invisible { stroke-width: 0; fill: none; } & .edge-pattern-dashed{ stroke-dasharray: 3; } .edge-pattern-dotted { stroke-dasharray: 2; } & .marker { fill: ${r.lineColor}; stroke: ${r.lineColor}; } & .marker.cross { stroke: ${r.lineColor}; } & svg { font-family: ${r.fontFamily}; font-size: ${r.fontSize}; } & p { margin: 0 } ${n} ${e} `},"getStyles"),Aye=v((t,e)=>{e!==void 0&&(Pb[t]=e)},"addStylesForDiagram"),NF=Cye,Ub={};MS(Ub,{clear:()=>xr,getAccDescription:()=>Rr,getAccTitle:()=>_r,getDiagramTitle:()=>qr,setAccDescription:()=>Lr,setAccTitle:()=>Tr,setDiagramTitle:()=>tn});zS="",$S="",GS="",US=v(t=>yr(t,Or()),"sanitizeText"),xr=v(()=>{zS="",GS="",$S=""},"clear"),Tr=v(t=>{zS=US(t).replace(/^\s+/g,"")},"setAccTitle"),_r=v(()=>zS,"getAccTitle"),Lr=v(t=>{GS=US(t).replace(/\n\s+/g,` `)},"setAccDescription"),Rr=v(()=>GS,"getAccDescription"),tn=v(t=>{$S=US(t)},"setDiagramTitle"),qr=v(()=>$S,"getDiagramTitle"),pF=re,_ye=Fb,pe=Or,VS=FS,Vb=Ff,WS=v(t=>yr(t,pe()),"sanitizeText"),HS=il,Lye=v(()=>Ub,"getCommonDb"),Bb={},G1=v((t,e,r)=>{Bb[t]&&pF.warn(`Diagram with id ${t} already registered. Overwriting.`),Bb[t]=e,r&&vF(t,r),Aye(t,e.styles),e.injectUtils?.(pF,_ye,pe,WS,HS,Lye(),()=>{})},"registerDiagram"),Wb=v(t=>{if(t in Bb)return Bb[t];throw new Rye(t)},"getDiagram"),Rye=class extends Error{static{v(this,"DiagramNotFoundError")}constructor(t){super(`Diagram ${t} not found.`)}}});function lC(t){return typeof t>"u"||t===null}function DF(t){return typeof t=="object"&&t!==null}function OF(t){return Array.isArray(t)?t:lC(t)?[]:[t]}function PF(t,e){var r,n,i,a;if(e)for(a=Object.keys(e),r=0,n=a.length;ro&&(a=" ... ",e=n-o+a.length),r-n>o&&(s=" ...",r=n+o-s.length),{str:a+t.slice(e,r).replace(/\t/g,"\u2192")+s,pos:n-e+a.length}}function qb(t,e){return Si.repeat(" ",e-t.length)+t}function zF(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),typeof e.indent!="number"&&(e.indent=1),typeof e.linesBefore!="number"&&(e.linesBefore=3),typeof e.linesAfter!="number"&&(e.linesAfter=2);for(var r=/\r?\n|\r|\0/g,n=[0],i=[],a,s=-1;a=r.exec(t.buffer);)i.push(a.index),n.push(a.index+a[0].length),t.position<=a.index&&s<0&&(s=n.length-2);s<0&&(s=n.length-1);var o="",l,u,h=Math.min(t.line+e.linesAfter,i.length).toString().length,f=e.maxLength-(e.indent+h+3);for(l=1;l<=e.linesBefore&&!(s-l<0);l++)u=Hb(t.buffer,n[s-l],i[s-l],t.position-(n[s]-n[s-l]),f),o=Si.repeat(" ",e.indent)+qb((t.line-l+1).toString(),h)+" | "+u.str+` `+o;for(u=Hb(t.buffer,n[s],i[s],t.position,f),o+=Si.repeat(" ",e.indent)+qb((t.line+1).toString(),h)+" | "+u.str+` `,o+=Si.repeat("-",e.indent+h+3+u.pos)+`^ `,l=1;l<=e.linesAfter&&!(s+l>=i.length);l++)u=Hb(t.buffer,n[s+l],i[s+l],t.position-(n[s]-n[s+l]),f),o+=Si.repeat(" ",e.indent)+qb((t.line+l+1).toString(),h)+" | "+u.str+` `;return o.replace(/\n$/,"")}function $F(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(n){e[String(n)]=r})}),e}function GF(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(Fye.indexOf(r)===-1)throw new ps('Unknown option "'+r+'" is met in definition of "'+t+'" YAML type.')}),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(r){return r},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=$F(e.styleAliases||null),zye.indexOf(this.kind)===-1)throw new ps('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}function YS(t,e){var r=[];return t[e].forEach(function(n){var i=r.length;r.forEach(function(a,s){a.tag===n.tag&&a.kind===n.kind&&a.multi===n.multi&&(i=s)}),r[i]=n}),r}function UF(){var t={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},e,r;function n(i){i.multi?(t.multi[i.kind].push(i),t.multi.fallback.push(i)):t[i.kind][i.tag]=t.fallback[i.tag]=i}for(v(n,"collectType"),e=0,r=arguments.length;e=0&&(e=e.slice(1)),e===".inf"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===".nan"?NaN:r*parseFloat(e,10)}function nz(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Si.isNegativeZero(t))return"-0.0";return r=t.toString(10),jye.test(r)?r.replace("e",".e"):r}function iz(t){return Object.prototype.toString.call(t)==="[object Number]"&&(t%1!==0||Si.isNegativeZero(t))}function lz(t){return t===null?!1:sz.exec(t)!==null||oz.exec(t)!==null}function cz(t){var e,r,n,i,a,s,o,l=0,u=null,h,f,d;if(e=sz.exec(t),e===null&&(e=oz.exec(t)),e===null)throw new Error("Date resolve error");if(r=+e[1],n=+e[2]-1,i=+e[3],!e[4])return new Date(Date.UTC(r,n,i));if(a=+e[4],s=+e[5],o=+e[6],e[7]){for(l=e[7].slice(0,3);l.length<3;)l+="0";l=+l}return e[9]&&(h=+e[10],f=+(e[11]||0),u=(h*60+f)*6e4,e[9]==="-"&&(u=-u)),d=new Date(Date.UTC(r,n,i,a,s,o,l)),u&&d.setTime(d.getTime()-u),d}function uz(t){return t.toISOString()}function hz(t){return t==="<<"||t===null}function fz(t){if(t===null)return!1;var e,r,n=0,i=t.length,a=uC;for(r=0;r64)){if(e<0)return!1;n+=6}return n%8===0}function dz(t){var e,r,n=t.replace(/[\r\n=]/g,""),i=n.length,a=uC,s=0,o=[];for(e=0;e>16&255),o.push(s>>8&255),o.push(s&255)),s=s<<6|a.indexOf(n.charAt(e));return r=i%4*6,r===0?(o.push(s>>16&255),o.push(s>>8&255),o.push(s&255)):r===18?(o.push(s>>10&255),o.push(s>>2&255)):r===12&&o.push(s>>4&255),new Uint8Array(o)}function pz(t){var e="",r=0,n,i,a=t.length,s=uC;for(n=0;n>18&63],e+=s[r>>12&63],e+=s[r>>6&63],e+=s[r&63]),r=(r<<8)+t[n];return i=a%3,i===0?(e+=s[r>>18&63],e+=s[r>>12&63],e+=s[r>>6&63],e+=s[r&63]):i===2?(e+=s[r>>10&63],e+=s[r>>4&63],e+=s[r<<2&63],e+=s[64]):i===1&&(e+=s[r>>2&63],e+=s[r<<4&63],e+=s[64],e+=s[64]),e}function gz(t){return Object.prototype.toString.call(t)==="[object Uint8Array]"}function mz(t){if(t===null)return!0;var e=[],r,n,i,a,s,o=t;for(r=0,n=o.length;r>10)+55296,(t-65536&1023)+56320)}function Mz(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||kz,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function hC(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=Bye(r),new ps(e,r)}function zt(t,e){throw hC(t,e)}function U1(t,e){t.onWarning&&t.onWarning.call(null,hC(t,e))}function au(t,e,r,n){var i,a,s,o;if(e1&&(t.result+=Si.repeat(` `,e-1))}function Dz(t,e,r){var n,i,a,s,o,l,u,h,f=t.kind,d=t.result,p;if(p=t.input.charCodeAt(t.position),Ha(p)||Gf(p)||p===35||p===38||p===42||p===33||p===124||p===62||p===39||p===34||p===37||p===64||p===96||(p===63||p===45)&&(i=t.input.charCodeAt(t.position+1),Ha(i)||r&&Gf(i)))return!1;for(t.kind="scalar",t.result="",a=s=t.position,o=!1;p!==0;){if(p===58){if(i=t.input.charCodeAt(t.position+1),Ha(i)||r&&Gf(i))break}else if(p===35){if(n=t.input.charCodeAt(t.position-1),Ha(n))break}else{if(t.position===t.lineStart&&q1(t)||r&&Gf(p))break;if(al(p))if(l=t.line,u=t.lineStart,h=t.lineIndent,oi(t,!1,-1),t.lineIndent>=e){o=!0,p=t.input.charCodeAt(t.position);continue}else{t.position=s,t.line=l,t.lineStart=u,t.lineIndent=h;break}}o&&(au(t,a,s,!1),e4(t,t.line-l),a=s=t.position,o=!1),dh(p)||(s=t.position+1),p=t.input.charCodeAt(++t.position)}return au(t,a,s,!1),t.result?!0:(t.kind=f,t.result=d,!1)}function Oz(t,e){var r,n,i;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(au(t,n,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)n=t.position,t.position++,i=t.position;else return!0;else al(r)?(au(t,n,i,!0),e4(t,oi(t,!1,e)),n=i=t.position):t.position===t.lineStart&&q1(t)?zt(t,"unexpected end of the document within a single quoted scalar"):(t.position++,i=t.position);zt(t,"unexpected end of the stream within a single quoted scalar")}function Pz(t,e){var r,n,i,a,s,o;if(o=t.input.charCodeAt(t.position),o!==34)return!1;for(t.kind="scalar",t.result="",t.position++,r=n=t.position;(o=t.input.charCodeAt(t.position))!==0;){if(o===34)return au(t,r,t.position,!0),t.position++,!0;if(o===92){if(au(t,r,t.position,!0),o=t.input.charCodeAt(++t.position),al(o))oi(t,!1,e);else if(o<256&&Nz[o])t.result+=Iz[o],t.position++;else if((s=_z(o))>0){for(i=s,a=0;i>0;i--)o=t.input.charCodeAt(++t.position),(s=Az(o))>=0?a=(a<<4)+s:zt(t,"expected hexadecimal character");t.result+=Rz(a),t.position++}else zt(t,"unknown escape sequence");r=n=t.position}else al(o)?(au(t,r,n,!0),e4(t,oi(t,!1,e)),r=n=t.position):t.position===t.lineStart&&q1(t)?zt(t,"unexpected end of the document within a double quoted scalar"):(t.position++,n=t.position)}zt(t,"unexpected end of the stream within a double quoted scalar")}function Bz(t,e){var r=!0,n,i,a,s=t.tag,o,l=t.anchor,u,h,f,d,p,g=Object.create(null),m,y,x,b;if(b=t.input.charCodeAt(t.position),b===91)h=93,p=!1,o=[];else if(b===123)h=125,p=!0,o={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=o),b=t.input.charCodeAt(++t.position);b!==0;){if(oi(t,!0,e),b=t.input.charCodeAt(t.position),b===h)return t.position++,t.tag=s,t.anchor=l,t.kind=p?"mapping":"sequence",t.result=o,!0;r?b===44&&zt(t,"expected the node content, but found ','"):zt(t,"missed comma between flow collection entries"),y=m=x=null,f=d=!1,b===63&&(u=t.input.charCodeAt(t.position+1),Ha(u)&&(f=d=!0,t.position++,oi(t,!0,e))),n=t.line,i=t.lineStart,a=t.position,Vf(t,e,Xb,!1,!0),y=t.tag,m=t.result,oi(t,!0,e),b=t.input.charCodeAt(t.position),(d||t.line===n)&&b===58&&(f=!0,b=t.input.charCodeAt(++t.position),oi(t,!0,e),Vf(t,e,Xb,!1,!0),x=t.result),p?Uf(t,o,g,y,m,x,n,i,a):f?o.push(Uf(t,null,g,y,m,x,n,i,a)):o.push(m),oi(t,!0,e),b=t.input.charCodeAt(t.position),b===44?(r=!0,b=t.input.charCodeAt(++t.position)):r=!1}zt(t,"unexpected end of the stream within a flow collection")}function Fz(t,e){var r,n,i=qS,a=!1,s=!1,o=e,l=0,u=!1,h,f;if(f=t.input.charCodeAt(t.position),f===124)n=!1;else if(f===62)n=!0;else return!1;for(t.kind="scalar",t.result="";f!==0;)if(f=t.input.charCodeAt(++t.position),f===43||f===45)qS===i?i=f===43?IF:l2e:zt(t,"repeat of a chomping mode identifier");else if((h=Lz(f))>=0)h===0?zt(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):s?zt(t,"repeat of an indentation width identifier"):(o=e+h-1,s=!0);else break;if(dh(f)){do f=t.input.charCodeAt(++t.position);while(dh(f));if(f===35)do f=t.input.charCodeAt(++t.position);while(!al(f)&&f!==0)}for(;f!==0;){for(Jb(t),t.lineIndent=0,f=t.input.charCodeAt(t.position);(!s||t.lineIndento&&(o=t.lineIndent),al(f)){l++;continue}if(t.lineIndente)&&l!==0)zt(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(y&&(s=t.line,o=t.lineStart,l=t.position),Vf(t,e,jb,!0,i)&&(y?g=t.result:m=t.result),y||(Uf(t,f,d,p,g,m,s,o,l),p=g=m=null),oi(t,!0,-1),b=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&b!==0)zt(t,"bad indentation of a mapping entry");else if(t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndente?l=1:t.lineIndent===e?l=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),f=0,d=t.implicitTypes.length;f"),t.result!==null&&g.kind!==t.kind&&zt(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+g.kind+'", not "'+t.kind+'"'),g.resolve(t.result,t.tag)?(t.result=g.construct(t.result,t.tag),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):zt(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return t.listener!==null&&t.listener("close",t),t.tag!==null||t.anchor!==null||h}function Vz(t){var e=t.position,r,n,i,a=!1,s;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);(s=t.input.charCodeAt(t.position))!==0&&(oi(t,!0,-1),s=t.input.charCodeAt(t.position),!(t.lineIndent>0||s!==37));){for(a=!0,s=t.input.charCodeAt(++t.position),r=t.position;s!==0&&!Ha(s);)s=t.input.charCodeAt(++t.position);for(n=t.input.slice(r,t.position),i=[],n.length<1&&zt(t,"directive name must not be less than one character in length");s!==0;){for(;dh(s);)s=t.input.charCodeAt(++t.position);if(s===35){do s=t.input.charCodeAt(++t.position);while(s!==0&&!al(s));break}if(al(s))break;for(r=t.position;s!==0&&!Ha(s);)s=t.input.charCodeAt(++t.position);i.push(t.input.slice(r,t.position))}s!==0&&Jb(t),ph.call(MF,n)?MF[n](t,n,i):U1(t,'unknown document directive "'+n+'"')}if(oi(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,oi(t,!0,-1)):a&&zt(t,"directives end mark is expected"),Vf(t,t.lineIndent-1,jb,!1,!0),oi(t,!0,-1),t.checkLineBreaks&&u2e.test(t.input.slice(e,t.position))&&U1(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&q1(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,oi(t,!0,-1));return}if(t.position"u"&&(r=e,e=null);var n=fC(t,r);if(typeof e!="function")return n;for(var i=0,a=n.length;i=55296&&r<=56319&&e+1=56320&&n<=57343)?(r-55296)*1024+n-56320+65536:r}function pC(t){var e=/^\n* /;return e.test(t)}function c$(t,e,r,n,i,a,s,o){var l,u=0,h=null,f=!1,d=!1,p=n!==-1,g=-1,m=i$(rp(t,0))&&a$(rp(t,t.length-1));if(e||s)for(l=0;l=65536?l+=2:l++){if(u=rp(t,l),!ip(u))return tp;m=m&&tC(u,h,o),h=u}else{for(l=0;l=65536?l+=2:l++){if(u=rp(t,l),u===V1)f=!0,p&&(d=d||l-g-1>n&&t[g+1]!==" ",g=l);else if(!ip(u))return tp;m=m&&tC(u,h,o),h=u}d=d||p&&l-g-1>n&&t[g+1]!==" "}return!f&&!d?m&&!s&&!i(t)?s$:a===W1?tp:rC:r>9&&pC(t)?tp:s?a===W1?tp:rC:d?l$:o$}function u$(t,e,r,n,i){t.dump=function(){if(e.length===0)return t.quotingType===W1?'""':"''";if(!t.noCompatMode&&(R2e.indexOf(e)!==-1||N2e.test(e)))return t.quotingType===W1?'"'+e+'"':"'"+e+"'";var a=t.indent*Math.max(1,r),s=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),o=n||t.flowLevel>-1&&r>=t.flowLevel;function l(u){return n$(t,u)}switch(v(l,"testAmbiguity"),c$(e,o,t.indent,s,l,t.quotingType,t.forceQuotes&&!n,i)){case s$:return e;case rC:return"'"+e.replace(/'/g,"''")+"'";case o$:return"|"+nC(e,t.indent)+iC(JS(e,a));case l$:return">"+nC(e,t.indent)+iC(JS(h$(e,s),a));case tp:return'"'+f$(e)+'"';default:throw new ps("impossible error: invalid scalar style")}}()}function nC(t,e){var r=pC(t)?String(e):"",n=t[t.length-1]===` `,i=n&&(t[t.length-2]===` `||t===` `),a=i?"+":n?"":"-";return r+a+` `}function iC(t){return t[t.length-1]===` `?t.slice(0,-1):t}function h$(t,e){for(var r=/(\n+)([^\n]*)/g,n=function(){var u=t.indexOf(` `);return u=u!==-1?u:t.length,r.lastIndex=u,aC(t.slice(0,u),e)}(),i=t[0]===` `||t[0]===" ",a,s;s=r.exec(t);){var o=s[1],l=s[2];a=l[0]===" ",n+=o+(!i&&!a&&l!==""?` `:"")+aC(l,e),i=a}return n}function aC(t,e){if(t===""||t[0]===" ")return t;for(var r=/ [^ ]/g,n,i=0,a,s=0,o=0,l="";n=r.exec(t);)o=n.index,o-i>e&&(a=s>i?s:o,l+=` `+t.slice(i,a),i=a+1),s=o;return l+=` `,t.length-i>e&&s>i?l+=t.slice(i,s)+` `+t.slice(s+1):l+=t.slice(i),l.slice(1)}function f$(t){for(var e="",r=0,n,i=0;i=65536?i+=2:i++)r=rp(t,i),n=Sa[r],!n&&ip(r)?(e+=t[i],r>=65536&&(e+=t[i+1])):e+=n||t$(r);return e}function d$(t,e,r){var n="",i=t.tag,a,s,o;for(a=0,s=r.length;a"u"&&tc(t,e,null,!1,!1))&&(n!==""&&(n+=","+(t.condenseFlow?"":" ")),n+=t.dump);t.tag=i,t.dump="["+n+"]"}function sC(t,e,r,n){var i="",a=t.tag,s,o,l;for(s=0,o=r.length;s"u"&&tc(t,e+1,null,!0,!0,!1,!0))&&((!n||i!=="")&&(i+=Zb(t,e)),t.dump&&V1===t.dump.charCodeAt(0)?i+="-":i+="- ",i+=t.dump);t.tag=a,t.dump=i||"[]"}function p$(t,e,r){var n="",i=t.tag,a=Object.keys(r),s,o,l,u,h;for(s=0,o=a.length;s1024&&(h+="? "),h+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),tc(t,e,u,!1,!1)&&(h+=t.dump,n+=h));t.tag=i,t.dump="{"+n+"}"}function g$(t,e,r,n){var i="",a=t.tag,s=Object.keys(r),o,l,u,h,f,d;if(t.sortKeys===!0)s.sort();else if(typeof t.sortKeys=="function")s.sort(t.sortKeys);else if(t.sortKeys)throw new ps("sortKeys must be a boolean or a function");for(o=0,l=s.length;o1024,f&&(t.dump&&V1===t.dump.charCodeAt(0)?d+="?":d+="? "),d+=t.dump,f&&(d+=Zb(t,e)),tc(t,e+1,h,!0,f)&&(t.dump&&V1===t.dump.charCodeAt(0)?d+=":":d+=": ",d+=t.dump,i+=d));t.tag=a,t.dump=i||"{}"}function oC(t,e,r){var n,i,a,s,o,l;for(i=r?t.explicitTypes:t.implicitTypes,a=0,s=i.length;a tag resolver accepts not "'+l+'" style');t.dump=n}return!0}return!1}function tc(t,e,r,n,i,a,s){t.tag=null,t.dump=r,oC(t,r,!1)||oC(t,r,!0);var o=Yz.call(t.dump),l=n,u;n&&(n=t.flowLevel<0||t.flowLevel>e);var h=o==="[object Object]"||o==="[object Array]",f,d;if(h&&(f=t.duplicates.indexOf(r),d=f!==-1),(t.tag!==null&&t.tag!=="?"||d||t.indent!==2&&e>0)&&(i=!1),d&&t.usedDuplicates[f])t.dump="*ref_"+f;else{if(h&&d&&!t.usedDuplicates[f]&&(t.usedDuplicates[f]=!0),o==="[object Object]")n&&Object.keys(t.dump).length!==0?(g$(t,e,t.dump,i),d&&(t.dump="&ref_"+f+t.dump)):(p$(t,e,t.dump),d&&(t.dump="&ref_"+f+" "+t.dump));else if(o==="[object Array]")n&&t.dump.length!==0?(t.noArrayIndent&&!s&&e>0?sC(t,e-1,t.dump,i):sC(t,e,t.dump,i),d&&(t.dump="&ref_"+f+t.dump)):(d$(t,e,t.dump),d&&(t.dump="&ref_"+f+" "+t.dump));else if(o==="[object String]")t.tag!=="?"&&u$(t,t.dump,e,a,l);else{if(o==="[object Undefined]")return!1;if(t.skipInvalid)return!1;throw new ps("unacceptable kind of an object to dump "+o)}t.tag!==null&&t.tag!=="?"&&(u=encodeURI(t.tag[0]==="!"?t.tag.slice(1):t.tag).replace(/!/g,"%21"),t.tag[0]==="!"?u="!"+u:u.slice(0,18)==="tag:yaml.org,2002:"?u="!!"+u.slice(18):u="!<"+u+">",t.dump=u+" "+t.dump)}return!0}function m$(t,e){var r=[],n=[],i,a;for(Qb(t,r,n),i=0,a=n.length;i{or();v(lC,"isNothing");v(DF,"isObject");v(OF,"toArray");v(PF,"extend");v(BF,"repeat");v(FF,"isNegativeZero");Nye=lC,Iye=DF,Mye=OF,Dye=BF,Oye=FF,Pye=PF,Si={isNothing:Nye,isObject:Iye,toArray:Mye,repeat:Dye,isNegativeZero:Oye,extend:Pye};v(cC,"formatError");v(np,"YAMLException$1");np.prototype=Object.create(Error.prototype);np.prototype.constructor=np;np.prototype.toString=v(function(e){return this.name+": "+cC(this,e)},"toString");ps=np;v(Hb,"getLine");v(qb,"padStart");v(zF,"makeSnippet");Bye=zF,Fye=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],zye=["scalar","sequence","mapping"];v($F,"compileStyleAliases");v(GF,"Type$1");Ea=GF;v(YS,"compileList");v(UF,"compileMap");v(Yb,"Schema$1");Yb.prototype.extend=v(function(e){var r=[],n=[];if(e instanceof Ea)n.push(e);else if(Array.isArray(e))n=n.concat(e);else if(e&&(Array.isArray(e.implicit)||Array.isArray(e.explicit)))e.implicit&&(r=r.concat(e.implicit)),e.explicit&&(n=n.concat(e.explicit));else throw new ps("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");r.forEach(function(a){if(!(a instanceof Ea))throw new ps("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(a.loadKind&&a.loadKind!=="scalar")throw new ps("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(a.multi)throw new ps("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),n.forEach(function(a){if(!(a instanceof Ea))throw new ps("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(Yb.prototype);return i.implicit=(this.implicit||[]).concat(r),i.explicit=(this.explicit||[]).concat(n),i.compiledImplicit=YS(i,"implicit"),i.compiledExplicit=YS(i,"explicit"),i.compiledTypeMap=UF(i.compiledImplicit,i.compiledExplicit),i},"extend");$ye=Yb,Gye=new Ea("tag:yaml.org,2002:str",{kind:"scalar",construct:v(function(t){return t!==null?t:""},"construct")}),Uye=new Ea("tag:yaml.org,2002:seq",{kind:"sequence",construct:v(function(t){return t!==null?t:[]},"construct")}),Vye=new Ea("tag:yaml.org,2002:map",{kind:"mapping",construct:v(function(t){return t!==null?t:{}},"construct")}),Wye=new $ye({explicit:[Gye,Uye,Vye]});v(VF,"resolveYamlNull");v(WF,"constructYamlNull");v(HF,"isNull");Hye=new Ea("tag:yaml.org,2002:null",{kind:"scalar",resolve:VF,construct:WF,predicate:HF,represent:{canonical:v(function(){return"~"},"canonical"),lowercase:v(function(){return"null"},"lowercase"),uppercase:v(function(){return"NULL"},"uppercase"),camelcase:v(function(){return"Null"},"camelcase"),empty:v(function(){return""},"empty")},defaultStyle:"lowercase"});v(qF,"resolveYamlBoolean");v(YF,"constructYamlBoolean");v(XF,"isBoolean");qye=new Ea("tag:yaml.org,2002:bool",{kind:"scalar",resolve:qF,construct:YF,predicate:XF,represent:{lowercase:v(function(t){return t?"true":"false"},"lowercase"),uppercase:v(function(t){return t?"TRUE":"FALSE"},"uppercase"),camelcase:v(function(t){return t?"True":"False"},"camelcase")},defaultStyle:"lowercase"});v(jF,"isHexCode");v(KF,"isOctCode");v(ZF,"isDecCode");v(QF,"resolveYamlInteger");v(JF,"constructYamlInteger");v(ez,"isInteger");Yye=new Ea("tag:yaml.org,2002:int",{kind:"scalar",resolve:QF,construct:JF,predicate:ez,represent:{binary:v(function(t){return t>=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)},"binary"),octal:v(function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)},"octal"),decimal:v(function(t){return t.toString(10)},"decimal"),hexadecimal:v(function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)},"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Xye=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");v(tz,"resolveYamlFloat");v(rz,"constructYamlFloat");jye=/^[-+]?[0-9]+e/;v(nz,"representYamlFloat");v(iz,"isFloat");Kye=new Ea("tag:yaml.org,2002:float",{kind:"scalar",resolve:tz,construct:rz,predicate:iz,represent:nz,defaultStyle:"lowercase"}),az=Wye.extend({implicit:[Hye,qye,Yye,Kye]}),Zye=az,sz=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),oz=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");v(lz,"resolveYamlTimestamp");v(cz,"constructYamlTimestamp");v(uz,"representYamlTimestamp");Qye=new Ea("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:lz,construct:cz,instanceOf:Date,represent:uz});v(hz,"resolveYamlMerge");Jye=new Ea("tag:yaml.org,2002:merge",{kind:"scalar",resolve:hz}),uC=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= \r`;v(fz,"resolveYamlBinary");v(dz,"constructYamlBinary");v(pz,"representYamlBinary");v(gz,"isBinary");e2e=new Ea("tag:yaml.org,2002:binary",{kind:"scalar",resolve:fz,construct:dz,predicate:gz,represent:pz}),t2e=Object.prototype.hasOwnProperty,r2e=Object.prototype.toString;v(mz,"resolveYamlOmap");v(vz,"constructYamlOmap");n2e=new Ea("tag:yaml.org,2002:omap",{kind:"sequence",resolve:mz,construct:vz}),i2e=Object.prototype.toString;v(yz,"resolveYamlPairs");v(xz,"constructYamlPairs");a2e=new Ea("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:yz,construct:xz}),s2e=Object.prototype.hasOwnProperty;v(bz,"resolveYamlSet");v(wz,"constructYamlSet");o2e=new Ea("tag:yaml.org,2002:set",{kind:"mapping",resolve:bz,construct:wz}),kz=Zye.extend({implicit:[Qye,Jye],explicit:[e2e,n2e,a2e,o2e]}),ph=Object.prototype.hasOwnProperty,Xb=1,Tz=2,Ez=3,jb=4,qS=1,l2e=2,IF=3,c2e=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,u2e=/[\x85\u2028\u2029]/,h2e=/[,\[\]\{\}]/,Sz=/^(?:!|!!|![a-z\-]+!)$/i,Cz=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;v(XS,"_class");v(al,"is_EOL");v(dh,"is_WHITE_SPACE");v(Ha,"is_WS_OR_EOL");v(Gf,"is_FLOW_INDICATOR");v(Az,"fromHexCode");v(_z,"escapedHexLen");v(Lz,"fromDecimalCode");v(jS,"simpleEscapeSequence");v(Rz,"charFromCodepoint");Nz=new Array(256),Iz=new Array(256);for($f=0;$f<256;$f++)Nz[$f]=jS($f)?1:0,Iz[$f]=jS($f);v(Mz,"State$1");v(hC,"generateError");v(zt,"throwError");v(U1,"throwWarning");MF={YAML:v(function(e,r,n){var i,a,s;e.version!==null&&zt(e,"duplication of %YAML directive"),n.length!==1&&zt(e,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),i===null&&zt(e,"ill-formed argument of the YAML directive"),a=parseInt(i[1],10),s=parseInt(i[2],10),a!==1&&zt(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=s<2,s!==1&&s!==2&&U1(e,"unsupported YAML version of the document")},"handleYamlDirective"),TAG:v(function(e,r,n){var i,a;n.length!==2&&zt(e,"TAG directive accepts exactly two arguments"),i=n[0],a=n[1],Sz.test(i)||zt(e,"ill-formed tag handle (first argument) of the TAG directive"),ph.call(e.tagMap,i)&&zt(e,'there is a previously declared suffix for "'+i+'" tag handle'),Cz.test(a)||zt(e,"ill-formed tag prefix (second argument) of the TAG directive");try{a=decodeURIComponent(a)}catch{zt(e,"tag prefix is malformed: "+a)}e.tagMap[i]=a},"handleTagDirective")};v(au,"captureSegment");v(KS,"mergeMappings");v(Uf,"storeMappingPair");v(Jb,"readLineBreak");v(oi,"skipSeparationSpace");v(q1,"testDocumentSeparator");v(e4,"writeFoldedLines");v(Dz,"readPlainScalar");v(Oz,"readSingleQuotedScalar");v(Pz,"readDoubleQuotedScalar");v(Bz,"readFlowCollection");v(Fz,"readBlockScalar");v(ZS,"readBlockSequence");v(zz,"readBlockMapping");v($z,"readTagProperty");v(Gz,"readAnchorProperty");v(Uz,"readAlias");v(Vf,"composeNode");v(Vz,"readDocument");v(fC,"loadDocuments");v(Wz,"loadAll$1");v(Hz,"load$1");f2e=Wz,d2e=Hz,qz={loadAll:f2e,load:d2e},Yz=Object.prototype.toString,Xz=Object.prototype.hasOwnProperty,dC=65279,p2e=9,V1=10,g2e=13,m2e=32,v2e=33,y2e=34,QS=35,x2e=37,b2e=38,w2e=39,k2e=42,jz=44,T2e=45,Kb=58,E2e=61,S2e=62,C2e=63,A2e=64,Kz=91,Zz=93,_2e=96,Qz=123,L2e=124,Jz=125,Sa={};Sa[0]="\\0";Sa[7]="\\a";Sa[8]="\\b";Sa[9]="\\t";Sa[10]="\\n";Sa[11]="\\v";Sa[12]="\\f";Sa[13]="\\r";Sa[27]="\\e";Sa[34]='\\"';Sa[92]="\\\\";Sa[133]="\\N";Sa[160]="\\_";Sa[8232]="\\L";Sa[8233]="\\P";R2e=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],N2e=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;v(e$,"compileStyleMap");v(t$,"encodeHex");I2e=1,W1=2;v(r$,"State");v(JS,"indentString");v(Zb,"generateNextLine");v(n$,"testImplicitResolving");v(H1,"isWhitespace");v(ip,"isPrintable");v(eC,"isNsCharOrWhitespace");v(tC,"isPlainSafe");v(i$,"isPlainSafeFirst");v(a$,"isPlainSafeLast");v(rp,"codePointAt");v(pC,"needIndentIndicator");s$=1,rC=2,o$=3,l$=4,tp=5;v(c$,"chooseScalarStyle");v(u$,"writeScalar");v(nC,"blockHeader");v(iC,"dropEndingNewline");v(h$,"foldString");v(aC,"foldLine");v(f$,"escapeString");v(d$,"writeFlowSequence");v(sC,"writeBlockSequence");v(p$,"writeFlowMapping");v(g$,"writeBlockMapping");v(oC,"detectType");v(tc,"writeNode");v(m$,"getDuplicateReferences");v(Qb,"inspectNode");v(v$,"dump$1");M2e=v$,D2e={dump:M2e};v(t4,"renamed");ap=az,sp=qz.load,Nrt=qz.loadAll,Irt=D2e.dump,Mrt=t4("safeLoad","load"),Drt=t4("safeLoadAll","loadAll"),Ort=t4("safeDump","dump");});var O2e,op,gC,y$,n4=F(()=>{O2e=Object.freeze({left:0,top:0,width:16,height:16}),op=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),gC=Object.freeze({...O2e,...op}),y$=Object.freeze({...gC,body:"",hidden:!1})});var P2e,x$,b$=F(()=>{n4();P2e=Object.freeze({width:null,height:null}),x$=Object.freeze({...P2e,...op})});var i4,mC,a4,w$=F(()=>{i4=/^[a-z0-9]+(-[a-z0-9]+)*$/,mC=(t,e,r,n="")=>{let i=t.split(":");if(t.slice(0,1)==="@"){if(i.length<2||i.length>3)return null;n=i.shift().slice(1)}if(i.length>3||!i.length)return null;if(i.length>1){let o=i.pop(),l=i.pop(),u={provider:i.length>0?i[0]:n,prefix:l,name:o};return e&&!a4(u)?null:u}let a=i[0],s=a.split("-");if(s.length>1){let o={provider:n,prefix:s.shift(),name:s.join("-")};return e&&!a4(o)?null:o}if(r&&n===""){let o={provider:n,prefix:"",name:a};return e&&!a4(o,r)?null:o}return null},a4=(t,e)=>t?!!((t.provider===""||t.provider.match(i4))&&(e&&t.prefix===""||t.prefix.match(i4))&&t.name.match(i4)):!1});function k$(t,e){let r={};!t.hFlip!=!e.hFlip&&(r.hFlip=!0),!t.vFlip!=!e.vFlip&&(r.vFlip=!0);let n=((t.rotate||0)+(e.rotate||0))%4;return n&&(r.rotate=n),r}var T$=F(()=>{});function vC(t,e){let r=k$(t,e);for(let n in y$)n in op?n in t&&!(n in r)&&(r[n]=op[n]):n in e?r[n]=e[n]:n in t&&(r[n]=t[n]);return r}var E$=F(()=>{n4();T$()});function S$(t,e){let r=t.icons,n=t.aliases||Object.create(null),i=Object.create(null);function a(s){if(r[s])return i[s]=[];if(!(s in i)){i[s]=null;let o=n[s]&&n[s].parent,l=o&&a(o);l&&(i[s]=[o].concat(l))}return i[s]}return(e||Object.keys(r).concat(Object.keys(n))).forEach(a),i}var C$=F(()=>{});function A$(t,e,r){let n=t.icons,i=t.aliases||Object.create(null),a={};function s(o){a=vC(n[o]||i[o],a)}return s(e),r.forEach(s),vC(t,a)}function yC(t,e){if(t.icons[e])return A$(t,e,[]);let r=S$(t,[e])[e];return r?A$(t,e,r):null}var _$=F(()=>{E$();C$()});function xC(t,e,r){if(e===1)return t;if(r=r||100,typeof t=="number")return Math.ceil(t*e*r)/r;if(typeof t!="string")return t;let n=t.split(B2e);if(n===null||!n.length)return t;let i=[],a=n.shift(),s=F2e.test(a);for(;;){if(s){let o=parseFloat(a);isNaN(o)?i.push(a):i.push(Math.ceil(o*e*r)/r)}else i.push(a);if(a=n.shift(),a===void 0)return i.join("");s=!s}}var B2e,F2e,L$=F(()=>{B2e=/(-?[0-9.]*[0-9]+[0-9.]*)/g,F2e=/^-?[0-9.]*[0-9]+[0-9.]*$/g});function z2e(t,e="defs"){let r="",n=t.indexOf("<"+e);for(;n>=0;){let i=t.indexOf(">",n),a=t.indexOf("",a);if(s===-1)break;r+=t.slice(i+1,a).trim(),t=t.slice(0,n).trim()+t.slice(s+1)}return{defs:r,content:t}}function $2e(t,e){return t?""+t+""+e:e}function R$(t,e,r){let n=z2e(t);return $2e(n.defs,e+n.content+r)}var N$=F(()=>{});function bC(t,e){let r={...gC,...t},n={...x$,...e},i={left:r.left,top:r.top,width:r.width,height:r.height},a=r.body;[r,n].forEach(m=>{let y=[],x=m.hFlip,b=m.vFlip,w=m.rotate;x?b?w+=2:(y.push("translate("+(i.width+i.left).toString()+" "+(0-i.top).toString()+")"),y.push("scale(-1 1)"),i.top=i.left=0):b&&(y.push("translate("+(0-i.left).toString()+" "+(i.height+i.top).toString()+")"),y.push("scale(1 -1)"),i.top=i.left=0);let _;switch(w<0&&(w-=Math.floor(w/4)*4),w=w%4,w){case 1:_=i.height/2+i.top,y.unshift("rotate(90 "+_.toString()+" "+_.toString()+")");break;case 2:y.unshift("rotate(180 "+(i.width/2+i.left).toString()+" "+(i.height/2+i.top).toString()+")");break;case 3:_=i.width/2+i.left,y.unshift("rotate(-90 "+_.toString()+" "+_.toString()+")");break}w%2===1&&(i.left!==i.top&&(_=i.left,i.left=i.top,i.top=_),i.width!==i.height&&(_=i.width,i.width=i.height,i.height=_)),y.length&&(a=R$(a,'',""))});let s=n.width,o=n.height,l=i.width,u=i.height,h,f;s===null?(f=o===null?"1em":o==="auto"?u:o,h=xC(f,l/u)):(h=s==="auto"?l:s,f=o===null?xC(h,u/l):o==="auto"?u:o);let d={},p=(m,y)=>{G2e(y)||(d[m]=y.toString())};p("width",h),p("height",f);let g=[i.left,i.top,l,u];return d.viewBox=g.join(" "),{attributes:d,viewBox:g,body:a}}var G2e,I$=F(()=>{n4();b$();L$();N$();G2e=t=>t==="unset"||t==="undefined"||t==="none"});function wC(t,e=V2e){let r=[],n;for(;n=U2e.exec(t);)r.push(n[1]);if(!r.length)return t;let i="suffix"+(Math.random()*16777216|Date.now()).toString(16);return r.forEach(a=>{let s=typeof e=="function"?e(a):e+(W2e++).toString(),o=a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+o+')([")]|\\.[a-z])',"g"),"$1"+s+i+"$3")}),t=t.replace(new RegExp(i,"g"),""),t}var U2e,V2e,W2e,M$=F(()=>{U2e=/\sid="(\S+)"/g,V2e="IconifyId"+Date.now().toString(16)+(Math.random()*16777216|0).toString(16),W2e=0});function kC(t,e){let r=t.indexOf("xlink:")===-1?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(let n in e)r+=" "+n+'="'+e[n]+'"';return'"+t+""}var D$=F(()=>{});var P$=di((int,O$)=>{var lp=1e3,cp=lp*60,up=cp*60,Wf=up*24,H2e=Wf*7,q2e=Wf*365.25;O$.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return Y2e(t);if(r==="number"&&isFinite(t))return e.long?j2e(t):X2e(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function Y2e(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*q2e;case"weeks":case"week":case"w":return r*H2e;case"days":case"day":case"d":return r*Wf;case"hours":case"hour":case"hrs":case"hr":case"h":return r*up;case"minutes":case"minute":case"mins":case"min":case"m":return r*cp;case"seconds":case"second":case"secs":case"sec":case"s":return r*lp;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function X2e(t){var e=Math.abs(t);return e>=Wf?Math.round(t/Wf)+"d":e>=up?Math.round(t/up)+"h":e>=cp?Math.round(t/cp)+"m":e>=lp?Math.round(t/lp)+"s":t+"ms"}function j2e(t){var e=Math.abs(t);return e>=Wf?s4(t,e,Wf,"day"):e>=up?s4(t,e,up,"hour"):e>=cp?s4(t,e,cp,"minute"):e>=lp?s4(t,e,lp,"second"):t+" ms"}function s4(t,e,r,n){var i=e>=r*1.5;return Math.round(t/r)+" "+n+(i?"s":"")}});var F$=di((ant,B$)=>{function K2e(t){r.debug=r,r.default=r,r.coerce=l,r.disable=a,r.enable=i,r.enabled=s,r.humanize=P$(),r.destroy=u,Object.keys(t).forEach(h=>{r[h]=t[h]}),r.names=[],r.skips=[],r.formatters={};function e(h){let f=0;for(let d=0;d{if(E==="%%")return"%";_++;let S=r.formatters[L];if(typeof S=="function"){let C=y[_];E=S.call(x,C),y.splice(_,1),_--}return E}),r.formatArgs.call(x,y),(x.log||r.log).apply(x,y)}return m.namespace=h,m.useColors=r.useColors(),m.color=r.selectColor(h),m.extend=n,m.destroy=r.destroy,Object.defineProperty(m,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(p!==r.namespaces&&(p=r.namespaces,g=r.enabled(h)),g),set:y=>{d=y}}),typeof r.init=="function"&&r.init(m),m}function n(h,f){let d=r(this.namespace+(typeof f>"u"?":":f)+h);return d.log=this.log,d}function i(h){r.save(h),r.namespaces=h,r.names=[],r.skips=[];let f,d=(typeof h=="string"?h:"").split(/[\s,]+/),p=d.length;for(f=0;f"-"+f)].join(",");return r.enable(""),h}function s(h){if(h[h.length-1]==="*")return!0;let f,d;for(f=0,d=r.skips.length;f{Vs.formatArgs=Q2e;Vs.save=J2e;Vs.load=exe;Vs.useColors=Z2e;Vs.storage=txe();Vs.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();Vs.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function Z2e(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function Q2e(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+o4.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let r=0,n=0;t[0].replace(/%[a-zA-Z%]/g,i=>{i!=="%%"&&(r++,i==="%c"&&(n=r))}),t.splice(n,0,e)}Vs.log=console.debug||console.log||(()=>{});function J2e(t){try{t?Vs.storage.setItem("debug",t):Vs.storage.removeItem("debug")}catch{}}function exe(){let t;try{t=Vs.storage.getItem("debug")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}function txe(){try{return localStorage}catch{}}o4.exports=F$()(Vs);var{formatters:rxe}=o4.exports;rxe.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var snt,$$=F(()=>{w$();_$();I$();M$();D$();snt=Gi(z$(),1)});var EC,TC,G$,l4,nxe,su,sl=F(()=>{or();$$();EC={body:'?',height:80,width:80},TC=new Map,G$=new Map,l4=v(t=>{for(let e of t){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(re.debug("Registering icon pack:",e.name),"loader"in e)G$.set(e.name,e.loader);else if("icons"in e)TC.set(e.name,e.icons);else throw re.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.')}},"registerIconPacks"),nxe=v(async(t,e)=>{let r=mC(t,!0,e!==void 0);if(!r)throw new Error(`Invalid icon name: ${t}`);let n=r.prefix||e;if(!n)throw new Error(`Icon name must contain a prefix: ${t}`);let i=TC.get(n);if(!i){let s=G$.get(n);if(!s)throw new Error(`Icon set not found: ${r.prefix}`);try{i={...await s(),prefix:n},TC.set(n,i)}catch(o){throw re.error(o),new Error(`Failed to load icon set: ${r.prefix}`)}}let a=yC(i,r.name);if(!a)throw new Error(`Icon not found: ${t}`);return a},"getRegisteredIconData"),su=v(async(t,e)=>{let r;try{r=await nxe(t,e?.fallbackPrefix)}catch(a){re.error(a),r=EC}let n=bC(r,e);return kC(wC(n.body),n.attributes)},"getIconSVG")});var ou,bo=F(()=>{or();ou=v(({flowchart:t})=>{let e=t?.subGraphTitleMargin?.top??0,r=t?.subGraphTitleMargin?.bottom??0,n=e+r;return{subGraphTitleTopMargin:e,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:n}},"getSubGraphTitleMargins")});var U$=di(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.BLANK_URL=Ui.relativeFirstCharacters=Ui.whitespaceEscapeCharsRegex=Ui.urlSchemeRegex=Ui.ctrlCharactersRegex=Ui.htmlCtrlEntityRegex=Ui.htmlEntitiesRegex=Ui.invalidProtocolRegex=void 0;Ui.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im;Ui.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g;Ui.htmlCtrlEntityRegex=/&(newline|tab);/gi;Ui.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;Ui.urlSchemeRegex=/^.+(:|:)/gim;Ui.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;Ui.relativeFirstCharacters=[".","/"];Ui.BLANK_URL="about:blank"});var hp=di(c4=>{"use strict";Object.defineProperty(c4,"__esModule",{value:!0});c4.sanitizeUrl=void 0;var Ca=U$();function ixe(t){return Ca.relativeFirstCharacters.indexOf(t[0])>-1}function axe(t){var e=t.replace(Ca.ctrlCharactersRegex,"");return e.replace(Ca.htmlEntitiesRegex,function(r,n){return String.fromCharCode(n)})}function sxe(t){return URL.canParse(t)}function V$(t){try{return decodeURIComponent(t)}catch{return t}}function oxe(t){if(!t)return Ca.BLANK_URL;var e,r=V$(t.trim());do r=axe(r).replace(Ca.htmlCtrlEntityRegex,"").replace(Ca.ctrlCharactersRegex,"").replace(Ca.whitespaceEscapeCharsRegex,"").trim(),r=V$(r),e=r.match(Ca.ctrlCharactersRegex)||r.match(Ca.htmlEntitiesRegex)||r.match(Ca.htmlCtrlEntityRegex)||r.match(Ca.whitespaceEscapeCharsRegex);while(e&&e.length>0);var n=r;if(!n)return Ca.BLANK_URL;if(ixe(n))return n;var i=n.trimStart(),a=i.match(Ca.urlSchemeRegex);if(!a)return n;var s=a[0].toLowerCase().trim();if(Ca.invalidProtocolRegex.test(s))return Ca.BLANK_URL;var o=i.replace(/\\/g,"/");if(s==="mailto:"||s.includes("://"))return o;if(s==="http:"||s==="https:"){if(!sxe(o))return Ca.BLANK_URL;var l=new URL(o);return l.protocol=l.protocol.toLowerCase(),l.hostname=l.hostname.toLowerCase(),l.toString()}return o}c4.sanitizeUrl=oxe});function Hf(t,e){return t==null||e==null?NaN:te?1:t>=e?0:NaN}var SC=F(()=>{});function CC(t,e){return t==null||e==null?NaN:et?1:e>=t?0:NaN}var W$=F(()=>{});function qf(t){let e,r,n;t.length!==2?(e=Hf,r=(o,l)=>Hf(t(o),l),n=(o,l)=>t(o)-l):(e=t===Hf||t===CC?t:lxe,r=t,n=t);function i(o,l,u=0,h=o.length){if(u>>1;r(o[f],l)<0?u=f+1:h=f}while(u>>1;r(o[f],l)<=0?u=f+1:h=f}while(uu&&n(o[f-1],l)>-n(o[f],l)?f-1:f}return{left:i,center:s,right:a}}function lxe(){return 0}var AC=F(()=>{SC();W$()});function _C(t){return t===null?NaN:+t}var H$=F(()=>{});var q$,Y$,cxe,uxe,LC,X$=F(()=>{SC();AC();H$();q$=qf(Hf),Y$=q$.right,cxe=q$.left,uxe=qf(_C).center,LC=Y$});function j$({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):r}function hxe({_intern:t,_key:e},r){let n=e(r);return t.has(n)?t.get(n):(t.set(n,r),r)}function fxe({_intern:t,_key:e},r){let n=e(r);return t.has(n)&&(r=t.get(n),t.delete(n)),r}function dxe(t){return t!==null&&typeof t=="object"?t.valueOf():t}var fp,K$=F(()=>{fp=class extends Map{constructor(e,r=dxe){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),e!=null)for(let[n,i]of e)this.set(n,i)}get(e){return super.get(j$(this,e))}has(e){return super.has(j$(this,e))}set(e,r){return super.set(hxe(this,e),r)}delete(e){return super.delete(fxe(this,e))}}});function u4(t,e,r){let n=(e-t)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),s=a>=pxe?10:a>=gxe?5:a>=mxe?2:1,o,l,u;return i<0?(u=Math.pow(10,-i)/s,o=Math.round(t*u),l=Math.round(e*u),o/ue&&--l,u=-u):(u=Math.pow(10,i)*s,o=Math.round(t/u),l=Math.round(e/u),o*ue&&--l),l0))return[];if(t===e)return[t];let n=e=i))return[];let o=a-i+1,l=new Array(o);if(n)if(s<0)for(let u=0;u{pxe=Math.sqrt(50),gxe=Math.sqrt(10),mxe=Math.sqrt(2)});function f4(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}var Q$=F(()=>{});function d4(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var J$=F(()=>{});function p4(t,e,r){t=+t,e=+e,r=(i=arguments.length)<2?(e=t,t=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((e-t)/r))|0,a=new Array(i);++n{});var gh=F(()=>{X$();AC();Q$();J$();eG();Z$();K$()});function tG(t){return t}var rG=F(()=>{});function vxe(t){return"translate("+t+",0)"}function yxe(t){return"translate(0,"+t+")"}function xxe(t){return e=>+t(e)}function bxe(t,e){return e=Math.max(0,t.bandwidth()-e*2)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function wxe(){return!this.__axis}function iG(t,e){var r=[],n=null,i=null,a=6,s=6,o=3,l=typeof window<"u"&&window.devicePixelRatio>1?0:.5,u=t===m4||t===g4?-1:1,h=t===g4||t===RC?"x":"y",f=t===m4||t===NC?vxe:yxe;function d(p){var g=n??(e.ticks?e.ticks.apply(e,r):e.domain()),m=i??(e.tickFormat?e.tickFormat.apply(e,r):tG),y=Math.max(a,0)+o,x=e.range(),b=+x[0]+l,w=+x[x.length-1]+l,_=(e.bandwidth?bxe:xxe)(e.copy(),l),k=p.selection?p.selection():p,E=k.selectAll(".domain").data([null]),L=k.selectAll(".tick").data(g,e).order(),S=L.exit(),C=L.enter().append("g").attr("class","tick"),M=L.select("line"),R=L.select("text");E=E.merge(E.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),L=L.merge(C),M=M.merge(C.append("line").attr("stroke","currentColor").attr(h+"2",u*a)),R=R.merge(C.append("text").attr("fill","currentColor").attr(h,u*y).attr("dy",t===m4?"0em":t===NC?"0.71em":"0.32em")),p!==k&&(E=E.transition(p),L=L.transition(p),M=M.transition(p),R=R.transition(p),S=S.transition(p).attr("opacity",nG).attr("transform",function(T){return isFinite(T=_(T))?f(T+l):this.getAttribute("transform")}),C.attr("opacity",nG).attr("transform",function(T){var I=this.parentNode.__axis;return f((I&&isFinite(I=I(T))?I:_(T))+l)})),S.remove(),E.attr("d",t===g4||t===RC?s?"M"+u*s+","+b+"H"+l+"V"+w+"H"+u*s:"M"+l+","+b+"V"+w:s?"M"+b+","+u*s+"V"+l+"H"+w+"V"+u*s:"M"+b+","+l+"H"+w),L.attr("opacity",1).attr("transform",function(T){return f(_(T)+l)}),M.attr(h+"2",u*a),R.attr(h,u*y).text(m),k.filter(wxe).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===RC?"start":t===g4?"end":"middle"),k.each(function(){this.__axis=_})}return d.scale=function(p){return arguments.length?(e=p,d):e},d.ticks=function(){return r=Array.from(arguments),d},d.tickArguments=function(p){return arguments.length?(r=p==null?[]:Array.from(p),d):r.slice()},d.tickValues=function(p){return arguments.length?(n=p==null?null:Array.from(p),d):n&&n.slice()},d.tickFormat=function(p){return arguments.length?(i=p,d):i},d.tickSize=function(p){return arguments.length?(a=s=+p,d):a},d.tickSizeInner=function(p){return arguments.length?(a=+p,d):a},d.tickSizeOuter=function(p){return arguments.length?(s=+p,d):s},d.tickPadding=function(p){return arguments.length?(o=+p,d):o},d.offset=function(p){return arguments.length?(l=+p,d):l},d}function IC(t){return iG(m4,t)}function MC(t){return iG(NC,t)}var m4,RC,NC,g4,nG,aG=F(()=>{rG();m4=1,RC=2,NC=3,g4=4,nG=1e-6});var sG=F(()=>{aG()});function lG(){for(var t=0,e=arguments.length,r={},n;t=0&&(n=r.slice(i+1),r=r.slice(0,i)),r&&!e.hasOwnProperty(r))throw new Error("unknown type: "+r);return{type:r,name:n}})}function Exe(t,e){for(var r=0,n=t.length,i;r{kxe={value:()=>{}};v4.prototype=lG.prototype={constructor:v4,on:function(t,e){var r=this._,n=Txe(t+"",r),i,a=-1,s=n.length;if(arguments.length<2){for(;++a0)for(var r=new Array(i),n=0,i,a;n{cG()});var y4,PC,BC=F(()=>{y4="http://www.w3.org/1999/xhtml",PC={svg:"http://www.w3.org/2000/svg",xhtml:y4,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"}});function lu(t){var e=t+="",r=e.indexOf(":");return r>=0&&(e=t.slice(0,r))!=="xmlns"&&(t=t.slice(r+1)),PC.hasOwnProperty(e)?{space:PC[e],local:t}:t}var x4=F(()=>{BC()});function Sxe(t){return function(){var e=this.ownerDocument,r=this.namespaceURI;return r===y4&&e.documentElement.namespaceURI===y4?e.createElement(t):e.createElementNS(r,t)}}function Cxe(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function b4(t){var e=lu(t);return(e.local?Cxe:Sxe)(e)}var FC=F(()=>{x4();BC()});function Axe(){}function Yf(t){return t==null?Axe:function(){return this.querySelector(t)}}var w4=F(()=>{});function uG(t){typeof t!="function"&&(t=Yf(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{ol();w4()});function zC(t){return t==null?[]:Array.isArray(t)?t:Array.from(t)}var fG=F(()=>{});function _xe(){return[]}function X1(t){return t==null?_xe:function(){return this.querySelectorAll(t)}}var $C=F(()=>{});function Lxe(t){return function(){return zC(t.apply(this,arguments))}}function dG(t){typeof t=="function"?t=Lxe(t):t=X1(t);for(var e=this._groups,r=e.length,n=[],i=[],a=0;a{ol();fG();$C()});function j1(t){return function(){return this.matches(t)}}function k4(t){return function(e){return e.matches(t)}}var K1=F(()=>{});function Nxe(t){return function(){return Rxe.call(this.children,t)}}function Ixe(){return this.firstElementChild}function gG(t){return this.select(t==null?Ixe:Nxe(typeof t=="function"?t:k4(t)))}var Rxe,mG=F(()=>{K1();Rxe=Array.prototype.find});function Dxe(){return Array.from(this.children)}function Oxe(t){return function(){return Mxe.call(this.children,t)}}function vG(t){return this.selectAll(t==null?Dxe:Oxe(typeof t=="function"?t:k4(t)))}var Mxe,yG=F(()=>{K1();Mxe=Array.prototype.filter});function xG(t){typeof t!="function"&&(t=j1(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{ol();K1()});function T4(t){return new Array(t.length)}var GC=F(()=>{});function wG(){return new Zn(this._enter||this._groups.map(T4),this._parents)}function Z1(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}var UC=F(()=>{GC();ol();Z1.prototype={constructor:Z1,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}}});function kG(t){return function(){return t}}var TG=F(()=>{});function Pxe(t,e,r,n,i,a){for(var s=0,o,l=e.length,u=a.length;s=w&&(w=b+1);!(k=y[w])&&++w{ol();UC();TG()});function CG(){return new Zn(this._exit||this._groups.map(T4),this._parents)}var AG=F(()=>{GC();ol()});function _G(t,e,r){var n=this.enter(),i=this,a=this.exit();return typeof t=="function"?(n=t(n),n&&(n=n.selection())):n=n.append(t+""),e!=null&&(i=e(i),i&&(i=i.selection())),r==null?a.remove():r(a),n&&i?n.merge(i).order():i}var LG=F(()=>{});function RG(t){for(var e=t.selection?t.selection():t,r=this._groups,n=e._groups,i=r.length,a=n.length,s=Math.min(i,a),o=new Array(i),l=0;l{ol()});function IG(){for(var t=this._groups,e=-1,r=t.length;++e=0;)(s=n[i])&&(a&&s.compareDocumentPosition(a)^4&&a.parentNode.insertBefore(s,a),a=s);return this}var MG=F(()=>{});function DG(t){t||(t=$xe);function e(f,d){return f&&d?t(f.__data__,d.__data__):!f-!d}for(var r=this._groups,n=r.length,i=new Array(n),a=0;ae?1:t>=e?0:NaN}var OG=F(()=>{ol()});function PG(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}var BG=F(()=>{});function FG(){return Array.from(this)}var zG=F(()=>{});function $G(){for(var t=this._groups,e=0,r=t.length;e{});function UG(){let t=0;for(let e of this)++t;return t}var VG=F(()=>{});function WG(){return!this.node()}var HG=F(()=>{});function qG(t){for(var e=this._groups,r=0,n=e.length;r{});function Gxe(t){return function(){this.removeAttribute(t)}}function Uxe(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Vxe(t,e){return function(){this.setAttribute(t,e)}}function Wxe(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function Hxe(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttribute(t):this.setAttribute(t,r)}}function qxe(t,e){return function(){var r=e.apply(this,arguments);r==null?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function XG(t,e){var r=lu(t);if(arguments.length<2){var n=this.node();return r.local?n.getAttributeNS(r.space,r.local):n.getAttribute(r)}return this.each((e==null?r.local?Uxe:Gxe:typeof e=="function"?r.local?qxe:Hxe:r.local?Wxe:Vxe)(r,e))}var jG=F(()=>{x4()});function E4(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}var VC=F(()=>{});function Yxe(t){return function(){this.style.removeProperty(t)}}function Xxe(t,e,r){return function(){this.style.setProperty(t,e,r)}}function jxe(t,e,r){return function(){var n=e.apply(this,arguments);n==null?this.style.removeProperty(t):this.style.setProperty(t,n,r)}}function KG(t,e,r){return arguments.length>1?this.each((e==null?Yxe:typeof e=="function"?jxe:Xxe)(t,e,r??"")):mh(this.node(),t)}function mh(t,e){return t.style.getPropertyValue(e)||E4(t).getComputedStyle(t,null).getPropertyValue(e)}var WC=F(()=>{VC()});function Kxe(t){return function(){delete this[t]}}function Zxe(t,e){return function(){this[t]=e}}function Qxe(t,e){return function(){var r=e.apply(this,arguments);r==null?delete this[t]:this[t]=r}}function ZG(t,e){return arguments.length>1?this.each((e==null?Kxe:typeof e=="function"?Qxe:Zxe)(t,e)):this.node()[t]}var QG=F(()=>{});function JG(t){return t.trim().split(/^|\s+/)}function HC(t){return t.classList||new eU(t)}function eU(t){this._node=t,this._names=JG(t.getAttribute("class")||"")}function tU(t,e){for(var r=HC(t),n=-1,i=e.length;++n{eU.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}}});function rbe(){this.textContent=""}function nbe(t){return function(){this.textContent=t}}function ibe(t){return function(){var e=t.apply(this,arguments);this.textContent=e??""}}function aU(t){return arguments.length?this.each(t==null?rbe:(typeof t=="function"?ibe:nbe)(t)):this.node().textContent}var sU=F(()=>{});function abe(){this.innerHTML=""}function sbe(t){return function(){this.innerHTML=t}}function obe(t){return function(){var e=t.apply(this,arguments);this.innerHTML=e??""}}function oU(t){return arguments.length?this.each(t==null?abe:(typeof t=="function"?obe:sbe)(t)):this.node().innerHTML}var lU=F(()=>{});function lbe(){this.nextSibling&&this.parentNode.appendChild(this)}function cU(){return this.each(lbe)}var uU=F(()=>{});function cbe(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function hU(){return this.each(cbe)}var fU=F(()=>{});function dU(t){var e=typeof t=="function"?t:b4(t);return this.select(function(){return this.appendChild(e.apply(this,arguments))})}var pU=F(()=>{FC()});function ube(){return null}function gU(t,e){var r=typeof t=="function"?t:b4(t),n=e==null?ube:typeof e=="function"?e:Yf(e);return this.select(function(){return this.insertBefore(r.apply(this,arguments),n.apply(this,arguments)||null)})}var mU=F(()=>{FC();w4()});function hbe(){var t=this.parentNode;t&&t.removeChild(this)}function vU(){return this.each(hbe)}var yU=F(()=>{});function fbe(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function dbe(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function xU(t){return this.select(t?dbe:fbe)}var bU=F(()=>{});function wU(t){return arguments.length?this.property("__data__",t):this.node().__data__}var kU=F(()=>{});function pbe(t){return function(e){t.call(this,e,this.__data__)}}function gbe(t){return t.trim().split(/^|\s+/).map(function(e){var r="",n=e.indexOf(".");return n>=0&&(r=e.slice(n+1),e=e.slice(0,n)),{type:e,name:r}})}function mbe(t){return function(){var e=this.__on;if(e){for(var r=0,n=-1,i=e.length,a;r{});function SU(t,e,r){var n=E4(t),i=n.CustomEvent;typeof i=="function"?i=new i(e,r):(i=n.document.createEvent("Event"),r?(i.initEvent(e,r.bubbles,r.cancelable),i.detail=r.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function ybe(t,e){return function(){return SU(this,t,e)}}function xbe(t,e){return function(){return SU(this,t,e.apply(this,arguments))}}function CU(t,e){return this.each((typeof e=="function"?xbe:ybe)(t,e))}var AU=F(()=>{VC()});function*_U(){for(var t=this._groups,e=0,r=t.length;e{});function Zn(t,e){this._groups=t,this._parents=e}function RU(){return new Zn([[document.documentElement]],qC)}function bbe(){return this}var qC,cu,ol=F(()=>{hG();pG();mG();yG();bG();SG();UC();AG();LG();NG();MG();OG();BG();zG();GG();VG();HG();YG();jG();WC();QG();iU();sU();lU();uU();fU();pU();mU();yU();bU();kU();EU();AU();LU();qC=[null];Zn.prototype=RU.prototype={constructor:Zn,select:uG,selectAll:dG,selectChild:gG,selectChildren:vG,filter:xG,data:EG,enter:wG,exit:CG,join:_G,merge:RG,selection:bbe,order:IG,sort:DG,call:PG,nodes:FG,node:$G,size:UG,empty:WG,each:qG,attr:XG,style:KG,property:ZG,classed:nU,text:aU,html:oU,raise:cU,lower:hU,append:dU,insert:gU,remove:vU,clone:xU,datum:wU,on:TU,dispatch:CU,[Symbol.iterator]:_U};cu=RU});function Ve(t){return typeof t=="string"?new Zn([[document.querySelector(t)]],[document.documentElement]):new Zn([[t]],qC)}var NU=F(()=>{ol()});var ll=F(()=>{K1();x4();NU();ol();w4();$C();WC()});var IU=F(()=>{});function Xf(t,e,r){t.prototype=e.prototype=r,r.constructor=t}function pp(t,e){var r=Object.create(t.prototype);for(var n in e)r[n]=e[n];return r}var YC=F(()=>{});function vh(){}function DU(){return this.rgb().formatHex()}function _be(){return this.rgb().formatHex8()}function Lbe(){return GU(this).formatHsl()}function OU(){return this.rgb().formatRgb()}function ul(t){var e,r;return t=(t+"").trim().toLowerCase(),(e=wbe.exec(t))?(r=e[1].length,e=parseInt(e[1],16),r===6?PU(e):r===3?new ra(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):r===8?S4(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):r===4?S4(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=kbe.exec(t))?new ra(e[1],e[2],e[3],1):(e=Tbe.exec(t))?new ra(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=Ebe.exec(t))?S4(e[1],e[2],e[3],e[4]):(e=Sbe.exec(t))?S4(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=Cbe.exec(t))?zU(e[1],e[2]/100,e[3]/100,1):(e=Abe.exec(t))?zU(e[1],e[2]/100,e[3]/100,e[4]):MU.hasOwnProperty(t)?PU(MU[t]):t==="transparent"?new ra(NaN,NaN,NaN,0):null}function PU(t){return new ra(t>>16&255,t>>8&255,t&255,1)}function S4(t,e,r,n){return n<=0&&(t=e=r=NaN),new ra(t,e,r,n)}function jC(t){return t instanceof vh||(t=ul(t)),t?(t=t.rgb(),new ra(t.r,t.g,t.b,t.opacity)):new ra}function mp(t,e,r,n){return arguments.length===1?jC(t):new ra(t,e,r,n??1)}function ra(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function BU(){return`#${jf(this.r)}${jf(this.g)}${jf(this.b)}`}function Rbe(){return`#${jf(this.r)}${jf(this.g)}${jf(this.b)}${jf((isNaN(this.opacity)?1:this.opacity)*255)}`}function FU(){let t=_4(this.opacity);return`${t===1?"rgb(":"rgba("}${Kf(this.r)}, ${Kf(this.g)}, ${Kf(this.b)}${t===1?")":`, ${t})`}`}function _4(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Kf(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function jf(t){return t=Kf(t),(t<16?"0":"")+t.toString(16)}function zU(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new cl(t,e,r,n)}function GU(t){if(t instanceof cl)return new cl(t.h,t.s,t.l,t.opacity);if(t instanceof vh||(t=ul(t)),!t)return new cl;if(t instanceof cl)return t;t=t.rgb();var e=t.r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),a=Math.max(e,r,n),s=NaN,o=a-i,l=(a+i)/2;return o?(e===a?s=(r-n)/o+(r0&&l<1?0:s,new cl(s,o,l,t.opacity)}function UU(t,e,r,n){return arguments.length===1?GU(t):new cl(t,e,r,n??1)}function cl(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function $U(t){return t=(t||0)%360,t<0?t+360:t}function C4(t){return Math.max(0,Math.min(1,t||0))}function XC(t,e,r){return(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)*255}var Q1,A4,gp,J1,rc,wbe,kbe,Tbe,Ebe,Sbe,Cbe,Abe,MU,KC=F(()=>{YC();Q1=.7,A4=1/Q1,gp="\\s*([+-]?\\d+)\\s*",J1="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",rc="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",wbe=/^#([0-9a-f]{3,8})$/,kbe=new RegExp(`^rgb\\(${gp},${gp},${gp}\\)$`),Tbe=new RegExp(`^rgb\\(${rc},${rc},${rc}\\)$`),Ebe=new RegExp(`^rgba\\(${gp},${gp},${gp},${J1}\\)$`),Sbe=new RegExp(`^rgba\\(${rc},${rc},${rc},${J1}\\)$`),Cbe=new RegExp(`^hsl\\(${J1},${rc},${rc}\\)$`),Abe=new RegExp(`^hsla\\(${J1},${rc},${rc},${J1}\\)$`),MU={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Xf(vh,ul,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:DU,formatHex:DU,formatHex8:_be,formatHsl:Lbe,formatRgb:OU,toString:OU});Xf(ra,mp,pp(vh,{brighter(t){return t=t==null?A4:Math.pow(A4,t),new ra(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Q1:Math.pow(Q1,t),new ra(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ra(Kf(this.r),Kf(this.g),Kf(this.b),_4(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:BU,formatHex:BU,formatHex8:Rbe,formatRgb:FU,toString:FU}));Xf(cl,UU,pp(vh,{brighter(t){return t=t==null?A4:Math.pow(A4,t),new cl(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Q1:Math.pow(Q1,t),new cl(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new ra(XC(t>=240?t-240:t+120,i,n),XC(t,i,n),XC(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new cl($U(this.h),C4(this.s),C4(this.l),_4(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=_4(this.opacity);return`${t===1?"hsl(":"hsla("}${$U(this.h)}, ${C4(this.s)*100}%, ${C4(this.l)*100}%${t===1?")":`, ${t})`}`}}))});var VU,WU,HU=F(()=>{VU=Math.PI/180,WU=180/Math.PI});function ZU(t){if(t instanceof nc)return new nc(t.l,t.a,t.b,t.opacity);if(t instanceof uu)return QU(t);t instanceof ra||(t=jC(t));var e=e7(t.r),r=e7(t.g),n=e7(t.b),i=ZC((.2225045*e+.7168786*r+.0606169*n)/YU),a,s;return e===r&&r===n?a=s=i:(a=ZC((.4360747*e+.3850649*r+.1430804*n)/qU),s=ZC((.0139322*e+.0971045*r+.7141733*n)/XU)),new nc(116*i-16,500*(a-i),200*(i-s),t.opacity)}function t7(t,e,r,n){return arguments.length===1?ZU(t):new nc(t,e,r,n??1)}function nc(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function ZC(t){return t>Nbe?Math.pow(t,1/3):t/KU+jU}function QC(t){return t>vp?t*t*t:KU*(t-jU)}function JC(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function e7(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Ibe(t){if(t instanceof uu)return new uu(t.h,t.c,t.l,t.opacity);if(t instanceof nc||(t=ZU(t)),t.a===0&&t.b===0)return new uu(NaN,0{YC();KC();HU();L4=18,qU=.96422,YU=1,XU=.82521,jU=4/29,vp=6/29,KU=3*vp*vp,Nbe=vp*vp*vp;Xf(nc,t7,pp(vh,{brighter(t){return new nc(this.l+L4*(t??1),this.a,this.b,this.opacity)},darker(t){return new nc(this.l-L4*(t??1),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,e=isNaN(this.a)?t:t+this.a/500,r=isNaN(this.b)?t:t-this.b/200;return e=qU*QC(e),t=YU*QC(t),r=XU*QC(r),new ra(JC(3.1338561*e-1.6168667*t-.4906146*r),JC(-.9787684*e+1.9161415*t+.033454*r),JC(.0719453*e-.2289914*t+1.4052427*r),this.opacity)}}));Xf(uu,ev,pp(vh,{brighter(t){return new uu(this.h,this.c,this.l+L4*(t??1),this.opacity)},darker(t){return new uu(this.h,this.c,this.l-L4*(t??1),this.opacity)},rgb(){return QU(this).rgb()}}))});var yp=F(()=>{KC();JU()});function r7(t,e,r,n,i){var a=t*t,s=a*t;return((1-3*t+3*a-s)*e+(4-6*a+3*s)*r+(1+3*t+3*a-3*s)*n+s*i)/6}function eV(t){var e=t.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,e-1):Math.floor(r*e),i=t[n],a=t[n+1],s=n>0?t[n-1]:2*i-a,o=n{});function tV(t){var e=t.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*e),i=t[(n+e-1)%e],a=t[n%e],s=t[(n+1)%e],o=t[(n+2)%e];return r7((r-n/e)*e,i,a,s,o)}}var rV=F(()=>{n7()});var xp,i7=F(()=>{xp=t=>()=>t});function nV(t,e){return function(r){return t+r*e}}function Mbe(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(n){return Math.pow(t+n*e,r)}}function iV(t,e){var r=e-t;return r?nV(t,r>180||r<-180?r-360*Math.round(r/360):r):xp(isNaN(t)?e:t)}function aV(t){return(t=+t)==1?hu:function(e,r){return r-e?Mbe(e,r,t):xp(isNaN(e)?r:e)}}function hu(t,e){var r=e-t;return r?nV(t,r):xp(isNaN(t)?e:t)}var a7=F(()=>{i7()});function sV(t){return function(e){var r=e.length,n=new Array(r),i=new Array(r),a=new Array(r),s,o;for(s=0;s{yp();n7();rV();a7();Zf=function t(e){var r=aV(e);function n(i,a){var s=r((i=mp(i)).r,(a=mp(a)).r),o=r(i.g,a.g),l=r(i.b,a.b),u=hu(i.opacity,a.opacity);return function(h){return i.r=s(h),i.g=o(h),i.b=l(h),i.opacity=u(h),i+""}}return n.gamma=t,n}(1);Dbe=sV(eV),Obe=sV(tV)});function oV(t,e){e||(e=[]);var r=t?Math.min(e.length,t.length):0,n=e.slice(),i;return function(a){for(i=0;i{});function uV(t,e){var r=e?e.length:0,n=t?Math.min(r,t.length):0,i=new Array(n),a=new Array(r),s;for(s=0;s{R4()});function fV(t,e){var r=new Date;return t=+t,e=+e,function(n){return r.setTime(t*(1-n)+e*n),r}}var dV=F(()=>{});function na(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}var tv=F(()=>{});function pV(t,e){var r={},n={},i;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(i in e)i in t?r[i]=Qf(t[i],e[i]):n[i]=e[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var gV=F(()=>{R4()});function Pbe(t){return function(){return t}}function Bbe(t){return function(e){return t(e)+""}}function rv(t,e){var r=l7.lastIndex=o7.lastIndex=0,n,i,a,s=-1,o=[],l=[];for(t=t+"",e=e+"";(n=l7.exec(t))&&(i=o7.exec(e));)(a=i.index)>r&&(a=e.slice(r,a),o[s]?o[s]+=a:o[++s]=a),(n=n[0])===(i=i[0])?o[s]?o[s]+=i:o[++s]=i:(o[++s]=null,l.push({i:s,x:na(n,i)})),r=o7.lastIndex;return r{tv();l7=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,o7=new RegExp(l7.source,"g")});function Qf(t,e){var r=typeof e,n;return e==null||r==="boolean"?xp(e):(r==="number"?na:r==="string"?(n=ul(e))?(e=n,Zf):rv:e instanceof ul?Zf:e instanceof Date?fV:lV(e)?oV:Array.isArray(e)?uV:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?pV:na)(t,e)}var R4=F(()=>{yp();s7();hV();dV();tv();gV();c7();i7();cV()});function u7(t,e){return t=+t,e=+e,function(r){return Math.round(t*(1-r)+e*r)}}var mV=F(()=>{});function h7(t,e,r,n,i,a){var s,o,l;return(s=Math.sqrt(t*t+e*e))&&(t/=s,e/=s),(l=t*r+e*n)&&(r-=t*l,n-=e*l),(o=Math.sqrt(r*r+n*n))&&(r/=o,n/=o,l/=o),t*n{vV=180/Math.PI,N4={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1}});function xV(t){let e=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?N4:h7(e.a,e.b,e.c,e.d,e.e,e.f)}function bV(t){return t==null?N4:(I4||(I4=document.createElementNS("http://www.w3.org/2000/svg","g")),I4.setAttribute("transform",t),(t=I4.transform.baseVal.consolidate())?(t=t.matrix,h7(t.a,t.b,t.c,t.d,t.e,t.f)):N4)}var I4,wV=F(()=>{yV()});function kV(t,e,r,n){function i(u){return u.length?u.pop()+" ":""}function a(u,h,f,d,p,g){if(u!==f||h!==d){var m=p.push("translate(",null,e,null,r);g.push({i:m-4,x:na(u,f)},{i:m-2,x:na(h,d)})}else(f||d)&&p.push("translate("+f+e+d+r)}function s(u,h,f,d){u!==h?(u-h>180?h+=360:h-u>180&&(u+=360),d.push({i:f.push(i(f)+"rotate(",null,n)-2,x:na(u,h)})):h&&f.push(i(f)+"rotate("+h+n)}function o(u,h,f,d){u!==h?d.push({i:f.push(i(f)+"skewX(",null,n)-2,x:na(u,h)}):h&&f.push(i(f)+"skewX("+h+n)}function l(u,h,f,d,p,g){if(u!==f||h!==d){var m=p.push(i(p)+"scale(",null,",",null,")");g.push({i:m-4,x:na(u,f)},{i:m-2,x:na(h,d)})}else(f!==1||d!==1)&&p.push(i(p)+"scale("+f+","+d+")")}return function(u,h){var f=[],d=[];return u=t(u),h=t(h),a(u.translateX,u.translateY,h.translateX,h.translateY,f,d),s(u.rotate,h.rotate,f,d),o(u.skewX,h.skewX,f,d),l(u.scaleX,u.scaleY,h.scaleX,h.scaleY,f,d),u=h=null,function(p){for(var g=-1,m=d.length,y;++g{tv();wV();f7=kV(xV,"px, ","px)","deg)"),d7=kV(bV,", ",")",")")});function EV(t){return function(e,r){var n=t((e=ev(e)).h,(r=ev(r)).h),i=hu(e.c,r.c),a=hu(e.l,r.l),s=hu(e.opacity,r.opacity);return function(o){return e.h=n(o),e.c=i(o),e.l=a(o),e.opacity=s(o),e+""}}}var p7,Fbe,SV=F(()=>{yp();a7();p7=EV(iV),Fbe=EV(hu)});var bp=F(()=>{R4();tv();mV();c7();TV();s7();SV()});function lv(){return Jf||(_V(zbe),Jf=sv.now()+O4)}function zbe(){Jf=0}function ov(){this._call=this._time=this._next=null}function P4(t,e,r){var n=new ov;return n.restart(t,e,r),n}function LV(){lv(),++wp;for(var t=M4,e;t;)(e=Jf-t._time)>=0&&t._call.call(void 0,e),t=t._next;--wp}function CV(){Jf=(D4=sv.now())+O4,wp=iv=0;try{LV()}finally{wp=0,Gbe(),Jf=0}}function $be(){var t=sv.now(),e=t-D4;e>AV&&(O4-=e,D4=t)}function Gbe(){for(var t,e=M4,r,n=1/0;e;)e._call?(n>e._time&&(n=e._time),t=e,e=e._next):(r=e._next,e._next=null,e=t?t._next=r:M4=r);av=t,g7(n)}function g7(t){if(!wp){iv&&(iv=clearTimeout(iv));var e=t-Jf;e>24?(t<1/0&&(iv=setTimeout(CV,t-sv.now()-O4)),nv&&(nv=clearInterval(nv))):(nv||(D4=sv.now(),nv=setInterval($be,AV)),wp=1,_V(CV))}}var wp,iv,nv,AV,M4,av,D4,Jf,O4,sv,_V,m7=F(()=>{wp=0,iv=0,nv=0,AV=1e3,D4=0,Jf=0,O4=0,sv=typeof performance=="object"&&performance.now?performance:Date,_V=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};ov.prototype=P4.prototype={constructor:ov,restart:function(t,e,r){if(typeof t!="function")throw new TypeError("callback is not a function");r=(r==null?lv():+r)+(e==null?0:+e),!this._next&&av!==this&&(av?av._next=this:M4=this,av=this),this._call=t,this._time=r,g7()},stop:function(){this._call&&(this._call=null,this._time=1/0,g7())}}});function B4(t,e,r){var n=new ov;return e=e==null?0:+e,n.restart(i=>{n.stop(),t(i+e)},e,r),n}var RV=F(()=>{m7()});var F4=F(()=>{m7();RV()});function yh(t,e,r,n,i,a){var s=t.__transition;if(!s)t.__transition={};else if(r in s)return;Wbe(t,r,{name:e,index:n,group:i,on:Ube,tween:Vbe,time:a.time,delay:a.delay,duration:a.duration,ease:a.ease,timer:null,state:MV})}function uv(t,e){var r=Ci(t,e);if(r.state>MV)throw new Error("too late; already scheduled");return r}function ia(t,e){var r=Ci(t,e);if(r.state>z4)throw new Error("too late; already running");return r}function Ci(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function Wbe(t,e,r){var n=t.__transition,i;n[e]=r,r.timer=P4(a,0,r.time);function a(u){r.state=NV,r.timer.restart(s,r.delay,r.time),r.delay<=u&&s(u-r.delay)}function s(u){var h,f,d,p;if(r.state!==NV)return l();for(h in n)if(p=n[h],p.name===r.name){if(p.state===z4)return B4(s);p.state===IV?(p.state=cv,p.timer.stop(),p.on.call("interrupt",t,t.__data__,p.index,p.group),delete n[h]):+h{OC();F4();Ube=DC("start","end","cancel","interrupt"),Vbe=[],MV=0,NV=1,$4=2,z4=3,IV=4,G4=5,cv=6});function U4(t,e){var r=t.__transition,n,i,a=!0,s;if(r){e=e==null?null:e+"";for(s in r){if((n=r[s]).name!==e){a=!1;continue}i=n.state>$4&&n.state{gs()});function OV(t){return this.each(function(){U4(this,t)})}var PV=F(()=>{DV()});function Hbe(t,e){var r,n;return function(){var i=ia(this,t),a=i.tween;if(a!==r){n=r=a;for(var s=0,o=n.length;s{gs()});function V4(t,e){var r;return(typeof e=="number"?na:e instanceof ul?Zf:(r=ul(e))?(e=r,Zf):rv)(t,e)}var v7=F(()=>{yp();bp()});function Ybe(t){return function(){this.removeAttribute(t)}}function Xbe(t){return function(){this.removeAttributeNS(t.space,t.local)}}function jbe(t,e,r){var n,i=r+"",a;return function(){var s=this.getAttribute(t);return s===i?null:s===n?a:a=e(n=s,r)}}function Kbe(t,e,r){var n,i=r+"",a;return function(){var s=this.getAttributeNS(t.space,t.local);return s===i?null:s===n?a:a=e(n=s,r)}}function Zbe(t,e,r){var n,i,a;return function(){var s,o=r(this),l;return o==null?void this.removeAttribute(t):(s=this.getAttribute(t),l=o+"",s===l?null:s===n&&l===i?a:(i=l,a=e(n=s,o)))}}function Qbe(t,e,r){var n,i,a;return function(){var s,o=r(this),l;return o==null?void this.removeAttributeNS(t.space,t.local):(s=this.getAttributeNS(t.space,t.local),l=o+"",s===l?null:s===n&&l===i?a:(i=l,a=e(n=s,o)))}}function FV(t,e){var r=lu(t),n=r==="transform"?d7:V4;return this.attrTween(t,typeof e=="function"?(r.local?Qbe:Zbe)(r,n,kp(this,"attr."+t,e)):e==null?(r.local?Xbe:Ybe)(r):(r.local?Kbe:jbe)(r,n,e))}var zV=F(()=>{bp();ll();hv();v7()});function Jbe(t,e){return function(r){this.setAttribute(t,e.call(this,r))}}function e4e(t,e){return function(r){this.setAttributeNS(t.space,t.local,e.call(this,r))}}function t4e(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&e4e(t,a)),r}return i._value=e,i}function r4e(t,e){var r,n;function i(){var a=e.apply(this,arguments);return a!==n&&(r=(n=a)&&Jbe(t,a)),r}return i._value=e,i}function $V(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(e==null)return this.tween(r,null);if(typeof e!="function")throw new Error;var n=lu(t);return this.tween(r,(n.local?t4e:r4e)(n,e))}var GV=F(()=>{ll()});function n4e(t,e){return function(){uv(this,t).delay=+e.apply(this,arguments)}}function i4e(t,e){return e=+e,function(){uv(this,t).delay=e}}function UV(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?n4e:i4e)(e,t)):Ci(this.node(),e).delay}var VV=F(()=>{gs()});function a4e(t,e){return function(){ia(this,t).duration=+e.apply(this,arguments)}}function s4e(t,e){return e=+e,function(){ia(this,t).duration=e}}function WV(t){var e=this._id;return arguments.length?this.each((typeof t=="function"?a4e:s4e)(e,t)):Ci(this.node(),e).duration}var HV=F(()=>{gs()});function o4e(t,e){if(typeof e!="function")throw new Error;return function(){ia(this,t).ease=e}}function qV(t){var e=this._id;return arguments.length?this.each(o4e(e,t)):Ci(this.node(),e).ease}var YV=F(()=>{gs()});function l4e(t,e){return function(){var r=e.apply(this,arguments);if(typeof r!="function")throw new Error;ia(this,t).ease=r}}function XV(t){if(typeof t!="function")throw new Error;return this.each(l4e(this._id,t))}var jV=F(()=>{gs()});function KV(t){typeof t!="function"&&(t=j1(t));for(var e=this._groups,r=e.length,n=new Array(r),i=0;i{ll();ed()});function QV(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,r=t._groups,n=e.length,i=r.length,a=Math.min(n,i),s=new Array(n),o=0;o{ed()});function c4e(t){return(t+"").trim().split(/^|\s+/).every(function(e){var r=e.indexOf(".");return r>=0&&(e=e.slice(0,r)),!e||e==="start"})}function u4e(t,e,r){var n,i,a=c4e(e)?uv:ia;return function(){var s=a(this,t),o=s.on;o!==n&&(i=(n=o).copy()).on(e,r),s.on=i}}function eW(t,e){var r=this._id;return arguments.length<2?Ci(this.node(),r).on.on(t):this.each(u4e(r,t,e))}var tW=F(()=>{gs()});function h4e(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}function rW(){return this.on("end.remove",h4e(this._id))}var nW=F(()=>{});function iW(t){var e=this._name,r=this._id;typeof t!="function"&&(t=Yf(t));for(var n=this._groups,i=n.length,a=new Array(i),s=0;s{ll();ed();gs()});function sW(t){var e=this._name,r=this._id;typeof t!="function"&&(t=X1(t));for(var n=this._groups,i=n.length,a=[],s=[],o=0;o{ll();ed();gs()});function lW(){return new f4e(this._groups,this._parents)}var f4e,cW=F(()=>{ll();f4e=cu.prototype.constructor});function d4e(t,e){var r,n,i;return function(){var a=mh(this,t),s=(this.style.removeProperty(t),mh(this,t));return a===s?null:a===r&&s===n?i:i=e(r=a,n=s)}}function uW(t){return function(){this.style.removeProperty(t)}}function p4e(t,e,r){var n,i=r+"",a;return function(){var s=mh(this,t);return s===i?null:s===n?a:a=e(n=s,r)}}function g4e(t,e,r){var n,i,a;return function(){var s=mh(this,t),o=r(this),l=o+"";return o==null&&(l=o=(this.style.removeProperty(t),mh(this,t))),s===l?null:s===n&&l===i?a:(i=l,a=e(n=s,o))}}function m4e(t,e){var r,n,i,a="style."+e,s="end."+a,o;return function(){var l=ia(this,t),u=l.on,h=l.value[a]==null?o||(o=uW(e)):void 0;(u!==r||i!==h)&&(n=(r=u).copy()).on(s,i=h),l.on=n}}function hW(t,e,r){var n=(t+="")=="transform"?f7:V4;return e==null?this.styleTween(t,d4e(t,n)).on("end.style."+t,uW(t)):typeof e=="function"?this.styleTween(t,g4e(t,n,kp(this,"style."+t,e))).each(m4e(this._id,t)):this.styleTween(t,p4e(t,n,e),r).on("end.style."+t,null)}var fW=F(()=>{bp();ll();gs();hv();v7()});function v4e(t,e,r){return function(n){this.style.setProperty(t,e.call(this,n),r)}}function y4e(t,e,r){var n,i;function a(){var s=e.apply(this,arguments);return s!==i&&(n=(i=s)&&v4e(t,s,r)),n}return a._value=e,a}function dW(t,e,r){var n="style."+(t+="");if(arguments.length<2)return(n=this.tween(n))&&n._value;if(e==null)return this.tween(n,null);if(typeof e!="function")throw new Error;return this.tween(n,y4e(t,e,r??""))}var pW=F(()=>{});function x4e(t){return function(){this.textContent=t}}function b4e(t){return function(){var e=t(this);this.textContent=e??""}}function gW(t){return this.tween("text",typeof t=="function"?b4e(kp(this,"text",t)):x4e(t==null?"":t+""))}var mW=F(()=>{hv()});function w4e(t){return function(e){this.textContent=t.call(this,e)}}function k4e(t){var e,r;function n(){var i=t.apply(this,arguments);return i!==r&&(e=(r=i)&&w4e(i)),e}return n._value=t,n}function vW(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;return this.tween(e,k4e(t))}var yW=F(()=>{});function xW(){for(var t=this._name,e=this._id,r=W4(),n=this._groups,i=n.length,a=0;a{ed();gs()});function wW(){var t,e,r=this,n=r._id,i=r.size();return new Promise(function(a,s){var o={value:s},l={value:function(){--i===0&&a()}};r.each(function(){var u=ia(this,n),h=u.on;h!==t&&(e=(t=h).copy(),e._.cancel.push(o),e._.interrupt.push(o),e._.end.push(l)),u.on=e}),i===0&&a()})}var kW=F(()=>{gs()});function qa(t,e,r,n){this._groups=t,this._parents=e,this._name=r,this._id=n}function TW(t){return cu().transition(t)}function W4(){return++T4e}var T4e,fu,ed=F(()=>{ll();zV();GV();VV();HV();YV();jV();ZV();JV();tW();nW();aW();oW();cW();fW();pW();mW();yW();bW();hv();kW();T4e=0;fu=cu.prototype;qa.prototype=TW.prototype={constructor:qa,select:iW,selectAll:sW,selectChild:fu.selectChild,selectChildren:fu.selectChildren,filter:KV,merge:QV,selection:lW,transition:xW,call:fu.call,nodes:fu.nodes,node:fu.node,size:fu.size,empty:fu.empty,each:fu.each,on:eW,attr:FV,attrTween:$V,style:hW,styleTween:dW,text:gW,textTween:vW,remove:rW,tween:BV,delay:UV,duration:WV,ease:qV,easeVarying:XV,end:wW,[Symbol.iterator]:fu[Symbol.iterator]}});function H4(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var EW=F(()=>{});var y7=F(()=>{EW()});function S4e(t,e){for(var r;!(r=t.__transition)||!(r=r[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return r}function SW(t){var e,r;t instanceof qa?(e=t._id,t=t._name):(e=W4(),(r=E4e).time=lv(),t=t==null?null:t+"");for(var n=this._groups,i=n.length,a=0;a{ed();gs();y7();F4();E4e={time:null,delay:0,duration:250,ease:H4}});var AW=F(()=>{ll();PV();CW();cu.prototype.interrupt=OV;cu.prototype.transition=SW});var q4=F(()=>{AW()});var _W=F(()=>{});var LW=F(()=>{});var RW=F(()=>{});function NW(t){return[+t[0],+t[1]]}function C4e(t){return[NW(t[0]),NW(t[1])]}function x7(t){return{type:t}}var kct,Tct,Ect,Sct,Cct,Act,IW=F(()=>{q4();_W();LW();RW();({abs:kct,max:Tct,min:Ect}=Math);Sct={name:"x",handles:["w","e"].map(x7),input:function(t,e){return t==null?null:[[+t[0],e[0][1]],[+t[1],e[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},Cct={name:"y",handles:["n","s"].map(x7),input:function(t,e){return t==null?null:[[e[0][0],+t[0]],[e[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},Act={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(x7),input:function(t){return t==null?null:C4e(t)},output:function(t){return t}}});var MW=F(()=>{IW()});function DW(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return DW;let r=10**e;return function(n){this._+=n[0];for(let i=1,a=n.length;i{b7=Math.PI,w7=2*b7,td=1e-6,A4e=w7-td;rd=class{constructor(e){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=e==null?DW:_4e(e)}moveTo(e,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(e,r){this._append`L${this._x1=+e},${this._y1=+r}`}quadraticCurveTo(e,r,n,i){this._append`Q${+e},${+r},${this._x1=+n},${this._y1=+i}`}bezierCurveTo(e,r,n,i,a,s){this._append`C${+e},${+r},${+n},${+i},${this._x1=+a},${this._y1=+s}`}arcTo(e,r,n,i,a){if(e=+e,r=+r,n=+n,i=+i,a=+a,a<0)throw new Error(`negative radius: ${a}`);let s=this._x1,o=this._y1,l=n-e,u=i-r,h=s-e,f=o-r,d=h*h+f*f;if(this._x1===null)this._append`M${this._x1=e},${this._y1=r}`;else if(d>td)if(!(Math.abs(f*l-u*h)>td)||!a)this._append`L${this._x1=e},${this._y1=r}`;else{let p=n-s,g=i-o,m=l*l+u*u,y=p*p+g*g,x=Math.sqrt(m),b=Math.sqrt(d),w=a*Math.tan((b7-Math.acos((m+d-y)/(2*x*b)))/2),_=w/b,k=w/x;Math.abs(_-1)>td&&this._append`L${e+_*h},${r+_*f}`,this._append`A${a},${a},0,0,${+(f*p>h*g)},${this._x1=e+k*l},${this._y1=r+k*u}`}}arc(e,r,n,i,a,s){if(e=+e,r=+r,n=+n,s=!!s,n<0)throw new Error(`negative radius: ${n}`);let o=n*Math.cos(i),l=n*Math.sin(i),u=e+o,h=r+l,f=1^s,d=s?i-a:a-i;this._x1===null?this._append`M${u},${h}`:(Math.abs(this._x1-u)>td||Math.abs(this._y1-h)>td)&&this._append`L${u},${h}`,n&&(d<0&&(d=d%w7+w7),d>A4e?this._append`A${n},${n},0,1,${f},${e-o},${r-l}A${n},${n},0,1,${f},${this._x1=u},${this._y1=h}`:d>td&&this._append`A${n},${n},0,${+(d>=b7)},${f},${this._x1=e+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(e,r,n,i){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}};OW.prototype=rd.prototype});var k7=F(()=>{PW()});var BW=F(()=>{});var FW=F(()=>{});var zW=F(()=>{});var $W=F(()=>{});var GW=F(()=>{});var UW=F(()=>{});var VW=F(()=>{});function WW(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function nd(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}var fv=F(()=>{});function ic(t){return t=nd(Math.abs(t)),t?t[1]:NaN}var dv=F(()=>{fv()});function HW(t,e){return function(r,n){for(var i=r.length,a=[],s=0,o=t[0],l=0;i>0&&o>0&&(l+o+1>n&&(o=Math.max(1,n-l)),a.push(r.substring(i-=o,i+o)),!((l+=o+1)>n));)o=t[s=(s+1)%t.length];return a.reverse().join(e)}}var qW=F(()=>{});function YW(t){return function(e){return e.replace(/[0-9]/g,function(r){return t[+r]})}}var XW=F(()=>{});function xh(t){if(!(e=L4e.exec(t)))throw new Error("invalid format: "+t);var e;return new Y4({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Y4(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}var L4e,T7=F(()=>{L4e=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;xh.prototype=Y4.prototype;Y4.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type}});function jW(t){e:for(var e=t.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?t.slice(0,n)+t.slice(i+1):t}var KW=F(()=>{});function ZW(t,e){var r=nd(t,e);if(!r)return t+"";var n=r[0],i=r[1],a=i-(E7=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,s=n.length;return a===s?n:a>s?n+new Array(a-s+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+nd(t,Math.max(0,e+a-1))[0]}var E7,S7=F(()=>{fv()});function C7(t,e){var r=nd(t,e);if(!r)return t+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}var QW=F(()=>{fv()});var A7,JW=F(()=>{fv();S7();QW();A7={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:WW,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>C7(t*100,e),r:C7,s:ZW,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)}});function _7(t){return t}var eH=F(()=>{});function nH(t){var e=t.grouping===void 0||t.thousands===void 0?_7:HW(tH.call(t.grouping,Number),t.thousands+""),r=t.currency===void 0?"":t.currency[0]+"",n=t.currency===void 0?"":t.currency[1]+"",i=t.decimal===void 0?".":t.decimal+"",a=t.numerals===void 0?_7:YW(tH.call(t.numerals,String)),s=t.percent===void 0?"%":t.percent+"",o=t.minus===void 0?"\u2212":t.minus+"",l=t.nan===void 0?"NaN":t.nan+"";function u(f){f=xh(f);var d=f.fill,p=f.align,g=f.sign,m=f.symbol,y=f.zero,x=f.width,b=f.comma,w=f.precision,_=f.trim,k=f.type;k==="n"?(b=!0,k="g"):A7[k]||(w===void 0&&(w=12),_=!0,k="g"),(y||d==="0"&&p==="=")&&(y=!0,d="0",p="=");var E=m==="$"?r:m==="#"&&/[boxX]/.test(k)?"0"+k.toLowerCase():"",L=m==="$"?n:/[%p]/.test(k)?s:"",S=A7[k],C=/[defgprs%]/.test(k);w=w===void 0?6:/[gprs]/.test(k)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function M(R){var T=E,I=L,A,D,N;if(k==="c")I=S(R)+I,R="";else{R=+R;var O=R<0||1/R<0;if(R=isNaN(R)?l:S(Math.abs(R),w),_&&(R=jW(R)),O&&+R==0&&g!=="+"&&(O=!1),T=(O?g==="("?g:o:g==="-"||g==="("?"":g)+T,I=(k==="s"?rH[8+E7/3]:"")+I+(O&&g==="("?")":""),C){for(A=-1,D=R.length;++AN||N>57){I=(N===46?i+R.slice(A+1):R.slice(A))+I,R=R.slice(0,A);break}}}b&&!y&&(R=e(R,1/0));var B=T.length+R.length+I.length,P=B>1)+T+R+I+P.slice(B);break;default:R=P+T+R+I;break}return a(R)}return M.toString=function(){return f+""},M}function h(f,d){var p=u((f=xh(f),f.type="f",f)),g=Math.max(-8,Math.min(8,Math.floor(ic(d)/3)))*3,m=Math.pow(10,-g),y=rH[8+g/3];return function(x){return p(m*x)+y}}return{format:u,formatPrefix:h}}var tH,rH,iH=F(()=>{dv();qW();XW();T7();KW();JW();S7();eH();tH=Array.prototype.map,rH=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"]});function L7(t){return X4=nH(t),j4=X4.format,K4=X4.formatPrefix,X4}var X4,j4,K4,aH=F(()=>{iH();L7({thousands:",",grouping:[3],currency:["$",""]})});function R7(t){return Math.max(0,-ic(Math.abs(t)))}var sH=F(()=>{dv()});function N7(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(ic(e)/3)))*3-ic(Math.abs(t)))}var oH=F(()=>{dv()});function I7(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,ic(e)-ic(t))+1}var lH=F(()=>{dv()});var M7=F(()=>{aH();T7();sH();oH();lH()});var cH=F(()=>{});var uH=F(()=>{});var hH=F(()=>{});var fH=F(()=>{});function bh(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}var pv=F(()=>{});function du(){var t=new fp,e=[],r=[],n=D7;function i(a){let s=t.get(a);if(s===void 0){if(n!==D7)return n;t.set(a,s=e.push(a)-1)}return r[s%r.length]}return i.domain=function(a){if(!arguments.length)return e.slice();e=[],t=new fp;for(let s of a)t.has(s)||t.set(s,e.push(s)-1);return i},i.range=function(a){return arguments.length?(r=Array.from(a),i):r.slice()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return du(e,r).unknown(n)},bh.apply(i,arguments),i}var D7,O7=F(()=>{gh();pv();D7=Symbol("implicit")});function Tp(){var t=du().unknown(void 0),e=t.domain,r=t.range,n=0,i=1,a,s,o=!1,l=0,u=0,h=.5;delete t.unknown;function f(){var d=e().length,p=i{gh();pv();O7()});function P7(t){return function(){return t}}var pH=F(()=>{});function B7(t){return+t}var gH=F(()=>{});function Ep(t){return t}function F7(t,e){return(e-=t=+t)?function(r){return(r-t)/e}:P7(isNaN(e)?NaN:.5)}function R4e(t,e){var r;return t>e&&(r=t,t=e,e=r),function(n){return Math.max(t,Math.min(e,n))}}function N4e(t,e,r){var n=t[0],i=t[1],a=e[0],s=e[1];return i2?I4e:N4e,l=u=null,f}function f(d){return d==null||isNaN(d=+d)?a:(l||(l=o(t.map(n),e,r)))(n(s(d)))}return f.invert=function(d){return s(i((u||(u=o(e,t.map(n),na)))(d)))},f.domain=function(d){return arguments.length?(t=Array.from(d,B7),h()):t.slice()},f.range=function(d){return arguments.length?(e=Array.from(d),h()):e.slice()},f.rangeRound=function(d){return e=Array.from(d),r=u7,h()},f.clamp=function(d){return arguments.length?(s=d?!0:Ep,h()):s!==Ep},f.interpolate=function(d){return arguments.length?(r=d,h()):r},f.unknown=function(d){return arguments.length?(a=d,f):a},function(d,p){return n=d,i=p,h()}}function gv(){return M4e()(Ep,Ep)}var mH,z7=F(()=>{gh();bp();pH();gH();mH=[0,1]});function $7(t,e,r,n){var i=dp(t,e,r),a;switch(n=xh(n??",f"),n.type){case"s":{var s=Math.max(Math.abs(t),Math.abs(e));return n.precision==null&&!isNaN(a=N7(i,s))&&(n.precision=a),K4(n,s)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=I7(i,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=R7(i))&&(n.precision=a-(n.type==="%")*2);break}}return j4(n)}var vH=F(()=>{gh();M7()});function D4e(t){var e=t.domain;return t.ticks=function(r){var n=e();return h4(n[0],n[n.length-1],r??10)},t.tickFormat=function(r,n){var i=e();return $7(i[0],i[i.length-1],r??10,n)},t.nice=function(r){r==null&&(r=10);var n=e(),i=0,a=n.length-1,s=n[i],o=n[a],l,u,h=10;for(o0;){if(u=Y1(s,o,r),u===l)return n[i]=s,n[a]=o,e(n);if(u>0)s=Math.floor(s/u)*u,o=Math.ceil(o/u)*u;else if(u<0)s=Math.ceil(s*u)/u,o=Math.floor(o*u)/u;else break;l=u}return t},t}function hl(){var t=gv();return t.copy=function(){return Z4(t,hl())},bh.apply(t,arguments),D4e(t)}var yH=F(()=>{gh();z7();pv();vH()});function G7(t,e){t=t.slice();var r=0,n=t.length-1,i=t[r],a=t[n],s;return a{});function fn(t,e,r,n){function i(a){return t(a=arguments.length===0?new Date:new Date(+a)),a}return i.floor=a=>(t(a=new Date(+a)),a),i.ceil=a=>(t(a=new Date(a-1)),e(a,1),t(a),a),i.round=a=>{let s=i(a),o=i.ceil(a);return a-s(e(a=new Date(+a),s==null?1:Math.floor(s)),a),i.range=(a,s,o)=>{let l=[];if(a=i.ceil(a),o=o==null?1:Math.floor(o),!(a0))return l;let u;do l.push(u=new Date(+a)),e(a,o),t(a);while(ufn(s=>{if(s>=s)for(;t(s),!a(s);)s.setTime(s-1)},(s,o)=>{if(s>=s)if(o<0)for(;++o<=0;)for(;e(s,-1),!a(s););else for(;--o>=0;)for(;e(s,1),!a(s););}),r&&(i.count=(a,s)=>(U7.setTime(+a),V7.setTime(+s),t(U7),t(V7),Math.floor(r(U7,V7))),i.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?s=>n(s)%a===0:s=>i.count(0,s)%a===0):i)),i}var U7,V7,pu=F(()=>{U7=new Date,V7=new Date});var ac,bH,W7=F(()=>{pu();ac=fn(()=>{},(t,e)=>{t.setTime(+t+e)},(t,e)=>e-t);ac.every=t=>(t=Math.floor(t),!isFinite(t)||!(t>0)?null:t>1?fn(e=>{e.setTime(Math.floor(e/t)*t)},(e,r)=>{e.setTime(+e+r*t)},(e,r)=>(r-e)/t):ac);bH=ac.range});var Ws,wH,H7=F(()=>{pu();Ws=fn(t=>{t.setTime(t-t.getMilliseconds())},(t,e)=>{t.setTime(+t+e*1e3)},(t,e)=>(e-t)/1e3,t=>t.getUTCSeconds()),wH=Ws.range});var gu,O4e,Q4,P4e,q7=F(()=>{pu();gu=fn(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getMinutes()),O4e=gu.range,Q4=fn(t=>{t.setUTCSeconds(0,0)},(t,e)=>{t.setTime(+t+e*6e4)},(t,e)=>(e-t)/6e4,t=>t.getUTCMinutes()),P4e=Q4.range});var mu,B4e,J4,F4e,Y7=F(()=>{pu();mu=fn(t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*1e3-t.getMinutes()*6e4)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getHours()),B4e=mu.range,J4=fn(t=>{t.setUTCMinutes(0,0,0)},(t,e)=>{t.setTime(+t+e*36e5)},(t,e)=>(e-t)/36e5,t=>t.getUTCHours()),F4e=J4.range});var wo,z4e,vv,$4e,e3,G4e,X7=F(()=>{pu();wo=fn(t=>t.setHours(0,0,0,0),(t,e)=>t.setDate(t.getDate()+e),(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*6e4)/864e5,t=>t.getDate()-1),z4e=wo.range,vv=fn(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>t.getUTCDate()-1),$4e=vv.range,e3=fn(t=>{t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e)},(t,e)=>(e-t)/864e5,t=>Math.floor(t/864e5)),G4e=e3.range});function sd(t){return fn(e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)},(e,r)=>{e.setDate(e.getDate()+r*7)},(e,r)=>(r-e-(r.getTimezoneOffset()-e.getTimezoneOffset())*6e4)/6048e5)}function od(t){return fn(e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCDate(e.getUTCDate()+r*7)},(e,r)=>(r-e)/6048e5)}var fl,wh,t3,r3,oc,n3,i3,TH,U4e,V4e,W4e,H4e,q4e,Y4e,ld,Sp,EH,SH,kh,CH,AH,_H,X4e,j4e,K4e,Z4e,Q4e,J4e,j7=F(()=>{pu();fl=sd(0),wh=sd(1),t3=sd(2),r3=sd(3),oc=sd(4),n3=sd(5),i3=sd(6),TH=fl.range,U4e=wh.range,V4e=t3.range,W4e=r3.range,H4e=oc.range,q4e=n3.range,Y4e=i3.range;ld=od(0),Sp=od(1),EH=od(2),SH=od(3),kh=od(4),CH=od(5),AH=od(6),_H=ld.range,X4e=Sp.range,j4e=EH.range,K4e=SH.range,Z4e=kh.range,Q4e=CH.range,J4e=AH.range});var vu,e3e,a3,t3e,K7=F(()=>{pu();vu=fn(t=>{t.setDate(1),t.setHours(0,0,0,0)},(t,e)=>{t.setMonth(t.getMonth()+e)},(t,e)=>e.getMonth()-t.getMonth()+(e.getFullYear()-t.getFullYear())*12,t=>t.getMonth()),e3e=vu.range,a3=fn(t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)},(t,e)=>e.getUTCMonth()-t.getUTCMonth()+(e.getUTCFullYear()-t.getUTCFullYear())*12,t=>t.getUTCMonth()),t3e=a3.range});var Hs,r3e,dl,n3e,Z7=F(()=>{pu();Hs=fn(t=>{t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e)},(t,e)=>e.getFullYear()-t.getFullYear(),t=>t.getFullYear());Hs.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:fn(e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)},(e,r)=>{e.setFullYear(e.getFullYear()+r*t)});r3e=Hs.range,dl=fn(t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)},(t,e)=>e.getUTCFullYear()-t.getUTCFullYear(),t=>t.getUTCFullYear());dl.every=t=>!isFinite(t=Math.floor(t))||!(t>0)?null:fn(e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)});n3e=dl.range});function RH(t,e,r,n,i,a){let s=[[Ws,1,1e3],[Ws,5,5*1e3],[Ws,15,15*1e3],[Ws,30,30*1e3],[a,1,6e4],[a,5,5*6e4],[a,15,15*6e4],[a,30,30*6e4],[i,1,36e5],[i,3,3*36e5],[i,6,6*36e5],[i,12,12*36e5],[n,1,864e5],[n,2,2*864e5],[r,1,6048e5],[e,1,2592e6],[e,3,3*2592e6],[t,1,31536e6]];function o(u,h,f){let d=hy).right(s,d);if(p===s.length)return t.every(dp(u/31536e6,h/31536e6,f));if(p===0)return ac.every(Math.max(dp(u,h,f),1));let[g,m]=s[d/s[p-1][2]{gh();W7();H7();q7();Y7();X7();j7();K7();Z7();[a3e,s3e]=RH(dl,a3,ld,e3,J4,Q4),[Q7,J7]=RH(Hs,vu,fl,wo,mu,gu)});var s3=F(()=>{W7();H7();q7();Y7();X7();j7();K7();Z7();NH()});function e8(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function t8(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function yv(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function r8(t){var e=t.dateTime,r=t.date,n=t.time,i=t.periods,a=t.days,s=t.shortDays,o=t.months,l=t.shortMonths,u=xv(i),h=bv(i),f=xv(a),d=bv(a),p=xv(s),g=bv(s),m=xv(o),y=bv(o),x=xv(l),b=bv(l),w={a:O,A:B,b:P,B:$,c:null,d:BH,e:BH,f:L3e,g:z3e,G:G3e,H:C3e,I:A3e,j:_3e,L:UH,m:R3e,M:N3e,p:z,q:H,Q:$H,s:GH,S:I3e,u:M3e,U:D3e,V:O3e,w:P3e,W:B3e,x:null,X:null,y:F3e,Y:$3e,Z:U3e,"%":zH},_={a:J,A:X,b:oe,B:K,c:null,d:FH,e:FH,f:q3e,g:r5e,G:i5e,H:V3e,I:W3e,j:H3e,L:WH,m:Y3e,M:X3e,p:ee,q:Q,Q:$H,s:GH,S:j3e,u:K3e,U:Z3e,V:Q3e,w:J3e,W:e5e,x:null,X:null,y:t5e,Y:n5e,Z:a5e,"%":zH},k={a:M,A:R,b:T,B:I,c:A,d:OH,e:OH,f:k3e,g:DH,G:MH,H:PH,I:PH,j:y3e,L:w3e,m:v3e,M:x3e,p:C,q:m3e,Q:E3e,s:S3e,S:b3e,u:h3e,U:f3e,V:d3e,w:u3e,W:p3e,x:D,X:N,y:DH,Y:MH,Z:g3e,"%":T3e};w.x=E(r,w),w.X=E(n,w),w.c=E(e,w),_.x=E(r,_),_.X=E(n,_),_.c=E(e,_);function E(W,Y){return function(Z){var se=[],ce=-1,ue=0,te=W.length,Ne,ae,we;for(Z instanceof Date||(Z=new Date(+Z));++ce53)return null;"w"in se||(se.w=1),"Z"in se?(ue=t8(yv(se.y,0,1)),te=ue.getUTCDay(),ue=te>4||te===0?Sp.ceil(ue):Sp(ue),ue=vv.offset(ue,(se.V-1)*7),se.y=ue.getUTCFullYear(),se.m=ue.getUTCMonth(),se.d=ue.getUTCDate()+(se.w+6)%7):(ue=e8(yv(se.y,0,1)),te=ue.getDay(),ue=te>4||te===0?wh.ceil(ue):wh(ue),ue=wo.offset(ue,(se.V-1)*7),se.y=ue.getFullYear(),se.m=ue.getMonth(),se.d=ue.getDate()+(se.w+6)%7)}else("W"in se||"U"in se)&&("w"in se||(se.w="u"in se?se.u%7:"W"in se?1:0),te="Z"in se?t8(yv(se.y,0,1)).getUTCDay():e8(yv(se.y,0,1)).getDay(),se.m=0,se.d="W"in se?(se.w+6)%7+se.W*7-(te+5)%7:se.w+se.U*7-(te+6)%7);return"Z"in se?(se.H+=se.Z/100|0,se.M+=se.Z%100,t8(se)):e8(se)}}function S(W,Y,Z,se){for(var ce=0,ue=Y.length,te=Z.length,Ne,ae;ce=te)return-1;if(Ne=Y.charCodeAt(ce++),Ne===37){if(Ne=Y.charAt(ce++),ae=k[Ne in IH?Y.charAt(ce++):Ne],!ae||(se=ae(W,Z,se))<0)return-1}else if(Ne!=Z.charCodeAt(se++))return-1}return se}function C(W,Y,Z){var se=u.exec(Y.slice(Z));return se?(W.p=h.get(se[0].toLowerCase()),Z+se[0].length):-1}function M(W,Y,Z){var se=p.exec(Y.slice(Z));return se?(W.w=g.get(se[0].toLowerCase()),Z+se[0].length):-1}function R(W,Y,Z){var se=f.exec(Y.slice(Z));return se?(W.w=d.get(se[0].toLowerCase()),Z+se[0].length):-1}function T(W,Y,Z){var se=x.exec(Y.slice(Z));return se?(W.m=b.get(se[0].toLowerCase()),Z+se[0].length):-1}function I(W,Y,Z){var se=m.exec(Y.slice(Z));return se?(W.m=y.get(se[0].toLowerCase()),Z+se[0].length):-1}function A(W,Y,Z){return S(W,e,Y,Z)}function D(W,Y,Z){return S(W,r,Y,Z)}function N(W,Y,Z){return S(W,n,Y,Z)}function O(W){return s[W.getDay()]}function B(W){return a[W.getDay()]}function P(W){return l[W.getMonth()]}function $(W){return o[W.getMonth()]}function z(W){return i[+(W.getHours()>=12)]}function H(W){return 1+~~(W.getMonth()/3)}function J(W){return s[W.getUTCDay()]}function X(W){return a[W.getUTCDay()]}function oe(W){return l[W.getUTCMonth()]}function K(W){return o[W.getUTCMonth()]}function ee(W){return i[+(W.getUTCHours()>=12)]}function Q(W){return 1+~~(W.getUTCMonth()/3)}return{format:function(W){var Y=E(W+="",w);return Y.toString=function(){return W},Y},parse:function(W){var Y=L(W+="",!1);return Y.toString=function(){return W},Y},utcFormat:function(W){var Y=E(W+="",_);return Y.toString=function(){return W},Y},utcParse:function(W){var Y=L(W+="",!0);return Y.toString=function(){return W},Y}}}function Pr(t,e,r){var n=t<0?"-":"",i=(n?-t:t)+"",a=i.length;return n+(a[e.toLowerCase(),r]))}function u3e(t,e,r){var n=Vi.exec(e.slice(r,r+1));return n?(t.w=+n[0],r+n[0].length):-1}function h3e(t,e,r){var n=Vi.exec(e.slice(r,r+1));return n?(t.u=+n[0],r+n[0].length):-1}function f3e(t,e,r){var n=Vi.exec(e.slice(r,r+2));return n?(t.U=+n[0],r+n[0].length):-1}function d3e(t,e,r){var n=Vi.exec(e.slice(r,r+2));return n?(t.V=+n[0],r+n[0].length):-1}function p3e(t,e,r){var n=Vi.exec(e.slice(r,r+2));return n?(t.W=+n[0],r+n[0].length):-1}function MH(t,e,r){var n=Vi.exec(e.slice(r,r+4));return n?(t.y=+n[0],r+n[0].length):-1}function DH(t,e,r){var n=Vi.exec(e.slice(r,r+2));return n?(t.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function g3e(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function m3e(t,e,r){var n=Vi.exec(e.slice(r,r+1));return n?(t.q=n[0]*3-3,r+n[0].length):-1}function v3e(t,e,r){var n=Vi.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function OH(t,e,r){var n=Vi.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function y3e(t,e,r){var n=Vi.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function PH(t,e,r){var n=Vi.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function x3e(t,e,r){var n=Vi.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function b3e(t,e,r){var n=Vi.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function w3e(t,e,r){var n=Vi.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function k3e(t,e,r){var n=Vi.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function T3e(t,e,r){var n=o3e.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function E3e(t,e,r){var n=Vi.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function S3e(t,e,r){var n=Vi.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function BH(t,e){return Pr(t.getDate(),e,2)}function C3e(t,e){return Pr(t.getHours(),e,2)}function A3e(t,e){return Pr(t.getHours()%12||12,e,2)}function _3e(t,e){return Pr(1+wo.count(Hs(t),t),e,3)}function UH(t,e){return Pr(t.getMilliseconds(),e,3)}function L3e(t,e){return UH(t,e)+"000"}function R3e(t,e){return Pr(t.getMonth()+1,e,2)}function N3e(t,e){return Pr(t.getMinutes(),e,2)}function I3e(t,e){return Pr(t.getSeconds(),e,2)}function M3e(t){var e=t.getDay();return e===0?7:e}function D3e(t,e){return Pr(fl.count(Hs(t)-1,t),e,2)}function VH(t){var e=t.getDay();return e>=4||e===0?oc(t):oc.ceil(t)}function O3e(t,e){return t=VH(t),Pr(oc.count(Hs(t),t)+(Hs(t).getDay()===4),e,2)}function P3e(t){return t.getDay()}function B3e(t,e){return Pr(wh.count(Hs(t)-1,t),e,2)}function F3e(t,e){return Pr(t.getFullYear()%100,e,2)}function z3e(t,e){return t=VH(t),Pr(t.getFullYear()%100,e,2)}function $3e(t,e){return Pr(t.getFullYear()%1e4,e,4)}function G3e(t,e){var r=t.getDay();return t=r>=4||r===0?oc(t):oc.ceil(t),Pr(t.getFullYear()%1e4,e,4)}function U3e(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Pr(e/60|0,"0",2)+Pr(e%60,"0",2)}function FH(t,e){return Pr(t.getUTCDate(),e,2)}function V3e(t,e){return Pr(t.getUTCHours(),e,2)}function W3e(t,e){return Pr(t.getUTCHours()%12||12,e,2)}function H3e(t,e){return Pr(1+vv.count(dl(t),t),e,3)}function WH(t,e){return Pr(t.getUTCMilliseconds(),e,3)}function q3e(t,e){return WH(t,e)+"000"}function Y3e(t,e){return Pr(t.getUTCMonth()+1,e,2)}function X3e(t,e){return Pr(t.getUTCMinutes(),e,2)}function j3e(t,e){return Pr(t.getUTCSeconds(),e,2)}function K3e(t){var e=t.getUTCDay();return e===0?7:e}function Z3e(t,e){return Pr(ld.count(dl(t)-1,t),e,2)}function HH(t){var e=t.getUTCDay();return e>=4||e===0?kh(t):kh.ceil(t)}function Q3e(t,e){return t=HH(t),Pr(kh.count(dl(t),t)+(dl(t).getUTCDay()===4),e,2)}function J3e(t){return t.getUTCDay()}function e5e(t,e){return Pr(Sp.count(dl(t)-1,t),e,2)}function t5e(t,e){return Pr(t.getUTCFullYear()%100,e,2)}function r5e(t,e){return t=HH(t),Pr(t.getUTCFullYear()%100,e,2)}function n5e(t,e){return Pr(t.getUTCFullYear()%1e4,e,4)}function i5e(t,e){var r=t.getUTCDay();return t=r>=4||r===0?kh(t):kh.ceil(t),Pr(t.getUTCFullYear()%1e4,e,4)}function a5e(){return"+0000"}function zH(){return"%"}function $H(t){return+t}function GH(t){return Math.floor(+t/1e3)}var IH,Vi,o3e,l3e,qH=F(()=>{s3();IH={"-":"",_:" ",0:"0"},Vi=/^\s*\d+/,o3e=/^%/,l3e=/[\\^$*+?|[\]().{}]/g});function n8(t){return Cp=r8(t),cd=Cp.format,YH=Cp.parse,XH=Cp.utcFormat,jH=Cp.utcParse,Cp}var Cp,cd,YH,XH,jH,KH=F(()=>{qH();n8({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]})});var i8=F(()=>{KH()});function s5e(t){return new Date(t)}function o5e(t){return t instanceof Date?+t:+new Date(+t)}function ZH(t,e,r,n,i,a,s,o,l,u){var h=gv(),f=h.invert,d=h.domain,p=u(".%L"),g=u(":%S"),m=u("%I:%M"),y=u("%I %p"),x=u("%a %d"),b=u("%b %d"),w=u("%B"),_=u("%Y");function k(E){return(l(E){s3();i8();z7();pv();xH()});var JH=F(()=>{dH();yH();O7();QH()});function eq(t){for(var e=t.length/6|0,r=new Array(e),n=0;n{});var a8,rq=F(()=>{tq();a8=eq("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab")});var nq=F(()=>{rq()});function Dn(t){return function(){return t}}var l3=F(()=>{});function aq(t){return t>1?0:t<-1?Ap:Math.acos(t)}function o8(t){return t>=1?wv:t<=-1?-wv:Math.asin(t)}var s8,aa,Th,iq,c3,pl,ud,Wi,Ap,wv,_p,u3=F(()=>{s8=Math.abs,aa=Math.atan2,Th=Math.cos,iq=Math.max,c3=Math.min,pl=Math.sin,ud=Math.sqrt,Wi=1e-12,Ap=Math.PI,wv=Ap/2,_p=2*Ap});function h3(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(r==null)e=null;else{let n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);e=n}return t},()=>new rd(e)}var l8=F(()=>{k7()});function l5e(t){return t.innerRadius}function c5e(t){return t.outerRadius}function u5e(t){return t.startAngle}function h5e(t){return t.endAngle}function f5e(t){return t&&t.padAngle}function d5e(t,e,r,n,i,a,s,o){var l=r-t,u=n-e,h=s-i,f=o-a,d=f*l-h*u;if(!(d*dA*A+D*D&&(S=M,C=R),{cx:S,cy:C,x01:-h,y01:-f,x11:S*(i/k-1),y11:C*(i/k-1)}}function lc(){var t=l5e,e=c5e,r=Dn(0),n=null,i=u5e,a=h5e,s=f5e,o=null,l=h3(u);function u(){var h,f,d=+t.apply(this,arguments),p=+e.apply(this,arguments),g=i.apply(this,arguments)-wv,m=a.apply(this,arguments)-wv,y=s8(m-g),x=m>g;if(o||(o=h=l()),pWi))o.moveTo(0,0);else if(y>_p-Wi)o.moveTo(p*Th(g),p*pl(g)),o.arc(0,0,p,g,m,!x),d>Wi&&(o.moveTo(d*Th(m),d*pl(m)),o.arc(0,0,d,m,g,x));else{var b=g,w=m,_=g,k=m,E=y,L=y,S=s.apply(this,arguments)/2,C=S>Wi&&(n?+n.apply(this,arguments):ud(d*d+p*p)),M=c3(s8(p-d)/2,+r.apply(this,arguments)),R=M,T=M,I,A;if(C>Wi){var D=o8(C/d*pl(S)),N=o8(C/p*pl(S));(E-=D*2)>Wi?(D*=x?1:-1,_+=D,k-=D):(E=0,_=k=(g+m)/2),(L-=N*2)>Wi?(N*=x?1:-1,b+=N,w-=N):(L=0,b=w=(g+m)/2)}var O=p*Th(b),B=p*pl(b),P=d*Th(k),$=d*pl(k);if(M>Wi){var z=p*Th(w),H=p*pl(w),J=d*Th(_),X=d*pl(_),oe;if(yWi?T>Wi?(I=f3(J,X,O,B,p,T,x),A=f3(z,H,P,$,p,T,x),o.moveTo(I.cx+I.x01,I.cy+I.y01),TWi)||!(E>Wi)?o.lineTo(P,$):R>Wi?(I=f3(P,$,z,H,d,-R,x),A=f3(O,B,J,X,d,-R,x),o.lineTo(I.cx+I.x01,I.cy+I.y01),R{l3();u3();l8()});function d3(t){return typeof t=="object"&&"length"in t?t:Array.from(t)}var xft,c8=F(()=>{xft=Array.prototype.slice});function oq(t){this._context=t}function kv(t){return new oq(t)}var u8=F(()=>{oq.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e);break}}}});function lq(t){return t[0]}function cq(t){return t[1]}var uq=F(()=>{});function ms(t,e){var r=Dn(!0),n=null,i=kv,a=null,s=h3(o);t=typeof t=="function"?t:t===void 0?lq:Dn(t),e=typeof e=="function"?e:e===void 0?cq:Dn(e);function o(l){var u,h=(l=d3(l)).length,f,d=!1,p;for(n==null&&(a=i(p=s())),u=0;u<=h;++u)!(u{c8();l3();u8();l8();uq()});function fq(t,e){return et?1:e>=t?0:NaN}var dq=F(()=>{});function pq(t){return t}var gq=F(()=>{});function h8(){var t=pq,e=fq,r=null,n=Dn(0),i=Dn(_p),a=Dn(0);function s(o){var l,u=(o=d3(o)).length,h,f,d=0,p=new Array(u),g=new Array(u),m=+n.apply(this,arguments),y=Math.min(_p,Math.max(-_p,i.apply(this,arguments)-m)),x,b=Math.min(Math.abs(y)/u,a.apply(this,arguments)),w=b*(y<0?-1:1),_;for(l=0;l0&&(d+=_);for(e!=null?p.sort(function(k,E){return e(g[k],g[E])}):r!=null&&p.sort(function(k,E){return r(o[k],o[E])}),l=0,f=d?(y-u*w)/d:0;l0?_*f:0)+w,g[h]={data:o[h],index:l,value:_,startAngle:m,endAngle:x,padAngle:b};return g}return s.value=function(o){return arguments.length?(t=typeof o=="function"?o:Dn(+o),s):t},s.sortValues=function(o){return arguments.length?(e=o,r=null,s):e},s.sort=function(o){return arguments.length?(r=o,e=null,s):r},s.startAngle=function(o){return arguments.length?(n=typeof o=="function"?o:Dn(+o),s):n},s.endAngle=function(o){return arguments.length?(i=typeof o=="function"?o:Dn(+o),s):i},s.padAngle=function(o){return arguments.length?(a=typeof o=="function"?o:Dn(+o),s):a},s}var mq=F(()=>{c8();l3();dq();gq();u3()});function f8(t){return new p3(t,!0)}function d8(t){return new p3(t,!1)}var p3,vq=F(()=>{p3=class{constructor(e,r){this._context=e,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,r){switch(e=+e,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,r,e,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,e,this._y0,e,r);break}}this._x0=e,this._y0=r}}});function ko(){}var Tv=F(()=>{});function Lp(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function Ev(t){this._context=t}function gl(t){return new Ev(t)}var Sv=F(()=>{Ev.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Lp(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Lp(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}}});function yq(t){this._context=t}function p8(t){return new yq(t)}var xq=F(()=>{Tv();Sv();yq.prototype={areaStart:ko,areaEnd:ko,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Lp(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}}});function bq(t){this._context=t}function g8(t){return new bq(t)}var wq=F(()=>{Sv();bq.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Lp(this,t,e);break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}}});function kq(t,e){this._basis=new Ev(t),this._beta=e}var m8,Tq=F(()=>{Sv();kq.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n=t[0],i=e[0],a=t[r]-n,s=e[r]-i,o=-1,l;++o<=r;)l=o/r,this._basis.point(this._beta*t[o]+(1-this._beta)*(n+l*a),this._beta*e[o]+(1-this._beta)*(i+l*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};m8=function t(e){function r(n){return e===1?new Ev(n):new kq(n,e)}return r.beta=function(n){return t(+n)},r}(.85)});function Rp(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function g3(t,e){this._context=t,this._k=(1-e)/6}var v8,Cv=F(()=>{g3.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Rp(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:Rp(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};v8=function t(e){function r(n){return new g3(n,e)}return r.tension=function(n){return t(+n)},r}(0)});function m3(t,e){this._context=t,this._k=(1-e)/6}var y8,x8=F(()=>{Tv();Cv();m3.prototype={areaStart:ko,areaEnd:ko,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Rp(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};y8=function t(e){function r(n){return new m3(n,e)}return r.tension=function(n){return t(+n)},r}(0)});function v3(t,e){this._context=t,this._k=(1-e)/6}var b8,w8=F(()=>{Cv();v3.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Rp(this,t,e);break}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};b8=function t(e){function r(n){return new v3(n,e)}return r.tension=function(n){return t(+n)},r}(0)});function Av(t,e,r){var n=t._x1,i=t._y1,a=t._x2,s=t._y2;if(t._l01_a>Wi){var o=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*o-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*o-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>Wi){var u=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,h=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*u+t._x1*t._l23_2a-e*t._l12_2a)/h,s=(s*u+t._y1*t._l23_2a-r*t._l12_2a)/h}t._context.bezierCurveTo(n,i,a,s,t._x2,t._y2)}function Eq(t,e){this._context=t,this._alpha=e}var k8,y3=F(()=>{u3();Cv();Eq.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Av(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};k8=function t(e){function r(n){return e?new Eq(n,e):new g3(n,0)}return r.alpha=function(n){return t(+n)},r}(.5)});function Sq(t,e){this._context=t,this._alpha=e}var T8,Cq=F(()=>{x8();Tv();y3();Sq.prototype={areaStart:ko,areaEnd:ko,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Av(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};T8=function t(e){function r(n){return e?new Sq(n,e):new m3(n,0)}return r.alpha=function(n){return t(+n)},r}(.5)});function Aq(t,e){this._context=t,this._alpha=e}var E8,_q=F(()=>{w8();y3();Aq.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Av(this,t,e);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};E8=function t(e){function r(n){return e?new Aq(n,e):new v3(n,0)}return r.alpha=function(n){return t(+n)},r}(.5)});function Lq(t){this._context=t}function S8(t){return new Lq(t)}var Rq=F(()=>{Tv();Lq.prototype={areaStart:ko,areaEnd:ko,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,e){t=+t,e=+e,this._point?this._context.lineTo(t,e):(this._point=1,this._context.moveTo(t,e))}}});function Nq(t){return t<0?-1:1}function Iq(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),s=(r-t._y1)/(i||n<0&&-0),o=(a*i+s*n)/(n+i);return(Nq(a)+Nq(s))*Math.min(Math.abs(a),Math.abs(s),.5*Math.abs(o))||0}function Mq(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function C8(t,e,r){var n=t._x0,i=t._y0,a=t._x1,s=t._y1,o=(a-n)/3;t._context.bezierCurveTo(n+o,i+o*e,a-o,s-o*r,a,s)}function x3(t){this._context=t}function Dq(t){this._context=new Oq(t)}function Oq(t){this._context=t}function A8(t){return new x3(t)}function _8(t){return new Dq(t)}var Pq=F(()=>{x3.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:C8(this,this._t0,Mq(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){var r=NaN;if(t=+t,e=+e,!(t===this._x1&&e===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,C8(this,Mq(this,r=Iq(this,t,e)),r);break;default:C8(this,this._t0,r=Iq(this,t,e));break}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e,this._t0=r}}};(Dq.prototype=Object.create(x3.prototype)).point=function(t,e){x3.prototype.point.call(this,e,t)};Oq.prototype={moveTo:function(t,e){this._context.moveTo(e,t)},closePath:function(){this._context.closePath()},lineTo:function(t,e){this._context.lineTo(e,t)},bezierCurveTo:function(t,e,r,n,i,a){this._context.bezierCurveTo(e,t,n,r,a,i)}}});function Fq(t){this._context=t}function Bq(t){var e,r=t.length-1,n,i=new Array(r),a=new Array(r),s=new Array(r);for(i[0]=0,a[0]=2,s[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(s[e]-i[e+1])/a[e];for(a[r-1]=(t[r]+i[r-1])/2,e=0;e{Fq.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,e=this._y,r=t.length;if(r)if(this._line?this._context.lineTo(t[0],e[0]):this._context.moveTo(t[0],e[0]),r===2)this._context.lineTo(t[1],e[1]);else for(var n=Bq(t),i=Bq(e),a=0,s=1;s{b3.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}break}}this._x=t,this._y=e}}});var Gq=F(()=>{sq();hq();mq();xq();wq();Sv();vq();Tq();x8();w8();Cv();Cq();_q();y3();Rq();u8();Pq();zq();$q()});var Uq=F(()=>{});var Vq=F(()=>{});function Eh(t,e,r){this.k=t,this.x=e,this.y=r}function D8(t){for(;!t.__zoom;)if(!(t=t.parentNode))return M8;return t.__zoom}var M8,O8=F(()=>{Eh.prototype={constructor:Eh,scale:function(t){return t===1?this:new Eh(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new Eh(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};M8=new Eh(1,0,0);D8.prototype=Eh.prototype});var Wq=F(()=>{});var Hq=F(()=>{q4();Uq();Vq();O8();Wq()});var qq=F(()=>{Hq();O8()});var lr=F(()=>{gh();sG();MW();BW();yp();FW();zW();OC();IU();$W();y7();GW();VW();M7();cH();uH();bp();k7();hH();UW();fH();JH();nq();ll();Gq();s3();i8();F4();q4();qq()});var p5e,w3,P8=F(()=>{p5e=typeof global=="object"&&global&&global.Object===Object&&global,w3=p5e});var g5e,m5e,Qn,To=F(()=>{P8();g5e=typeof self=="object"&&self&&self.Object===Object&&self,m5e=w3||g5e||Function("return this")(),Qn=m5e});var v5e,Hi,hd=F(()=>{To();v5e=Qn.Symbol,Hi=v5e});function b5e(t){var e=y5e.call(t,_v),r=t[_v];try{t[_v]=void 0;var n=!0}catch{}var i=x5e.call(t);return n&&(e?t[_v]=r:delete t[_v]),i}var Yq,y5e,x5e,_v,Xq,jq=F(()=>{hd();Yq=Object.prototype,y5e=Yq.hasOwnProperty,x5e=Yq.toString,_v=Hi?Hi.toStringTag:void 0;Xq=b5e});function T5e(t){return k5e.call(t)}var w5e,k5e,Kq,Zq=F(()=>{w5e=Object.prototype,k5e=w5e.toString;Kq=T5e});function C5e(t){return t==null?t===void 0?S5e:E5e:Qq&&Qq in Object(t)?Xq(t):Kq(t)}var E5e,S5e,Qq,sa,yu=F(()=>{hd();jq();Zq();E5e="[object Null]",S5e="[object Undefined]",Qq=Hi?Hi.toStringTag:void 0;sa=C5e});function A5e(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}var dn,qs=F(()=>{dn=A5e});function I5e(t){if(!dn(t))return!1;var e=sa(t);return e==L5e||e==R5e||e==_5e||e==N5e}var _5e,L5e,R5e,N5e,gi,Lv=F(()=>{yu();qs();_5e="[object AsyncFunction]",L5e="[object Function]",R5e="[object GeneratorFunction]",N5e="[object Proxy]";gi=I5e});var M5e,k3,Jq=F(()=>{To();M5e=Qn["__core-js_shared__"],k3=M5e});function D5e(t){return!!eY&&eY in t}var eY,tY,rY=F(()=>{Jq();eY=function(){var t=/[^.]+$/.exec(k3&&k3.keys&&k3.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}();tY=D5e});function B5e(t){if(t!=null){try{return P5e.call(t)}catch{}try{return t+""}catch{}}return""}var O5e,P5e,xu,B8=F(()=>{O5e=Function.prototype,P5e=O5e.toString;xu=B5e});function H5e(t){if(!dn(t)||tY(t))return!1;var e=gi(t)?W5e:z5e;return e.test(xu(t))}var F5e,z5e,$5e,G5e,U5e,V5e,W5e,nY,iY=F(()=>{Lv();rY();qs();B8();F5e=/[\\^$.*+?()[\]{}|]/g,z5e=/^\[object .+?Constructor\]$/,$5e=Function.prototype,G5e=Object.prototype,U5e=$5e.toString,V5e=G5e.hasOwnProperty,W5e=RegExp("^"+U5e.call(V5e).replace(F5e,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");nY=H5e});function q5e(t,e){return t?.[e]}var aY,sY=F(()=>{aY=q5e});function Y5e(t,e){var r=aY(t,e);return nY(r)?r:void 0}var vs,Sh=F(()=>{iY();sY();vs=Y5e});var X5e,bu,Rv=F(()=>{Sh();X5e=vs(Object,"create"),bu=X5e});function j5e(){this.__data__=bu?bu(null):{},this.size=0}var oY,lY=F(()=>{Rv();oY=j5e});function K5e(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}var cY,uY=F(()=>{cY=K5e});function ewe(t){var e=this.__data__;if(bu){var r=e[t];return r===Z5e?void 0:r}return J5e.call(e,t)?e[t]:void 0}var Z5e,Q5e,J5e,hY,fY=F(()=>{Rv();Z5e="__lodash_hash_undefined__",Q5e=Object.prototype,J5e=Q5e.hasOwnProperty;hY=ewe});function nwe(t){var e=this.__data__;return bu?e[t]!==void 0:rwe.call(e,t)}var twe,rwe,dY,pY=F(()=>{Rv();twe=Object.prototype,rwe=twe.hasOwnProperty;dY=nwe});function awe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=bu&&e===void 0?iwe:e,this}var iwe,gY,mY=F(()=>{Rv();iwe="__lodash_hash_undefined__";gY=awe});function Np(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{lY();uY();fY();pY();mY();Np.prototype.clear=oY;Np.prototype.delete=cY;Np.prototype.get=hY;Np.prototype.has=dY;Np.prototype.set=gY;F8=Np});function swe(){this.__data__=[],this.size=0}var yY,xY=F(()=>{yY=swe});function owe(t,e){return t===e||t!==t&&e!==e}var Eo,fd=F(()=>{Eo=owe});function lwe(t,e){for(var r=t.length;r--;)if(Eo(t[r][0],e))return r;return-1}var Ch,Nv=F(()=>{fd();Ch=lwe});function hwe(t){var e=this.__data__,r=Ch(e,t);if(r<0)return!1;var n=e.length-1;return r==n?e.pop():uwe.call(e,r,1),--this.size,!0}var cwe,uwe,bY,wY=F(()=>{Nv();cwe=Array.prototype,uwe=cwe.splice;bY=hwe});function fwe(t){var e=this.__data__,r=Ch(e,t);return r<0?void 0:e[r][1]}var kY,TY=F(()=>{Nv();kY=fwe});function dwe(t){return Ch(this.__data__,t)>-1}var EY,SY=F(()=>{Nv();EY=dwe});function pwe(t,e){var r=this.__data__,n=Ch(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}var CY,AY=F(()=>{Nv();CY=pwe});function Ip(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{xY();wY();TY();SY();AY();Ip.prototype.clear=yY;Ip.prototype.delete=bY;Ip.prototype.get=kY;Ip.prototype.has=EY;Ip.prototype.set=CY;Ah=Ip});var gwe,_h,T3=F(()=>{Sh();To();gwe=vs(Qn,"Map"),_h=gwe});function mwe(){this.size=0,this.__data__={hash:new F8,map:new(_h||Ah),string:new F8}}var _Y,LY=F(()=>{vY();Iv();T3();_Y=mwe});function vwe(t){var e=typeof t;return e=="string"||e=="number"||e=="symbol"||e=="boolean"?t!=="__proto__":t===null}var RY,NY=F(()=>{RY=vwe});function ywe(t,e){var r=t.__data__;return RY(e)?r[typeof e=="string"?"string":"hash"]:r.map}var Lh,Mv=F(()=>{NY();Lh=ywe});function xwe(t){var e=Lh(this,t).delete(t);return this.size-=e?1:0,e}var IY,MY=F(()=>{Mv();IY=xwe});function bwe(t){return Lh(this,t).get(t)}var DY,OY=F(()=>{Mv();DY=bwe});function wwe(t){return Lh(this,t).has(t)}var PY,BY=F(()=>{Mv();PY=wwe});function kwe(t,e){var r=Lh(this,t),n=r.size;return r.set(t,e),this.size+=r.size==n?0:1,this}var FY,zY=F(()=>{Mv();FY=kwe});function Mp(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e{LY();MY();OY();BY();zY();Mp.prototype.clear=_Y;Mp.prototype.delete=IY;Mp.prototype.get=DY;Mp.prototype.has=PY;Mp.prototype.set=FY;dd=Mp});function z8(t,e){if(typeof t!="function"||e!=null&&typeof e!="function")throw new TypeError(Twe);var r=function(){var n=arguments,i=e?e.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=t.apply(this,n);return r.cache=a.set(i,s)||a,s};return r.cache=new(z8.Cache||dd),r}var Twe,Dp,$8=F(()=>{E3();Twe="Expected a function";z8.Cache=dd;Dp=z8});function Ewe(){this.__data__=new Ah,this.size=0}var $Y,GY=F(()=>{Iv();$Y=Ewe});function Swe(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r}var UY,VY=F(()=>{UY=Swe});function Cwe(t){return this.__data__.get(t)}var WY,HY=F(()=>{WY=Cwe});function Awe(t){return this.__data__.has(t)}var qY,YY=F(()=>{qY=Awe});function Lwe(t,e){var r=this.__data__;if(r instanceof Ah){var n=r.__data__;if(!_h||n.length<_we-1)return n.push([t,e]),this.size=++r.size,this;r=this.__data__=new dd(n)}return r.set(t,e),this.size=r.size,this}var _we,XY,jY=F(()=>{Iv();T3();E3();_we=200;XY=Lwe});function Op(t){var e=this.__data__=new Ah(t);this.size=e.size}var cc,Dv=F(()=>{Iv();GY();VY();HY();YY();jY();Op.prototype.clear=$Y;Op.prototype.delete=UY;Op.prototype.get=WY;Op.prototype.has=qY;Op.prototype.set=XY;cc=Op});var Rwe,Pp,G8=F(()=>{Sh();Rwe=function(){try{var t=vs(Object,"defineProperty");return t({},"",{}),t}catch{}}(),Pp=Rwe});function Nwe(t,e,r){e=="__proto__"&&Pp?Pp(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}var uc,Bp=F(()=>{G8();uc=Nwe});function Iwe(t,e,r){(r!==void 0&&!Eo(t[e],r)||r===void 0&&!(e in t))&&uc(t,e,r)}var Ov,U8=F(()=>{Bp();fd();Ov=Iwe});function Mwe(t){return function(e,r,n){for(var i=-1,a=Object(e),s=n(e),o=s.length;o--;){var l=s[t?o:++i];if(r(a[l],l,a)===!1)break}return e}}var KY,ZY=F(()=>{KY=Mwe});var Dwe,Fp,S3=F(()=>{ZY();Dwe=KY(),Fp=Dwe});function Pwe(t,e){if(e)return t.slice();var r=t.length,n=eX?eX(r):new t.constructor(r);return t.copy(n),n}var tX,QY,Owe,JY,eX,C3,V8=F(()=>{To();tX=typeof exports=="object"&&exports&&!exports.nodeType&&exports,QY=tX&&typeof module=="object"&&module&&!module.nodeType&&module,Owe=QY&&QY.exports===tX,JY=Owe?Qn.Buffer:void 0,eX=JY?JY.allocUnsafe:void 0;C3=Pwe});var Bwe,zp,W8=F(()=>{To();Bwe=Qn.Uint8Array,zp=Bwe});function Fwe(t){var e=new t.constructor(t.byteLength);return new zp(e).set(new zp(t)),e}var $p,A3=F(()=>{W8();$p=Fwe});function zwe(t,e){var r=e?$p(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}var _3,H8=F(()=>{A3();_3=zwe});function $we(t,e){var r=-1,n=t.length;for(e||(e=Array(n));++r{L3=$we});var rX,Gwe,nX,iX=F(()=>{qs();rX=Object.create,Gwe=function(){function t(){}return function(e){if(!dn(e))return{};if(rX)return rX(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}(),nX=Gwe});function Uwe(t,e){return function(r){return t(e(r))}}var R3,Y8=F(()=>{R3=Uwe});var Vwe,Gp,N3=F(()=>{Y8();Vwe=R3(Object.getPrototypeOf,Object),Gp=Vwe});function Hwe(t){var e=t&&t.constructor,r=typeof e=="function"&&e.prototype||Wwe;return t===r}var Wwe,hc,Up=F(()=>{Wwe=Object.prototype;hc=Hwe});function qwe(t){return typeof t.constructor=="function"&&!hc(t)?nX(Gp(t)):{}}var I3,X8=F(()=>{iX();N3();Up();I3=qwe});function Ywe(t){return t!=null&&typeof t=="object"}var qn,So=F(()=>{qn=Ywe});function jwe(t){return qn(t)&&sa(t)==Xwe}var Xwe,j8,aX=F(()=>{yu();So();Xwe="[object Arguments]";j8=jwe});var sX,Kwe,Zwe,Qwe,ml,Vp=F(()=>{aX();So();sX=Object.prototype,Kwe=sX.hasOwnProperty,Zwe=sX.propertyIsEnumerable,Qwe=j8(function(){return arguments}())?j8:function(t){return qn(t)&&Kwe.call(t,"callee")&&!Zwe.call(t,"callee")},ml=Qwe});var Jwe,Et,On=F(()=>{Jwe=Array.isArray,Et=Jwe});function tke(t){return typeof t=="number"&&t>-1&&t%1==0&&t<=eke}var eke,Wp,M3=F(()=>{eke=9007199254740991;Wp=tke});function rke(t){return t!=null&&Wp(t.length)&&!gi(t)}var Jn,Co=F(()=>{Lv();M3();Jn=rke});function nke(t){return qn(t)&&Jn(t)}var pd,D3=F(()=>{Co();So();pd=nke});function ike(){return!1}var oX,lX=F(()=>{oX=ike});var hX,cX,ake,uX,ske,oke,vl,Hp=F(()=>{To();lX();hX=typeof exports=="object"&&exports&&!exports.nodeType&&exports,cX=hX&&typeof module=="object"&&module&&!module.nodeType&&module,ake=cX&&cX.exports===hX,uX=ake?Qn.Buffer:void 0,ske=uX?uX.isBuffer:void 0,oke=ske||oX,vl=oke});function dke(t){if(!qn(t)||sa(t)!=lke)return!1;var e=Gp(t);if(e===null)return!0;var r=hke.call(e,"constructor")&&e.constructor;return typeof r=="function"&&r instanceof r&&fX.call(r)==fke}var lke,cke,uke,fX,hke,fke,dX,pX=F(()=>{yu();N3();So();lke="[object Object]",cke=Function.prototype,uke=Object.prototype,fX=cke.toString,hke=uke.hasOwnProperty,fke=fX.call(Object);dX=dke});function Fke(t){return qn(t)&&Wp(t.length)&&!!Nn[sa(t)]}var pke,gke,mke,vke,yke,xke,bke,wke,kke,Tke,Eke,Ske,Cke,Ake,_ke,Lke,Rke,Nke,Ike,Mke,Dke,Oke,Pke,Bke,Nn,gX,mX=F(()=>{yu();M3();So();pke="[object Arguments]",gke="[object Array]",mke="[object Boolean]",vke="[object Date]",yke="[object Error]",xke="[object Function]",bke="[object Map]",wke="[object Number]",kke="[object Object]",Tke="[object RegExp]",Eke="[object Set]",Ske="[object String]",Cke="[object WeakMap]",Ake="[object ArrayBuffer]",_ke="[object DataView]",Lke="[object Float32Array]",Rke="[object Float64Array]",Nke="[object Int8Array]",Ike="[object Int16Array]",Mke="[object Int32Array]",Dke="[object Uint8Array]",Oke="[object Uint8ClampedArray]",Pke="[object Uint16Array]",Bke="[object Uint32Array]",Nn={};Nn[Lke]=Nn[Rke]=Nn[Nke]=Nn[Ike]=Nn[Mke]=Nn[Dke]=Nn[Oke]=Nn[Pke]=Nn[Bke]=!0;Nn[pke]=Nn[gke]=Nn[Ake]=Nn[mke]=Nn[_ke]=Nn[vke]=Nn[yke]=Nn[xke]=Nn[bke]=Nn[wke]=Nn[kke]=Nn[Tke]=Nn[Eke]=Nn[Ske]=Nn[Cke]=!1;gX=Fke});function zke(t){return function(e){return t(e)}}var Ao,gd=F(()=>{Ao=zke});var vX,Pv,$ke,K8,Gke,_o,Bv=F(()=>{P8();vX=typeof exports=="object"&&exports&&!exports.nodeType&&exports,Pv=vX&&typeof module=="object"&&module&&!module.nodeType&&module,$ke=Pv&&Pv.exports===vX,K8=$ke&&w3.process,Gke=function(){try{var t=Pv&&Pv.require&&Pv.require("util").types;return t||K8&&K8.binding&&K8.binding("util")}catch{}}(),_o=Gke});var yX,Uke,Rh,Fv=F(()=>{mX();gd();Bv();yX=_o&&_o.isTypedArray,Uke=yX?Ao(yX):gX,Rh=Uke});function Vke(t,e){if(!(e==="constructor"&&typeof t[e]=="function")&&e!="__proto__")return t[e]}var zv,Z8=F(()=>{zv=Vke});function qke(t,e,r){var n=t[e];(!(Hke.call(t,e)&&Eo(n,r))||r===void 0&&!(e in t))&&uc(t,e,r)}var Wke,Hke,fc,qp=F(()=>{Bp();fd();Wke=Object.prototype,Hke=Wke.hasOwnProperty;fc=qke});function Yke(t,e,r,n){var i=!r;r||(r={});for(var a=-1,s=e.length;++a{qp();Bp();Lo=Yke});function Xke(t,e){for(var r=-1,n=Array(t);++r{xX=Xke});function Zke(t,e){var r=typeof t;return e=e??jke,!!e&&(r=="number"||r!="symbol"&&Kke.test(t))&&t>-1&&t%1==0&&t{jke=9007199254740991,Kke=/^(?:0|[1-9]\d*)$/;Nh=Zke});function eTe(t,e){var r=Et(t),n=!r&&ml(t),i=!r&&!n&&vl(t),a=!r&&!n&&!i&&Rh(t),s=r||n||i||a,o=s?xX(t.length,String):[],l=o.length;for(var u in t)(e||Jke.call(t,u))&&!(s&&(u=="length"||i&&(u=="offset"||u=="parent")||a&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||Nh(u,l)))&&o.push(u);return o}var Qke,Jke,O3,Q8=F(()=>{bX();Vp();On();Hp();$v();Fv();Qke=Object.prototype,Jke=Qke.hasOwnProperty;O3=eTe});function tTe(t){var e=[];if(t!=null)for(var r in Object(t))e.push(r);return e}var wX,kX=F(()=>{wX=tTe});function iTe(t){if(!dn(t))return wX(t);var e=hc(t),r=[];for(var n in t)n=="constructor"&&(e||!nTe.call(t,n))||r.push(n);return r}var rTe,nTe,TX,EX=F(()=>{qs();Up();kX();rTe=Object.prototype,nTe=rTe.hasOwnProperty;TX=iTe});function aTe(t){return Jn(t)?O3(t,!0):TX(t)}var ys,Ih=F(()=>{Q8();EX();Co();ys=aTe});function sTe(t){return Lo(t,ys(t))}var SX,CX=F(()=>{md();Ih();SX=sTe});function oTe(t,e,r,n,i,a,s){var o=zv(t,r),l=zv(e,r),u=s.get(l);if(u){Ov(t,r,u);return}var h=a?a(o,l,r+"",t,e,s):void 0,f=h===void 0;if(f){var d=Et(l),p=!d&&vl(l),g=!d&&!p&&Rh(l);h=l,d||p||g?Et(o)?h=o:pd(o)?h=L3(o):p?(f=!1,h=C3(l,!0)):g?(f=!1,h=_3(l,!0)):h=[]:dX(l)||ml(l)?(h=o,ml(o)?h=SX(o):(!dn(o)||gi(o))&&(h=I3(l))):f=!1}f&&(s.set(l,h),i(h,l,n,a,s),s.delete(l)),Ov(t,r,h)}var AX,_X=F(()=>{U8();V8();H8();q8();X8();Vp();On();D3();Hp();Lv();qs();pX();Fv();Z8();CX();AX=oTe});function LX(t,e,r,n,i){t!==e&&Fp(e,function(a,s){if(i||(i=new cc),dn(a))AX(t,e,s,r,LX,n,i);else{var o=n?n(zv(t,s),a,s+"",t,e,i):void 0;o===void 0&&(o=a),Ov(t,s,o)}},ys)}var RX,NX=F(()=>{Dv();U8();S3();_X();qs();Ih();Z8();RX=LX});function lTe(t){return t}var qi,wu=F(()=>{qi=lTe});function cTe(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)}var IX,MX=F(()=>{IX=cTe});function uTe(t,e,r){return e=DX(e===void 0?t.length-1:e,0),function(){for(var n=arguments,i=-1,a=DX(n.length-e,0),s=Array(a);++i{MX();DX=Math.max;P3=uTe});function hTe(t){return function(){return t}}var xs,eA=F(()=>{xs=hTe});var fTe,OX,PX=F(()=>{eA();G8();wu();fTe=Pp?function(t,e){return Pp(t,"toString",{configurable:!0,enumerable:!1,value:xs(e),writable:!0})}:qi,OX=fTe});function mTe(t){var e=0,r=0;return function(){var n=gTe(),i=pTe-(n-r);if(r=n,i>0){if(++e>=dTe)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}var dTe,pTe,gTe,BX,FX=F(()=>{dTe=800,pTe=16,gTe=Date.now;BX=mTe});var vTe,B3,tA=F(()=>{PX();FX();vTe=BX(OX),B3=vTe});function yTe(t,e){return B3(P3(t,e,qi),t+"")}var dc,Yp=F(()=>{wu();J8();tA();dc=yTe});function xTe(t,e,r){if(!dn(r))return!1;var n=typeof e;return(n=="number"?Jn(r)&&Nh(e,r.length):n=="string"&&e in r)?Eo(r[e],t):!1}var Ys,vd=F(()=>{fd();Co();$v();qs();Ys=xTe});function bTe(t){return dc(function(e,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,s=i>2?r[2]:void 0;for(a=t.length>3&&typeof a=="function"?(i--,a):void 0,s&&Ys(r[0],r[1],s)&&(a=i<3?void 0:a,i=1),e=Object(e);++n{Yp();vd();F3=bTe});var wTe,Mh,nA=F(()=>{NX();rA();wTe=F3(function(t,e,r){RX(t,e,r)}),Mh=wTe});function $3(t,e){if(!t)return e;let r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return kTe[r]??e}function WX(t,e){let r=t.trim();if(r)return e.securityLevel!=="loose"?(0,GX.sanitizeUrl)(r):r}function aA(t,e){return!t||!e?0:Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function HX(t){let e,r=0;t.forEach(i=>{r+=aA(i,e),e=i});let n=r/2;return sA(t,n)}function qX(t){return t.length===1?t[0]:HX(t)}function YX(t,e,r){let n=structuredClone(r);re.info("our points",n),e!=="start_left"&&e!=="start_right"&&n.reverse();let i=25+t,a=sA(n,i),s=10+t*.5,o=Math.atan2(n[0].y-a.y,n[0].x-a.x),l={x:0,y:0};return e==="start_left"?(l.x=Math.sin(o+Math.PI)*s+(n[0].x+a.x)/2,l.y=-Math.cos(o+Math.PI)*s+(n[0].y+a.y)/2):e==="end_right"?(l.x=Math.sin(o-Math.PI)*s+(n[0].x+a.x)/2-5,l.y=-Math.cos(o-Math.PI)*s+(n[0].y+a.y)/2-5):e==="end_left"?(l.x=Math.sin(o)*s+(n[0].x+a.x)/2-5,l.y=-Math.cos(o)*s+(n[0].y+a.y)/2-5):(l.x=Math.sin(o)*s+(n[0].x+a.x)/2,l.y=-Math.cos(o)*s+(n[0].y+a.y)/2),l}function G3(t){let e="",r="";for(let n of t)n!==void 0&&(n.startsWith("color:")||n.startsWith("text-align:")?r=r+n+";":e=e+n+";");return{style:e,labelStyle:r}}function XX(t){let e="",r="0123456789abcdef",n=r.length;for(let i=0;i{or();GX=Gi(hp(),1);lr();$8();nA();iA="\u200B",kTe={curveBasis:gl,curveBasisClosed:p8,curveBasisOpen:g8,curveBumpX:f8,curveBumpY:d8,curveBundle:m8,curveCardinalClosed:y8,curveCardinalOpen:b8,curveCardinal:v8,curveCatmullRomClosed:T8,curveCatmullRomOpen:E8,curveCatmullRom:k8,curveLinear:kv,curveLinearClosed:S8,curveMonotoneX:A8,curveMonotoneY:_8,curveNatural:L8,curveStep:R8,curveStepAfter:I8,curveStepBefore:N8},TTe=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,ETe=v(function(t,e){let r=UX(t,/(?:init\b)|(?:initialize\b)/),n={};if(Array.isArray(r)){let s=r.map(o=>o.args);B1(s),n=Hn(n,[...s])}else n=r.args;if(!n)return;let i=F1(t,e),a="config";return n[a]!==void 0&&(i==="flowchart-v2"&&(i="flowchart"),n[i]=n[a],delete n[a]),n},"detectInit"),UX=v(function(t,e=null){try{let r=new RegExp(`[%]{2}(?![{]${TTe.source})(?=[}][%]{2}).* `,"ig");t=t.trim().replace(r,"").replace(/'/gm,'"'),re.debug(`Detecting diagram directive${e!==null?" type:"+e:""} based on the text:${t}`);let n,i=[];for(;(n=J0.exec(t))!==null;)if(n.index===J0.lastIndex&&J0.lastIndex++,n&&!e||e&&n[1]?.match(e)||e&&n[2]?.match(e)){let a=n[1]?n[1]:n[2],s=n[3]?n[3].trim():n[4]?JSON.parse(n[4].trim()):null;i.push({type:a,args:s})}return i.length===0?{type:t,args:null}:i.length===1?i[0]:i}catch(r){return re.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}},"detectDirective"),VX=v(function(t){return t.replace(J0,"")},"removeDirectives"),STe=v(function(t,e){for(let[r,n]of e.entries())if(n.match(t))return r;return-1},"isSubstringInArray");v($3,"interpolateToCurve");v(WX,"formatUrl");CTe=v((t,...e)=>{let r=t.split("."),n=r.length-1,i=r[n],a=window;for(let s=0;s{let r=Math.pow(10,e);return Math.round(t*r)/r},"roundNumber"),sA=v((t,e)=>{let r,n=e;for(let i of t){if(r){let a=aA(i,r);if(a=1)return{x:i.x,y:i.y};if(s>0&&s<1)return{x:zX((1-s)*r.x+s*i.x,5),y:zX((1-s)*r.y+s*i.y,5)}}}r=i}throw new Error("Could not find a suitable point for the given distance")},"calculatePoint"),ATe=v((t,e,r)=>{re.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());let i=sA(e,25),a=t?10:5,s=Math.atan2(e[0].y-i.y,e[0].x-i.x),o={x:0,y:0};return o.x=Math.sin(s)*a+(e[0].x+i.x)/2,o.y=-Math.cos(s)*a+(e[0].y+i.y)/2,o},"calcCardinalityPosition");v(YX,"calcTerminalLabelPosition");v(G3,"getStylesFromArray");$X=0,oA=v(()=>($X++,"id-"+Math.random().toString(36).substr(2,12)+"-"+$X),"generateId");v(XX,"makeRandomHex");lA=v(t=>XX(t.length),"random"),_Te=v(function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},"getTextObj"),LTe=v(function(t,e){let r=e.text.replace(Xe.lineBreakRegex," "),[,n]=Ro(e.fontSize),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.style("text-anchor",e.anchor),i.style("font-family",e.fontFamily),i.style("font-size",n),i.style("font-weight",e.fontWeight),i.attr("fill",e.fill),e.class!==void 0&&i.attr("class",e.class);let a=i.append("tspan");return a.attr("x",e.x+e.textMargin*2),a.attr("fill",e.fill),a.text(r),i},"drawSimpleText"),cA=Dp((t,e,r)=>{if(!t||(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
"},r),Xe.lineBreakRegex.test(t)))return t;let n=t.split(" ").filter(Boolean),i=[],a="";return n.forEach((s,o)=>{let l=bs(`${s} `,r),u=bs(a,r);if(l>e){let{hyphenatedStrings:d,remainingWord:p}=RTe(s,e,"-",r);i.push(a,...d),a=p}else u+l>=e?(i.push(a),a=s):a=[a,s].filter(Boolean).join(" ");o+1===n.length&&i.push(a)}),i.filter(s=>s!=="").join(r.joinWith)},(t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`),RTe=Dp((t,e,r="-",n)=>{n=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},n);let i=[...t],a=[],s="";return i.forEach((o,l)=>{let u=`${s}${o}`;if(bs(u,n)>=e){let f=l+1,d=i.length===f,p=`${u}${r}`;a.push(d?u:p),s=""}else s=u}),{hyphenatedStrings:a,remainingWord:s}},(t,e,r="-",n)=>`${t}${e}${r}${n.fontSize}${n.fontWeight}${n.fontFamily}`);v(Gv,"calculateTextHeight");v(bs,"calculateTextWidth");uA=Dp((t,e)=>{let{fontSize:r=12,fontFamily:n="Arial",fontWeight:i=400}=e;if(!t)return{width:0,height:0};let[,a]=Ro(r),s=["sans-serif",n],o=t.split(Xe.lineBreakRegex),l=[],u=Ve("body");if(!u.remove)return{width:0,height:0,lineHeight:0};let h=u.append("svg");for(let d of s){let p=0,g={width:0,height:0,lineHeight:0};for(let m of o){let y=_Te();y.text=m||iA;let x=LTe(h,y).style("font-size",a).style("font-weight",i).style("font-family",d),b=(x._groups||x)[0][0].getBBox();if(b.width===0&&b.height===0)throw new Error("svg element not in render tree");g.width=Math.round(Math.max(g.width,b.width)),p=Math.round(b.height),g.height+=p,g.lineHeight=Math.round(Math.max(g.lineHeight,p))}l.push(g)}h.remove();let f=isNaN(l[1].height)||isNaN(l[1].width)||isNaN(l[1].lineHeight)||l[0].height>l[1].height&&l[0].width>l[1].width&&l[0].lineHeight>l[1].lineHeight?0:1;return l[f]},(t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`),NTe=class{constructor(t=!1,e){this.count=0,this.count=e?e.length:0,this.next=t?()=>this.count++:()=>Date.now()}static{v(this,"InitIDGenerator")}},ITe=v(function(t){return z3=z3||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),z3.innerHTML=t,unescape(z3.textContent)},"entityDecode");v(U3,"isDetailedError");MTe=v((t,e,r,n)=>{if(!n)return;let i=t.node()?.getBBox();i&&t.append("text").text(n).attr("text-anchor","middle").attr("x",i.x+i.width/2).attr("y",-r).attr("class",e)},"insertTitle"),Ro=v(t=>{if(typeof t=="number")return[t,t+"px"];let e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]},"parseFontSize");v(ws,"cleanAndMerge");Ut={assignWithDepth:Hn,wrapLabel:cA,calculateTextHeight:Gv,calculateTextWidth:bs,calculateTextDimensions:uA,cleanAndMerge:ws,detectInit:ETe,detectDirective:UX,isSubstringInArray:STe,interpolateToCurve:$3,calcLabelPosition:qX,calcCardinalityPosition:ATe,calcTerminalLabelPosition:YX,formatUrl:WX,getStylesFromArray:G3,generateId:oA,random:lA,runFunc:CTe,entityDecode:ITe,insertTitle:MTe,parseFontSize:Ro,InitIDGenerator:NTe},jX=v(function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/classDef.*:\S*#.*;/g,function(r){return r.substring(0,r.length-1)}),e=e.replace(/#\w+;/g,function(r){let n=r.substring(1,r.length-1);return/^\+?\d+$/.test(n)?"\uFB02\xB0\xB0"+n+"\xB6\xDF":"\uFB02\xB0"+n+"\xB6\xDF"}),e},"encodeEntities"),Xs=v(function(t){return t.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")},"decodeEntities"),V3=v((t,e,{counter:r=0,prefix:n,suffix:i})=>`${n?`${n}_`:""}${t}_${e}_${r}${i?`_${i}`:""}`,"getEdgeId");v(Aa,"handleUndefinedAttr")});function dA(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}function tj(t){xd=t}function js(t,e){if(e){if(rj.test(t))return t.replace(DTe,KX)}else if(nj.test(t))return t.replace(OTe,KX);return t}function FTe(t){return t.replace(BTe,(e,r)=>(r=r.toLowerCase(),r==="colon"?":":r.charAt(0)==="#"?r.charAt(1)==="x"?String.fromCharCode(parseInt(r.substring(2),16)):String.fromCharCode(+r.substring(1)):""))}function sn(t,e){let r=typeof t=="string"?t:t.source;e=e||"";let n={replace:(i,a)=>{let s=typeof a=="string"?a:a.source;return s=s.replace(zTe,"$1"),r=r.replace(i,s),n},getRegex:()=>new RegExp(r,e)};return n}function ZX(t){try{t=encodeURI(t).replace(/%25/g,"%")}catch{return null}return t}function QX(t,e){let r=t.replace(/\|/g,(a,s,o)=>{let l=!1,u=s;for(;--u>=0&&o[u]==="\\";)l=!l;return l?"|":" |"}),n=r.split(/ \|/),i=0;if(n[0].trim()||n.shift(),n.length>0&&!n[n.length-1].trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length{let a=i.match(/^\s+/);if(a===null)return i;let[s]=a;return s.length>=n.length?i.slice(n.length):i}).join(` `)}function Yr(t,e){return yd.parse(t,e)}var xd,rj,DTe,nj,OTe,PTe,KX,BTe,zTe,Wv,jp,UTe,VTe,WTe,qv,HTe,ij,aj,pA,qTe,gA,YTe,XTe,q3,mA,jTe,sj,KTe,vA,ej,ZTe,QTe,oj,JTe,lj,e6e,Yv,t6e,r6e,n6e,i6e,a6e,s6e,o6e,l6e,c6e,H3,u6e,cj,uj,h6e,yA,f6e,hA,d6e,W3,Vv,ku,Kp,Hv,Tu,Xp,fA,yd,gvt,mvt,vvt,yvt,xvt,bvt,wvt,hj=F(()=>{xd=dA();rj=/[&<>"']/,DTe=new RegExp(rj.source,"g"),nj=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,OTe=new RegExp(nj.source,"g"),PTe={"&":"&","<":"<",">":">",'"':""","'":"'"},KX=t=>PTe[t];BTe=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;zTe=/(^|[^\[])\^/g;Wv={exec:()=>null};jp=class{options;rules;lexer;constructor(e){this.options=e||xd}space(e){let r=this.rules.block.newline.exec(e);if(r&&r[0].length>0)return{type:"space",raw:r[0]}}code(e){let r=this.rules.block.code.exec(e);if(r){let n=r[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:r[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Uv(n,` `)}}}fences(e){let r=this.rules.block.fences.exec(e);if(r){let n=r[0],i=GTe(n,r[3]||"");return{type:"code",raw:n,lang:r[2]?r[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):r[2],text:i}}}heading(e){let r=this.rules.block.heading.exec(e);if(r){let n=r[2].trim();if(/#$/.test(n)){let i=Uv(n,"#");(this.options.pedantic||!i||/ $/.test(i))&&(n=i.trim())}return{type:"heading",raw:r[0],depth:r[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let r=this.rules.block.hr.exec(e);if(r)return{type:"hr",raw:Uv(r[0],` `)}}blockquote(e){let r=this.rules.block.blockquote.exec(e);if(r){let n=Uv(r[0],` `).split(` `),i="",a="",s=[];for(;n.length>0;){let o=!1,l=[],u;for(u=0;u/.test(n[u]))l.push(n[u]),o=!0;else if(!o)l.push(n[u]);else break;n=n.slice(u);let h=l.join(` `),f=h.replace(/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,` $1`).replace(/^ {0,3}>[ \t]?/gm,"");i=i?`${i} ${h}`:h,a=a?`${a} ${f}`:f;let d=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(f,s,!0),this.lexer.state.top=d,n.length===0)break;let p=s[s.length-1];if(p?.type==="code")break;if(p?.type==="blockquote"){let g=p,m=g.raw+` `+n.join(` `),y=this.blockquote(m);s[s.length-1]=y,i=i.substring(0,i.length-g.raw.length)+y.raw,a=a.substring(0,a.length-g.text.length)+y.text;break}else if(p?.type==="list"){let g=p,m=g.raw+` `+n.join(` `),y=this.list(m);s[s.length-1]=y,i=i.substring(0,i.length-p.raw.length)+y.raw,a=a.substring(0,a.length-g.raw.length)+y.raw,n=m.substring(s[s.length-1].raw.length).split(` `);continue}}return{type:"blockquote",raw:i,tokens:s,text:a}}}list(e){let r=this.rules.block.list.exec(e);if(r){let n=r[1].trim(),i=n.length>1,a={type:"list",raw:"",ordered:i,start:i?+n.slice(0,-1):"",loose:!1,items:[]};n=i?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=i?n:"[*+-]");let s=new RegExp(`^( {0,3}${n})((?:[ ][^\\n]*)?(?:\\n|$))`),o=!1;for(;e;){let l=!1,u="",h="";if(!(r=s.exec(e))||this.rules.block.hr.test(e))break;u=r[0],e=e.substring(u.length);let f=r[2].split(` `,1)[0].replace(/^\t+/,x=>" ".repeat(3*x.length)),d=e.split(` `,1)[0],p=!f.trim(),g=0;if(this.options.pedantic?(g=2,h=f.trimStart()):p?g=r[1].length+1:(g=r[2].search(/[^ ]/),g=g>4?1:g,h=f.slice(g),g+=r[1].length),p&&/^ *$/.test(d)&&(u+=d+` `,e=e.substring(d.length+1),l=!0),!l){let x=new RegExp(`^ {0,${Math.min(3,g-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),b=new RegExp(`^ {0,${Math.min(3,g-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),w=new RegExp(`^ {0,${Math.min(3,g-1)}}(?:\`\`\`|~~~)`),_=new RegExp(`^ {0,${Math.min(3,g-1)}}#`);for(;e;){let k=e.split(` `,1)[0];if(d=k,this.options.pedantic&&(d=d.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),w.test(d)||_.test(d)||x.test(d)||b.test(e))break;if(d.search(/[^ ]/)>=g||!d.trim())h+=` `+d.slice(g);else{if(p||f.search(/[^ ]/)>=4||w.test(f)||_.test(f)||b.test(f))break;h+=` `+d}!p&&!d.trim()&&(p=!0),u+=k+` `,e=e.substring(k.length+1),f=d.slice(g)}}a.loose||(o?a.loose=!0:/\n *\n *$/.test(u)&&(o=!0));let m=null,y;this.options.gfm&&(m=/^\[[ xX]\] /.exec(h),m&&(y=m[0]!=="[ ] ",h=h.replace(/^\[[ xX]\] +/,""))),a.items.push({type:"list_item",raw:u,task:!!m,checked:y,loose:!1,text:h,tokens:[]}),a.raw+=u}a.items[a.items.length-1].raw=a.items[a.items.length-1].raw.trimEnd(),a.items[a.items.length-1].text=a.items[a.items.length-1].text.trimEnd(),a.raw=a.raw.trimEnd();for(let l=0;lf.type==="space"),h=u.length>0&&u.some(f=>/\n.*\n/.test(f.raw));a.loose=h}if(a.loose)for(let l=0;l$/,"$1").replace(this.rules.inline.anyPunctuation,"$1"):"",a=r[3]?r[3].substring(1,r[3].length-1).replace(this.rules.inline.anyPunctuation,"$1"):r[3];return{type:"def",tag:n,raw:r[0],href:i,title:a}}}table(e){let r=this.rules.block.table.exec(e);if(!r||!/[:|]/.test(r[2]))return;let n=QX(r[1]),i=r[2].replace(/^\||\| *$/g,"").split("|"),a=r[3]&&r[3].trim()?r[3].replace(/\n[ \t]*$/,"").split(` `):[],s={type:"table",raw:r[0],header:[],align:[],rows:[]};if(n.length===i.length){for(let o of i)/^ *-+: *$/.test(o)?s.align.push("right"):/^ *:-+: *$/.test(o)?s.align.push("center"):/^ *:-+ *$/.test(o)?s.align.push("left"):s.align.push(null);for(let o=0;o({text:l,tokens:this.lexer.inline(l),header:!1,align:s.align[u]})));return s}}lheading(e){let r=this.rules.block.lheading.exec(e);if(r)return{type:"heading",raw:r[0],depth:r[2].charAt(0)==="="?1:2,text:r[1],tokens:this.lexer.inline(r[1])}}paragraph(e){let r=this.rules.block.paragraph.exec(e);if(r){let n=r[1].charAt(r[1].length-1)===` `?r[1].slice(0,-1):r[1];return{type:"paragraph",raw:r[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let r=this.rules.block.text.exec(e);if(r)return{type:"text",raw:r[0],text:r[0],tokens:this.lexer.inline(r[0])}}escape(e){let r=this.rules.inline.escape.exec(e);if(r)return{type:"escape",raw:r[0],text:js(r[1])}}tag(e){let r=this.rules.inline.tag.exec(e);if(r)return!this.lexer.state.inLink&&/^/i.test(r[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(r[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(r[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:r[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:r[0]}}link(e){let r=this.rules.inline.link.exec(e);if(r){let n=r[2].trim();if(!this.options.pedantic&&/^$/.test(n))return;let s=Uv(n.slice(0,-1),"\\");if((n.length-s.length)%2===0)return}else{let s=$Te(r[2],"()");if(s>-1){let l=(r[0].indexOf("!")===0?5:4)+r[1].length+s;r[2]=r[2].substring(0,s),r[0]=r[0].substring(0,l).trim(),r[3]=""}}let i=r[2],a="";if(this.options.pedantic){let s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(i);s&&(i=s[1],a=s[3])}else a=r[3]?r[3].slice(1,-1):"";return i=i.trim(),/^$/.test(n)?i=i.slice(1):i=i.slice(1,-1)),JX(r,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:a&&a.replace(this.rules.inline.anyPunctuation,"$1")},r[0],this.lexer)}}reflink(e,r){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let i=(n[2]||n[1]).replace(/\s+/g," "),a=r[i.toLowerCase()];if(!a){let s=n[0].charAt(0);return{type:"text",raw:s,text:s}}return JX(n,a,n[0],this.lexer)}}emStrong(e,r,n=""){let i=this.rules.inline.emStrongLDelim.exec(e);if(!i||i[3]&&n.match(/[\p{L}\p{N}]/u))return;if(!(i[1]||i[2]||"")||!n||this.rules.inline.punctuation.exec(n)){let s=[...i[0]].length-1,o,l,u=s,h=0,f=i[0][0]==="*"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(f.lastIndex=0,r=r.slice(-1*e.length+s);(i=f.exec(r))!=null;){if(o=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!o)continue;if(l=[...o].length,i[3]||i[4]){u+=l;continue}else if((i[5]||i[6])&&s%3&&!((s+l)%3)){h+=l;continue}if(u-=l,u>0)continue;l=Math.min(l,l+u+h);let d=[...i[0]][0].length,p=e.slice(0,s+i.index+d+l);if(Math.min(s,l)%2){let m=p.slice(1,-1);return{type:"em",raw:p,text:m,tokens:this.lexer.inlineTokens(m)}}let g=p.slice(2,-2);return{type:"strong",raw:p,text:g,tokens:this.lexer.inlineTokens(g)}}}}codespan(e){let r=this.rules.inline.code.exec(e);if(r){let n=r[2].replace(/\n/g," "),i=/[^ ]/.test(n),a=/^ /.test(n)&&/ $/.test(n);return i&&a&&(n=n.substring(1,n.length-1)),n=js(n,!0),{type:"codespan",raw:r[0],text:n}}}br(e){let r=this.rules.inline.br.exec(e);if(r)return{type:"br",raw:r[0]}}del(e){let r=this.rules.inline.del.exec(e);if(r)return{type:"del",raw:r[0],text:r[2],tokens:this.lexer.inlineTokens(r[2])}}autolink(e){let r=this.rules.inline.autolink.exec(e);if(r){let n,i;return r[2]==="@"?(n=js(r[1]),i="mailto:"+n):(n=js(r[1]),i=n),{type:"link",raw:r[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}url(e){let r;if(r=this.rules.inline.url.exec(e)){let n,i;if(r[2]==="@")n=js(r[0]),i="mailto:"+n;else{let a;do a=r[0],r[0]=this.rules.inline._backpedal.exec(r[0])?.[0]??"";while(a!==r[0]);n=js(r[0]),r[1]==="www."?i="http://"+r[0]:i=r[0]}return{type:"link",raw:r[0],text:n,href:i,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e){let r=this.rules.inline.text.exec(e);if(r){let n;return this.lexer.state.inRawBlock?n=r[0]:n=js(r[0]),{type:"text",raw:r[0],text:n}}}},UTe=/^(?: *(?:\n|$))+/,VTe=/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,WTe=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,qv=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,HTe=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,ij=/(?:[*+-]|\d{1,9}[.)])/,aj=sn(/^(?!bull |blockCode|fences|blockquote|heading|html)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html))+?)\n {0,3}(=+|-+) *(?:\n+|$)/).replace(/bull/g,ij).replace(/blockCode/g,/ {4}/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).getRegex(),pA=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,qTe=/^[^\n]+/,gA=/(?!\s*\])(?:\\.|[^\[\]\\])+/,YTe=sn(/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/).replace("label",gA).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),XTe=sn(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,ij).getRegex(),q3="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",mA=/|$))/,jTe=sn("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))","i").replace("comment",mA).replace("tag",q3).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),sj=sn(pA).replace("hr",qv).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",q3).getRegex(),KTe=sn(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",sj).getRegex(),vA={blockquote:KTe,code:VTe,def:YTe,fences:WTe,heading:HTe,hr:qv,html:jTe,lheading:aj,list:XTe,newline:UTe,paragraph:sj,table:Wv,text:qTe},ej=sn("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",qv).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",q3).getRegex(),ZTe={...vA,table:ej,paragraph:sn(pA).replace("hr",qv).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",ej).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",q3).getRegex()},QTe={...vA,html:sn(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",mA).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Wv,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:sn(pA).replace("hr",qv).replace("heading",` *#{1,6} *[^ ]`).replace("lheading",aj).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},oj=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,JTe=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,lj=/^( {2,}|\\)\n(?!\s*$)/,e6e=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\]*?>/g,n6e=sn(/^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,"u").replace(/punct/g,Yv).getRegex(),i6e=sn("^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])","gu").replace(/punct/g,Yv).getRegex(),a6e=sn("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])","gu").replace(/punct/g,Yv).getRegex(),s6e=sn(/\\([punct])/,"gu").replace(/punct/g,Yv).getRegex(),o6e=sn(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),l6e=sn(mA).replace("(?:-->|$)","-->").getRegex(),c6e=sn("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",l6e).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),H3=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,u6e=sn(/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/).replace("label",H3).replace("href",/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),cj=sn(/^!?\[(label)\]\[(ref)\]/).replace("label",H3).replace("ref",gA).getRegex(),uj=sn(/^!?\[(ref)\](?:\[\])?/).replace("ref",gA).getRegex(),h6e=sn("reflink|nolink(?!\\()","g").replace("reflink",cj).replace("nolink",uj).getRegex(),yA={_backpedal:Wv,anyPunctuation:s6e,autolink:o6e,blockSkip:r6e,br:lj,code:JTe,del:Wv,emStrongLDelim:n6e,emStrongRDelimAst:i6e,emStrongRDelimUnd:a6e,escape:oj,link:u6e,nolink:uj,punctuation:t6e,reflink:cj,reflinkSearch:h6e,tag:c6e,text:e6e,url:Wv},f6e={...yA,link:sn(/^!?\[(label)\]\((.*?)\)/).replace("label",H3).getRegex(),reflink:sn(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",H3).getRegex()},hA={...yA,escape:sn(oj).replace("])","~|])").getRegex(),url:sn(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,"i").replace("email",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\l+" ".repeat(u.length));let i,a,s;for(;e;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(o=>(i=o.call({lexer:this},e,r))?(e=e.substring(i.raw.length),r.push(i),!0):!1))){if(i=this.tokenizer.space(e)){e=e.substring(i.raw.length),i.raw.length===1&&r.length>0?r[r.length-1].raw+=` `:r.push(i);continue}if(i=this.tokenizer.code(e)){e=e.substring(i.raw.length),a=r[r.length-1],a&&(a.type==="paragraph"||a.type==="text")?(a.raw+=` `+i.raw,a.text+=` `+i.text,this.inlineQueue[this.inlineQueue.length-1].src=a.text):r.push(i);continue}if(i=this.tokenizer.fences(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.heading(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.hr(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.blockquote(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.list(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.html(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.def(e)){e=e.substring(i.raw.length),a=r[r.length-1],a&&(a.type==="paragraph"||a.type==="text")?(a.raw+=` `+i.raw,a.text+=` `+i.raw,this.inlineQueue[this.inlineQueue.length-1].src=a.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title});continue}if(i=this.tokenizer.table(e)){e=e.substring(i.raw.length),r.push(i);continue}if(i=this.tokenizer.lheading(e)){e=e.substring(i.raw.length),r.push(i);continue}if(s=e,this.options.extensions&&this.options.extensions.startBlock){let o=1/0,l=e.slice(1),u;this.options.extensions.startBlock.forEach(h=>{u=h.call({lexer:this},l),typeof u=="number"&&u>=0&&(o=Math.min(o,u))}),o<1/0&&o>=0&&(s=e.substring(0,o+1))}if(this.state.top&&(i=this.tokenizer.paragraph(s))){a=r[r.length-1],n&&a?.type==="paragraph"?(a.raw+=` `+i.raw,a.text+=` `+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):r.push(i),n=s.length!==e.length,e=e.substring(i.raw.length);continue}if(i=this.tokenizer.text(e)){e=e.substring(i.raw.length),a=r[r.length-1],a&&a.type==="text"?(a.raw+=` `+i.raw,a.text+=` `+i.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=a.text):r.push(i);continue}if(e){let o="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(o);break}else throw new Error(o)}}return this.state.top=!0,r}inline(e,r=[]){return this.inlineQueue.push({src:e,tokens:r}),r}inlineTokens(e,r=[]){let n,i,a,s=e,o,l,u;if(this.tokens.links){let h=Object.keys(this.tokens.links);if(h.length>0)for(;(o=this.tokenizer.rules.inline.reflinkSearch.exec(s))!=null;)h.includes(o[0].slice(o[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,o.index)+"["+"a".repeat(o[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(o=this.tokenizer.rules.inline.blockSkip.exec(s))!=null;)s=s.slice(0,o.index)+"["+"a".repeat(o[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(o=this.tokenizer.rules.inline.anyPunctuation.exec(s))!=null;)s=s.slice(0,o.index)+"++"+s.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;e;)if(l||(u=""),l=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(h=>(n=h.call({lexer:this},e,r))?(e=e.substring(n.raw.length),r.push(n),!0):!1))){if(n=this.tokenizer.escape(e)){e=e.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.tag(e)){e=e.substring(n.raw.length),i=r[r.length-1],i&&n.type==="text"&&i.type==="text"?(i.raw+=n.raw,i.text+=n.text):r.push(n);continue}if(n=this.tokenizer.link(e)){e=e.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(n.raw.length),i=r[r.length-1],i&&n.type==="text"&&i.type==="text"?(i.raw+=n.raw,i.text+=n.text):r.push(n);continue}if(n=this.tokenizer.emStrong(e,s,u)){e=e.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.codespan(e)){e=e.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.br(e)){e=e.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.del(e)){e=e.substring(n.raw.length),r.push(n);continue}if(n=this.tokenizer.autolink(e)){e=e.substring(n.raw.length),r.push(n);continue}if(!this.state.inLink&&(n=this.tokenizer.url(e))){e=e.substring(n.raw.length),r.push(n);continue}if(a=e,this.options.extensions&&this.options.extensions.startInline){let h=1/0,f=e.slice(1),d;this.options.extensions.startInline.forEach(p=>{d=p.call({lexer:this},f),typeof d=="number"&&d>=0&&(h=Math.min(h,d))}),h<1/0&&h>=0&&(a=e.substring(0,h+1))}if(n=this.tokenizer.inlineText(a)){e=e.substring(n.raw.length),n.raw.slice(-1)!=="_"&&(u=n.raw.slice(-1)),l=!0,i=r[r.length-1],i&&i.type==="text"?(i.raw+=n.raw,i.text+=n.text):r.push(n);continue}if(e){let h="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(h);break}else throw new Error(h)}}return r}},Kp=class{options;parser;constructor(e){this.options=e||xd}space(e){return""}code({text:e,lang:r,escaped:n}){let i=(r||"").match(/^\S*/)?.[0],a=e.replace(/\n$/,"")+` `;return i?'
'+(n?a:js(a,!0))+`
`:"
"+(n?a:js(a,!0))+`
`}blockquote({tokens:e}){return`
${this.parser.parse(e)}
`}html({text:e}){return e}heading({tokens:e,depth:r}){return`${this.parser.parseInline(e)} `}hr(e){return`
`}list(e){let r=e.ordered,n=e.start,i="";for(let o=0;o `+i+" `}listitem(e){let r="";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens.length>0&&e.tokens[0].type==="paragraph"?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type==="text"&&(e.tokens[0].tokens[0].text=n+" "+e.tokens[0].tokens[0].text)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" "}):r+=n+" "}return r+=this.parser.parse(e.tokens,!!e.loose),`
  • ${r}
  • `}checkbox({checked:e}){return"'}paragraph({tokens:e}){return`

    ${this.parser.parseInline(e)}

    `}table(e){let r="",n="";for(let a=0;a${i}`),` `+r+` `+i+`
    `}tablerow({text:e}){return` ${e} `}tablecell(e){let r=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+r+` `}strong({tokens:e}){return`${this.parser.parseInline(e)}`}em({tokens:e}){return`${this.parser.parseInline(e)}`}codespan({text:e}){return`${e}`}br(e){return"
    "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:r,tokens:n}){let i=this.parser.parseInline(n),a=ZX(e);if(a===null)return i;e=a;let s='
    ",s}image({href:e,title:r,text:n}){let i=ZX(e);if(i===null)return n;e=i;let a=`${n}{let o=a[s].flat(1/0);n=n.concat(this.walkTokens(o,r))}):a.tokens&&(n=n.concat(this.walkTokens(a.tokens,r)))}}return n}use(...e){let r=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let i={...n};if(i.async=this.defaults.async||i.async||!1,n.extensions&&(n.extensions.forEach(a=>{if(!a.name)throw new Error("extension name required");if("renderer"in a){let s=r.renderers[a.name];s?r.renderers[a.name]=function(...o){let l=a.renderer.apply(this,o);return l===!1&&(l=s.apply(this,o)),l}:r.renderers[a.name]=a.renderer}if("tokenizer"in a){if(!a.level||a.level!=="block"&&a.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");let s=r[a.level];s?s.unshift(a.tokenizer):r[a.level]=[a.tokenizer],a.start&&(a.level==="block"?r.startBlock?r.startBlock.push(a.start):r.startBlock=[a.start]:a.level==="inline"&&(r.startInline?r.startInline.push(a.start):r.startInline=[a.start]))}"childTokens"in a&&a.childTokens&&(r.childTokens[a.name]=a.childTokens)}),i.extensions=r),n.renderer){let a=this.defaults.renderer||new Kp(this.defaults);for(let s in n.renderer){if(!(s in a))throw new Error(`renderer '${s}' does not exist`);if(["options","parser"].includes(s))continue;let o=s,l=n.renderer[o];n.useNewRenderer||(l=this.#t(l,o,a));let u=a[o];a[o]=(...h)=>{let f=l.apply(a,h);return f===!1&&(f=u.apply(a,h)),f||""}}i.renderer=a}if(n.tokenizer){let a=this.defaults.tokenizer||new jp(this.defaults);for(let s in n.tokenizer){if(!(s in a))throw new Error(`tokenizer '${s}' does not exist`);if(["options","rules","lexer"].includes(s))continue;let o=s,l=n.tokenizer[o],u=a[o];a[o]=(...h)=>{let f=l.apply(a,h);return f===!1&&(f=u.apply(a,h)),f}}i.tokenizer=a}if(n.hooks){let a=this.defaults.hooks||new Xp;for(let s in n.hooks){if(!(s in a))throw new Error(`hook '${s}' does not exist`);if(s==="options")continue;let o=s,l=n.hooks[o],u=a[o];Xp.passThroughHooks.has(s)?a[o]=h=>{if(this.defaults.async)return Promise.resolve(l.call(a,h)).then(d=>u.call(a,d));let f=l.call(a,h);return u.call(a,f)}:a[o]=(...h)=>{let f=l.apply(a,h);return f===!1&&(f=u.apply(a,h)),f}}i.hooks=a}if(n.walkTokens){let a=this.defaults.walkTokens,s=n.walkTokens;i.walkTokens=function(o){let l=[];return l.push(s.call(this,o)),a&&(l=l.concat(a.call(this,o))),l}}this.defaults={...this.defaults,...i}}),this}#t(e,r,n){switch(r){case"heading":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,n.parser.parseInline(i.tokens),i.depth,FTe(n.parser.parseInline(i.tokens,n.parser.textRenderer)))};case"code":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,i.text,i.lang,!!i.escaped)};case"table":return function(i){if(!i.type||i.type!==r)return e.apply(this,arguments);let a="",s="";for(let l=0;l0&&h.tokens[0].type==="paragraph"?(h.tokens[0].text=g+" "+h.tokens[0].text,h.tokens[0].tokens&&h.tokens[0].tokens.length>0&&h.tokens[0].tokens[0].type==="text"&&(h.tokens[0].tokens[0].text=g+" "+h.tokens[0].tokens[0].text)):h.tokens.unshift({type:"text",text:g+" "}):p+=g+" "}p+=this.parser.parse(h.tokens,o),l+=this.listitem({type:"list_item",raw:p,text:p,task:d,checked:!!f,loose:o,tokens:h.tokens})}return e.call(this,l,a,s)};case"html":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,i.text,i.block)};case"paragraph":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,this.parser.parseInline(i.tokens))};case"escape":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,i.text)};case"link":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,i.href,i.title,this.parser.parseInline(i.tokens))};case"image":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,i.href,i.title,i.text)};case"strong":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,this.parser.parseInline(i.tokens))};case"em":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,this.parser.parseInline(i.tokens))};case"codespan":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,i.text)};case"del":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,this.parser.parseInline(i.tokens))};case"text":return function(i){return!i.type||i.type!==r?e.apply(this,arguments):e.call(this,i.text)}}return e}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,r){return ku.lex(e,r??this.defaults)}parser(e,r){return Tu.parse(e,r??this.defaults)}#e(e,r){return(n,i)=>{let a={...i},s={...this.defaults,...a};this.defaults.async===!0&&a.async===!1&&(s.silent||console.warn("marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored."),s.async=!0);let o=this.#r(!!s.silent,!!s.async);if(typeof n>"u"||n===null)return o(new Error("marked(): input parameter is undefined or null"));if(typeof n!="string")return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(s.hooks&&(s.hooks.options=s),s.async)return Promise.resolve(s.hooks?s.hooks.preprocess(n):n).then(l=>e(l,s)).then(l=>s.hooks?s.hooks.processAllTokens(l):l).then(l=>s.walkTokens?Promise.all(this.walkTokens(l,s.walkTokens)).then(()=>l):l).then(l=>r(l,s)).then(l=>s.hooks?s.hooks.postprocess(l):l).catch(o);try{s.hooks&&(n=s.hooks.preprocess(n));let l=e(n,s);s.hooks&&(l=s.hooks.processAllTokens(l)),s.walkTokens&&this.walkTokens(l,s.walkTokens);let u=r(l,s);return s.hooks&&(u=s.hooks.postprocess(u)),u}catch(l){return o(l)}}}#r(e,r){return n=>{if(n.message+=` Please report this to https://github.com/markedjs/marked.`,e){let i="

    An error occurred:

    "+js(n.message+"",!0)+"
    ";return r?Promise.resolve(i):i}if(r)return Promise.reject(n);throw n}}},yd=new fA;Yr.options=Yr.setOptions=function(t){return yd.setOptions(t),Yr.defaults=yd.defaults,tj(Yr.defaults),Yr};Yr.getDefaults=dA;Yr.defaults=xd;Yr.use=function(...t){return yd.use(...t),Yr.defaults=yd.defaults,tj(Yr.defaults),Yr};Yr.walkTokens=function(t,e){return yd.walkTokens(t,e)};Yr.parseInline=yd.parseInline;Yr.Parser=Tu;Yr.parser=Tu.parse;Yr.Renderer=Kp;Yr.TextRenderer=Hv;Yr.Lexer=ku;Yr.lexer=ku.lex;Yr.Tokenizer=jp;Yr.Hooks=Xp;Yr.parse=Yr;gvt=Yr.options,mvt=Yr.setOptions,vvt=Yr.use,yvt=Yr.walkTokens,xvt=Yr.parseInline,bvt=Tu.parse,wvt=ku.lex});function Y3(t){for(var e=[],r=1;r{});function fj(t,{markdownAutoWrap:e}){let n=t.replace(//g,` `).replace(/\n{2,}/g,` `),i=Y3(n);return e===!1?i.replace(/ /g," "):i}function dj(t,e={}){let r=fj(t,e),n=Yr.lexer(r),i=[[]],a=0;function s(o,l="normal"){o.type==="text"?o.text.split(` `).forEach((h,f)=>{f!==0&&(a++,i.push([])),h.split(" ").forEach(d=>{d=d.replace(/'/g,"'"),d&&i[a].push({content:d,type:l})})}):o.type==="strong"||o.type==="em"?o.tokens.forEach(u=>{s(u,o.type)}):o.type==="html"&&i[a].push({content:o.text,type:"normal"})}return v(s,"processNode"),n.forEach(o=>{o.type==="paragraph"?o.tokens?.forEach(l=>{s(l)}):o.type==="html"&&i[a].push({content:o.text,type:"normal"})}),i}function pj(t,{markdownAutoWrap:e}={}){let r=Yr.lexer(t);function n(i){return i.type==="text"?e===!1?i.text.replace(/\n */g,"
    ").replace(/ /g," "):i.text.replace(/\n */g,"
    "):i.type==="strong"?`${i.tokens?.map(n).join("")}`:i.type==="em"?`${i.tokens?.map(n).join("")}`:i.type==="paragraph"?`

    ${i.tokens?.map(n).join("")}

    `:i.type==="space"?"":i.type==="html"?`${i.text}`:i.type==="escape"?i.text:`Unsupported markdown: ${i.type}`}return v(n,"output"),r.map(n).join("")}function gj(t){return Intl.Segmenter?[...new Intl.Segmenter().segment(t)].map(e=>e.segment):[...t]}function mj(t,e){let r=gj(e.content);return wA(t,[],r,e.type)}function wA(t,e,r,n){if(r.length===0)return[{content:e.join(""),type:n},{content:"",type:n}];let[i,...a]=r,s=[...e,i];return t([{content:s.join(""),type:n}])?wA(t,s,a,n):(e.length===0&&i&&(e.push(i),r.shift()),[{content:e.join(""),type:n},{content:r.join(""),type:n}])}function vj(t,e){if(t.some(({content:r})=>r.includes(` `)))throw new Error("splitLineToFitWidth does not support newlines in the line");return X3(t,e)}function X3(t,e,r=[],n=[]){if(t.length===0)return n.length>0&&r.push(n),r.length>0?r:[];let i="";t[0].content===" "&&(i=" ",t.shift());let a=t.shift()??{content:" ",type:"normal"},s=[...n];if(i!==""&&s.push({content:i,type:"normal"}),s.push(a),e(s))return X3(t,e,r,s);if(n.length>0)r.push(n),t.unshift(a);else if(a.content){let[o,l]=mj(e,a);r.push([o]),l.content&&t.unshift(l)}return X3(t,e,r)}function bA(t,e){e&&t.attr("style",e)}async function yj(t,e,r,n,i=!1){let a=t.append("foreignObject");a.attr("width",`${10*r}px`),a.attr("height",`${10*r}px`);let s=a.append("xhtml:div"),o=e.label;e.label&&Ei(e.label)&&(o=await fh(e.label.replace(Xe.lineBreakRegex,` `),pe()));let l=e.isNode?"nodeLabel":"edgeLabel",u=s.append("span");u.html(o),bA(u,e.labelStyle),u.attr("class",`${l} ${n}`),bA(s,e.labelStyle),s.style("display","table-cell"),s.style("white-space","nowrap"),s.style("line-height","1.5"),s.style("max-width",r+"px"),s.style("text-align","center"),s.attr("xmlns","http://www.w3.org/1999/xhtml"),i&&s.attr("class","labelBkg");let h=s.node().getBoundingClientRect();return h.width===r&&(s.style("display","table"),s.style("white-space","break-spaces"),s.style("width",r+"px"),h=s.node().getBoundingClientRect()),a.node()}function j3(t,e,r){return t.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*r-.1+"em").attr("dy",r+"em")}function xj(t,e,r){let n=t.append("text"),i=j3(n,1,e);K3(i,r);let a=i.node().getComputedTextLength();return n.remove(),a}function kA(t,e,r){let n=t.append("text"),i=j3(n,1,e);K3(i,[{content:r,type:"normal"}]);let a=i.node()?.getBoundingClientRect();return a&&n.remove(),a}function bj(t,e,r,n=!1){let a=e.append("g"),s=a.insert("rect").attr("class","background").attr("style","stroke: none"),o=a.append("text").attr("y","-10.1"),l=0;for(let u of r){let h=v(d=>xj(a,1.1,d)<=t,"checkWidth"),f=h(u)?[u]:vj(u,h);for(let d of f){let p=j3(o,l,1.1);K3(p,d),l++}}if(n){let u=o.node().getBBox(),h=2;return s.attr("x",u.x-h).attr("y",u.y-h).attr("width",u.width+2*h).attr("height",u.height+2*h),a.node()}else return o.node()}function K3(t,e){t.text(""),e.forEach((r,n)=>{let i=t.append("tspan").attr("font-style",r.type==="em"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",r.type==="strong"?"bold":"normal");n===0?i.text(r.content):i.text(" "+r.content)})}function Z3(t){return t.replace(/fa[bklrs]?:fa-[\w-]+/g,e=>``)}var oa,Ya=F(()=>{kn();or();lr();hj();xA();v(fj,"preprocessMarkdown");v(dj,"markdownToLines");v(pj,"markdownToHTML");v(gj,"splitTextToChars");v(mj,"splitWordToFitWidth");v(wA,"splitWordToFitWidthRecursion");v(vj,"splitLineToFitWidth");v(X3,"splitLineToFitWidthRecursion");v(bA,"applyStyle");v(yj,"addHtmlSpan");v(j3,"createTspan");v(xj,"computeWidthOfText");v(kA,"computeDimensionOfText");v(bj,"createFormattedText");v(K3,"updateTextContentAndStyles");v(Z3,"replaceIconSubstring");oa=v(async(t,e="",{style:r="",isTitle:n=!1,classes:i="",useHtmlLabels:a=!0,isNode:s=!0,width:o=200,addSvgBackground:l=!1}={},u)=>{if(re.debug("XYZ createText",e,r,n,i,a,s,"addSvgBackground: ",l),a){let h=pj(e,u),f=Z3(Xs(h)),d=e.replace(/\\\\/g,"\\"),p={isNode:s,label:Ei(e)?d:f,labelStyle:r.replace("fill:","color:")};return await yj(t,p,o,i,l)}else{let h=e.replace(//g,"
    "),f=dj(h.replace("
    ","
    "),u),d=bj(o,t,f,e?l:!1);if(s){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));let p=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");Ve(d).attr("style",p)}else{let p=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");Ve(d).select("rect").attr("style",p.replace(/background:/g,"fill:"));let g=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");Ve(d).select("text").attr("style",g)}return d}},"createText")});function TA(t,e,r){if(t&&t.length){let[n,i]=e,a=Math.PI/180*r,s=Math.cos(a),o=Math.sin(a);for(let l of t){let[u,h]=l;l[0]=(u-n)*s-(h-i)*o+n,l[1]=(u-n)*o+(h-i)*s+i}}}function p6e(t,e){return t[0]===e[0]&&t[1]===e[1]}function g6e(t,e,r,n=1){let i=r,a=Math.max(e,.1),s=t[0]&&t[0][0]&&typeof t[0][0]=="number"?[t]:t,o=[0,0];if(i)for(let u of s)TA(u,o,i);let l=function(u,h,f){let d=[];for(let b of u){let w=[...b];p6e(w[0],w[w.length-1])||w.push([w[0][0],w[0][1]]),w.length>2&&d.push(w)}let p=[];h=Math.max(h,.1);let g=[];for(let b of d)for(let w=0;wb.yminw.ymin?1:b.xw.x?1:b.ymax===w.ymax?0:(b.ymax-w.ymax)/Math.abs(b.ymax-w.ymax)),!g.length)return p;let m=[],y=g[0].ymin,x=0;for(;m.length||g.length;){if(g.length){let b=-1;for(let w=0;wy);w++)b=w;g.splice(0,b+1).forEach(w=>{m.push({s:y,edge:w})})}if(m=m.filter(b=>!(b.edge.ymax<=y)),m.sort((b,w)=>b.edge.x===w.edge.x?0:(b.edge.x-w.edge.x)/Math.abs(b.edge.x-w.edge.x)),(f!==1||x%h==0)&&m.length>1)for(let b=0;b=m.length)break;let _=m[b].edge,k=m[w].edge;p.push([[Math.round(_.x),y],[Math.round(k.x),y]])}y+=f,m.forEach(b=>{b.edge.x=b.edge.x+f*b.edge.islope}),x++}return p}(s,a,n);if(i){for(let u of s)TA(u,o,-i);(function(u,h,f){let d=[];u.forEach(p=>d.push(...p)),TA(d,h,f)})(l,o,-i)}return l}function Zv(t,e){var r;let n=e.hachureAngle+90,i=e.hachureGap;i<0&&(i=4*e.strokeWidth),i=Math.round(Math.max(i,.1));let a=1;return e.roughness>=1&&(((r=e.randomizer)===null||r===void 0?void 0:r.next())||Math.random())>.7&&(a=i),g6e(t,i,n,a||1)}function s5(t){let e=t[0],r=t[1];return Math.sqrt(Math.pow(e[0]-r[0],2)+Math.pow(e[1]-r[1],2))}function SA(t,e){return t.type===e}function zA(t){let e=[],r=function(s){let o=new Array;for(;s!=="";)if(s.match(/^([ \t\r\n,]+)/))s=s.substr(RegExp.$1.length);else if(s.match(/^([aAcChHlLmMqQsStTvVzZ])/))o[o.length]={type:m6e,text:RegExp.$1},s=s.substr(RegExp.$1.length);else{if(!s.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/))return[];o[o.length]={type:EA,text:`${parseFloat(RegExp.$1)}`},s=s.substr(RegExp.$1.length)}return o[o.length]={type:wj,text:""},o}(t),n="BOD",i=0,a=r[i];for(;!SA(a,wj);){let s=0,o=[];if(n==="BOD"){if(a.text!=="M"&&a.text!=="m")return zA("M0,0"+t);i++,s=Q3[a.text],n=a.text}else SA(a,EA)?s=Q3[n]:(i++,s=Q3[a.text],n=a.text);if(!(i+sh%2?u+r:u+e);a.push({key:"C",data:l}),e=l[4],r=l[5];break}case"Q":a.push({key:"Q",data:[...o]}),e=o[2],r=o[3];break;case"q":{let l=o.map((u,h)=>h%2?u+r:u+e);a.push({key:"Q",data:l}),e=l[2],r=l[3];break}case"A":a.push({key:"A",data:[...o]}),e=o[5],r=o[6];break;case"a":e+=o[5],r+=o[6],a.push({key:"A",data:[o[0],o[1],o[2],o[3],o[4],e,r]});break;case"H":a.push({key:"H",data:[...o]}),e=o[0];break;case"h":e+=o[0],a.push({key:"H",data:[e]});break;case"V":a.push({key:"V",data:[...o]}),r=o[0];break;case"v":r+=o[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...o]}),e=o[2],r=o[3];break;case"s":{let l=o.map((u,h)=>h%2?u+r:u+e);a.push({key:"S",data:l}),e=l[2],r=l[3];break}case"T":a.push({key:"T",data:[...o]}),e=o[0],r=o[1];break;case"t":e+=o[0],r+=o[1],a.push({key:"T",data:[e,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),e=n,r=i}return a}function Rj(t){let e=[],r="",n=0,i=0,a=0,s=0,o=0,l=0;for(let{key:u,data:h}of t){switch(u){case"M":e.push({key:"M",data:[...h]}),[n,i]=h,[a,s]=h;break;case"C":e.push({key:"C",data:[...h]}),n=h[4],i=h[5],o=h[2],l=h[3];break;case"L":e.push({key:"L",data:[...h]}),[n,i]=h;break;case"H":n=h[0],e.push({key:"L",data:[n,i]});break;case"V":i=h[0],e.push({key:"L",data:[n,i]});break;case"S":{let f=0,d=0;r==="C"||r==="S"?(f=n+(n-o),d=i+(i-l)):(f=n,d=i),e.push({key:"C",data:[f,d,...h]}),o=h[0],l=h[1],n=h[2],i=h[3];break}case"T":{let[f,d]=h,p=0,g=0;r==="Q"||r==="T"?(p=n+(n-o),g=i+(i-l)):(p=n,g=i);let m=n+2*(p-n)/3,y=i+2*(g-i)/3,x=f+2*(p-f)/3,b=d+2*(g-d)/3;e.push({key:"C",data:[m,y,x,b,f,d]}),o=p,l=g,n=f,i=d;break}case"Q":{let[f,d,p,g]=h,m=n+2*(f-n)/3,y=i+2*(d-i)/3,x=p+2*(f-p)/3,b=g+2*(d-g)/3;e.push({key:"C",data:[m,y,x,b,p,g]}),o=f,l=d,n=p,i=g;break}case"A":{let f=Math.abs(h[0]),d=Math.abs(h[1]),p=h[2],g=h[3],m=h[4],y=h[5],x=h[6];f===0||d===0?(e.push({key:"C",data:[n,i,y,x,y,x]}),n=y,i=x):(n!==y||i!==x)&&(Nj(n,i,y,x,f,d,p,g,m).forEach(function(b){e.push({key:"C",data:b})}),n=y,i=x);break}case"Z":e.push({key:"Z",data:[]}),n=a,i=s}r=u}return e}function Xv(t,e,r){return[t*Math.cos(r)-e*Math.sin(r),t*Math.sin(r)+e*Math.cos(r)]}function Nj(t,e,r,n,i,a,s,o,l,u){let h=(f=s,Math.PI*f/180);var f;let d=[],p=0,g=0,m=0,y=0;if(u)[p,g,m,y]=u;else{[t,e]=Xv(t,e,-h),[r,n]=Xv(r,n,-h);let I=(t-r)/2,A=(e-n)/2,D=I*I/(i*i)+A*A/(a*a);D>1&&(D=Math.sqrt(D),i*=D,a*=D);let N=i*i,O=a*a,B=N*O-N*A*A-O*I*I,P=N*A*A+O*I*I,$=(o===l?-1:1)*Math.sqrt(Math.abs(B/P));m=$*i*A/a+(t+r)/2,y=$*-a*I/i+(e+n)/2,p=Math.asin(parseFloat(((e-y)/a).toFixed(9))),g=Math.asin(parseFloat(((n-y)/a).toFixed(9))),tg&&(p-=2*Math.PI),!l&&g>p&&(g-=2*Math.PI)}let x=g-p;if(Math.abs(x)>120*Math.PI/180){let I=g,A=r,D=n;g=l&&g>p?p+120*Math.PI/180*1:p+120*Math.PI/180*-1,d=Nj(r=m+i*Math.cos(g),n=y+a*Math.sin(g),A,D,i,a,s,0,l,[g,I,m,y])}x=g-p;let b=Math.cos(p),w=Math.sin(p),_=Math.cos(g),k=Math.sin(g),E=Math.tan(x/4),L=4/3*i*E,S=4/3*a*E,C=[t,e],M=[t+L*w,e-S*b],R=[r+L*k,n-S*_],T=[r,n];if(M[0]=2*C[0]-M[0],M[1]=2*C[1]-M[1],u)return[M,R,T].concat(d);{d=[M,R,T].concat(d);let I=[];for(let A=0;A2){let i=[];for(let a=0;a2*Math.PI&&(p=0,g=2*Math.PI);let m=2*Math.PI/l.curveStepCount,y=Math.min(m/2,(g-p)/2),x=Aj(y,u,h,f,d,p,g,1,l);if(!l.disableMultiStroke){let b=Aj(y,u,h,f,d,p,g,1.5,l);x.push(...b)}return s&&(o?x.push(...Dh(u,h,u+f*Math.cos(p),h+d*Math.sin(p),l),...Dh(u,h,u+f*Math.cos(g),h+d*Math.sin(g),l)):x.push({op:"lineTo",data:[u,h]},{op:"lineTo",data:[u+f*Math.cos(p),h+d*Math.sin(p)]})),{type:"path",ops:x}}function Ej(t,e){let r=Rj(Lj(zA(t))),n=[],i=[0,0],a=[0,0];for(let{key:s,data:o}of r)switch(s){case"M":a=[o[0],o[1]],i=[o[0],o[1]];break;case"L":n.push(...Dh(a[0],a[1],o[0],o[1],e)),a=[o[0],o[1]];break;case"C":{let[l,u,h,f,d,p]=o;n.push(...x6e(l,u,h,f,d,p,a,e)),a=[d,p];break}case"Z":n.push(...Dh(a[0],a[1],i[0],i[1],e)),a=[i[0],i[1]]}return{type:"path",ops:n}}function CA(t,e){let r=[];for(let n of t)if(n.length){let i=e.maxRandomnessOffset||0,a=n.length;if(a>2){r.push({op:"move",data:[n[0][0]+jt(i,e),n[0][1]+jt(i,e)]});for(let s=1;s500?.4:-.0016668*l+1.233334;let h=i.maxRandomnessOffset||0;h*h*100>o&&(h=l/10);let f=h/2,d=.2+.2*Dj(i),p=i.bowing*i.maxRandomnessOffset*(n-e)/200,g=i.bowing*i.maxRandomnessOffset*(t-r)/200;p=jt(p,i,u),g=jt(g,i,u);let m=[],y=()=>jt(f,i,u),x=()=>jt(h,i,u),b=i.preserveVertices;return a&&(s?m.push({op:"move",data:[t+(b?0:y()),e+(b?0:y())]}):m.push({op:"move",data:[t+(b?0:jt(h,i,u)),e+(b?0:jt(h,i,u))]})),s?m.push({op:"bcurveTo",data:[p+t+(r-t)*d+y(),g+e+(n-e)*d+y(),p+t+2*(r-t)*d+y(),g+e+2*(n-e)*d+y(),r+(b?0:y()),n+(b?0:y())]}):m.push({op:"bcurveTo",data:[p+t+(r-t)*d+x(),g+e+(n-e)*d+x(),p+t+2*(r-t)*d+x(),g+e+2*(n-e)*d+x(),r+(b?0:x()),n+(b?0:x())]}),m}function J3(t,e,r){if(!t.length)return[];let n=[];n.push([t[0][0]+jt(e,r),t[0][1]+jt(e,r)]),n.push([t[0][0]+jt(e,r),t[0][1]+jt(e,r)]);for(let i=1;i3){let a=[],s=1-r.curveTightness;i.push({op:"move",data:[t[1][0],t[1][1]]});for(let o=1;o+21&&i.push(o)):i.push(o),i.push(t[e+3])}else{let l=t[e+0],u=t[e+1],h=t[e+2],f=t[e+3],d=bd(l,u,.5),p=bd(u,h,.5),g=bd(h,f,.5),m=bd(d,p,.5),y=bd(p,g,.5),x=bd(m,y,.5);PA([l,d,m,x],0,r,i),PA([x,y,g,f],0,r,i)}var a,s;return i}function w6e(t,e){return a5(t,0,t.length,e)}function a5(t,e,r,n,i){let a=i||[],s=t[e],o=t[r-1],l=0,u=1;for(let h=e+1;hl&&(l=f,u=h)}return Math.sqrt(l)>n?(a5(t,e,u+1,n,a),a5(t,u,r,n,a)):(a.length||a.push(s),a.push(o)),a}function AA(t,e=.15,r){let n=[],i=(t.length-1)/3;for(let a=0;a0?a5(n,0,n.length,r):n}var Kv,_A,LA,RA,NA,IA,ks,MA,m6e,EA,wj,Q3,v6e,Ks,Qp,BA,e5,FA,Ye,$t=F(()=>{Kv=class{constructor(e){this.helper=e}fillPolygons(e,r){return this._fillPolygons(e,r)}_fillPolygons(e,r){let n=Zv(e,r);return{type:"fillSketch",ops:this.renderLines(n,r)}}renderLines(e,r){let n=[];for(let i of e)n.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],r));return n}};_A=class extends Kv{fillPolygons(e,r){let n=r.hachureGap;n<0&&(n=4*r.strokeWidth),n=Math.max(n,.1);let i=Zv(e,Object.assign({},r,{hachureGap:n})),a=Math.PI/180*r.hachureAngle,s=[],o=.5*n*Math.cos(a),l=.5*n*Math.sin(a);for(let[u,h]of i)s5([u,h])&&s.push([[u[0]-o,u[1]+l],[...h]],[[u[0]+o,u[1]-l],[...h]]);return{type:"fillSketch",ops:this.renderLines(s,r)}}},LA=class extends Kv{fillPolygons(e,r){let n=this._fillPolygons(e,r),i=Object.assign({},r,{hachureAngle:r.hachureAngle+90}),a=this._fillPolygons(e,i);return n.ops=n.ops.concat(a.ops),n}},RA=class{constructor(e){this.helper=e}fillPolygons(e,r){let n=Zv(e,r=Object.assign({},r,{hachureAngle:0}));return this.dotsOnLines(n,r)}dotsOnLines(e,r){let n=[],i=r.hachureGap;i<0&&(i=4*r.strokeWidth),i=Math.max(i,.1);let a=r.fillWeight;a<0&&(a=r.strokeWidth/2);let s=i/4;for(let o of e){let l=s5(o),u=l/i,h=Math.ceil(u)-1,f=l-h*i,d=(o[0][0]+o[1][0])/2-i/4,p=Math.min(o[0][1],o[1][1]);for(let g=0;g{let o=s5(s),l=Math.floor(o/(n+i)),u=(o+i-l*(n+i))/2,h=s[0],f=s[1];h[0]>f[0]&&(h=s[1],f=s[0]);let d=Math.atan((f[1]-h[1])/(f[0]-h[0]));for(let p=0;p{let s=s5(a),o=Math.round(s/(2*r)),l=a[0],u=a[1];l[0]>u[0]&&(l=a[1],u=a[0]);let h=Math.atan((u[1]-l[1])/(u[0]-l[0]));for(let f=0;f2*Math.PI&&(L=0,S=2*Math.PI);let C=(S-L)/b.curveStepCount,M=[];for(let R=L;R<=S;R+=C)M.push([w+k*Math.cos(R),_+E*Math.sin(R)]);return M.push([w+k*Math.cos(S),_+E*Math.sin(S)]),M.push([w,_]),Zp([M],b)}(e,r,n,i,a,s,u));return u.stroke!==Ks&&h.push(f),this._d("arc",h,u)}curve(e,r){let n=this._o(r),i=[],a=kj(e,n);if(n.fill&&n.fill!==Ks)if(n.fillStyle==="solid"){let s=kj(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(s.ops)})}else{let s=[],o=e;if(o.length){let l=typeof o[0][0]=="number"?[o]:o;for(let u of l)u.length<3?s.push(...u):u.length===3?s.push(...AA(_j([u[0],u[0],u[1],u[2]]),10,(1+n.roughness)/2)):s.push(...AA(_j(u),10,(1+n.roughness)/2))}s.length&&i.push(Zp([s],n))}return n.stroke!==Ks&&i.push(a),this._d("curve",i,n)}polygon(e,r){let n=this._o(r),i=[],a=t5(e,!0,n);return n.fill&&(n.fillStyle==="solid"?i.push(CA([e],n)):i.push(Zp([e],n))),n.stroke!==Ks&&i.push(a),this._d("polygon",i,n)}path(e,r){let n=this._o(r),i=[];if(!e)return this._d("path",i,n);e=(e||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");let a=n.fill&&n.fill!=="transparent"&&n.fill!==Ks,s=n.stroke!==Ks,o=!!(n.simplification&&n.simplification<1),l=function(h,f,d){let p=Rj(Lj(zA(h))),g=[],m=[],y=[0,0],x=[],b=()=>{x.length>=4&&m.push(...AA(x,f)),x=[]},w=()=>{b(),m.length&&(g.push(m),m=[])};for(let{key:k,data:E}of p)switch(k){case"M":w(),y=[E[0],E[1]],m.push(y);break;case"L":b(),m.push([E[0],E[1]]);break;case"C":if(!x.length){let L=m.length?m[m.length-1]:y;x.push([L[0],L[1]])}x.push([E[0],E[1]]),x.push([E[2],E[3]]),x.push([E[4],E[5]]);break;case"Z":b(),m.push([y[0],y[1]])}if(w(),!d)return g;let _=[];for(let k of g){let E=w6e(k,d);E.length&&_.push(E)}return _}(e,1,o?4-4*(n.simplification||1):(1+n.roughness)/2),u=Ej(e,n);if(a)if(n.fillStyle==="solid")if(l.length===1){let h=Ej(e,Object.assign(Object.assign({},n),{disableMultiStroke:!0,roughness:n.roughness?n.roughness+n.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(h.ops)})}else i.push(CA(l,n));else i.push(Zp(l,n));return s&&(o?l.forEach(h=>{i.push(t5(h,!1,n))}):i.push(u)),this._d("path",i,n)}opsToPath(e,r){let n="";for(let i of e.ops){let a=typeof r=="number"&&r>=0?i.data.map(s=>+s.toFixed(r)):i.data;switch(i.op){case"move":n+=`M${a[0]} ${a[1]} `;break;case"bcurveTo":n+=`C${a[0]} ${a[1]}, ${a[2]} ${a[3]}, ${a[4]} ${a[5]} `;break;case"lineTo":n+=`L${a[0]} ${a[1]} `}}return n.trim()}toPaths(e){let r=e.sets||[],n=e.options||this.defaultOptions,i=[];for(let a of r){let s=null;switch(a.type){case"path":s={d:this.opsToPath(a),stroke:n.stroke,strokeWidth:n.strokeWidth,fill:Ks};break;case"fillPath":s={d:this.opsToPath(a),stroke:Ks,strokeWidth:0,fill:n.fill||Ks};break;case"fillSketch":s=this.fillSketch(a,n)}s&&i.push(s)}return i}fillSketch(e,r){let n=r.fillWeight;return n<0&&(n=r.strokeWidth/2),{d:this.opsToPath(e),stroke:r.fill||Ks,strokeWidth:n,fill:Ks}}_mergedShape(e){return e.filter((r,n)=>n===0||r.op!=="move")}},BA=class{constructor(e,r){this.canvas=e,this.ctx=this.canvas.getContext("2d"),this.gen=new Qp(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.ctx,a=e.options.fixedDecimalPlaceDigits;for(let s of r)switch(s.type){case"path":i.save(),i.strokeStyle=n.stroke==="none"?"transparent":n.stroke,i.lineWidth=n.strokeWidth,n.strokeLineDash&&i.setLineDash(n.strokeLineDash),n.strokeLineDashOffset&&(i.lineDashOffset=n.strokeLineDashOffset),this._drawToContext(i,s,a),i.restore();break;case"fillPath":{i.save(),i.fillStyle=n.fill||"";let o=e.shape==="curve"||e.shape==="polygon"||e.shape==="path"?"evenodd":"nonzero";this._drawToContext(i,s,a,o),i.restore();break}case"fillSketch":this.fillSketch(i,s,n)}}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2),e.save(),n.fillLineDash&&e.setLineDash(n.fillLineDash),n.fillLineDashOffset&&(e.lineDashOffset=n.fillLineDashOffset),e.strokeStyle=n.fill||"",e.lineWidth=i,this._drawToContext(e,r,n.fixedDecimalPlaceDigits),e.restore()}_drawToContext(e,r,n,i="nonzero"){e.beginPath();for(let a of r.ops){let s=typeof n=="number"&&n>=0?a.data.map(o=>+o.toFixed(n)):a.data;switch(a.op){case"move":e.moveTo(s[0],s[1]);break;case"bcurveTo":e.bezierCurveTo(s[0],s[1],s[2],s[3],s[4],s[5]);break;case"lineTo":e.lineTo(s[0],s[1])}}r.type==="fillPath"?e.fill(i):e.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(e,r,n,i,a){let s=this.gen.line(e,r,n,i,a);return this.draw(s),s}rectangle(e,r,n,i,a){let s=this.gen.rectangle(e,r,n,i,a);return this.draw(s),s}ellipse(e,r,n,i,a){let s=this.gen.ellipse(e,r,n,i,a);return this.draw(s),s}circle(e,r,n,i){let a=this.gen.circle(e,r,n,i);return this.draw(a),a}linearPath(e,r){let n=this.gen.linearPath(e,r);return this.draw(n),n}polygon(e,r){let n=this.gen.polygon(e,r);return this.draw(n),n}arc(e,r,n,i,a,s,o=!1,l){let u=this.gen.arc(e,r,n,i,a,s,o,l);return this.draw(u),u}curve(e,r){let n=this.gen.curve(e,r);return this.draw(n),n}path(e,r){let n=this.gen.path(e,r);return this.draw(n),n}},e5="http://www.w3.org/2000/svg",FA=class{constructor(e,r){this.svg=e,this.gen=new Qp(r)}draw(e){let r=e.sets||[],n=e.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,a=i.createElementNS(e5,"g"),s=e.options.fixedDecimalPlaceDigits;for(let o of r){let l=null;switch(o.type){case"path":l=i.createElementNS(e5,"path"),l.setAttribute("d",this.opsToPath(o,s)),l.setAttribute("stroke",n.stroke),l.setAttribute("stroke-width",n.strokeWidth+""),l.setAttribute("fill","none"),n.strokeLineDash&&l.setAttribute("stroke-dasharray",n.strokeLineDash.join(" ").trim()),n.strokeLineDashOffset&&l.setAttribute("stroke-dashoffset",`${n.strokeLineDashOffset}`);break;case"fillPath":l=i.createElementNS(e5,"path"),l.setAttribute("d",this.opsToPath(o,s)),l.setAttribute("stroke","none"),l.setAttribute("stroke-width","0"),l.setAttribute("fill",n.fill||""),e.shape!=="curve"&&e.shape!=="polygon"||l.setAttribute("fill-rule","evenodd");break;case"fillSketch":l=this.fillSketch(i,o,n)}l&&a.appendChild(l)}return a}fillSketch(e,r,n){let i=n.fillWeight;i<0&&(i=n.strokeWidth/2);let a=e.createElementNS(e5,"path");return a.setAttribute("d",this.opsToPath(r,n.fixedDecimalPlaceDigits)),a.setAttribute("stroke",n.fill||""),a.setAttribute("stroke-width",i+""),a.setAttribute("fill","none"),n.fillLineDash&&a.setAttribute("stroke-dasharray",n.fillLineDash.join(" ").trim()),n.fillLineDashOffset&&a.setAttribute("stroke-dashoffset",`${n.fillLineDashOffset}`),a}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(e,r){return this.gen.opsToPath(e,r)}line(e,r,n,i,a){let s=this.gen.line(e,r,n,i,a);return this.draw(s)}rectangle(e,r,n,i,a){let s=this.gen.rectangle(e,r,n,i,a);return this.draw(s)}ellipse(e,r,n,i,a){let s=this.gen.ellipse(e,r,n,i,a);return this.draw(s)}circle(e,r,n,i){let a=this.gen.circle(e,r,n,i);return this.draw(a)}linearPath(e,r){let n=this.gen.linearPath(e,r);return this.draw(n)}polygon(e,r){let n=this.gen.polygon(e,r);return this.draw(n)}arc(e,r,n,i,a,s,o=!1,l){let u=this.gen.arc(e,r,n,i,a,s,o,l);return this.draw(u)}curve(e,r){let n=this.gen.curve(e,r);return this.draw(n)}path(e,r){let n=this.gen.path(e,r);return this.draw(n)}},Ye={canvas:(t,e)=>new BA(t,e),svg:(t,e)=>new FA(t,e),generator:t=>new Qp(t),newSeed:()=>Qp.newSeed()}});function Er(t){let e=t.map((r,n)=>`${n===0?"M":"L"}${r.x},${r.y}`);return e.push("Z"),e.join(" ")}function Oh(t,e,r,n,i,a){let s=[],l=r-t,u=n-e,h=l/a,f=2*Math.PI/h,d=e+u/2;for(let p=0;p<=50;p++){let g=p/50,m=t+g*l,y=d+i*Math.sin(f*(m-t));s.push({x:m,y})}return s}function VA(t,e,r,n,i,a){let s=[],o=i*Math.PI/180,h=(a*Math.PI/180-o)/(n-1);for(let f=0;f"+n+""),Oj(r,t.labelStyle),r.style("display","inline-block"),r.style("padding-right","1px"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}function $j(t,e){return t.intersect(e)}function Gj(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,o=a-n.y,l=Math.sqrt(e*e*o*o+r*r*s*s),u=Math.abs(e*r*s/l);n.x0}function Hj(t,e,r){let n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(h){s=Math.min(s,h.x),o=Math.min(o,h.y)}):(s=Math.min(s,e.x),o=Math.min(o,e.y));let l=n-t.width/2-s,u=i-t.height/2-o;for(let h=0;h1&&a.sort(function(h,f){let d=h.x-r.x,p=h.y-r.y,g=Math.sqrt(d*d+p*p),m=f.x-r.x,y=f.y-r.y,x=Math.sqrt(m*m+y*y);return gh,":first-child");return f.attr("class","anchor").attr("style",Aa(o)),Pt(e,f),e.intersect=function(d){return re.info("Circle intersect",e,s,d),Nt.circle(e,s,d)},a}function UA(t,e,r,n,i,a,s){let l=(t+r)/2,u=(e+n)/2,h=Math.atan2(n-e,r-t),f=(r-t)/2,d=(n-e)/2,p=f/i,g=d/a,m=Math.sqrt(p**2+g**2);if(m>1)throw new Error("The given radii are too small to create an arc between the points.");let y=Math.sqrt(1-m**2),x=l+y*a*Math.sin(h)*(s?-1:1),b=u-y*i*Math.cos(h)*(s?-1:1),w=Math.atan2((e-b)/a,(t-x)/i),k=Math.atan2((n-b)/a,(r-x)/i)-w;s&&k<0&&(k+=2*Math.PI),!s&&k>0&&(k-=2*Math.PI);let E=[];for(let L=0;L<20;L++){let S=L/19,C=w+S*k,M=x+i*Math.cos(C),R=b+a*Math.sin(C);E.push({x:M,y:R})}return E}async function Yj(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=a.width+e.padding+20,o=a.height+e.padding,l=o/2,u=l/(2.5+o/50),{cssStyles:h}=e,f=[{x:s/2,y:-o/2},{x:-s/2,y:-o/2},...UA(-s/2,-o/2,-s/2,o/2,u,l,!1),{x:s/2,y:o/2},...UA(s/2,o/2,s/2,-o/2,u,l,!0)],d=Ye.svg(i),p=Bt(e,{});e.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let g=Er(f),m=d.path(g,p),y=i.insert(()=>m,":first-child");return y.attr("class","basic label-container"),h&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",h),n&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",n),y.attr("transform",`translate(${u/2}, 0)`),Pt(e,y),e.intersect=function(x){return Nt.polygon(e,f,x)},i}function Au(t,e,r,n){return t.insert("polygon",":first-child").attr("points",n.map(function(i){return i.x+","+i.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}async function Xj(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=a.height+e.padding,o=12,l=a.width+e.padding+o,u=0,h=l,f=-s,d=0,p=[{x:u+o,y:f},{x:h,y:f},{x:h,y:d},{x:u,y:d},{x:u,y:f+o},{x:u+o,y:f}],g,{cssStyles:m}=e;if(e.look==="handDrawn"){let y=Ye.svg(i),x=Bt(e,{}),b=Er(p),w=y.path(b,x);g=i.insert(()=>w,":first-child").attr("transform",`translate(${-l/2}, ${s/2})`),m&&g.attr("style",m)}else g=Au(i,l,s,p);return n&&g.attr("style",n),Pt(e,g),e.intersect=function(y){return Nt.polygon(e,p,y)},i}function jj(t,e){let{nodeStyles:r}=Vt(e);e.label="";let n=t.insert("g").attr("class",rr(e)).attr("id",e.domId??e.id),{cssStyles:i}=e,a=Math.max(28,e.width??0),s=[{x:0,y:a/2},{x:a/2,y:0},{x:0,y:-a/2},{x:-a/2,y:0}],o=Ye.svg(n),l=Bt(e,{});e.look!=="handDrawn"&&(l.roughness=0,l.fillStyle="solid");let u=Er(s),h=o.path(u,l),f=n.insert(()=>h,":first-child");return i&&e.look!=="handDrawn"&&f.selectAll("path").attr("style",i),r&&e.look!=="handDrawn"&&f.selectAll("path").attr("style",r),e.width=28,e.height=28,e.intersect=function(d){return Nt.polygon(e,s,d)},n}async function Kj(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s}=await tr(t,e,rr(e)),o=a.width/2+s,l,{cssStyles:u}=e;if(e.look==="handDrawn"){let h=Ye.svg(i),f=Bt(e,{}),d=h.circle(0,0,o*2,f);l=i.insert(()=>d,":first-child"),l.attr("class","basic label-container").attr("style",Aa(u))}else l=i.insert("circle",":first-child").attr("class","basic label-container").attr("style",n).attr("r",o).attr("cx",0).attr("cy",0);return Pt(e,l),e.intersect=function(h){return re.info("Circle intersect",e,o,h),Nt.circle(e,o,h)},i}function Zj(t){let e=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),n=t*2,i={x:n/2*e,y:n/2*r},a={x:-(n/2)*e,y:n/2*r},s={x:-(n/2)*e,y:-(n/2)*r},o={x:n/2*e,y:-(n/2)*r};return`M ${a.x},${a.y} L ${o.x},${o.y} M ${i.x},${i.y} L ${s.x},${s.y}`}function Qj(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r,e.label="";let i=t.insert("g").attr("class",rr(e)).attr("id",e.domId??e.id),a=Math.max(30,e?.width??0),{cssStyles:s}=e,o=Ye.svg(i),l=Bt(e,{});e.look!=="handDrawn"&&(l.roughness=0,l.fillStyle="solid");let u=o.circle(0,0,a*2,l),h=Zj(a),f=o.path(h,l),d=i.insert(()=>u,":first-child");return d.insert(()=>f),s&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",s),n&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",n),Pt(e,d),e.intersect=function(p){return re.info("crossedCircle intersect",e,{radius:a,point:p}),Nt.circle(e,a,p)},i}function Eu(t,e,r,n=100,i=0,a=180){let s=[],o=i*Math.PI/180,h=(a*Math.PI/180-o)/(n-1);for(let f=0;fw,":first-child").attr("stroke-opacity",0),_.insert(()=>x,":first-child"),_.attr("class","text"),h&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",h),n&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",n),_.attr("transform",`translate(${u}, 0)`),s.attr("transform",`translate(${-o/2+u-(a.x-(a.left??0))},${-l/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Pt(e,_),e.intersect=function(k){return Nt.polygon(e,d,k)},i}function Su(t,e,r,n=100,i=0,a=180){let s=[],o=i*Math.PI/180,h=(a*Math.PI/180-o)/(n-1);for(let f=0;fw,":first-child").attr("stroke-opacity",0),_.insert(()=>x,":first-child"),_.attr("class","text"),h&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",h),n&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",n),_.attr("transform",`translate(${-u}, 0)`),s.attr("transform",`translate(${-o/2+(e.padding??0)/2-(a.x-(a.left??0))},${-l/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Pt(e,_),e.intersect=function(k){return Nt.polygon(e,d,k)},i}function la(t,e,r,n=100,i=0,a=180){let s=[],o=i*Math.PI/180,h=(a*Math.PI/180-o)/(n-1);for(let f=0;fL,":first-child").attr("stroke-opacity",0),S.insert(()=>b,":first-child"),S.insert(()=>k,":first-child"),S.attr("class","text"),h&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",h),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(${u-u/4}, 0)`),s.attr("transform",`translate(${-o/2+(e.padding??0)/2-(a.x-(a.left??0))},${-l/2+(e.padding??0)/2-(a.y-(a.top??0))})`),Pt(e,S),e.intersect=function(C){return Nt.polygon(e,p,C)},i}async function rK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=80,o=20,l=Math.max(s,(a.width+(e.padding??0)*2)*1.25,e?.width??0),u=Math.max(o,a.height+(e.padding??0)*2,e?.height??0),h=u/2,{cssStyles:f}=e,d=Ye.svg(i),p=Bt(e,{});e.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let g=l,m=u,y=g-h,x=m/4,b=[{x:y,y:0},{x,y:0},{x:0,y:m/2},{x,y:m},{x:y,y:m},...VA(-y,-m/2,h,50,270,90)],w=Er(b),_=d.path(w,p),k=i.insert(()=>_,":first-child");return k.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&k.selectChildren("path").attr("style",f),n&&e.look!=="handDrawn"&&k.selectChildren("path").attr("style",n),k.attr("transform",`translate(${-l/2}, ${-u/2})`),Pt(e,k),e.intersect=function(E){return Nt.polygon(e,b,E)},i}async function nK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await tr(t,e,rr(e)),o=Math.max(a.width+e.padding,e.width??0),l=o/2,u=l/(2.5+o/50),h=Math.max(a.height+u+e.padding,e.height??0),f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Ye.svg(i),g=B6e(0,0,o,h,l,u),m=F6e(0,u,o,h,l,u),y=p.path(g,Bt(e,{})),x=p.path(m,Bt(e,{fill:"none"}));f=i.insert(()=>x,":first-child"),f=i.insert(()=>y,":first-child"),f.attr("class","basic label-container"),d&&f.attr("style",d)}else{let p=P6e(0,0,o,h,l,u);f=i.insert("path",":first-child").attr("d",p).attr("class","basic label-container").attr("style",Aa(d)).attr("style",n)}return f.attr("label-offset-y",u),f.attr("transform",`translate(${-o/2}, ${-(h/2+u)})`),Pt(e,f),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+(e.padding??0)/1.5-(a.y-(a.top??0))})`),e.intersect=function(p){let g=Nt.rect(e,p),m=g.x-(e.x??0);if(l!=0&&(Math.abs(m)<(e.width??0)/2||Math.abs(m)==(e.width??0)/2&&Math.abs(g.y-(e.y??0))>(e.height??0)/2-u)){let y=u*u*(1-m*m/(l*l));y>0&&(y=Math.sqrt(y)),y=u-y,p.y-(e.y??0)>0&&(y=-y),g.y+=y}return g},i}async function iK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await tr(t,e,rr(e)),o=a.width+e.padding,l=a.height+e.padding,u=l*.2,h=-o/2,f=-l/2-u/2,{cssStyles:d}=e,p=Ye.svg(i),g=Bt(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let m=[{x:h,y:f+u},{x:-h,y:f+u},{x:-h,y:-f},{x:h,y:-f},{x:h,y:f},{x:-h,y:f},{x:-h,y:f+u}],y=p.polygon(m.map(b=>[b.x,b.y]),g),x=i.insert(()=>y,":first-child");return x.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${h+(e.padding??0)/2-(a.x-(a.left??0))}, ${f+u+(e.padding??0)/2-(a.y-(a.top??0))})`),Pt(e,x),e.intersect=function(b){return Nt.rect(e,b)},i}async function aK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,halfPadding:s}=await tr(t,e,rr(e)),l=a.width/2+s+5,u=a.width/2+s,h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ye.svg(i),p=Bt(e,{roughness:.2,strokeWidth:2.5}),g=Bt(e,{roughness:.2,strokeWidth:1.5}),m=d.circle(0,0,l*2,p),y=d.circle(0,0,u*2,g);h=i.insert("g",":first-child"),h.attr("class",Aa(e.cssClasses)).attr("style",Aa(f)),h.node()?.appendChild(m),h.node()?.appendChild(y)}else{h=i.insert("g",":first-child");let d=h.insert("circle",":first-child"),p=h.insert("circle");h.attr("class","basic label-container").attr("style",n),d.attr("class","outer-circle").attr("style",n).attr("r",l).attr("cx",0).attr("cy",0),p.attr("class","inner-circle").attr("style",n).attr("r",u).attr("cx",0).attr("cy",0)}return Pt(e,h),e.intersect=function(d){return re.info("DoubleCircle intersect",e,l,d),Nt.circle(e,l,d)},i}function sK(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=Vt(e);e.label="",e.labelStyle=n;let a=t.insert("g").attr("class",rr(e)).attr("id",e.domId??e.id),s=7,{cssStyles:o}=e,l=Ye.svg(a),{nodeBorder:u}=r,h=Bt(e,{fillStyle:"solid"});e.look!=="handDrawn"&&(h.roughness=0);let f=l.circle(0,0,s*2,h),d=a.insert(()=>f,":first-child");return d.selectAll("path").attr("style",`fill: ${u} !important;`),o&&o.length>0&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",o),i&&e.look!=="handDrawn"&&d.selectAll("path").attr("style",i),Pt(e,d),e.intersect=function(p){return re.info("filledCircle intersect",e,{radius:s,point:p}),Nt.circle(e,s,p)},a}async function oK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await tr(t,e,rr(e)),o=a.width+(e.padding??0),l=o+a.height,u=o+a.height,h=[{x:0,y:-l},{x:u,y:-l},{x:u/2,y:0}],{cssStyles:f}=e,d=Ye.svg(i),p=Bt(e,{});e.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let g=Er(h),m=d.path(g,p),y=i.insert(()=>m,":first-child").attr("transform",`translate(${-l/2}, ${l/2})`);return f&&e.look!=="handDrawn"&&y.selectChildren("path").attr("style",f),n&&e.look!=="handDrawn"&&y.selectChildren("path").attr("style",n),e.width=o,e.height=l,Pt(e,y),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${-l/2+(e.padding??0)/2+(a.y-(a.top??0))})`),e.intersect=function(x){return re.info("Triangle intersect",e,h,x),Nt.polygon(e,h,x)},i}function lK(t,e,{dir:r,config:{state:n,themeVariables:i}}){let{nodeStyles:a}=Vt(e);e.label="";let s=t.insert("g").attr("class",rr(e)).attr("id",e.domId??e.id),{cssStyles:o}=e,l=Math.max(70,e?.width??0),u=Math.max(10,e?.height??0);r==="LR"&&(l=Math.max(10,e?.width??0),u=Math.max(70,e?.height??0));let h=-1*l/2,f=-1*u/2,d=Ye.svg(s),p=Bt(e,{stroke:i.lineColor,fill:i.lineColor});e.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let g=d.rectangle(h,f,l,u,p),m=s.insert(()=>g,":first-child");o&&e.look!=="handDrawn"&&m.selectAll("path").attr("style",o),a&&e.look!=="handDrawn"&&m.selectAll("path").attr("style",a),Pt(e,m);let y=n?.padding??0;return e.width&&e.height&&(e.width+=y/2||0,e.height+=y/2||0),e.intersect=function(x){return Nt.rect(e,x)},s}async function cK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let i=80,a=50,{shapeSvg:s,bbox:o}=await tr(t,e,rr(e)),l=Math.max(i,o.width+(e.padding??0)*2,e?.width??0),u=Math.max(a,o.height+(e.padding??0)*2,e?.height??0),h=u/2,{cssStyles:f}=e,d=Ye.svg(s),p=Bt(e,{});e.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let g=[{x:-l/2,y:-u/2},{x:l/2-h,y:-u/2},...VA(-l/2+h,0,h,50,90,270),{x:l/2-h,y:u/2},{x:-l/2,y:u/2}],m=Er(g),y=d.path(m,p),x=s.insert(()=>y,":first-child");return x.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",f),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),Pt(e,x),e.intersect=function(b){return re.info("Pill intersect",e,{radius:h,point:b}),Nt.polygon(e,g,b)},s}async function uK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=4,o=a.height+e.padding,l=o/s,u=a.width+2*l+e.padding,h=[{x:l,y:0},{x:u-l,y:0},{x:u,y:-o/2},{x:u-l,y:-o},{x:l,y:-o},{x:0,y:-o/2}],f,{cssStyles:d}=e;if(e.look==="handDrawn"){let p=Ye.svg(i),g=Bt(e,{}),m=z6e(0,0,u,o,l),y=p.path(m,g);f=i.insert(()=>y,":first-child").attr("transform",`translate(${-u/2}, ${o/2})`),d&&f.attr("style",d)}else f=Au(i,u,o,h);return n&&f.attr("style",n),e.width=u,e.height=o,Pt(e,f),e.intersect=function(p){return Nt.polygon(e,h,p)},i}async function hK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.label="",e.labelStyle=r;let{shapeSvg:i}=await tr(t,e,rr(e)),a=Math.max(30,e?.width??0),s=Math.max(30,e?.height??0),{cssStyles:o}=e,l=Ye.svg(i),u=Bt(e,{});e.look!=="handDrawn"&&(u.roughness=0,u.fillStyle="solid");let h=[{x:0,y:0},{x:a,y:0},{x:0,y:s},{x:a,y:s}],f=Er(h),d=l.path(f,u),p=i.insert(()=>d,":first-child");return p.attr("class","basic label-container"),o&&e.look!=="handDrawn"&&p.selectChildren("path").attr("style",o),n&&e.look!=="handDrawn"&&p.selectChildren("path").attr("style",n),p.attr("transform",`translate(${-a/2}, ${-s/2})`),Pt(e,p),e.intersect=function(g){return re.info("Pill intersect",e,{points:h}),Nt.polygon(e,h,g)},i}async function fK(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Vt(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,o=Math.max(a,s),l=n?.wrappingWidth;e.width=Math.max(o,l??0);let{shapeSvg:u,bbox:h,label:f}=await tr(t,e,"icon-shape default"),d=e.pos==="t",p=o,g=o,{nodeBorder:m}=r,{stylesMap:y}=eg(e),x=-g/2,b=-p/2,w=e.label?8:0,_=Ye.svg(u),k=Bt(e,{stroke:"none",fill:"none"});e.look!=="handDrawn"&&(k.roughness=0,k.fillStyle="solid");let E=_.rectangle(x,b,g,p,k),L=Math.max(g,h.width),S=p+h.height+w,C=_.rectangle(-L/2,-S/2,L,S,{...k,fill:"transparent",stroke:"none"}),M=u.insert(()=>E,":first-child"),R=u.insert(()=>C);if(e.icon){let T=u.append("g");T.html(`${await su(e.icon,{height:o,width:o,fallbackPrefix:""})}`);let I=T.node().getBBox(),A=I.width,D=I.height,N=I.x,O=I.y;T.attr("transform",`translate(${-A/2-N},${d?h.height/2+w/2-D/2-O:-h.height/2-w/2-D/2-O})`),T.attr("style",`color: ${y.get("stroke")??m};`)}return f.attr("transform",`translate(${-h.width/2-(h.x-(h.left??0))},${d?-S/2:S/2-h.height})`),M.attr("transform",`translate(0,${d?h.height/2+w/2:-h.height/2-w/2})`),Pt(e,R),e.intersect=function(T){if(re.info("iconSquare intersect",e,T),!e.label)return Nt.rect(e,T);let I=e.x??0,A=e.y??0,D=e.height??0,N=[];return d?N=[{x:I-h.width/2,y:A-D/2},{x:I+h.width/2,y:A-D/2},{x:I+h.width/2,y:A-D/2+h.height+w},{x:I+g/2,y:A-D/2+h.height+w},{x:I+g/2,y:A+D/2},{x:I-g/2,y:A+D/2},{x:I-g/2,y:A-D/2+h.height+w},{x:I-h.width/2,y:A-D/2+h.height+w}]:N=[{x:I-g/2,y:A-D/2},{x:I+g/2,y:A-D/2},{x:I+g/2,y:A-D/2+p},{x:I+h.width/2,y:A-D/2+p},{x:I+h.width/2/2,y:A+D/2},{x:I-h.width/2,y:A+D/2},{x:I-h.width/2,y:A-D/2+p},{x:I-g/2,y:A-D/2+p}],Nt.polygon(e,N,T)},u}async function dK(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Vt(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,o=Math.max(a,s),l=n?.wrappingWidth;e.width=Math.max(o,l??0);let{shapeSvg:u,bbox:h,label:f}=await tr(t,e,"icon-shape default"),d=20,p=e.label?8:0,g=e.pos==="t",{nodeBorder:m,mainBkg:y}=r,{stylesMap:x}=eg(e),b=Ye.svg(u),w=Bt(e,{});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let _=x.get("fill");w.stroke=_??y;let k=u.append("g");e.icon&&k.html(`${await su(e.icon,{height:o,width:o,fallbackPrefix:""})}`);let E=k.node().getBBox(),L=E.width,S=E.height,C=E.x,M=E.y,R=Math.max(L,S)*Math.SQRT2+d*2,T=b.circle(0,0,R,w),I=Math.max(R,h.width),A=R+h.height+p,D=b.rectangle(-I/2,-A/2,I,A,{...w,fill:"transparent",stroke:"none"}),N=u.insert(()=>T,":first-child"),O=u.insert(()=>D);return k.attr("transform",`translate(${-L/2-C},${g?h.height/2+p/2-S/2-M:-h.height/2-p/2-S/2-M})`),k.attr("style",`color: ${x.get("stroke")??m};`),f.attr("transform",`translate(${-h.width/2-(h.x-(h.left??0))},${g?-A/2:A/2-h.height})`),N.attr("transform",`translate(0,${g?h.height/2+p/2:-h.height/2-p/2})`),Pt(e,O),e.intersect=function(B){return re.info("iconSquare intersect",e,B),Nt.rect(e,B)},u}async function pK(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Vt(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,o=Math.max(a,s),l=n?.wrappingWidth;e.width=Math.max(o,l??0);let{shapeSvg:u,bbox:h,halfPadding:f,label:d}=await tr(t,e,"icon-shape default"),p=e.pos==="t",g=o+f*2,m=o+f*2,{nodeBorder:y,mainBkg:x}=r,{stylesMap:b}=eg(e),w=-m/2,_=-g/2,k=e.label?8:0,E=Ye.svg(u),L=Bt(e,{});e.look!=="handDrawn"&&(L.roughness=0,L.fillStyle="solid");let S=b.get("fill");L.stroke=S??x;let C=E.path(Cu(w,_,m,g,5),L),M=Math.max(m,h.width),R=g+h.height+k,T=E.rectangle(-M/2,-R/2,M,R,{...L,fill:"transparent",stroke:"none"}),I=u.insert(()=>C,":first-child").attr("class","icon-shape2"),A=u.insert(()=>T);if(e.icon){let D=u.append("g");D.html(`${await su(e.icon,{height:o,width:o,fallbackPrefix:""})}`);let N=D.node().getBBox(),O=N.width,B=N.height,P=N.x,$=N.y;D.attr("transform",`translate(${-O/2-P},${p?h.height/2+k/2-B/2-$:-h.height/2-k/2-B/2-$})`),D.attr("style",`color: ${b.get("stroke")??y};`)}return d.attr("transform",`translate(${-h.width/2-(h.x-(h.left??0))},${p?-R/2:R/2-h.height})`),I.attr("transform",`translate(0,${p?h.height/2+k/2:-h.height/2-k/2})`),Pt(e,A),e.intersect=function(D){if(re.info("iconSquare intersect",e,D),!e.label)return Nt.rect(e,D);let N=e.x??0,O=e.y??0,B=e.height??0,P=[];return p?P=[{x:N-h.width/2,y:O-B/2},{x:N+h.width/2,y:O-B/2},{x:N+h.width/2,y:O-B/2+h.height+k},{x:N+m/2,y:O-B/2+h.height+k},{x:N+m/2,y:O+B/2},{x:N-m/2,y:O+B/2},{x:N-m/2,y:O-B/2+h.height+k},{x:N-h.width/2,y:O-B/2+h.height+k}]:P=[{x:N-m/2,y:O-B/2},{x:N+m/2,y:O-B/2},{x:N+m/2,y:O-B/2+g},{x:N+h.width/2,y:O-B/2+g},{x:N+h.width/2/2,y:O+B/2},{x:N-h.width/2,y:O+B/2},{x:N-h.width/2,y:O-B/2+g},{x:N-m/2,y:O-B/2+g}],Nt.polygon(e,P,D)},u}async function gK(t,e,{config:{themeVariables:r,flowchart:n}}){let{labelStyles:i}=Vt(e);e.labelStyle=i;let a=e.assetHeight??48,s=e.assetWidth??48,o=Math.max(a,s),l=n?.wrappingWidth;e.width=Math.max(o,l??0);let{shapeSvg:u,bbox:h,halfPadding:f,label:d}=await tr(t,e,"icon-shape default"),p=e.pos==="t",g=o+f*2,m=o+f*2,{nodeBorder:y,mainBkg:x}=r,{stylesMap:b}=eg(e),w=-m/2,_=-g/2,k=e.label?8:0,E=Ye.svg(u),L=Bt(e,{});e.look!=="handDrawn"&&(L.roughness=0,L.fillStyle="solid");let S=b.get("fill");L.stroke=S??x;let C=E.path(Cu(w,_,m,g,.1),L),M=Math.max(m,h.width),R=g+h.height+k,T=E.rectangle(-M/2,-R/2,M,R,{...L,fill:"transparent",stroke:"none"}),I=u.insert(()=>C,":first-child"),A=u.insert(()=>T);if(e.icon){let D=u.append("g");D.html(`${await su(e.icon,{height:o,width:o,fallbackPrefix:""})}`);let N=D.node().getBBox(),O=N.width,B=N.height,P=N.x,$=N.y;D.attr("transform",`translate(${-O/2-P},${p?h.height/2+k/2-B/2-$:-h.height/2-k/2-B/2-$})`),D.attr("style",`color: ${b.get("stroke")??y};`)}return d.attr("transform",`translate(${-h.width/2-(h.x-(h.left??0))},${p?-R/2:R/2-h.height})`),I.attr("transform",`translate(0,${p?h.height/2+k/2:-h.height/2-k/2})`),Pt(e,A),e.intersect=function(D){if(re.info("iconSquare intersect",e,D),!e.label)return Nt.rect(e,D);let N=e.x??0,O=e.y??0,B=e.height??0,P=[];return p?P=[{x:N-h.width/2,y:O-B/2},{x:N+h.width/2,y:O-B/2},{x:N+h.width/2,y:O-B/2+h.height+k},{x:N+m/2,y:O-B/2+h.height+k},{x:N+m/2,y:O+B/2},{x:N-m/2,y:O+B/2},{x:N-m/2,y:O-B/2+h.height+k},{x:N-h.width/2,y:O-B/2+h.height+k}]:P=[{x:N-m/2,y:O-B/2},{x:N+m/2,y:O-B/2},{x:N+m/2,y:O-B/2+g},{x:N+h.width/2,y:O-B/2+g},{x:N+h.width/2/2,y:O+B/2},{x:N-h.width/2,y:O+B/2},{x:N-h.width/2,y:O-B/2+g},{x:N-m/2,y:O-B/2+g}],Nt.polygon(e,P,D)},u}async function mK(t,e,{config:{flowchart:r}}){let n=new Image;n.src=e?.img??"",await n.decode();let i=Number(n.naturalWidth.toString().replace("px","")),a=Number(n.naturalHeight.toString().replace("px",""));e.imageAspectRatio=i/a;let{labelStyles:s}=Vt(e);e.labelStyle=s;let o=r?.wrappingWidth;e.defaultWidth=r?.wrappingWidth;let l=Math.max(e.label?o??0:0,e?.assetWidth??i),u=e.constraint==="on"&&e?.assetHeight?e.assetHeight*e.imageAspectRatio:l,h=e.constraint==="on"?u/e.imageAspectRatio:e?.assetHeight??a;e.width=Math.max(u,o??0);let{shapeSvg:f,bbox:d,label:p}=await tr(t,e,"image-shape default"),g=e.pos==="t",m=-u/2,y=-h/2,x=e.label?8:0,b=Ye.svg(f),w=Bt(e,{});e.look!=="handDrawn"&&(w.roughness=0,w.fillStyle="solid");let _=b.rectangle(m,y,u,h,w),k=Math.max(u,d.width),E=h+d.height+x,L=b.rectangle(-k/2,-E/2,k,E,{...w,fill:"none",stroke:"none"}),S=f.insert(()=>_,":first-child"),C=f.insert(()=>L);if(e.img){let M=f.append("image");M.attr("href",e.img),M.attr("width",u),M.attr("height",h),M.attr("preserveAspectRatio","none"),M.attr("transform",`translate(${-u/2},${g?E/2-h:-E/2})`)}return p.attr("transform",`translate(${-d.width/2-(d.x-(d.left??0))},${g?-h/2-d.height/2-x/2:h/2-d.height/2+x/2})`),S.attr("transform",`translate(0,${g?d.height/2+x/2:-d.height/2-x/2})`),Pt(e,C),e.intersect=function(M){if(re.info("iconSquare intersect",e,M),!e.label)return Nt.rect(e,M);let R=e.x??0,T=e.y??0,I=e.height??0,A=[];return g?A=[{x:R-d.width/2,y:T-I/2},{x:R+d.width/2,y:T-I/2},{x:R+d.width/2,y:T-I/2+d.height+x},{x:R+u/2,y:T-I/2+d.height+x},{x:R+u/2,y:T+I/2},{x:R-u/2,y:T+I/2},{x:R-u/2,y:T-I/2+d.height+x},{x:R-d.width/2,y:T-I/2+d.height+x}]:A=[{x:R-u/2,y:T-I/2},{x:R+u/2,y:T-I/2},{x:R+u/2,y:T-I/2+h},{x:R+d.width/2,y:T-I/2+h},{x:R+d.width/2/2,y:T+I/2},{x:R-d.width/2,y:T+I/2},{x:R-d.width/2,y:T-I/2+h},{x:R-u/2,y:T-I/2+h}],Nt.polygon(e,A,M)},f}async function vK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),o=Math.max(a.height+(e.padding??0)*2,e?.height??0),l=[{x:0,y:0},{x:s,y:0},{x:s+3*o/6,y:-o},{x:-3*o/6,y:-o}],u,{cssStyles:h}=e;if(e.look==="handDrawn"){let f=Ye.svg(i),d=Bt(e,{}),p=Er(l),g=f.path(p,d);u=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${o/2})`),h&&u.attr("style",h)}else u=Au(i,s,o,l);return n&&u.attr("style",n),e.width=s,e.height=o,Pt(e,u),e.intersect=function(f){return Nt.polygon(e,l,f)},i}async function o5(t,e,r){let{labelStyles:n,nodeStyles:i}=Vt(e);e.labelStyle=n;let{shapeSvg:a,bbox:s}=await tr(t,e,rr(e)),o=Math.max(s.width+r.labelPaddingX*2,e?.width||0),l=Math.max(s.height+r.labelPaddingY*2,e?.height||0),u=-o/2,h=-l/2,f,{rx:d,ry:p}=e,{cssStyles:g}=e;if(r?.rx&&r.ry&&(d=r.rx,p=r.ry),e.look==="handDrawn"){let m=Ye.svg(a),y=Bt(e,{}),x=d||p?m.path(Cu(u,h,o,l,d||0),y):m.rectangle(u,h,o,l,y);f=a.insert(()=>x,":first-child"),f.attr("class","basic label-container").attr("style",Aa(g))}else f=a.insert("rect",":first-child"),f.attr("class","basic label-container").attr("style",i).attr("rx",Aa(d)).attr("ry",Aa(p)).attr("x",u).attr("y",h).attr("width",o).attr("height",l);return Pt(e,f),e.intersect=function(m){return Nt.rect(e,m)},a}async function yK(t,e){let{shapeSvg:r,bbox:n,label:i}=await tr(t,e,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),i.attr("transform",`translate(${-(n.width/2)-(n.x-(n.left??0))}, ${-(n.height/2)-(n.y-(n.top??0))})`),Pt(e,a),e.intersect=function(l){return Nt.rect(e,l)},r}async function xK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),o=Math.max(a.height+(e.padding??0),e?.height??0),l=[{x:0,y:0},{x:s+3*o/6,y:0},{x:s,y:-o},{x:-(3*o)/6,y:-o}],u,{cssStyles:h}=e;if(e.look==="handDrawn"){let f=Ye.svg(i),d=Bt(e,{}),p=Er(l),g=f.path(p,d);u=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${o/2})`),h&&u.attr("style",h)}else u=Au(i,s,o,l);return n&&u.attr("style",n),e.width=s,e.height=o,Pt(e,u),e.intersect=function(f){return Nt.polygon(e,l,f)},i}async function bK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=Math.max(a.width+(e.padding??0),e?.width??0),o=Math.max(a.height+(e.padding??0),e?.height??0),l=[{x:-3*o/6,y:0},{x:s,y:0},{x:s+3*o/6,y:-o},{x:0,y:-o}],u,{cssStyles:h}=e;if(e.look==="handDrawn"){let f=Ye.svg(i),d=Bt(e,{}),p=Er(l),g=f.path(p,d);u=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${o/2})`),h&&u.attr("style",h)}else u=Au(i,s,o,l);return n&&u.attr("style",n),e.width=s,e.height=o,Pt(e,u),e.intersect=function(f){return Nt.polygon(e,l,f)},i}function wK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.label="",e.labelStyle=r;let i=t.insert("g").attr("class",rr(e)).attr("id",e.domId??e.id),{cssStyles:a}=e,s=Math.max(35,e?.width??0),o=Math.max(35,e?.height??0),l=7,u=[{x:s,y:0},{x:0,y:o+l/2},{x:s-2*l,y:o+l/2},{x:0,y:2*o},{x:s,y:o-l/2},{x:2*l,y:o-l/2}],h=Ye.svg(i),f=Bt(e,{});e.look!=="handDrawn"&&(f.roughness=0,f.fillStyle="solid");let d=Er(u),p=h.path(d,f),g=i.insert(()=>p,":first-child");return a&&e.look!=="handDrawn"&&g.selectAll("path").attr("style",a),n&&e.look!=="handDrawn"&&g.selectAll("path").attr("style",n),g.attr("transform",`translate(-${s/2},${-o})`),Pt(e,g),e.intersect=function(m){return re.info("lightningBolt intersect",e,m),Nt.polygon(e,u,m)},i}async function kK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await tr(t,e,rr(e)),o=Math.max(a.width+(e.padding??0),e.width??0),l=o/2,u=l/(2.5+o/50),h=Math.max(a.height+u+(e.padding??0),e.height??0),f=h*.1,d,{cssStyles:p}=e;if(e.look==="handDrawn"){let g=Ye.svg(i),m=G6e(0,0,o,h,l,u,f),y=U6e(0,u,o,h,l,u),x=Bt(e,{}),b=g.path(m,x),w=g.path(y,x);i.insert(()=>w,":first-child").attr("class","line"),d=i.insert(()=>b,":first-child"),d.attr("class","basic label-container"),p&&d.attr("style",p)}else{let g=$6e(0,0,o,h,l,u,f);d=i.insert("path",":first-child").attr("d",g).attr("class","basic label-container").attr("style",Aa(p)).attr("style",n)}return d.attr("label-offset-y",u),d.attr("transform",`translate(${-o/2}, ${-(h/2+u)})`),Pt(e,d),s.attr("transform",`translate(${-(a.width/2)-(a.x-(a.left??0))}, ${-(a.height/2)+u-(a.y-(a.top??0))})`),e.intersect=function(g){let m=Nt.rect(e,g),y=m.x-(e.x??0);if(l!=0&&(Math.abs(y)<(e.width??0)/2||Math.abs(y)==(e.width??0)/2&&Math.abs(m.y-(e.y??0))>(e.height??0)/2-u)){let x=u*u*(1-y*y/(l*l));x>0&&(x=Math.sqrt(x)),x=u-x,g.y-(e.y??0)>0&&(x=-x),m.y+=x}return m},i}async function TK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await tr(t,e,rr(e)),o=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=l/4,h=l+u,{cssStyles:f}=e,d=Ye.svg(i),p=Bt(e,{});e.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let g=[{x:-o/2-o/2*.1,y:-h/2},{x:-o/2-o/2*.1,y:h/2},...Oh(-o/2-o/2*.1,h/2,o/2+o/2*.1,h/2,u,.8),{x:o/2+o/2*.1,y:-h/2},{x:-o/2-o/2*.1,y:-h/2},{x:-o/2,y:-h/2},{x:-o/2,y:h/2*1.1},{x:-o/2,y:-h/2}],m=d.polygon(g.map(x=>[x.x,x.y]),p),y=i.insert(()=>m,":first-child");return y.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",n),y.attr("transform",`translate(0,${-u/2})`),s.attr("transform",`translate(${-o/2+(e.padding??0)+o/2*.1/2-(a.x-(a.left??0))},${-l/2+(e.padding??0)-u/2-(a.y-(a.top??0))})`),Pt(e,y),e.intersect=function(x){return Nt.polygon(e,g,x)},i}async function EK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await tr(t,e,rr(e)),o=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=5,h=-o/2,f=-l/2,{cssStyles:d}=e,p=Ye.svg(i),g=Bt(e,{}),m=[{x:h-u,y:f+u},{x:h-u,y:f+l+u},{x:h+o-u,y:f+l+u},{x:h+o-u,y:f+l},{x:h+o,y:f+l},{x:h+o,y:f+l-u},{x:h+o+u,y:f+l-u},{x:h+o+u,y:f-u},{x:h+u,y:f-u},{x:h+u,y:f},{x:h,y:f},{x:h,y:f+u}],y=[{x:h,y:f+u},{x:h+o-u,y:f+u},{x:h+o-u,y:f+l},{x:h+o,y:f+l},{x:h+o,y:f},{x:h,y:f}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Er(m),b=p.path(x,g),w=Er(y),_=p.path(w,{...g,fill:"none"}),k=i.insert(()=>_,":first-child");return k.insert(()=>b,":first-child"),k.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&k.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&k.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)-u-(a.x-(a.left??0))}, ${-(a.height/2)+u-(a.y-(a.top??0))})`),Pt(e,k),e.intersect=function(E){return Nt.polygon(e,m,E)},i}async function SK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await tr(t,e,rr(e)),o=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=l/4,h=l+u,f=-o/2,d=-h/2,p=5,{cssStyles:g}=e,m=Oh(f-p,d+h+p,f+o-p,d+h+p,u,.8),y=m?.[m.length-1],x=[{x:f-p,y:d+p},{x:f-p,y:d+h+p},...m,{x:f+o-p,y:y.y-p},{x:f+o,y:y.y-p},{x:f+o,y:y.y-2*p},{x:f+o+p,y:y.y-2*p},{x:f+o+p,y:d-p},{x:f+p,y:d-p},{x:f+p,y:d},{x:f,y:d},{x:f,y:d+p}],b=[{x:f,y:d+p},{x:f+o-p,y:d+p},{x:f+o-p,y:y.y-p},{x:f+o,y:y.y-p},{x:f+o,y:d},{x:f,y:d}],w=Ye.svg(i),_=Bt(e,{});e.look!=="handDrawn"&&(_.roughness=0,_.fillStyle="solid");let k=Er(x),E=w.path(k,_),L=Er(b),S=w.path(L,_),C=i.insert(()=>E,":first-child");return C.insert(()=>S),C.attr("class","basic label-container"),g&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",g),n&&e.look!=="handDrawn"&&C.selectAll("path").attr("style",n),C.attr("transform",`translate(0,${-u/2})`),s.attr("transform",`translate(${-(a.width/2)-p-(a.x-(a.left??0))}, ${-(a.height/2)+p-u/2-(a.y-(a.top??0))})`),Pt(e,C),e.intersect=function(M){return Nt.polygon(e,x,M)},i}async function CK(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=Vt(e);e.labelStyle=n,e.useHtmlLabels||Or().flowchart?.htmlLabels!==!1||(e.centerLabel=!0);let{shapeSvg:s,bbox:o}=await tr(t,e,rr(e)),l=Math.max(o.width+(e.padding??0)*2,e?.width??0),u=Math.max(o.height+(e.padding??0)*2,e?.height??0),h=-l/2,f=-u/2,{cssStyles:d}=e,p=Ye.svg(s),g=Bt(e,{fill:r.noteBkgColor,stroke:r.noteBorderColor});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let m=p.rectangle(h,f,l,u,g),y=s.insert(()=>m,":first-child");return y.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",d),i&&e.look!=="handDrawn"&&y.selectAll("path").attr("style",i),Pt(e,y),e.intersect=function(x){return Nt.rect(e,x)},s}async function AK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=a.width+e.padding,o=a.height+e.padding,l=s+o,u=[{x:l/2,y:0},{x:l,y:-l/2},{x:l/2,y:-l},{x:0,y:-l/2}],h,{cssStyles:f}=e;if(e.look==="handDrawn"){let d=Ye.svg(i),p=Bt(e,{}),g=V6e(0,0,l),m=d.path(g,p);h=i.insert(()=>m,":first-child").attr("transform",`translate(${-l/2}, ${l/2})`),f&&h.attr("style",f)}else h=Au(i,l,l,u);return n&&h.attr("style",n),Pt(e,h),e.intersect=function(d){return re.debug(`APA12 Intersect called SPLIT point:`,d,` node: `,e,` res:`,Nt.polygon(e,u,d)),Nt.polygon(e,u,d)},i}async function _K(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await tr(t,e,rr(e)),o=Math.max(a.width+(e.padding??0),e?.width??0),l=Math.max(a.height+(e.padding??0),e?.height??0),u=-o/2,h=-l/2,f=h/2,d=[{x:u+f,y:h},{x:u,y:0},{x:u+f,y:-h},{x:-u,y:-h},{x:-u,y:h}],{cssStyles:p}=e,g=Ye.svg(i),m=Bt(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let y=Er(d),x=g.path(y,m),b=i.insert(()=>x,":first-child");return b.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),b.attr("transform",`translate(${-f/2},0)`),s.attr("transform",`translate(${-f/2-a.width/2-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),Pt(e,b),e.intersect=function(w){return Nt.polygon(e,d,w)},i}async function LK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let i;e.cssClasses?i="node "+e.cssClasses:i="node default";let a=t.insert("g").attr("class",i).attr("id",e.domId||e.id),s=a.insert("g"),o=a.insert("g").attr("class","label").attr("style",n),l=e.description,u=e.label,h=o.node().appendChild(await Ph(u,e.labelStyle,!0,!0)),f={width:0,height:0};if(Wr(pe()?.flowchart?.htmlLabels)){let S=h.children[0],C=Ve(h);f=S.getBoundingClientRect(),C.attr("width",f.width),C.attr("height",f.height)}re.info("Text 2",l);let d=l||[],p=h.getBBox(),g=o.node().appendChild(await Ph(d.join?d.join("
    "):d,e.labelStyle,!0,!0)),m=g.children[0],y=Ve(g);f=m.getBoundingClientRect(),y.attr("width",f.width),y.attr("height",f.height);let x=(e.padding||0)/2;Ve(g).attr("transform","translate( "+(f.width>p.width?0:(p.width-f.width)/2)+", "+(p.height+x+5)+")"),Ve(h).attr("transform","translate( "+(f.width(re.debug("Rough node insert CXC",M),R),":first-child"),E=a.insert(()=>(re.debug("Rough node insert CXC",M),M),":first-child")}else E=s.insert("rect",":first-child"),L=s.insert("line"),E.attr("class","outer title-state").attr("style",n).attr("x",-f.width/2-x).attr("y",-f.height/2-x).attr("width",f.width+(e.padding||0)).attr("height",f.height+(e.padding||0)),L.attr("class","divider").attr("x1",-f.width/2-x).attr("x2",f.width/2+x).attr("y1",-f.height/2-x+p.height+x).attr("y2",-f.height/2-x+p.height+x);return Pt(e,E),e.intersect=function(S){return Nt.rect(e,S)},a}async function RK(t,e){let r={rx:5,ry:5,classes:"",labelPaddingX:(e?.padding||0)*1,labelPaddingY:(e?.padding||0)*1};return o5(t,e,r)}async function NK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await tr(t,e,rr(e)),o=e?.padding??0,l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=-a.width/2-o,f=-a.height/2-o,{cssStyles:d}=e,p=Ye.svg(i),g=Bt(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let m=[{x:h,y:f},{x:h+l+8,y:f},{x:h+l+8,y:f+u},{x:h-8,y:f+u},{x:h-8,y:f},{x:h,y:f},{x:h,y:f+u}],y=p.polygon(m.map(b=>[b.x,b.y]),g),x=i.insert(()=>y,":first-child");return x.attr("class","basic label-container").attr("style",Aa(d)),n&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),d&&e.look!=="handDrawn"&&x.selectAll("path").attr("style",n),s.attr("transform",`translate(${-l/2+4+(e.padding??0)-(a.x-(a.left??0))},${-u/2+(e.padding??0)-(a.y-(a.top??0))})`),Pt(e,x),e.intersect=function(b){return Nt.rect(e,b)},i}async function IK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await tr(t,e,rr(e)),o=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=-o/2,h=-l/2,{cssStyles:f}=e,d=Ye.svg(i),p=Bt(e,{});e.look!=="handDrawn"&&(p.roughness=0,p.fillStyle="solid");let g=[{x:u,y:h},{x:u,y:h+l},{x:u+o,y:h+l},{x:u+o,y:h-l/2}],m=Er(g),y=d.path(m,p),x=i.insert(()=>y,":first-child");return x.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",f),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),x.attr("transform",`translate(0, ${l/4})`),s.attr("transform",`translate(${-o/2+(e.padding??0)-(a.x-(a.left??0))}, ${-l/4+(e.padding??0)-(a.y-(a.top??0))})`),Pt(e,x),e.intersect=function(b){return Nt.polygon(e,g,b)},i}async function MK(t,e){let r={rx:0,ry:0,classes:"",labelPaddingX:(e?.padding||0)*2,labelPaddingY:(e?.padding||0)*1};return o5(t,e,r)}async function DK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=a.height+e.padding,o=a.width+s/4+e.padding,l,{cssStyles:u}=e;if(e.look==="handDrawn"){let h=Ye.svg(i),f=Bt(e,{}),d=Cu(-o/2,-s/2,o,s,s/2),p=h.path(d,f);l=i.insert(()=>p,":first-child"),l.attr("class","basic label-container").attr("style",Aa(u))}else l=i.insert("rect",":first-child"),l.attr("class","basic label-container").attr("style",n).attr("rx",s/2).attr("ry",s/2).attr("x",-o/2).attr("y",-s/2).attr("width",o).attr("height",s);return Pt(e,l),e.intersect=function(h){return Nt.rect(e,h)},i}async function OK(t,e){return o5(t,e,{rx:5,ry:5,classes:"flowchart-node"})}function PK(t,e,{config:{themeVariables:r}}){let{labelStyles:n,nodeStyles:i}=Vt(e);e.labelStyle=n;let{cssStyles:a}=e,{lineColor:s,stateBorder:o,nodeBorder:l}=r,u=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),h=Ye.svg(u),f=Bt(e,{});e.look!=="handDrawn"&&(f.roughness=0,f.fillStyle="solid");let d=h.circle(0,0,14,{...f,stroke:s,strokeWidth:2}),p=o??l,g=h.circle(0,0,5,{...f,fill:p,stroke:p,strokeWidth:2,fillStyle:"solid"}),m=u.insert(()=>d,":first-child");return m.insert(()=>g),a&&m.selectAll("path").attr("style",a),i&&m.selectAll("path").attr("style",i),Pt(e,m),e.intersect=function(y){return Nt.circle(e,7,y)},u}function BK(t,e,{config:{themeVariables:r}}){let{lineColor:n}=r,i=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a;if(e.look==="handDrawn"){let o=Ye.svg(i).circle(0,0,14,E6e(n));a=i.insert(()=>o),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else a=i.insert("circle",":first-child"),a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return Pt(e,a),e.intersect=function(s){return Nt.circle(e,7,s)},i}async function FK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=(e?.padding||0)/2,o=a.width+e.padding,l=a.height+e.padding,u=-a.width/2-s,h=-a.height/2-s,f=[{x:0,y:0},{x:o,y:0},{x:o,y:-l},{x:0,y:-l},{x:0,y:0},{x:-8,y:0},{x:o+8,y:0},{x:o+8,y:-l},{x:-8,y:-l},{x:-8,y:0}];if(e.look==="handDrawn"){let d=Ye.svg(i),p=Bt(e,{}),g=d.rectangle(u-8,h,o+16,l,p),m=d.line(u,h,u,h+l,p),y=d.line(u+o,h,u+o,h+l,p);i.insert(()=>m,":first-child"),i.insert(()=>y,":first-child");let x=i.insert(()=>g,":first-child"),{cssStyles:b}=e;x.attr("class","basic label-container").attr("style",Aa(b)),Pt(e,x)}else{let d=Au(i,o,l,f);n&&d.attr("style",n),Pt(e,d)}return e.intersect=function(d){return Nt.polygon(e,f,d)},i}async function zK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=Math.max(a.width+(e.padding??0)*2,e?.width??0),o=Math.max(a.height+(e.padding??0)*2,e?.height??0),l=-s/2,u=-o/2,h=.2*o,f=.2*o,{cssStyles:d}=e,p=Ye.svg(i),g=Bt(e,{}),m=[{x:l-h/2,y:u},{x:l+s+h/2,y:u},{x:l+s+h/2,y:u+o},{x:l-h/2,y:u+o}],y=[{x:l+s-h/2,y:u+o},{x:l+s+h/2,y:u+o},{x:l+s+h/2,y:u+o-f}];e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=Er(m),b=p.path(x,g),w=Er(y),_=p.path(w,{...g,fillStyle:"solid"}),k=i.insert(()=>_,":first-child");return k.insert(()=>b,":first-child"),k.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&k.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&k.selectAll("path").attr("style",n),Pt(e,k),e.intersect=function(E){return Nt.polygon(e,m,E)},i}async function $K(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await tr(t,e,rr(e)),o=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=l/4,h=.2*o,f=.2*l,d=l+u,{cssStyles:p}=e,g=Ye.svg(i),m=Bt(e,{});e.look!=="handDrawn"&&(m.roughness=0,m.fillStyle="solid");let y=[{x:-o/2-o/2*.1,y:d/2},...Oh(-o/2-o/2*.1,d/2,o/2+o/2*.1,d/2,u,.8),{x:o/2+o/2*.1,y:-d/2},{x:-o/2-o/2*.1,y:-d/2}],x=-o/2+o/2*.1,b=-d/2-f*.4,w=[{x:x+o-h,y:(b+l)*1.4},{x:x+o,y:b+l-f},{x:x+o,y:(b+l)*.9},...Oh(x+o,(b+l)*1.3,x+o-h,(b+l)*1.5,-l*.03,.5)],_=Er(y),k=g.path(_,m),E=Er(w),L=g.path(E,{...m,fillStyle:"solid"}),S=i.insert(()=>L,":first-child");return S.insert(()=>k,":first-child"),S.attr("class","basic label-container"),p&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",p),n&&e.look!=="handDrawn"&&S.selectAll("path").attr("style",n),S.attr("transform",`translate(0,${-u/2})`),s.attr("transform",`translate(${-o/2+(e.padding??0)-(a.x-(a.left??0))},${-l/2+(e.padding??0)-u/2-(a.y-(a.top??0))})`),Pt(e,S),e.intersect=function(C){return Nt.polygon(e,y,C)},i}async function GK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=Math.max(a.width+e.padding,e?.width||0),o=Math.max(a.height+e.padding,e?.height||0),l=-s/2,u=-o/2,h=i.insert("rect",":first-child");return h.attr("class","text").attr("style",n).attr("rx",0).attr("ry",0).attr("x",l).attr("y",u).attr("width",s).attr("height",o),Pt(e,h),e.intersect=function(f){return Nt.rect(e,f)},i}async function UK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s,halfPadding:o}=await tr(t,e,rr(e)),l=e.look==="neo"?o*2:o,u=a.height+l,h=u/2,f=h/(2.5+u/50),d=a.width+f+l,{cssStyles:p}=e,g;if(e.look==="handDrawn"){let m=Ye.svg(i),y=H6e(0,0,d,u,f,h),x=q6e(0,0,d,u,f,h),b=m.path(y,Bt(e,{})),w=m.path(x,Bt(e,{fill:"none"}));g=i.insert(()=>w,":first-child"),g=i.insert(()=>b,":first-child"),g.attr("class","basic label-container"),p&&g.attr("style",p)}else{let m=W6e(0,0,d,u,f,h);g=i.insert("path",":first-child").attr("d",m).attr("class","basic label-container").attr("style",Aa(p)).attr("style",n),g.attr("class","basic label-container"),p&&g.selectAll("path").attr("style",p),n&&g.selectAll("path").attr("style",n)}return g.attr("label-offset-x",f),g.attr("transform",`translate(${-d/2}, ${u/2} )`),s.attr("transform",`translate(${-(a.width/2)-f-(a.x-(a.left??0))}, ${-(a.height/2)-(a.y-(a.top??0))})`),Pt(e,g),e.intersect=function(m){let y=Nt.rect(e,m),x=y.y-(e.y??0);if(h!=0&&(Math.abs(x)<(e.height??0)/2||Math.abs(x)==(e.height??0)/2&&Math.abs(y.x-(e.x??0))>(e.width??0)/2-f)){let b=f*f*(1-x*x/(h*h));b!=0&&(b=Math.sqrt(b)),b=f-b,m.x-(e.x??0)>0&&(b=-b),y.x+=b}return y},i}async function VK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=a.width+e.padding,o=a.height+e.padding,l=[{x:-3*o/6,y:0},{x:s+3*o/6,y:0},{x:s,y:-o},{x:0,y:-o}],u,{cssStyles:h}=e;if(e.look==="handDrawn"){let f=Ye.svg(i),d=Bt(e,{}),p=Er(l),g=f.path(p,d);u=i.insert(()=>g,":first-child").attr("transform",`translate(${-s/2}, ${o/2})`),h&&u.attr("style",h)}else u=Au(i,s,o,l);return n&&u.attr("style",n),e.width=s,e.height=o,Pt(e,u),e.intersect=function(f){return Nt.polygon(e,l,f)},i}async function WK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=60,o=20,l=Math.max(s,a.width+(e.padding??0)*2,e?.width??0),u=Math.max(o,a.height+(e.padding??0)*2,e?.height??0),{cssStyles:h}=e,f=Ye.svg(i),d=Bt(e,{});e.look!=="handDrawn"&&(d.roughness=0,d.fillStyle="solid");let p=[{x:-l/2*.8,y:-u/2},{x:l/2*.8,y:-u/2},{x:l/2,y:-u/2*.6},{x:l/2,y:u/2},{x:-l/2,y:u/2},{x:-l/2,y:-u/2*.6}],g=Er(p),m=f.path(g,d),y=i.insert(()=>m,":first-child");return y.attr("class","basic label-container"),h&&e.look!=="handDrawn"&&y.selectChildren("path").attr("style",h),n&&e.look!=="handDrawn"&&y.selectChildren("path").attr("style",n),Pt(e,y),e.intersect=function(x){return Nt.polygon(e,p,x)},i}async function HK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await tr(t,e,rr(e)),o=Wr(pe().flowchart?.htmlLabels),l=a.width+(e.padding??0),u=l+a.height,h=l+a.height,f=[{x:0,y:0},{x:h,y:0},{x:h/2,y:-u}],{cssStyles:d}=e,p=Ye.svg(i),g=Bt(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let m=Er(f),y=p.path(m,g),x=i.insert(()=>y,":first-child").attr("transform",`translate(${-u/2}, ${u/2})`);return d&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",d),n&&e.look!=="handDrawn"&&x.selectChildren("path").attr("style",n),e.width=l,e.height=u,Pt(e,x),s.attr("transform",`translate(${-a.width/2-(a.x-(a.left??0))}, ${u/2-(a.height+(e.padding??0)/(o?2:1)-(a.y-(a.top??0)))})`),e.intersect=function(b){return re.info("Triangle intersect",e,f,b),Nt.polygon(e,f,b)},i}async function qK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await tr(t,e,rr(e)),o=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=l/8,h=l+u,{cssStyles:f}=e,p=70-o,g=p>0?p/2:0,m=Ye.svg(i),y=Bt(e,{});e.look!=="handDrawn"&&(y.roughness=0,y.fillStyle="solid");let x=[{x:-o/2-g,y:h/2},...Oh(-o/2-g,h/2,o/2+g,h/2,u,.8),{x:o/2+g,y:-h/2},{x:-o/2-g,y:-h/2}],b=Er(x),w=m.path(b,y),_=i.insert(()=>w,":first-child");return _.attr("class","basic label-container"),f&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",f),n&&e.look!=="handDrawn"&&_.selectAll("path").attr("style",n),_.attr("transform",`translate(0,${-u/2})`),s.attr("transform",`translate(${-o/2+(e.padding??0)-(a.x-(a.left??0))},${-l/2+(e.padding??0)-u-(a.y-(a.top??0))})`),Pt(e,_),e.intersect=function(k){return Nt.polygon(e,x,k)},i}async function YK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a}=await tr(t,e,rr(e)),s=100,o=50,l=Math.max(a.width+(e.padding??0)*2,e?.width??0),u=Math.max(a.height+(e.padding??0)*2,e?.height??0),h=l/u,f=l,d=u;f>d*h?d=f/h:f=d*h,f=Math.max(f,s),d=Math.max(d,o);let p=Math.min(d*.2,d/4),g=d+p*2,{cssStyles:m}=e,y=Ye.svg(i),x=Bt(e,{});e.look!=="handDrawn"&&(x.roughness=0,x.fillStyle="solid");let b=[{x:-f/2,y:g/2},...Oh(-f/2,g/2,f/2,g/2,p,1),{x:f/2,y:-g/2},...Oh(f/2,-g/2,-f/2,-g/2,p,-1)],w=Er(b),_=y.path(w,x),k=i.insert(()=>_,":first-child");return k.attr("class","basic label-container"),m&&e.look!=="handDrawn"&&k.selectAll("path").attr("style",m),n&&e.look!=="handDrawn"&&k.selectAll("path").attr("style",n),Pt(e,k),e.intersect=function(E){return Nt.polygon(e,b,E)},i}async function XK(t,e){let{labelStyles:r,nodeStyles:n}=Vt(e);e.labelStyle=r;let{shapeSvg:i,bbox:a,label:s}=await tr(t,e,rr(e)),o=Math.max(a.width+(e.padding??0)*2,e?.width??0),l=Math.max(a.height+(e.padding??0)*2,e?.height??0),u=5,h=-o/2,f=-l/2,{cssStyles:d}=e,p=Ye.svg(i),g=Bt(e,{}),m=[{x:h-u,y:f-u},{x:h-u,y:f+l},{x:h+o,y:f+l},{x:h+o,y:f-u}],y=`M${h-u},${f-u} L${h+o},${f-u} L${h+o},${f+l} L${h-u},${f+l} L${h-u},${f-u} M${h-u},${f} L${h+o},${f} M${h},${f-u} L${h},${f+l}`;e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let x=p.path(y,g),b=i.insert(()=>x,":first-child");return b.attr("transform",`translate(${u/2}, ${u/2})`),b.attr("class","basic label-container"),d&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",d),n&&e.look!=="handDrawn"&&b.selectAll("path").attr("style",n),s.attr("transform",`translate(${-(a.width/2)+u/2-(a.x-(a.left??0))}, ${-(a.height/2)+u/2-(a.y-(a.top??0))})`),Pt(e,b),e.intersect=function(w){return Nt.polygon(e,m,w)},i}async function jK(t,e,r,n,i=r.class.padding??12){let a=n?0:3,s=t.insert("g").attr("class",rr(e)).attr("id",e.domId||e.id),o=null,l=null,u=null,h=null,f=0,d=0,p=0;if(o=s.insert("g").attr("class","annotation-group text"),e.annotations.length>0){let b=e.annotations[0];await Qv(o,{text:`\xAB${b}\xBB`},0),f=o.node().getBBox().height}l=s.insert("g").attr("class","label-group text"),await Qv(l,e,0,["font-weight: bolder"]);let g=l.node().getBBox();d=g.height,u=s.insert("g").attr("class","members-group text");let m=0;for(let b of e.members){let w=await Qv(u,b,m,[b.parseClassifier()]);m+=w+a}p=u.node().getBBox().height,p<=0&&(p=i/2),h=s.insert("g").attr("class","methods-group text");let y=0;for(let b of e.methods){let w=await Qv(h,b,y,[b.parseClassifier()]);y+=w+a}let x=s.node().getBBox();if(o!==null){let b=o.node().getBBox();o.attr("transform",`translate(${-b.width/2})`)}return l.attr("transform",`translate(${-g.width/2}, ${f})`),x=s.node().getBBox(),u.attr("transform",`translate(0, ${f+d+i*2})`),x=s.node().getBBox(),h.attr("transform",`translate(0, ${f+d+(p?p+i*4:i*2)})`),x=s.node().getBBox(),{shapeSvg:s,bbox:x}}async function Qv(t,e,r,n=[]){let i=t.insert("g").attr("class","label").attr("style",n.join("; ")),a=Or(),s="useHtmlLabels"in e?e.useHtmlLabels:Wr(a.htmlLabels)??!0,o="";"text"in e?o=e.text:o=e.label,!s&&o.startsWith("\\")&&(o=o.substring(1)),Ei(o)&&(s=!0);let l=await oa(i,WS(Xs(o)),{width:bs(o,a)+50,classes:"markdown-node-label",useHtmlLabels:s},a),u,h=1;if(s){let f=l.children[0],d=Ve(l);h=f.innerHTML.split("
    ").length,f.innerHTML.includes("")&&(h+=f.innerHTML.split("").length-1);let p=f.getElementsByTagName("img");if(p){let g=o.replace(/]*>/g,"").trim()==="";await Promise.all([...p].map(m=>new Promise(y=>{function x(){if(m.style.display="flex",m.style.flexDirection="column",g){let b=a.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,_=parseInt(b,10)*5+"px";m.style.minWidth=_,m.style.maxWidth=_}else m.style.width="100%";y(m)}v(x,"setupImage"),setTimeout(()=>{m.complete&&x()}),m.addEventListener("error",x),m.addEventListener("load",x)})))}u=f.getBoundingClientRect(),d.attr("width",u.width),d.attr("height",u.height)}else{n.includes("font-weight: bolder")&&Ve(l).selectAll("tspan").attr("font-weight",""),h=l.children.length;let f=l.children[0];(l.textContent===""||l.textContent.includes(">"))&&(f.textContent=o[0]+o.substring(1).replaceAll(">",">").replaceAll("<","<").trim(),o[1]===" "&&(f.textContent=f.textContent[0]+" "+f.textContent.substring(1))),f.textContent==="undefined"&&(f.textContent=""),u=l.getBBox()}return i.attr("transform","translate(0,"+(-u.height/(2*h)+r)+")"),u.height}async function KK(t,e){let r=pe(),n=r.class.padding??12,i=n,a=e.useHtmlLabels??Wr(r.htmlLabels)??!0,s=e;s.annotations=s.annotations??[],s.members=s.members??[],s.methods=s.methods??[];let{shapeSvg:o,bbox:l}=await jK(t,e,r,a,i),{labelStyles:u,nodeStyles:h}=Vt(e);e.labelStyle=u,e.cssStyles=s.styles||"";let f=s.styles?.join(";")||h||"";e.cssStyles||(e.cssStyles=f.replaceAll("!important","").split(";"));let d=s.members.length===0&&s.methods.length===0&&!r.class?.hideEmptyMembersBox,p=Ye.svg(o),g=Bt(e,{});e.look!=="handDrawn"&&(g.roughness=0,g.fillStyle="solid");let m=l.width,y=l.height;s.members.length===0&&s.methods.length===0?y+=i:s.members.length>0&&s.methods.length===0&&(y+=i*2);let x=-m/2,b=-y/2,w=p.rectangle(x-n,b-n-(d?n:s.members.length===0&&s.methods.length===0?-n/2:0),m+2*n,y+2*n+(d?n*2:s.members.length===0&&s.methods.length===0?-n:0),g),_=o.insert(()=>w,":first-child");_.attr("class","basic label-container");let k=_.node().getBBox();o.selectAll(".text").each((C,M,R)=>{let T=Ve(R[M]),I=T.attr("transform"),A=0;if(I){let B=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(I);B&&(A=parseFloat(B[2]))}let D=A+b+n-(d?n:s.members.length===0&&s.methods.length===0?-n/2:0);a||(D-=4);let N=x;(T.attr("class").includes("label-group")||T.attr("class").includes("annotation-group"))&&(N=-T.node()?.getBBox().width/2||0,o.selectAll("text").each(function(O,B,P){window.getComputedStyle(P[B]).textAnchor==="middle"&&(N=0)})),T.attr("transform",`translate(${N}, ${D})`)});let E=o.select(".annotation-group").node().getBBox().height-(d?n/2:0)||0,L=o.select(".label-group").node().getBBox().height-(d?n/2:0)||0,S=o.select(".members-group").node().getBBox().height-(d?n/2:0)||0;if(s.members.length>0||s.methods.length>0||d){let C=p.line(k.x,E+L+b+n,k.x+k.width,E+L+b+n,g);o.insert(()=>C).attr("class","divider").attr("style",f)}if(d||s.members.length>0||s.methods.length>0){let C=p.line(k.x,E+L+S+b+i*2+n,k.x+k.width,E+L+S+b+n+i*2,g);o.insert(()=>C).attr("class","divider").attr("style",f)}if(s.look!=="handDrawn"&&o.selectAll("path").attr("style",f),_.select(":nth-child(2)").attr("style",f),o.selectAll(".divider").select("path").attr("style",f),e.labelStyle?o.selectAll("span").attr("style",e.labelStyle):o.selectAll("span").attr("style",f),!a){let C=RegExp(/color\s*:\s*([^;]*)/),M=C.exec(f);if(M){let R=M[0].replace("color","fill");o.selectAll("tspan").attr("style",R)}else if(u){let R=C.exec(u);if(R){let T=R[0].replace("color","fill");o.selectAll("tspan").attr("style",T)}}}return Pt(e,_),e.intersect=function(C){return Nt.rect(e,C)},o}async function ZK(t,e,{config:r}){let{labelStyles:n,nodeStyles:i}=Vt(e);e.labelStyle=n||"";let a=10,s=e.width;e.width=(e.width??200)-10;let{shapeSvg:o,bbox:l,label:u}=await tr(t,e,rr(e)),h=e.padding||10,f="",d;"ticket"in e&&e.ticket&&r?.kanban?.ticketBaseUrl&&(f=r?.kanban?.ticketBaseUrl.replace("#TICKET#",e.ticket),d=o.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",f).attr("target","_blank"));let p={useHtmlLabels:e.useHtmlLabels,labelStyle:e.labelStyle||"",width:e.width,img:e.img,padding:e.padding||8,centerLabel:!1},g,m;d?{label:g,bbox:m}=await $A(d,"ticket"in e&&e.ticket||"",p):{label:g,bbox:m}=await $A(o,"ticket"in e&&e.ticket||"",p);let{label:y,bbox:x}=await $A(o,"assigned"in e&&e.assigned||"",p);e.width=s;let b=10,w=e?.width||0,_=Math.max(m.height,x.height)/2,k=Math.max(l.height+b*2,e?.height||0)+_,E=-w/2,L=-k/2;u.attr("transform","translate("+(h-w/2)+", "+(-_-l.height/2)+")"),g.attr("transform","translate("+(h-w/2)+", "+(-_+l.height/2)+")"),y.attr("transform","translate("+(h+w/2-x.width-2*a)+", "+(-_+l.height/2)+")");let S,{rx:C,ry:M}=e,{cssStyles:R}=e;if(e.look==="handDrawn"){let T=Ye.svg(o),I=Bt(e,{}),A=C||M?T.path(Cu(E,L,w,k,C||0),I):T.rectangle(E,L,w,k,I);S=o.insert(()=>A,":first-child"),S.attr("class","basic label-container").attr("style",R||null)}else{S=o.insert("rect",":first-child"),S.attr("class","basic label-container __APA__").attr("style",i).attr("rx",C??5).attr("ry",M??5).attr("x",E).attr("y",L).attr("width",w).attr("height",k);let T="priority"in e&&e.priority;if(T){let I=o.append("line"),A=E+2,D=L+Math.floor((C??0)/2),N=L+k-Math.floor((C??0)/2);I.attr("x1",A).attr("y1",D).attr("x2",A).attr("y2",N).attr("stroke-width","4").attr("stroke",Y6e(T))}}return Pt(e,S),e.height=k,e.intersect=function(T){return Nt.rect(e,T)},o}function WA(t){return t in QK}async function wd(t,e,r){let n,i;e.shape==="rect"&&(e.rx&&e.ry?e.shape="roundedRect":e.shape="squareRect");let a=e.shape?QK[e.shape]:void 0;if(!a)throw new Error(`No such shape: ${e.shape}. Please check your syntax.`);if(e.link){let s;r.config.securityLevel==="sandbox"?s="_top":e.linkTarget&&(s=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",s??null),i=await a(n,e,r)}else i=await a(t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),l5.set(e.id,n),e.haveCallback&&n.attr("class",n.attr("class")+" clickable"),n}var tr,$A,Pt,rr,k6e,Jp,T6e,Ph,Cu,E6e,eg,S6e,Vt,Bt,Bj,C6e,A6e,_6e,L6e,R6e,N6e,Fj,tg,zj,I6e,Uj,M6e,D6e,O6e,Nt,P6e,B6e,F6e,z6e,$6e,G6e,U6e,V6e,W6e,H6e,q6e,Y6e,X6e,j6e,QK,l5,JK,eZ,Jv,yl=F(()=>{sl();bo();Ya();kn();or();lr();lr();$t();lr();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();lr();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();$t();lr();$t();lr();$t();tr=v(async(t,e,r)=>{let n,i=e.useHtmlLabels||Wr(pe()?.htmlLabels);r?n=r:n="node default";let a=t.insert("g").attr("class",n).attr("id",e.domId||e.id),s=a.insert("g").attr("class","label").attr("style",Aa(e.labelStyle)),o;e.label===void 0?o="":o=typeof e.label=="string"?e.label:e.label[0];let l=await oa(s,yr(Xs(o),pe()),{useHtmlLabels:i,width:e.width||pe().flowchart?.wrappingWidth,cssClasses:"markdown-node-label",style:e.labelStyle,addSvgBackground:!!e.icon||!!e.img}),u=l.getBBox(),h=(e?.padding??0)/2;if(i){let f=l.children[0],d=Ve(l),p=f.getElementsByTagName("img");if(p){let g=o.replace(/]*>/g,"").trim()==="";await Promise.all([...p].map(m=>new Promise(y=>{function x(){if(m.style.display="flex",m.style.flexDirection="column",g){let b=pe().fontSize?pe().fontSize:window.getComputedStyle(document.body).fontSize,w=5,[_=sr.fontSize]=Ro(b),k=_*w+"px";m.style.minWidth=k,m.style.maxWidth=k}else m.style.width="100%";y(m)}v(x,"setupImage"),setTimeout(()=>{m.complete&&x()}),m.addEventListener("error",x),m.addEventListener("load",x)})))}u=f.getBoundingClientRect(),d.attr("width",u.width),d.attr("height",u.height)}return i?s.attr("transform","translate("+-u.width/2+", "+-u.height/2+")"):s.attr("transform","translate(0, "+-u.height/2+")"),e.centerLabel&&s.attr("transform","translate("+-u.width/2+", "+-u.height/2+")"),s.insert("rect",":first-child"),{shapeSvg:a,bbox:u,halfPadding:h,label:s}},"labelHelper"),$A=v(async(t,e,r)=>{let n=r.useHtmlLabels||Wr(pe()?.flowchart?.htmlLabels),i=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),a=await oa(i,yr(Xs(e),pe()),{useHtmlLabels:n,width:r.width||pe()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img}),s=a.getBBox(),o=r.padding/2;if(Wr(pe()?.flowchart?.htmlLabels)){let l=a.children[0],u=Ve(a);s=l.getBoundingClientRect(),u.attr("width",s.width),u.attr("height",s.height)}return n?i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"):i.attr("transform","translate(0, "+-s.height/2+")"),r.centerLabel&&i.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),i.insert("rect",":first-child"),{shapeSvg:t,bbox:s,halfPadding:o,label:i}},"insertLabel"),Pt=v((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds"),rr=v((t,e)=>(t.look==="handDrawn"?"rough-node":"node")+" "+t.cssClasses+" "+(e||""),"getNodeClasses");v(Er,"createPathFromPoints");v(Oh,"generateFullSineWavePoints");v(VA,"generateCirclePoints");k6e=v((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,o=t.height/2,l,u;return Math.abs(a)*s>Math.abs(i)*o?(a<0&&(o=-o),l=a===0?0:o*i/a,u=o):(i<0&&(s=-s),l=s,u=i===0?0:s*a/i),{x:r+l,y:n+u}},"intersectRect"),Jp=k6e;v(Oj,"applyStyle");v(Pj,"addHtmlLabel");T6e=v(async(t,e,r,n)=>{let i=t||"";if(typeof i=="object"&&(i=i[0]),Wr(pe().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),re.info("vertexText"+i);let a={isNode:n,label:Xs(i).replace(/fa[blrs]?:fa-[\w-]+/g,o=>``),labelStyle:e&&e.replace("fill:","color:")};return await Pj(a)}else{let a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));let s=[];typeof i=="string"?s=i.split(/\\n|\n|/gi):Array.isArray(i)?s=i:s=[];for(let o of s){let l=document.createElementNS("http://www.w3.org/2000/svg","tspan");l.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),l.setAttribute("dy","1em"),l.setAttribute("x","0"),r?l.setAttribute("class","title-row"):l.setAttribute("class","row"),l.textContent=o.trim(),a.appendChild(l)}return a}},"createLabel"),Ph=T6e,Cu=v((t,e,r,n,i)=>["M",t+i,e,"H",t+r-i,"A",i,i,0,0,1,t+r,e+i,"V",e+n-i,"A",i,i,0,0,1,t+r-i,e+n,"H",t+i,"A",i,i,0,0,1,t,e+n-i,"V",e+i,"A",i,i,0,0,1,t+i,e,"Z"].join(" "),"createRoundedRectPathD"),E6e=v(t=>{let{handDrawnSeed:e}=pe();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:e}},"solidStateFill"),eg=v(t=>{let e=S6e([...t.cssCompiledStyles||[],...t.cssStyles||[]]);return{stylesMap:e,stylesArray:[...e]}},"compileStyles"),S6e=v(t=>{let e=new Map;return t.forEach(r=>{let[n,i]=r.split(":");e.set(n.trim(),i?.trim())}),e},"styles2Map"),Vt=v(t=>{let{stylesArray:e}=eg(t),r=[],n=[],i=[],a=[];return e.forEach(s=>{let o=s[0];o==="color"||o==="font-size"||o==="font-family"||o==="font-weight"||o==="font-style"||o==="text-decoration"||o==="text-align"||o==="text-transform"||o==="line-height"||o==="letter-spacing"||o==="word-spacing"||o==="text-shadow"||o==="text-overflow"||o==="white-space"||o==="word-wrap"||o==="word-break"||o==="overflow-wrap"||o==="hyphens"?r.push(s.join(":")+" !important"):(n.push(s.join(":")+" !important"),o.includes("stroke")&&i.push(s.join(":")+" !important"),o==="fill"&&a.push(s.join(":")+" !important"))}),{labelStyles:r.join(";"),nodeStyles:n.join(";"),stylesArray:e,borderStyles:i,backgroundStyles:a}},"styles2String"),Bt=v((t,e)=>{let{themeVariables:r,handDrawnSeed:n}=pe(),{nodeBorder:i,mainBkg:a}=r,{stylesMap:s}=eg(t);return Object.assign({roughness:.7,fill:s.get("fill")||a,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:s.get("stroke")||i,seed:n,strokeWidth:s.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0]},e)},"userNodeOverrides"),Bj=v(async(t,e)=>{re.info("Creating subgraph rect for ",e.id,e);let r=pe(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:o,nodeStyles:l,borderStyles:u,backgroundStyles:h}=Vt(e),f=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),d=Wr(r.flowchart.htmlLabels),p=f.insert("g").attr("class","cluster-label "),g=await oa(p,e.label,{style:e.labelStyle,useHtmlLabels:d,isNode:!0}),m=g.getBBox();if(Wr(r.flowchart.htmlLabels)){let L=g.children[0],S=Ve(g);m=L.getBoundingClientRect(),S.attr("width",m.width),S.attr("height",m.height)}let y=e.width<=m.width+e.padding?m.width+e.padding:e.width;e.width<=m.width+e.padding?e.diff=(y-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-y/2,w=e.y-x/2;re.trace("Data ",e,JSON.stringify(e));let _;if(e.look==="handDrawn"){let L=Ye.svg(f),S=Bt(e,{roughness:.7,fill:a,stroke:s,fillWeight:3,seed:i}),C=L.path(Cu(b,w,y,x,0),S);_=f.insert(()=>(re.debug("Rough node insert CXC",C),C),":first-child"),_.select("path:nth-child(2)").attr("style",u.join(";")),_.select("path").attr("style",h.join(";").replace("fill","stroke"))}else _=f.insert("rect",":first-child"),_.attr("style",l).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",w).attr("width",y).attr("height",x);let{subGraphTitleTopMargin:k}=ou(r);if(p.attr("transform",`translate(${e.x-m.width/2}, ${e.y-e.height/2+k})`),o){let L=p.select("span");L&&L.attr("style",o)}let E=_.node().getBBox();return e.offsetX=0,e.width=E.width,e.height=E.height,e.offsetY=m.height-e.padding/2,e.intersect=function(L){return Jp(e,L)},{cluster:f,labelBBox:m}},"rect"),C6e=v((t,e)=>{let r=t.insert("g").attr("class","note-cluster").attr("id",e.id),n=r.insert("rect",":first-child"),i=0*e.padding,a=i/2;n.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+i).attr("height",e.height+i).attr("fill","none");let s=n.node().getBBox();return e.width=s.width,e.height=s.height,e.intersect=function(o){return Jp(e,o)},{cluster:r,labelBBox:{width:0,height:0}}},"noteGroup"),A6e=v(async(t,e)=>{let r=pe(),{themeVariables:n,handDrawnSeed:i}=r,{altBackground:a,compositeBackground:s,compositeTitleBackground:o,nodeBorder:l}=n,u=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-id",e.id).attr("data-look",e.look),h=u.insert("g",":first-child"),f=u.insert("g").attr("class","cluster-label"),d=u.append("rect"),p=f.node().appendChild(await Ph(e.label,e.labelStyle,void 0,!0)),g=p.getBBox();if(Wr(r.flowchart.htmlLabels)){let C=p.children[0],M=Ve(p);g=C.getBoundingClientRect(),M.attr("width",g.width),M.attr("height",g.height)}let m=0*e.padding,y=m/2,x=(e.width<=g.width+e.padding?g.width+e.padding:e.width)+m;e.width<=g.width+e.padding?e.diff=(x-e.width)/2-e.padding:e.diff=-e.padding;let b=e.height+m,w=e.height+m-g.height-6,_=e.x-x/2,k=e.y-b/2;e.width=x;let E=e.y-e.height/2-y+g.height+2,L;if(e.look==="handDrawn"){let C=e.cssClasses.includes("statediagram-cluster-alt"),M=Ye.svg(u),R=e.rx||e.ry?M.path(Cu(_,k,x,b,10),{roughness:.7,fill:o,fillStyle:"solid",stroke:l,seed:i}):M.rectangle(_,k,x,b,{seed:i});L=u.insert(()=>R,":first-child");let T=M.rectangle(_,E,x,w,{fill:C?a:s,fillStyle:C?"hachure":"solid",stroke:l,seed:i});L=u.insert(()=>R,":first-child"),d=u.insert(()=>T)}else L=h.insert("rect",":first-child"),L.attr("class","outer").attr("x",_).attr("y",k).attr("width",x).attr("height",b).attr("data-look",e.look),d.attr("class","inner").attr("x",_).attr("y",E).attr("width",x).attr("height",w);f.attr("transform",`translate(${e.x-g.width/2}, ${k+1-(Wr(r.flowchart.htmlLabels)?0:3)})`);let S=L.node().getBBox();return e.height=S.height,e.offsetX=0,e.offsetY=g.height-e.padding/2,e.labelBBox=g,e.intersect=function(C){return Jp(e,C)},{cluster:u,labelBBox:g}},"roundedWithTitle"),_6e=v(async(t,e)=>{re.info("Creating subgraph rect for ",e.id,e);let r=pe(),{themeVariables:n,handDrawnSeed:i}=r,{clusterBkg:a,clusterBorder:s}=n,{labelStyles:o,nodeStyles:l,borderStyles:u,backgroundStyles:h}=Vt(e),f=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),d=Wr(r.flowchart.htmlLabels),p=f.insert("g").attr("class","cluster-label "),g=await oa(p,e.label,{style:e.labelStyle,useHtmlLabels:d,isNode:!0,width:e.width}),m=g.getBBox();if(Wr(r.flowchart.htmlLabels)){let L=g.children[0],S=Ve(g);m=L.getBoundingClientRect(),S.attr("width",m.width),S.attr("height",m.height)}let y=e.width<=m.width+e.padding?m.width+e.padding:e.width;e.width<=m.width+e.padding?e.diff=(y-e.width)/2-e.padding:e.diff=-e.padding;let x=e.height,b=e.x-y/2,w=e.y-x/2;re.trace("Data ",e,JSON.stringify(e));let _;if(e.look==="handDrawn"){let L=Ye.svg(f),S=Bt(e,{roughness:.7,fill:a,stroke:s,fillWeight:4,seed:i}),C=L.path(Cu(b,w,y,x,e.rx),S);_=f.insert(()=>(re.debug("Rough node insert CXC",C),C),":first-child"),_.select("path:nth-child(2)").attr("style",u.join(";")),_.select("path").attr("style",h.join(";").replace("fill","stroke"))}else _=f.insert("rect",":first-child"),_.attr("style",l).attr("rx",e.rx).attr("ry",e.ry).attr("x",b).attr("y",w).attr("width",y).attr("height",x);let{subGraphTitleTopMargin:k}=ou(r);if(p.attr("transform",`translate(${e.x-m.width/2}, ${e.y-e.height/2+k})`),o){let L=p.select("span");L&&L.attr("style",o)}let E=_.node().getBBox();return e.offsetX=0,e.width=E.width,e.height=E.height,e.offsetY=m.height-e.padding/2,e.intersect=function(L){return Jp(e,L)},{cluster:f,labelBBox:m}},"kanbanSection"),L6e=v((t,e)=>{let r=pe(),{themeVariables:n,handDrawnSeed:i}=r,{nodeBorder:a}=n,s=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-look",e.look),o=s.insert("g",":first-child"),l=0*e.padding,u=e.width+l;e.diff=-e.padding;let h=e.height+l,f=e.x-u/2,d=e.y-h/2;e.width=u;let p;if(e.look==="handDrawn"){let y=Ye.svg(s).rectangle(f,d,u,h,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:i});p=s.insert(()=>y,":first-child")}else p=o.insert("rect",":first-child"),p.attr("class","divider").attr("x",f).attr("y",d).attr("width",u).attr("height",h).attr("data-look",e.look);let g=p.node().getBBox();return e.height=g.height,e.offsetX=0,e.offsetY=0,e.intersect=function(m){return Jp(e,m)},{cluster:s,labelBBox:{}}},"divider"),R6e=Bj,N6e={rect:Bj,squareRect:R6e,roundedWithTitle:A6e,noteGroup:C6e,divider:L6e,kanbanSection:_6e},Fj=new Map,tg=v(async(t,e)=>{let r=e.shape||"rect",n=await N6e[r](t,e);return Fj.set(e.id,n),n},"insertCluster"),zj=v(()=>{Fj=new Map},"clear");v($j,"intersectNode");I6e=$j;v(Gj,"intersectEllipse");Uj=Gj;v(Vj,"intersectCircle");M6e=Vj;v(Wj,"intersectLine");v(GA,"sameSign");D6e=Wj;v(Hj,"intersectPolygon");O6e=Hj,Nt={node:I6e,circle:M6e,ellipse:Uj,polygon:O6e,rect:Jp};v(qj,"anchor");v(UA,"generateArcPoints");v(Yj,"bowTieRect");v(Au,"insertPolygonShape");v(Xj,"card");v(jj,"choice");v(Kj,"circle");v(Zj,"createLine");v(Qj,"crossedCircle");v(Eu,"generateCirclePoints");v(Jj,"curlyBraceLeft");v(Su,"generateCirclePoints");v(eK,"curlyBraceRight");v(la,"generateCirclePoints");v(tK,"curlyBraces");v(rK,"curvedTrapezoid");P6e=v((t,e,r,n,i,a)=>[`M${t},${e+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createCylinderPathD"),B6e=v((t,e,r,n,i,a)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`].join(" "),"createOuterCylinderPathD"),F6e=v((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");v(nK,"cylinder");v(iK,"dividedRectangle");v(aK,"doublecircle");v(sK,"filledCircle");v(oK,"flippedTriangle");v(lK,"forkJoin");v(cK,"halfRoundedRectangle");z6e=v((t,e,r,n,i)=>[`M${t+i},${e}`,`L${t+r-i},${e}`,`L${t+r},${e-n/2}`,`L${t+r-i},${e-n}`,`L${t+i},${e-n}`,`L${t},${e-n/2}`,"Z"].join(" "),"createHexagonPathD");v(uK,"hexagon");v(hK,"hourglass");v(fK,"icon");v(dK,"iconCircle");v(pK,"iconRounded");v(gK,"iconSquare");v(mK,"imageSquare");v(vK,"inv_trapezoid");v(o5,"drawRect");v(yK,"labelRect");v(xK,"lean_left");v(bK,"lean_right");v(wK,"lightningBolt");$6e=v((t,e,r,n,i,a,s)=>[`M${t},${e+a}`,`a${i},${a} 0,0,0 ${r},0`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${t},${e+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createCylinderPathD"),G6e=v((t,e,r,n,i,a,s)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${i},${a} 0,0,0 ${-r},0`,`l0,${n}`,`a${i},${a} 0,0,0 ${r},0`,`l0,${-n}`,`M${t},${e+a+s}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createOuterCylinderPathD"),U6e=v((t,e,r,n,i,a)=>[`M${t-r/2},${-n/2}`,`a${i},${a} 0,0,0 ${r},0`].join(" "),"createInnerCylinderPathD");v(kK,"linedCylinder");v(TK,"linedWaveEdgedRect");v(EK,"multiRect");v(SK,"multiWaveEdgedRectangle");v(CK,"note");V6e=v((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" "),"createDecisionBoxPathD");v(AK,"question");v(_K,"rect_left_inv_arrow");v(LK,"rectWithTitle");v(RK,"roundedRect");v(NK,"shadedProcess");v(IK,"slopedRect");v(MK,"squareRect");v(DK,"stadium");v(OK,"state");v(PK,"stateEnd");v(BK,"stateStart");v(FK,"subroutine");v(zK,"taggedRect");v($K,"taggedWaveEdgedRectangle");v(GK,"text");W6e=v((t,e,r,n,i,a)=>`M${t},${e} a${i},${a} 0,0,1 0,${-n} l${r},0 a${i},${a} 0,0,1 0,${n} M${r},${-n} a${i},${a} 0,0,0 0,${n} l${-r},0`,"createCylinderPathD"),H6e=v((t,e,r,n,i,a)=>[`M${t},${e}`,`M${t+r},${e}`,`a${i},${a} 0,0,0 0,${-n}`,`l${-r},0`,`a${i},${a} 0,0,0 0,${n}`,`l${r},0`].join(" "),"createOuterCylinderPathD"),q6e=v((t,e,r,n,i,a)=>[`M${t+r/2},${-n/2}`,`a${i},${a} 0,0,0 0,${n}`].join(" "),"createInnerCylinderPathD");v(UK,"tiltedCylinder");v(VK,"trapezoid");v(WK,"trapezoidalPentagon");v(HK,"triangle");v(qK,"waveEdgedRectangle");v(YK,"waveRectangle");v(XK,"windowPane");v(jK,"textHelper");v(Qv,"addText");v(KK,"classBox");Y6e=v(t=>{switch(t){case"Very High":return"red";case"High":return"orange";case"Medium":return null;case"Low":return"blue";case"Very Low":return"lightblue"}},"colorFromPriority");v(ZK,"kanbanItem");X6e=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:MK},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:RK},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:DK},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:FK},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:nK},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:Kj},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:AK},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:uK},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:bK},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:xK},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:VK},{semanticName:"Manual Operation",name:"Trapezoid Base Top",shortName:"trap-t",description:"Represents a manual task",aliases:["manual","trapezoid-top","inv-trapezoid"],internalAliases:["inv_trapezoid"],handler:vK},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:aK},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:GK},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:Xj},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:NK},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:BK},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:PK},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:lK},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:hK},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:Jj},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:eK},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:tK},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:wK},{semanticName:"Document",name:"Document",shortName:"doc",description:"Represents a document",aliases:["doc","document"],handler:qK},{semanticName:"Delay",name:"Half-Rounded Rectangle",shortName:"delay",description:"Represents a delay",aliases:["half-rounded-rectangle"],handler:cK},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:UK},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:kK},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:rK},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:iK},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:HK},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:XK},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:sK},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:WK},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:oK},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:IK},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:SK},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:EK},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:Yj},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:Qj},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:$K},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:zK},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:YK},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:_K},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:TK}],j6e=v(()=>{let e=[...Object.entries({state:OK,choice:jj,note:CK,rectWithTitle:LK,labelRect:yK,iconSquare:gK,iconCircle:dK,icon:fK,iconRounded:pK,imageSquare:mK,anchor:qj,kanbanItem:ZK,classBox:KK}),...X6e.flatMap(r=>[r.shortName,..."aliases"in r?r.aliases:[],..."internalAliases"in r?r.internalAliases:[]].map(i=>[i,r.handler]))];return Object.fromEntries(e)},"generateShapeMap"),QK=j6e();v(WA,"isValidShape");l5=new Map;v(wd,"insertNode");JK=v((t,e)=>{l5.set(e.id,t)},"setNodeElem"),eZ=v(()=>{l5.clear()},"clear"),Jv=v(t=>{let e=l5.get(t.id);re.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");let r=8,n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-r)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},"positionNode")});function ey(t,e){if(t===void 0||e===void 0)return{angle:0,deltaX:0,deltaY:0};t=Pn(t),e=Pn(e);let[r,n]=[t.x,t.y],[i,a]=[e.x,e.y],s=i-r,o=a-n;return{angle:Math.atan(o/s),deltaX:s,deltaY:o}}var No,Pn,c5,pc=F(()=>{or();No={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:4};v(ey,"calculateDeltaAndAngle");Pn=v(t=>Array.isArray(t)?{x:t[0],y:t[1]}:t,"pointTransformer"),c5=v(t=>({x:v(function(e,r,n){let i=0,a=Pn(n[0]).x=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(No,t.arrowTypeEnd)){let{angle:p,deltaX:g}=ey(n[n.length-1],n[n.length-2]);i=No[t.arrowTypeEnd]*Math.cos(p)*(g>=0?1:-1)}let s=Math.abs(Pn(e).x-Pn(n[n.length-1]).x),o=Math.abs(Pn(e).y-Pn(n[n.length-1]).y),l=Math.abs(Pn(e).x-Pn(n[0]).x),u=Math.abs(Pn(e).y-Pn(n[0]).y),h=No[t.arrowTypeStart],f=No[t.arrowTypeEnd],d=1;if(s0&&o0&&u=0?1:-1)}else if(r===n.length-1&&Object.hasOwn(No,t.arrowTypeEnd)){let{angle:p,deltaY:g}=ey(n[n.length-1],n[n.length-2]);i=No[t.arrowTypeEnd]*Math.abs(Math.sin(p))*(g>=0?1:-1)}let s=Math.abs(Pn(e).y-Pn(n[n.length-1]).y),o=Math.abs(Pn(e).x-Pn(n[n.length-1]).x),l=Math.abs(Pn(e).y-Pn(n[0]).y),u=Math.abs(Pn(e).x-Pn(n[0]).x),h=No[t.arrowTypeStart],f=No[t.arrowTypeEnd],d=1;if(s0&&o0&&u5&&Math.abs(a.y-i.y)>5||i.y===a.y&&a.x===s.x&&Math.abs(a.x-i.x)>5&&Math.abs(a.y-s.y)>5)&&(e.push(a),r.push(n))}return{cornerPoints:e,cornerPointPositions:r}}var K6e,Z6e,tZ,u5,ca,iZ,ty,h5,f5,Q6e,J6e,rZ,nZ,eEe,d5,tEe,rEe,nEe,iEe,aEe,sEe,oEe,lEe,cEe,uEe,hEe,p5,_u=F(()=>{yl();pc();bo();Ya();kn();or();lr();$t();K6e=v((t,e,r,n,i)=>{e.arrowTypeStart&&tZ(t,"start",e.arrowTypeStart,r,n,i),e.arrowTypeEnd&&tZ(t,"end",e.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),Z6e={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},tZ=v((t,e,r,n,i,a)=>{let s=Z6e[r];if(!s){re.warn(`Unknown arrow type: ${r}`);return}let o=e==="start"?"Start":"End";t.attr(`marker-${e}`,`url(${n}#${i}_${a}-${s}${o})`)},"addEdgeMarker"),u5=new Map,ca=new Map,iZ=v(()=>{u5.clear(),ca.clear()},"clear"),ty=v(t=>t?t.reduce((r,n)=>r+";"+n,""):"","getLabelStyles"),h5=v(async(t,e)=>{let r=Wr(pe().flowchart.htmlLabels),n=await oa(t,e.label,{style:ty(e.labelStyle),useHtmlLabels:r,addSvgBackground:!0,isNode:!1});re.info("abc82",e,e.labelType);let i=t.insert("g").attr("class","edgeLabel"),a=i.insert("g").attr("class","label");a.node().appendChild(n);let s=n.getBBox();if(r){let l=n.children[0],u=Ve(n);s=l.getBoundingClientRect(),u.attr("width",s.width),u.attr("height",s.height)}a.attr("transform","translate("+-s.width/2+", "+-s.height/2+")"),u5.set(e.id,i),e.width=s.width,e.height=s.height;let o;if(e.startLabelLeft){let l=await Ph(e.startLabelLeft,ty(e.labelStyle)),u=t.insert("g").attr("class","edgeTerminals"),h=u.insert("g").attr("class","inner");o=h.node().appendChild(l);let f=l.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),ca.get(e.id)||ca.set(e.id,{}),ca.get(e.id).startLeft=u,ry(o,e.startLabelLeft)}if(e.startLabelRight){let l=await Ph(e.startLabelRight,ty(e.labelStyle)),u=t.insert("g").attr("class","edgeTerminals"),h=u.insert("g").attr("class","inner");o=u.node().appendChild(l),h.node().appendChild(l);let f=l.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),ca.get(e.id)||ca.set(e.id,{}),ca.get(e.id).startRight=u,ry(o,e.startLabelRight)}if(e.endLabelLeft){let l=await Ph(e.endLabelLeft,ty(e.labelStyle)),u=t.insert("g").attr("class","edgeTerminals"),h=u.insert("g").attr("class","inner");o=h.node().appendChild(l);let f=l.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),u.node().appendChild(l),ca.get(e.id)||ca.set(e.id,{}),ca.get(e.id).endLeft=u,ry(o,e.endLabelLeft)}if(e.endLabelRight){let l=await Ph(e.endLabelRight,ty(e.labelStyle)),u=t.insert("g").attr("class","edgeTerminals"),h=u.insert("g").attr("class","inner");o=h.node().appendChild(l);let f=l.getBBox();h.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),u.node().appendChild(l),ca.get(e.id)||ca.set(e.id,{}),ca.get(e.id).endRight=u,ry(o,e.endLabelRight)}return n},"insertEdgeLabel");v(ry,"setTerminalWidth");f5=v((t,e)=>{re.debug("Moving label abc88 ",t.id,t.label,u5.get(t.id),e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=pe(),{subGraphTitleTotalMargin:i}=ou(n);if(t.label){let a=u5.get(t.id),s=t.x,o=t.y;if(r){let l=Ut.calcLabelPosition(r);re.debug("Moving label "+t.label+" from (",s,",",o,") to (",l.x,",",l.y,") abc88"),e.updatedPath&&(s=l.x,o=l.y)}a.attr("transform",`translate(${s}, ${o+i/2})`)}if(t.startLabelLeft){let a=ca.get(t.id).startLeft,s=t.x,o=t.y;if(r){let l=Ut.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=l.x,o=l.y}a.attr("transform",`translate(${s}, ${o})`)}if(t.startLabelRight){let a=ca.get(t.id).startRight,s=t.x,o=t.y;if(r){let l=Ut.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=l.x,o=l.y}a.attr("transform",`translate(${s}, ${o})`)}if(t.endLabelLeft){let a=ca.get(t.id).endLeft,s=t.x,o=t.y;if(r){let l=Ut.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=l.x,o=l.y}a.attr("transform",`translate(${s}, ${o})`)}if(t.endLabelRight){let a=ca.get(t.id).endRight,s=t.x,o=t.y;if(r){let l=Ut.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=l.x,o=l.y}a.attr("transform",`translate(${s}, ${o})`)}},"positionEdgeLabel"),Q6e=v((t,e)=>{let r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),s=t.width/2,o=t.height/2;return i>=s||a>=o},"outsideNode"),J6e=v((t,e,r)=>{re.debug(`intersection calc abc89: outsidePoint: ${JSON.stringify(e)} insidePoint : ${JSON.stringify(r)} node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,o=r.xMath.abs(n-e.x)*l){let f=r.y{re.warn("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(re.info("abc88 checking point",a,e),!Q6e(e,a)&&!i){let s=J6e(e,n,a);re.debug("abc88 inside",a,n,s),re.debug("abc88 intersection",s,e);let o=!1;r.forEach(l=>{o=o||l.x===s.x&&l.y===s.y}),r.some(l=>l.x===s.x&&l.y===s.y)?re.warn("abc88 no intersect",s,r):r.push(s),i=!0}else re.warn("abc88 outside",a,n),n=a,i||r.push(a)}),re.debug("returning points",r),r},"cutPathAtIntersect");v(aZ,"extractCornerPoints");nZ=v(function(t,e,r){let n=e.x-t.x,i=e.y-t.y,a=Math.sqrt(n*n+i*i),s=r/a;return{x:e.x-s*n,y:e.y-s*i}},"findAdjacentPoint"),eEe=v(function(t){let{cornerPointPositions:e}=aZ(t),r=[];for(let n=0;n10&&Math.abs(a.y-i.y)>=10){re.debug("Corner point fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));let p=5;s.x===o.x?d={x:u<0?o.x-p+f:o.x+p-f,y:h<0?o.y-f:o.y+f}:d={x:u<0?o.x-f:o.x+f,y:h<0?o.y-p+f:o.y+p-f}}else re.debug("Corner point skipping fixing",Math.abs(a.x-i.x),Math.abs(a.y-i.y));r.push(d,l)}else r.push(t[n]);return r},"fixCorners"),d5=v(function(t,e,r,n,i,a,s){let{handDrawnSeed:o}=pe(),l=e.points,u=!1,h=i;var f=a;f.intersect&&h.intersect&&(l=l.slice(1,e.points.length-1),l.unshift(h.intersect(l[0])),re.debug("Last point APA12",e.start,"-->",e.end,l[l.length-1],f,f.intersect(l[l.length-1])),l.push(f.intersect(l[l.length-1]))),e.toCluster&&(re.info("to cluster abc88",r.get(e.toCluster)),l=rZ(e.points,r.get(e.toCluster).node),u=!0),e.fromCluster&&(re.debug("from cluster abc88",r.get(e.fromCluster),JSON.stringify(l,null,2)),l=rZ(l.reverse(),r.get(e.fromCluster).node).reverse(),u=!0);let d=l.filter(L=>!Number.isNaN(L.y));d=eEe(d);let p=gl;e.curve&&(p=e.curve);let{x:g,y:m}=c5(e),y=ms().x(g).y(m).curve(p),x;switch(e.thickness){case"normal":x="edge-thickness-normal";break;case"thick":x="edge-thickness-thick";break;case"invisible":x="edge-thickness-invisible";break;default:x="edge-thickness-normal"}switch(e.pattern){case"solid":x+=" edge-pattern-solid";break;case"dotted":x+=" edge-pattern-dotted";break;case"dashed":x+=" edge-pattern-dashed";break;default:x+=" edge-pattern-solid"}let b,w=y(d),_=Array.isArray(e.style)?e.style:[e.style];if(e.look==="handDrawn"){let L=Ye.svg(t);Object.assign([],d);let S=L.path(w,{roughness:.3,seed:o});x+=" transition",b=Ve(S).select("path").attr("id",e.id).attr("class"," "+x+(e.classes?" "+e.classes:"")).attr("style",_?_.reduce((M,R)=>M+";"+R,""):"");let C=b.attr("d");b.attr("d",C),t.node().appendChild(b.node())}else b=t.append("path").attr("d",w).attr("id",e.id).attr("class"," "+x+(e.classes?" "+e.classes:"")).attr("style",_?_.reduce((L,S)=>L+";"+S,""):"");let k="";(pe().flowchart.arrowMarkerAbsolute||pe().state.arrowMarkerAbsolute)&&(k=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,k=k.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),re.info("arrowTypeStart",e.arrowTypeStart),re.info("arrowTypeEnd",e.arrowTypeEnd),K6e(b,e,k,s,n);let E={};return u&&(E.updatedPath=l),E.originalPath=e.points,E},"insertEdge"),tEe=v((t,e,r,n)=>{e.forEach(i=>{hEe[i](t,r,n)})},"insertMarkers"),rEe=v((t,e,r)=>{re.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),nEe=v((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),iEe=v((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),aEe=v((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),sEe=v((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),oEe=v((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),lEe=v((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),cEe=v((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),uEe=v((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),hEe={extension:rEe,composition:nEe,aggregation:iEe,dependency:aEe,lollipop:sEe,point:oEe,circle:lEe,cross:cEe,barb:uEe},p5=tEe});function dEe(t){return typeof t=="symbol"||qn(t)&&sa(t)==fEe}var fEe,Zs,kd=F(()=>{yu();So();fEe="[object Symbol]";Zs=dEe});function pEe(t,e){for(var r=-1,n=t==null?0:t.length,i=Array(n);++r{Ts=pEe});function lZ(t){if(typeof t=="string")return t;if(Et(t))return Ts(t,lZ)+"";if(Zs(t))return oZ?oZ.call(t):"";var e=t+"";return e=="0"&&1/t==-gEe?"-0":e}var gEe,sZ,oZ,cZ,uZ=F(()=>{hd();Td();On();kd();gEe=1/0,sZ=Hi?Hi.prototype:void 0,oZ=sZ?sZ.toString:void 0;cZ=lZ});function vEe(t){for(var e=t.length;e--&&mEe.test(t.charAt(e)););return e}var mEe,hZ,fZ=F(()=>{mEe=/\s/;hZ=vEe});function xEe(t){return t&&t.slice(0,hZ(t)+1).replace(yEe,"")}var yEe,dZ,pZ=F(()=>{fZ();yEe=/^\s+/;dZ=xEe});function EEe(t){if(typeof t=="number")return t;if(Zs(t))return gZ;if(dn(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=dn(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=dZ(t);var r=wEe.test(t);return r||kEe.test(t)?TEe(t.slice(2),r?2:8):bEe.test(t)?gZ:+t}var gZ,bEe,wEe,kEe,TEe,mZ,vZ=F(()=>{pZ();qs();kd();gZ=NaN,bEe=/^[-+]0x[0-9a-f]+$/i,wEe=/^0b[01]+$/i,kEe=/^0o[0-7]+$/i,TEe=parseInt;mZ=EEe});function CEe(t){if(!t)return t===0?t:0;if(t=mZ(t),t===yZ||t===-yZ){var e=t<0?-1:1;return e*SEe}return t===t?t:0}var yZ,SEe,rg,HA=F(()=>{vZ();yZ=1/0,SEe=17976931348623157e292;rg=CEe});function AEe(t){var e=rg(t),r=e%1;return e===e?r?e-r:e:0}var gc,ng=F(()=>{HA();gc=AEe});var _Ee,g5,xZ=F(()=>{Sh();To();_Ee=vs(Qn,"WeakMap"),g5=_Ee});function LEe(){}var Yn,qA=F(()=>{Yn=LEe});function REe(t,e){for(var r=-1,n=t==null?0:t.length;++r{m5=REe});function NEe(t,e,r,n){for(var i=t.length,a=r+(n?1:-1);n?a--:++a{v5=NEe});function IEe(t){return t!==t}var bZ,wZ=F(()=>{bZ=IEe});function MEe(t,e,r){for(var n=r-1,i=t.length;++n{kZ=MEe});function DEe(t,e,r){return e===e?kZ(t,e,r):v5(t,bZ,r)}var ig,y5=F(()=>{XA();wZ();TZ();ig=DEe});function OEe(t,e){var r=t==null?0:t.length;return!!r&&ig(t,e,0)>-1}var x5,jA=F(()=>{y5();x5=OEe});var PEe,EZ,SZ=F(()=>{Y8();PEe=R3(Object.keys,Object),EZ=PEe});function zEe(t){if(!hc(t))return EZ(t);var e=[];for(var r in Object(t))FEe.call(t,r)&&r!="constructor"&&e.push(r);return e}var BEe,FEe,ag,b5=F(()=>{Up();SZ();BEe=Object.prototype,FEe=BEe.hasOwnProperty;ag=zEe});function $Ee(t){return Jn(t)?O3(t):ag(t)}var Nr,mc=F(()=>{Q8();b5();Co();Nr=$Ee});var GEe,UEe,VEe,ua,CZ=F(()=>{qp();md();rA();Co();Up();mc();GEe=Object.prototype,UEe=GEe.hasOwnProperty,VEe=F3(function(t,e){if(hc(e)||Jn(e)){Lo(e,Nr(e),t);return}for(var r in e)UEe.call(e,r)&&fc(t,r,e[r])}),ua=VEe});function qEe(t,e){if(Et(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||Zs(t)?!0:HEe.test(t)||!WEe.test(t)||e!=null&&t in Object(e)}var WEe,HEe,sg,w5=F(()=>{On();kd();WEe=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,HEe=/^\w*$/;sg=qEe});function XEe(t){var e=Dp(t,function(n){return r.size===YEe&&r.clear(),n}),r=e.cache;return e}var YEe,AZ,_Z=F(()=>{$8();YEe=500;AZ=XEe});var jEe,KEe,ZEe,LZ,RZ=F(()=>{_Z();jEe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,KEe=/\\(\\)?/g,ZEe=AZ(function(t){var e=[];return t.charCodeAt(0)===46&&e.push(""),t.replace(jEe,function(r,n,i,a){e.push(i?a.replace(KEe,"$1"):n||r)}),e}),LZ=ZEe});function QEe(t){return t==null?"":cZ(t)}var k5,KA=F(()=>{uZ();k5=QEe});function JEe(t,e){return Et(t)?t:sg(t,e)?[t]:LZ(k5(t))}var Bh,ny=F(()=>{On();w5();RZ();KA();Bh=JEe});function tSe(t){if(typeof t=="string"||Zs(t))return t;var e=t+"";return e=="0"&&1/t==-eSe?"-0":e}var eSe,vc,og=F(()=>{kd();eSe=1/0;vc=tSe});function rSe(t,e){e=Bh(e,t);for(var r=0,n=e.length;t!=null&&r{ny();og();Fh=rSe});function nSe(t,e,r){var n=t==null?void 0:Fh(t,e);return n===void 0?r:n}var NZ,IZ=F(()=>{iy();NZ=nSe});function iSe(t,e){for(var r=-1,n=e.length,i=t.length;++r{lg=iSe});function aSe(t){return Et(t)||ml(t)||!!(MZ&&t&&t[MZ])}var MZ,DZ,OZ=F(()=>{hd();Vp();On();MZ=Hi?Hi.isConcatSpreadable:void 0;DZ=aSe});function PZ(t,e,r,n,i){var a=-1,s=t.length;for(r||(r=DZ),i||(i=[]);++a0&&r(o)?e>1?PZ(o,e-1,r,n,i):lg(i,o):n||(i[i.length]=o)}return i}var yc,cg=F(()=>{T5();OZ();yc=PZ});function sSe(t){var e=t==null?0:t.length;return e?yc(t,1):[]}var Br,E5=F(()=>{cg();Br=sSe});function oSe(t){return B3(P3(t,void 0,Br),t+"")}var BZ,FZ=F(()=>{E5();J8();tA();BZ=oSe});function lSe(t,e,r){var n=-1,i=t.length;e<0&&(e=-e>i?0:i+e),r=r>i?i:r,r<0&&(r+=i),i=e>r?0:r-e>>>0,e>>>=0;for(var a=Array(i);++n{S5=lSe});function vSe(t){return mSe.test(t)}var cSe,uSe,hSe,fSe,dSe,pSe,gSe,mSe,zZ,$Z=F(()=>{cSe="\\ud800-\\udfff",uSe="\\u0300-\\u036f",hSe="\\ufe20-\\ufe2f",fSe="\\u20d0-\\u20ff",dSe=uSe+hSe+fSe,pSe="\\ufe0e\\ufe0f",gSe="\\u200d",mSe=RegExp("["+gSe+cSe+dSe+pSe+"]");zZ=vSe});function ySe(t,e,r,n){var i=-1,a=t==null?0:t.length;for(n&&a&&(r=t[++i]);++i{GZ=ySe});function xSe(t,e){return t&&Lo(e,Nr(e),t)}var VZ,WZ=F(()=>{md();mc();VZ=xSe});function bSe(t,e){return t&&Lo(e,ys(e),t)}var HZ,qZ=F(()=>{md();Ih();HZ=bSe});function wSe(t,e){for(var r=-1,n=t==null?0:t.length,i=0,a=[];++r{ug=wSe});function kSe(){return[]}var A5,QA=F(()=>{A5=kSe});var TSe,ESe,YZ,SSe,hg,_5=F(()=>{C5();QA();TSe=Object.prototype,ESe=TSe.propertyIsEnumerable,YZ=Object.getOwnPropertySymbols,SSe=YZ?function(t){return t==null?[]:(t=Object(t),ug(YZ(t),function(e){return ESe.call(t,e)}))}:A5,hg=SSe});function CSe(t,e){return Lo(t,hg(t),e)}var XZ,jZ=F(()=>{md();_5();XZ=CSe});var ASe,_Se,L5,JA=F(()=>{T5();N3();_5();QA();ASe=Object.getOwnPropertySymbols,_Se=ASe?function(t){for(var e=[];t;)lg(e,hg(t)),t=Gp(t);return e}:A5,L5=_Se});function LSe(t,e){return Lo(t,L5(t),e)}var KZ,ZZ=F(()=>{md();JA();KZ=LSe});function RSe(t,e,r){var n=e(t);return Et(t)?n:lg(n,r(t))}var R5,e_=F(()=>{T5();On();R5=RSe});function NSe(t){return R5(t,Nr,hg)}var ay,t_=F(()=>{e_();_5();mc();ay=NSe});function ISe(t){return R5(t,ys,L5)}var N5,r_=F(()=>{e_();JA();Ih();N5=ISe});var MSe,I5,QZ=F(()=>{Sh();To();MSe=vs(Qn,"DataView"),I5=MSe});var DSe,M5,JZ=F(()=>{Sh();To();DSe=vs(Qn,"Promise"),M5=DSe});var OSe,zh,n_=F(()=>{Sh();To();OSe=vs(Qn,"Set"),zh=OSe});var eQ,PSe,tQ,rQ,nQ,iQ,BSe,FSe,zSe,$Se,GSe,Ed,Qs,Sd=F(()=>{QZ();T3();JZ();n_();xZ();yu();B8();eQ="[object Map]",PSe="[object Object]",tQ="[object Promise]",rQ="[object Set]",nQ="[object WeakMap]",iQ="[object DataView]",BSe=xu(I5),FSe=xu(_h),zSe=xu(M5),$Se=xu(zh),GSe=xu(g5),Ed=sa;(I5&&Ed(new I5(new ArrayBuffer(1)))!=iQ||_h&&Ed(new _h)!=eQ||M5&&Ed(M5.resolve())!=tQ||zh&&Ed(new zh)!=rQ||g5&&Ed(new g5)!=nQ)&&(Ed=function(t){var e=sa(t),r=e==PSe?t.constructor:void 0,n=r?xu(r):"";if(n)switch(n){case BSe:return iQ;case FSe:return eQ;case zSe:return tQ;case $Se:return rQ;case GSe:return nQ}return e});Qs=Ed});function WSe(t){var e=t.length,r=new t.constructor(e);return e&&typeof t[0]=="string"&&VSe.call(t,"index")&&(r.index=t.index,r.input=t.input),r}var USe,VSe,aQ,sQ=F(()=>{USe=Object.prototype,VSe=USe.hasOwnProperty;aQ=WSe});function HSe(t,e){var r=e?$p(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)}var oQ,lQ=F(()=>{A3();oQ=HSe});function YSe(t){var e=new t.constructor(t.source,qSe.exec(t));return e.lastIndex=t.lastIndex,e}var qSe,cQ,uQ=F(()=>{qSe=/\w*$/;cQ=YSe});function XSe(t){return fQ?Object(fQ.call(t)):{}}var hQ,fQ,dQ,pQ=F(()=>{hd();hQ=Hi?Hi.prototype:void 0,fQ=hQ?hQ.valueOf:void 0;dQ=XSe});function pCe(t,e,r){var n=t.constructor;switch(e){case nCe:return $p(t);case jSe:case KSe:return new n(+t);case iCe:return oQ(t,r);case aCe:case sCe:case oCe:case lCe:case cCe:case uCe:case hCe:case fCe:case dCe:return _3(t,r);case ZSe:return new n;case QSe:case tCe:return new n(t);case JSe:return cQ(t);case eCe:return new n;case rCe:return dQ(t)}}var jSe,KSe,ZSe,QSe,JSe,eCe,tCe,rCe,nCe,iCe,aCe,sCe,oCe,lCe,cCe,uCe,hCe,fCe,dCe,gQ,mQ=F(()=>{A3();lQ();uQ();pQ();H8();jSe="[object Boolean]",KSe="[object Date]",ZSe="[object Map]",QSe="[object Number]",JSe="[object RegExp]",eCe="[object Set]",tCe="[object String]",rCe="[object Symbol]",nCe="[object ArrayBuffer]",iCe="[object DataView]",aCe="[object Float32Array]",sCe="[object Float64Array]",oCe="[object Int8Array]",lCe="[object Int16Array]",cCe="[object Int32Array]",uCe="[object Uint8Array]",hCe="[object Uint8ClampedArray]",fCe="[object Uint16Array]",dCe="[object Uint32Array]";gQ=pCe});function mCe(t){return qn(t)&&Qs(t)==gCe}var gCe,vQ,yQ=F(()=>{Sd();So();gCe="[object Map]";vQ=mCe});var xQ,vCe,bQ,wQ=F(()=>{yQ();gd();Bv();xQ=_o&&_o.isMap,vCe=xQ?Ao(xQ):vQ,bQ=vCe});function xCe(t){return qn(t)&&Qs(t)==yCe}var yCe,kQ,TQ=F(()=>{Sd();So();yCe="[object Set]";kQ=xCe});var EQ,bCe,SQ,CQ=F(()=>{TQ();gd();Bv();EQ=_o&&_o.isSet,bCe=EQ?Ao(EQ):kQ,SQ=bCe});function D5(t,e,r,n,i,a){var s,o=e&wCe,l=e&kCe,u=e&TCe;if(r&&(s=i?r(t,n,i,a):r(t)),s!==void 0)return s;if(!dn(t))return t;var h=Et(t);if(h){if(s=aQ(t),!o)return L3(t,s)}else{var f=Qs(t),d=f==_Q||f==_Ce;if(vl(t))return C3(t,o);if(f==LQ||f==AQ||d&&!i){if(s=l||d?{}:I3(t),!o)return l?KZ(t,HZ(s,t)):XZ(t,VZ(s,t))}else{if(!Tn[f])return i?t:{};s=gQ(t,f,o)}}a||(a=new cc);var p=a.get(t);if(p)return p;a.set(t,s),SQ(t)?t.forEach(function(y){s.add(D5(y,e,r,y,t,a))}):bQ(t)&&t.forEach(function(y,x){s.set(x,D5(y,e,r,x,t,a))});var g=u?l?N5:ay:l?ys:Nr,m=h?void 0:g(t);return m5(m||t,function(y,x){m&&(x=y,y=t[x]),fc(s,x,D5(y,e,r,x,t,a))}),s}var wCe,kCe,TCe,AQ,ECe,SCe,CCe,ACe,_Q,_Ce,LCe,RCe,LQ,NCe,ICe,MCe,DCe,OCe,PCe,BCe,FCe,zCe,$Ce,GCe,UCe,VCe,WCe,HCe,qCe,Tn,O5,i_=F(()=>{Dv();YA();qp();WZ();qZ();V8();q8();jZ();ZZ();t_();r_();Sd();sQ();mQ();X8();On();Hp();wQ();qs();CQ();mc();Ih();wCe=1,kCe=2,TCe=4,AQ="[object Arguments]",ECe="[object Array]",SCe="[object Boolean]",CCe="[object Date]",ACe="[object Error]",_Q="[object Function]",_Ce="[object GeneratorFunction]",LCe="[object Map]",RCe="[object Number]",LQ="[object Object]",NCe="[object RegExp]",ICe="[object Set]",MCe="[object String]",DCe="[object Symbol]",OCe="[object WeakMap]",PCe="[object ArrayBuffer]",BCe="[object DataView]",FCe="[object Float32Array]",zCe="[object Float64Array]",$Ce="[object Int8Array]",GCe="[object Int16Array]",UCe="[object Int32Array]",VCe="[object Uint8Array]",WCe="[object Uint8ClampedArray]",HCe="[object Uint16Array]",qCe="[object Uint32Array]",Tn={};Tn[AQ]=Tn[ECe]=Tn[PCe]=Tn[BCe]=Tn[SCe]=Tn[CCe]=Tn[FCe]=Tn[zCe]=Tn[$Ce]=Tn[GCe]=Tn[UCe]=Tn[LCe]=Tn[RCe]=Tn[LQ]=Tn[NCe]=Tn[ICe]=Tn[MCe]=Tn[DCe]=Tn[VCe]=Tn[WCe]=Tn[HCe]=Tn[qCe]=!0;Tn[ACe]=Tn[_Q]=Tn[OCe]=!1;O5=D5});function XCe(t){return O5(t,YCe)}var YCe,jr,a_=F(()=>{i_();YCe=4;jr=XCe});function ZCe(t){return O5(t,jCe|KCe)}var jCe,KCe,s_,RQ=F(()=>{i_();jCe=1,KCe=4;s_=ZCe});function QCe(t){for(var e=-1,r=t==null?0:t.length,n=0,i=[];++e{xc=QCe});function e7e(t){return this.__data__.set(t,JCe),this}var JCe,IQ,MQ=F(()=>{JCe="__lodash_hash_undefined__";IQ=e7e});function t7e(t){return this.__data__.has(t)}var DQ,OQ=F(()=>{DQ=t7e});function P5(t){var e=-1,r=t==null?0:t.length;for(this.__data__=new dd;++e{E3();MQ();OQ();P5.prototype.add=P5.prototype.push=IQ;P5.prototype.has=DQ;fg=P5});function r7e(t,e){for(var r=-1,n=t==null?0:t.length;++r{F5=r7e});function n7e(t,e){return t.has(e)}var dg,z5=F(()=>{dg=n7e});function s7e(t,e,r,n,i,a){var s=r&i7e,o=t.length,l=e.length;if(o!=l&&!(s&&l>o))return!1;var u=a.get(t),h=a.get(e);if(u&&h)return u==e&&h==t;var f=-1,d=!0,p=r&a7e?new fg:void 0;for(a.set(t,e),a.set(e,t);++f{B5();o_();z5();i7e=1,a7e=2;$5=s7e});function o7e(t){var e=-1,r=Array(t.size);return t.forEach(function(n,i){r[++e]=[i,n]}),r}var PQ,BQ=F(()=>{PQ=o7e});function l7e(t){var e=-1,r=Array(t.size);return t.forEach(function(n){r[++e]=n}),r}var pg,G5=F(()=>{pg=l7e});function k7e(t,e,r,n,i,a,s){switch(r){case w7e:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case b7e:return!(t.byteLength!=e.byteLength||!a(new zp(t),new zp(e)));case h7e:case f7e:case g7e:return Eo(+t,+e);case d7e:return t.name==e.name&&t.message==e.message;case m7e:case y7e:return t==e+"";case p7e:var o=PQ;case v7e:var l=n&c7e;if(o||(o=pg),t.size!=e.size&&!l)return!1;var u=s.get(t);if(u)return u==e;n|=u7e,s.set(t,e);var h=$5(o(t),o(e),n,i,a,s);return s.delete(t),h;case x7e:if(c_)return c_.call(t)==c_.call(e)}return!1}var c7e,u7e,h7e,f7e,d7e,p7e,g7e,m7e,v7e,y7e,x7e,b7e,w7e,FQ,c_,zQ,$Q=F(()=>{hd();W8();fd();l_();BQ();G5();c7e=1,u7e=2,h7e="[object Boolean]",f7e="[object Date]",d7e="[object Error]",p7e="[object Map]",g7e="[object Number]",m7e="[object RegExp]",v7e="[object Set]",y7e="[object String]",x7e="[object Symbol]",b7e="[object ArrayBuffer]",w7e="[object DataView]",FQ=Hi?Hi.prototype:void 0,c_=FQ?FQ.valueOf:void 0;zQ=k7e});function C7e(t,e,r,n,i,a){var s=r&T7e,o=ay(t),l=o.length,u=ay(e),h=u.length;if(l!=h&&!s)return!1;for(var f=l;f--;){var d=o[f];if(!(s?d in e:S7e.call(e,d)))return!1}var p=a.get(t),g=a.get(e);if(p&&g)return p==e&&g==t;var m=!0;a.set(t,e),a.set(e,t);for(var y=s;++f{t_();T7e=1,E7e=Object.prototype,S7e=E7e.hasOwnProperty;GQ=C7e});function L7e(t,e,r,n,i,a){var s=Et(t),o=Et(e),l=s?WQ:Qs(t),u=o?WQ:Qs(e);l=l==VQ?U5:l,u=u==VQ?U5:u;var h=l==U5,f=u==U5,d=l==u;if(d&&vl(t)){if(!vl(e))return!1;s=!0,h=!1}if(d&&!h)return a||(a=new cc),s||Rh(t)?$5(t,e,r,n,i,a):zQ(t,e,l,r,n,i,a);if(!(r&A7e)){var p=h&&HQ.call(t,"__wrapped__"),g=f&&HQ.call(e,"__wrapped__");if(p||g){var m=p?t.value():t,y=g?e.value():e;return a||(a=new cc),i(m,y,r,n,a)}}return d?(a||(a=new cc),GQ(t,e,r,n,i,a)):!1}var A7e,VQ,WQ,U5,_7e,HQ,qQ,YQ=F(()=>{Dv();l_();$Q();UQ();Sd();On();Hp();Fv();A7e=1,VQ="[object Arguments]",WQ="[object Array]",U5="[object Object]",_7e=Object.prototype,HQ=_7e.hasOwnProperty;qQ=L7e});function XQ(t,e,r,n,i){return t===e?!0:t==null||e==null||!qn(t)&&!qn(e)?t!==t&&e!==e:qQ(t,e,r,n,XQ,i)}var V5,u_=F(()=>{YQ();So();V5=XQ});function I7e(t,e,r,n){var i=r.length,a=i,s=!n;if(t==null)return!a;for(t=Object(t);i--;){var o=r[i];if(s&&o[2]?o[1]!==t[o[0]]:!(o[0]in t))return!1}for(;++i{Dv();u_();R7e=1,N7e=2;jQ=I7e});function M7e(t){return t===t&&!dn(t)}var W5,h_=F(()=>{qs();W5=M7e});function D7e(t){for(var e=Nr(t),r=e.length;r--;){var n=e[r],i=t[n];e[r]=[n,i,W5(i)]}return e}var ZQ,QQ=F(()=>{h_();mc();ZQ=D7e});function O7e(t,e){return function(r){return r==null?!1:r[t]===e&&(e!==void 0||t in Object(r))}}var H5,f_=F(()=>{H5=O7e});function P7e(t){var e=ZQ(t);return e.length==1&&e[0][2]?H5(e[0][0],e[0][1]):function(r){return r===t||jQ(r,t,e)}}var JQ,eJ=F(()=>{KQ();QQ();f_();JQ=P7e});function B7e(t,e){return t!=null&&e in Object(t)}var tJ,rJ=F(()=>{tJ=B7e});function F7e(t,e,r){e=Bh(e,t);for(var n=-1,i=e.length,a=!1;++n{ny();Vp();On();$v();M3();og();q5=F7e});function z7e(t,e){return t!=null&&q5(t,e,tJ)}var Y5,p_=F(()=>{rJ();d_();Y5=z7e});function U7e(t,e){return sg(t)&&W5(e)?H5(vc(t),e):function(r){var n=NZ(r,t);return n===void 0&&n===e?Y5(r,t):V5(e,n,$7e|G7e)}}var $7e,G7e,nJ,iJ=F(()=>{u_();IZ();p_();w5();h_();f_();og();$7e=1,G7e=2;nJ=U7e});function V7e(t){return function(e){return e?.[t]}}var X5,g_=F(()=>{X5=V7e});function W7e(t){return function(e){return Fh(e,t)}}var aJ,sJ=F(()=>{iy();aJ=W7e});function H7e(t){return sg(t)?X5(vc(t)):aJ(t)}var oJ,lJ=F(()=>{g_();sJ();w5();og();oJ=H7e});function q7e(t){return typeof t=="function"?t:t==null?qi:typeof t=="object"?Et(t)?nJ(t[0],t[1]):JQ(t):oJ(t)}var on,Xa=F(()=>{eJ();iJ();wu();On();lJ();on=q7e});function Y7e(t,e,r,n){for(var i=-1,a=t==null?0:t.length;++i{cJ=Y7e});function X7e(t,e){return t&&Fp(t,e,Nr)}var gg,j5=F(()=>{S3();mc();gg=X7e});function j7e(t,e){return function(r,n){if(r==null)return r;if(!Jn(r))return t(r,n);for(var i=r.length,a=e?i:-1,s=Object(r);(e?a--:++a{Co();hJ=j7e});var K7e,Es,$h=F(()=>{j5();fJ();K7e=hJ(gg),Es=K7e});function Z7e(t,e,r,n){return Es(t,function(i,a,s){e(n,i,r(i),s)}),n}var dJ,pJ=F(()=>{$h();dJ=Z7e});function Q7e(t,e){return function(r,n){var i=Et(r)?cJ:dJ,a=e?e():{};return i(r,t,on(n,2),a)}}var gJ,mJ=F(()=>{uJ();pJ();Xa();On();gJ=Q7e});var J7e,K5,vJ=F(()=>{To();J7e=function(){return Qn.Date.now()},K5=J7e});var yJ,e8e,t8e,Gh,xJ=F(()=>{Yp();fd();vd();Ih();yJ=Object.prototype,e8e=yJ.hasOwnProperty,t8e=dc(function(t,e){t=Object(t);var r=-1,n=e.length,i=n>2?e[2]:void 0;for(i&&Ys(e[0],e[1],i)&&(n=1);++r{Z5=r8e});function i8e(t,e,r,n){var i=-1,a=x5,s=!0,o=t.length,l=[],u=e.length;if(!o)return l;r&&(e=Ts(e,Ao(r))),n?(a=Z5,s=!1):e.length>=n8e&&(a=dg,s=!1,e=new fg(e));e:for(;++i{B5();jA();m_();Td();gd();z5();n8e=200;bJ=i8e});var a8e,Uh,kJ=F(()=>{wJ();cg();Yp();D3();a8e=dc(function(t,e){return pd(t)?bJ(t,yc(e,1,pd,!0)):[]}),Uh=a8e});function s8e(t){var e=t==null?0:t.length;return e?t[e-1]:void 0}var ha,TJ=F(()=>{ha=s8e});function o8e(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:gc(e),S5(t,e<0?0:e,n)):[]}var li,EJ=F(()=>{ZA();ng();li=o8e});function l8e(t,e,r){var n=t==null?0:t.length;return n?(e=r||e===void 0?1:gc(e),e=n-e,S5(t,0,e<0?0:e)):[]}var Lu,SJ=F(()=>{ZA();ng();Lu=l8e});function c8e(t){return typeof t=="function"?t:qi}var mg,Q5=F(()=>{wu();mg=c8e});function u8e(t,e){var r=Et(t)?m5:Es;return r(t,mg(e))}var Te,J5=F(()=>{YA();$h();Q5();On();Te=u8e});var CJ=F(()=>{J5()});function h8e(t,e){for(var r=-1,n=t==null?0:t.length;++r{AJ=h8e});function f8e(t,e){var r=!0;return Es(t,function(n,i,a){return r=!!e(n,i,a),r}),r}var LJ,RJ=F(()=>{$h();LJ=f8e});function d8e(t,e,r){var n=Et(t)?AJ:LJ;return r&&Ys(t,e,r)&&(e=void 0),n(t,on(e,3))}var _a,NJ=F(()=>{_J();RJ();Xa();On();vd();_a=d8e});function p8e(t,e){var r=[];return Es(t,function(n,i,a){e(n,i,a)&&r.push(n)}),r}var ew,v_=F(()=>{$h();ew=p8e});function g8e(t,e){var r=Et(t)?ug:ew;return r(t,on(e,3))}var Fr,y_=F(()=>{C5();v_();Xa();On();Fr=g8e});function m8e(t){return function(e,r,n){var i=Object(e);if(!Jn(e)){var a=on(r,3);e=Nr(e),r=function(o){return a(i[o],o,i)}}var s=t(e,r,n);return s>-1?i[a?e[s]:s]:void 0}}var IJ,MJ=F(()=>{Xa();Co();mc();IJ=m8e});function y8e(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:gc(r);return i<0&&(i=v8e(n+i,0)),v5(t,on(e,3),i)}var v8e,DJ,OJ=F(()=>{XA();Xa();ng();v8e=Math.max;DJ=y8e});var x8e,ja,PJ=F(()=>{MJ();OJ();x8e=IJ(DJ),ja=x8e});function b8e(t){return t&&t.length?t[0]:void 0}var Yi,BJ=F(()=>{Yi=b8e});var FJ=F(()=>{BJ()});function w8e(t,e){var r=-1,n=Jn(t)?Array(t.length):[];return Es(t,function(i,a,s){n[++r]=e(i,a,s)}),n}var tw,x_=F(()=>{$h();Co();tw=w8e});function k8e(t,e){var r=Et(t)?Ts:tw;return r(t,on(e,3))}var je,vg=F(()=>{Td();Xa();x_();On();je=k8e});function T8e(t,e){return yc(je(t,e),1)}var fa,b_=F(()=>{cg();vg();fa=T8e});function E8e(t,e){return t==null?t:Fp(t,mg(e),ys)}var w_,zJ=F(()=>{S3();Q5();Ih();w_=E8e});function S8e(t,e){return t&&gg(t,mg(e))}var k_,$J=F(()=>{j5();Q5();k_=S8e});var C8e,A8e,_8e,T_,GJ=F(()=>{Bp();mJ();C8e=Object.prototype,A8e=C8e.hasOwnProperty,_8e=gJ(function(t,e,r){A8e.call(t,r)?t[r].push(e):uc(t,r,[e])}),T_=_8e});function L8e(t,e){return t>e}var UJ,VJ=F(()=>{UJ=L8e});function I8e(t,e){return t!=null&&N8e.call(t,e)}var R8e,N8e,WJ,HJ=F(()=>{R8e=Object.prototype,N8e=R8e.hasOwnProperty;WJ=I8e});function M8e(t,e){return t!=null&&q5(t,e,WJ)}var St,qJ=F(()=>{HJ();d_();St=M8e});function O8e(t){return typeof t=="string"||!Et(t)&&qn(t)&&sa(t)==D8e}var D8e,ci,rw=F(()=>{yu();On();So();D8e="[object String]";ci=O8e});function P8e(t,e){return Ts(e,function(r){return t[r]})}var YJ,XJ=F(()=>{Td();YJ=P8e});function B8e(t){return t==null?[]:YJ(t,Nr(t))}var fr,E_=F(()=>{XJ();mc();fr=B8e});function z8e(t,e,r,n){t=Jn(t)?t:fr(t),r=r&&!n?gc(r):0;var i=t.length;return r<0&&(r=F8e(i+r,0)),ci(t)?r<=i&&t.indexOf(e,r)>-1:!!i&&ig(t,e,r)>-1}var F8e,Bn,jJ=F(()=>{y5();Co();rw();ng();E_();F8e=Math.max;Bn=z8e});function G8e(t,e,r){var n=t==null?0:t.length;if(!n)return-1;var i=r==null?0:gc(r);return i<0&&(i=$8e(n+i,0)),ig(t,e,i)}var $8e,nw,KJ=F(()=>{y5();ng();$8e=Math.max;nw=G8e});function q8e(t){if(t==null)return!0;if(Jn(t)&&(Et(t)||typeof t=="string"||typeof t.splice=="function"||vl(t)||Rh(t)||ml(t)))return!t.length;var e=Qs(t);if(e==U8e||e==V8e)return!t.size;if(hc(t))return!ag(t).length;for(var r in t)if(H8e.call(t,r))return!1;return!0}var U8e,V8e,W8e,H8e,ir,iw=F(()=>{b5();Sd();Vp();On();Co();Hp();Up();Fv();U8e="[object Map]",V8e="[object Set]",W8e=Object.prototype,H8e=W8e.hasOwnProperty;ir=q8e});function X8e(t){return qn(t)&&sa(t)==Y8e}var Y8e,ZJ,QJ=F(()=>{yu();So();Y8e="[object RegExp]";ZJ=X8e});var JJ,j8e,Io,eee=F(()=>{QJ();gd();Bv();JJ=_o&&_o.isRegExp,j8e=JJ?Ao(JJ):ZJ,Io=j8e});function K8e(t){return t===void 0}var ar,tee=F(()=>{ar=K8e});function Z8e(t,e){return t{aw=Z8e});function Q8e(t,e){var r={};return e=on(e,3),gg(t,function(n,i,a){uc(r,i,e(n,i,a))}),r}var Cd,ree=F(()=>{Bp();j5();Xa();Cd=Q8e});function J8e(t,e,r){for(var n=-1,i=t.length;++n{kd();yg=J8e});function eAe(t){return t&&t.length?yg(t,qi,UJ):void 0}var Ss,nee=F(()=>{sw();VJ();wu();Ss=eAe});function tAe(t){return t&&t.length?yg(t,qi,aw):void 0}var xl,C_=F(()=>{sw();S_();wu();xl=tAe});function rAe(t,e){return t&&t.length?yg(t,on(e,2),aw):void 0}var Ad,iee=F(()=>{sw();Xa();S_();Ad=rAe});function iAe(t){if(typeof t!="function")throw new TypeError(nAe);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}var nAe,aee,see=F(()=>{nAe="Expected a function";aee=iAe});function aAe(t,e,r,n){if(!dn(t))return t;e=Bh(e,t);for(var i=-1,a=e.length,s=a-1,o=t;o!=null&&++i{qp();ny();$v();qs();og();oee=aAe});function sAe(t,e,r){for(var n=-1,i=e.length,a={};++n{iy();lee();ny();ow=sAe});function oAe(t,e){if(t==null)return{};var r=Ts(N5(t),function(n){return[n]});return e=on(e),ow(t,r,function(n,i){return e(n,i[0])})}var Cs,cee=F(()=>{Td();Xa();A_();r_();Cs=oAe});function lAe(t,e){var r=t.length;for(t.sort(e);r--;)t[r]=t[r].value;return t}var uee,hee=F(()=>{uee=lAe});function cAe(t,e){if(t!==e){var r=t!==void 0,n=t===null,i=t===t,a=Zs(t),s=e!==void 0,o=e===null,l=e===e,u=Zs(e);if(!o&&!u&&!a&&t>e||a&&s&&l&&!o&&!u||n&&s&&l||!r&&l||!i)return 1;if(!n&&!a&&!u&&t{kd();fee=cAe});function uAe(t,e,r){for(var n=-1,i=t.criteria,a=e.criteria,s=i.length,o=r.length;++n=o)return l;var u=r[n];return l*(u=="desc"?-1:1)}}return t.index-e.index}var pee,gee=F(()=>{dee();pee=uAe});function hAe(t,e,r){e.length?e=Ts(e,function(a){return Et(a)?function(s){return Fh(s,a.length===1?a[0]:a)}:a}):e=[qi];var n=-1;e=Ts(e,Ao(on));var i=tw(t,function(a,s,o){var l=Ts(e,function(u){return u(a)});return{criteria:l,index:++n,value:a}});return uee(i,function(a,s){return pee(a,s,r)})}var mee,vee=F(()=>{Td();iy();Xa();x_();hee();gd();gee();wu();On();mee=hAe});var fAe,yee,xee=F(()=>{g_();fAe=X5("length"),yee=fAe});function EAe(t){for(var e=bee.lastIndex=0;bee.test(t);)++e;return e}var wee,dAe,pAe,gAe,mAe,vAe,yAe,__,L_,xAe,kee,Tee,Eee,bAe,See,Cee,wAe,kAe,TAe,bee,Aee,_ee=F(()=>{wee="\\ud800-\\udfff",dAe="\\u0300-\\u036f",pAe="\\ufe20-\\ufe2f",gAe="\\u20d0-\\u20ff",mAe=dAe+pAe+gAe,vAe="\\ufe0e\\ufe0f",yAe="["+wee+"]",__="["+mAe+"]",L_="\\ud83c[\\udffb-\\udfff]",xAe="(?:"+__+"|"+L_+")",kee="[^"+wee+"]",Tee="(?:\\ud83c[\\udde6-\\uddff]){2}",Eee="[\\ud800-\\udbff][\\udc00-\\udfff]",bAe="\\u200d",See=xAe+"?",Cee="["+vAe+"]?",wAe="(?:"+bAe+"(?:"+[kee,Tee,Eee].join("|")+")"+Cee+See+")*",kAe=Cee+See+wAe,TAe="(?:"+[kee+__+"?",__,Tee,Eee,yAe].join("|")+")",bee=RegExp(L_+"(?="+L_+")|"+TAe+kAe,"g");Aee=EAe});function SAe(t){return zZ(t)?Aee(t):yee(t)}var Lee,Ree=F(()=>{xee();$Z();_ee();Lee=SAe});function CAe(t,e){return ow(t,e,function(r,n){return Y5(t,n)})}var Nee,Iee=F(()=>{A_();p_();Nee=CAe});var AAe,_d,Mee=F(()=>{Iee();FZ();AAe=BZ(function(t,e){return t==null?{}:Nee(t,e)}),_d=AAe});function RAe(t,e,r,n){for(var i=-1,a=LAe(_Ae((e-t)/(r||1)),0),s=Array(a);a--;)s[n?a:++i]=t,t+=r;return s}var _Ae,LAe,Dee,Oee=F(()=>{_Ae=Math.ceil,LAe=Math.max;Dee=RAe});function NAe(t){return function(e,r,n){return n&&typeof n!="number"&&Ys(e,r,n)&&(r=n=void 0),e=rg(e),r===void 0?(r=e,e=0):r=rg(r),n=n===void 0?e{Oee();vd();HA();Pee=NAe});var IAe,Mo,Fee=F(()=>{Bee();IAe=Pee(),Mo=IAe});function MAe(t,e,r,n,i){return i(t,function(a,s,o){r=n?(n=!1,a):e(r,a,s,o)}),r}var zee,$ee=F(()=>{zee=MAe});function DAe(t,e,r){var n=Et(t)?GZ:zee,i=arguments.length<3;return n(t,on(e,4),r,i,Es)}var zr,R_=F(()=>{UZ();$h();Xa();$ee();On();zr=DAe});function OAe(t,e){var r=Et(t)?ug:ew;return r(t,aee(on(e,3)))}var Vh,Gee=F(()=>{C5();v_();Xa();On();see();Vh=OAe});function FAe(t){if(t==null)return 0;if(Jn(t))return ci(t)?Lee(t):t.length;var e=Qs(t);return e==PAe||e==BAe?t.size:ag(t).length}var PAe,BAe,N_,Uee=F(()=>{b5();Sd();Co();rw();Ree();PAe="[object Map]",BAe="[object Set]";N_=FAe});function zAe(t,e){var r;return Es(t,function(n,i,a){return r=e(n,i,a),!r}),!!r}var Vee,Wee=F(()=>{$h();Vee=zAe});function $Ae(t,e,r){var n=Et(t)?F5:Vee;return r&&Ys(t,e,r)&&(e=void 0),n(t,on(e,3))}var sy,Hee=F(()=>{o_();Xa();Wee();On();vd();sy=$Ae});var GAe,bc,qee=F(()=>{cg();vee();Yp();vd();GAe=dc(function(t,e){if(t==null)return[];var r=e.length;return r>1&&Ys(t,e[0],e[1])?e=[]:r>2&&Ys(e[0],e[1],e[2])&&(e=[e[0]]),mee(t,yc(e,1),[])}),bc=GAe});var UAe,VAe,Yee,Xee=F(()=>{n_();qA();G5();UAe=1/0,VAe=zh&&1/pg(new zh([,-0]))[1]==UAe?function(t){return new zh(t)}:Yn,Yee=VAe});function HAe(t,e,r){var n=-1,i=x5,a=t.length,s=!0,o=[],l=o;if(r)s=!1,i=Z5;else if(a>=WAe){var u=e?null:Yee(t);if(u)return pg(u);s=!1,i=dg,l=new fg}else l=e?[]:o;e:for(;++n{B5();jA();m_();z5();Xee();G5();WAe=200;xg=HAe});var qAe,I_,jee=F(()=>{cg();Yp();lw();D3();qAe=dc(function(t){return xg(yc(t,1,pd,!0))}),I_=qAe});function YAe(t){return t&&t.length?xg(t):[]}var bg,Kee=F(()=>{lw();bg=YAe});function XAe(t,e){return t&&t.length?xg(t,on(e,2)):[]}var Zee,Qee=F(()=>{Xa();lw();Zee=XAe});function KAe(t){var e=++jAe;return k5(t)+e}var jAe,Ld,Jee=F(()=>{KA();jAe=0;Ld=KAe});function ZAe(t,e,r){for(var n=-1,i=t.length,a=e.length,s={};++n{ete=ZAe});function QAe(t,e){return ete(t||[],e||[],fc)}var cw,rte=F(()=>{qp();tte();cw=QAe});var Ot=F(()=>{CZ();a_();RQ();NQ();eA();xJ();kJ();EJ();SJ();CJ();NJ();y_();PJ();FJ();b_();E5();J5();zJ();$J();GJ();qJ();wu();jJ();KJ();On();iw();Lv();qs();eee();rw();tee();mc();TJ();vg();ree();nee();nA();C_();iee();qA();vJ();Mee();cee();Fee();R_();Gee();Uee();Hee();qee();jee();Kee();Jee();E_();rte();});function ite(t,e){t[e]?t[e]++:t[e]=1}function ate(t,e){--t[e]||delete t[e]}function oy(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}return i+nte+a+nte+(ar(n)?JAe:n)}function e_e(t,e,r,n){var i=""+e,a=""+r;if(!t&&i>a){var s=i;i=a,a=s}var o={v:i,w:a};return n&&(o.name=n),o}function M_(t,e){return oy(t,e.v,e.w,e.name)}var JAe,Rd,nte,Sr,uw=F(()=>{Ot();JAe="\0",Rd="\0",nte="",Sr=class{constructor(e={}){this._isDirected=Object.prototype.hasOwnProperty.call(e,"directed")?e.directed:!0,this._isMultigraph=Object.prototype.hasOwnProperty.call(e,"multigraph")?e.multigraph:!1,this._isCompound=Object.prototype.hasOwnProperty.call(e,"compound")?e.compound:!1,this._label=void 0,this._defaultNodeLabelFn=xs(void 0),this._defaultEdgeLabelFn=xs(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[Rd]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return gi(e)||(e=xs(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return Nr(this._nodes)}sources(){var e=this;return Fr(this.nodes(),function(r){return ir(e._in[r])})}sinks(){var e=this;return Fr(this.nodes(),function(r){return ir(e._out[r])})}setNodes(e,r){var n=arguments,i=this;return Te(e,function(a){n.length>1?i.setNode(a,r):i.setNode(a)}),this}setNode(e,r){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=r),this):(this._nodes[e]=arguments.length>1?r:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=Rd,this._children[e]={},this._children[Rd][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var r=n=>this.removeEdge(this._edgeObjs[n]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],Te(this.children(e),n=>{this.setParent(n)}),delete this._children[e]),Te(Nr(this._in[e]),r),delete this._in[e],delete this._preds[e],Te(Nr(this._out[e]),r),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,r){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(ar(r))r=Rd;else{r+="";for(var n=r;!ar(n);n=this.parent(n))if(n===e)throw new Error("Setting "+r+" as parent of "+e+" would create a cycle");this.setNode(r)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=r,this._children[r][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var r=this._parent[e];if(r!==Rd)return r}}children(e){if(ar(e)&&(e=Rd),this._isCompound){var r=this._children[e];if(r)return Nr(r)}else{if(e===Rd)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var r=this._preds[e];if(r)return Nr(r)}successors(e){var r=this._sucs[e];if(r)return Nr(r)}neighbors(e){var r=this.predecessors(e);if(r)return I_(r,this.successors(e))}isLeaf(e){var r;return this.isDirected()?r=this.successors(e):r=this.neighbors(e),r.length===0}filterNodes(e){var r=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});r.setGraph(this.graph());var n=this;Te(this._nodes,function(s,o){e(o)&&r.setNode(o,s)}),Te(this._edgeObjs,function(s){r.hasNode(s.v)&&r.hasNode(s.w)&&r.setEdge(s,n.edge(s))});var i={};function a(s){var o=n.parent(s);return o===void 0||r.hasNode(o)?(i[s]=o,o):o in i?i[o]:a(o)}return this._isCompound&&Te(r.nodes(),function(s){r.setParent(s,a(s))}),r}setDefaultEdgeLabel(e){return gi(e)||(e=xs(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return fr(this._edgeObjs)}setPath(e,r){var n=this,i=arguments;return zr(e,function(a,s){return i.length>1?n.setEdge(a,s,r):n.setEdge(a,s),s}),this}setEdge(){var e,r,n,i,a=!1,s=arguments[0];typeof s=="object"&&s!==null&&"v"in s?(e=s.v,r=s.w,n=s.name,arguments.length===2&&(i=arguments[1],a=!0)):(e=s,r=arguments[1],n=arguments[3],arguments.length>2&&(i=arguments[2],a=!0)),e=""+e,r=""+r,ar(n)||(n=""+n);var o=oy(this._isDirected,e,r,n);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,o))return a&&(this._edgeLabels[o]=i),this;if(!ar(n)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(r),this._edgeLabels[o]=a?i:this._defaultEdgeLabelFn(e,r,n);var l=e_e(this._isDirected,e,r,n);return e=l.v,r=l.w,Object.freeze(l),this._edgeObjs[o]=l,ite(this._preds[r],e),ite(this._sucs[e],r),this._in[r][o]=l,this._out[e][o]=l,this._edgeCount++,this}edge(e,r,n){var i=arguments.length===1?M_(this._isDirected,arguments[0]):oy(this._isDirected,e,r,n);return this._edgeLabels[i]}hasEdge(e,r,n){var i=arguments.length===1?M_(this._isDirected,arguments[0]):oy(this._isDirected,e,r,n);return Object.prototype.hasOwnProperty.call(this._edgeLabels,i)}removeEdge(e,r,n){var i=arguments.length===1?M_(this._isDirected,arguments[0]):oy(this._isDirected,e,r,n),a=this._edgeObjs[i];return a&&(e=a.v,r=a.w,delete this._edgeLabels[i],delete this._edgeObjs[i],ate(this._preds[r],e),ate(this._sucs[e],r),delete this._in[r][i],delete this._out[e][i],this._edgeCount--),this}inEdges(e,r){var n=this._in[e];if(n){var i=fr(n);return r?Fr(i,function(a){return a.v===r}):i}}outEdges(e,r){var n=this._out[e];if(n){var i=fr(n);return r?Fr(i,function(a){return a.w===r}):i}}nodeEdges(e,r){var n=this.inEdges(e,r);if(n)return n.concat(this.outEdges(e,r))}};Sr.prototype._nodeCount=0;Sr.prototype._edgeCount=0});var As=F(()=>{uw()});function ste(t){t._prev._next=t._next,t._next._prev=t._prev,delete t._next,delete t._prev}function t_e(t,e){if(t!=="_next"&&t!=="_prev")return e}var hw,ote=F(()=>{hw=class{constructor(){var e={};e._next=e._prev=e,this._sentinel=e}dequeue(){var e=this._sentinel,r=e._prev;if(r!==e)return ste(r),r}enqueue(e){var r=this._sentinel;e._prev&&e._next&&ste(e),e._next=r._next,r._next._prev=e,r._next=e,e._prev=r}toString(){for(var e=[],r=this._sentinel,n=r._prev;n!==r;)e.push(JSON.stringify(n,t_e)),n=n._prev;return"["+e.join(", ")+"]"}}});function lte(t,e){if(t.nodeCount()<=1)return[];var r=i_e(t,e||r_e),n=n_e(r.graph,r.buckets,r.zeroIdx);return Br(je(n,function(i){return t.outEdges(i.v,i.w)}))}function n_e(t,e,r){for(var n=[],i=e[e.length-1],a=e[0],s;t.nodeCount();){for(;s=a.dequeue();)D_(t,e,r,s);for(;s=i.dequeue();)D_(t,e,r,s);if(t.nodeCount()){for(var o=e.length-2;o>0;--o)if(s=e[o].dequeue(),s){n=n.concat(D_(t,e,r,s,!0));break}}}return n}function D_(t,e,r,n,i){var a=i?[]:void 0;return Te(t.inEdges(n.v),function(s){var o=t.edge(s),l=t.node(s.v);i&&a.push({v:s.v,w:s.w}),l.out-=o,O_(e,r,l)}),Te(t.outEdges(n.v),function(s){var o=t.edge(s),l=s.w,u=t.node(l);u.in-=o,O_(e,r,u)}),t.removeNode(n.v),a}function i_e(t,e){var r=new Sr,n=0,i=0;Te(t.nodes(),function(o){r.setNode(o,{v:o,in:0,out:0})}),Te(t.edges(),function(o){var l=r.edge(o.v,o.w)||0,u=e(o),h=l+u;r.setEdge(o.v,o.w,h),i=Math.max(i,r.node(o.v).out+=u),n=Math.max(n,r.node(o.w).in+=u)});var a=Mo(i+n+3).map(function(){return new hw}),s=n+1;return Te(r.nodes(),function(o){O_(a,s,r.node(o))}),{graph:r,buckets:a,zeroIdx:s}}function O_(t,e,r){r.out?r.in?t[r.out-r.in+e].enqueue(r):t[t.length-1].enqueue(r):t[0].enqueue(r)}var r_e,cte=F(()=>{Ot();As();ote();r_e=xs(1)});function ute(t){var e=t.graph().acyclicer==="greedy"?lte(t,r(t)):a_e(t);Te(e,function(n){var i=t.edge(n);t.removeEdge(n),i.forwardName=n.name,i.reversed=!0,t.setEdge(n.w,n.v,i,Ld("rev"))});function r(n){return function(i){return n.edge(i).weight}}}function a_e(t){var e=[],r={},n={};function i(a){Object.prototype.hasOwnProperty.call(n,a)||(n[a]=!0,r[a]=!0,Te(t.outEdges(a),function(s){Object.prototype.hasOwnProperty.call(r,s.w)?e.push(s):i(s.w)}),delete r[a])}return Te(t.nodes(),i),e}function hte(t){Te(t.edges(),function(e){var r=t.edge(e);if(r.reversed){t.removeEdge(e);var n=r.forwardName;delete r.reversed,delete r.forwardName,t.setEdge(e.w,e.v,r,n)}})}var P_=F(()=>{Ot();cte()});function wc(t,e,r,n){var i;do i=Ld(n);while(t.hasNode(i));return r.dummy=e,t.setNode(i,r),i}function dte(t){var e=new Sr().setGraph(t.graph());return Te(t.nodes(),function(r){e.setNode(r,t.node(r))}),Te(t.edges(),function(r){var n=e.edge(r.v,r.w)||{weight:0,minlen:1},i=t.edge(r);e.setEdge(r.v,r.w,{weight:n.weight+i.weight,minlen:Math.max(n.minlen,i.minlen)})}),e}function fw(t){var e=new Sr({multigraph:t.isMultigraph()}).setGraph(t.graph());return Te(t.nodes(),function(r){t.children(r).length||e.setNode(r,t.node(r))}),Te(t.edges(),function(r){e.setEdge(r,t.edge(r))}),e}function B_(t,e){var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,o=t.height/2;if(!i&&!a)throw new Error("Not possible to find intersection inside of the rectangle");var l,u;return Math.abs(a)*s>Math.abs(i)*o?(a<0&&(o=-o),l=o*i/a,u=o):(i<0&&(s=-s),l=s,u=s*a/i),{x:r+l,y:n+u}}function Wh(t){var e=je(Mo(z_(t)+1),function(){return[]});return Te(t.nodes(),function(r){var n=t.node(r),i=n.rank;ar(i)||(e[i][n.order]=r)}),e}function pte(t){var e=xl(je(t.nodes(),function(r){return t.node(r).rank}));Te(t.nodes(),function(r){var n=t.node(r);St(n,"rank")&&(n.rank-=e)})}function gte(t){var e=xl(je(t.nodes(),function(a){return t.node(a).rank})),r=[];Te(t.nodes(),function(a){var s=t.node(a).rank-e;r[s]||(r[s]=[]),r[s].push(a)});var n=0,i=t.graph().nodeRankFactor;Te(r,function(a,s){ar(a)&&s%i!==0?--n:n&&Te(a,function(o){t.node(o).rank+=n})})}function F_(t,e,r,n){var i={width:0,height:0};return arguments.length>=4&&(i.rank=r,i.order=n),wc(t,"border",i,e)}function z_(t){return Ss(je(t.nodes(),function(e){var r=t.node(e).rank;if(!ar(r))return r}))}function mte(t,e){var r={lhs:[],rhs:[]};return Te(t,function(n){e(n)?r.lhs.push(n):r.rhs.push(n)}),r}function vte(t,e){var r=K5();try{return e()}finally{console.log(t+" time: "+(K5()-r)+"ms")}}function yte(t,e){return e()}var kc=F(()=>{Ot();As()});function bte(t){function e(r){var n=t.children(r),i=t.node(r);if(n.length&&Te(n,e),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var a=i.minRank,s=i.maxRank+1;a{Ot();kc()});function Tte(t){var e=t.graph().rankdir.toLowerCase();(e==="lr"||e==="rl")&&Ste(t)}function Ete(t){var e=t.graph().rankdir.toLowerCase();(e==="bt"||e==="rl")&&s_e(t),(e==="lr"||e==="rl")&&(o_e(t),Ste(t))}function Ste(t){Te(t.nodes(),function(e){kte(t.node(e))}),Te(t.edges(),function(e){kte(t.edge(e))})}function kte(t){var e=t.width;t.width=t.height,t.height=e}function s_e(t){Te(t.nodes(),function(e){$_(t.node(e))}),Te(t.edges(),function(e){var r=t.edge(e);Te(r.points,$_),Object.prototype.hasOwnProperty.call(r,"y")&&$_(r)})}function $_(t){t.y=-t.y}function o_e(t){Te(t.nodes(),function(e){G_(t.node(e))}),Te(t.edges(),function(e){var r=t.edge(e);Te(r.points,G_),Object.prototype.hasOwnProperty.call(r,"x")&&G_(r)})}function G_(t){var e=t.x;t.x=t.y,t.y=e}var Cte=F(()=>{Ot()});function Ate(t){t.graph().dummyChains=[],Te(t.edges(),function(e){c_e(t,e)})}function c_e(t,e){var r=e.v,n=t.node(r).rank,i=e.w,a=t.node(i).rank,s=e.name,o=t.edge(e),l=o.labelRank;if(a!==n+1){t.removeEdge(e);var u=void 0,h,f;for(f=0,++n;n{Ot();kc()});function ly(t){var e={};function r(n){var i=t.node(n);if(Object.prototype.hasOwnProperty.call(e,n))return i.rank;e[n]=!0;var a=xl(je(t.outEdges(n),function(s){return r(s.w)-t.edge(s).minlen}));return(a===Number.POSITIVE_INFINITY||a===void 0||a===null)&&(a=0),i.rank=a}Te(t.sources(),r)}function Nd(t,e){return t.node(e.w).rank-t.node(e.v).rank-t.edge(e).minlen}var dw=F(()=>{Ot()});function pw(t){var e=new Sr({directed:!1}),r=t.nodes()[0],n=t.nodeCount();e.setNode(r,{});for(var i,a;u_e(e,t){Ot();As();dw()});var Rte=F(()=>{});var W_=F(()=>{});var kSt,H_=F(()=>{Ot();W_();kSt=xs(1)});var Nte=F(()=>{H_()});var q_=F(()=>{});var Ite=F(()=>{q_()});var LSt,Mte=F(()=>{Ot();LSt=xs(1)});function Y_(t){var e={},r={},n=[];function i(a){if(Object.prototype.hasOwnProperty.call(r,a))throw new cy;Object.prototype.hasOwnProperty.call(e,a)||(r[a]=!0,e[a]=!0,Te(t.predecessors(a),i),delete r[a],n.push(a))}if(Te(t.sinks(),i),N_(e)!==t.nodeCount())throw new cy;return n}function cy(){}var X_=F(()=>{Ot();Y_.CycleException=cy;cy.prototype=new Error});var Dte=F(()=>{X_()});function gw(t,e,r){Et(e)||(e=[e]);var n=(t.isDirected()?t.successors:t.neighbors).bind(t),i=[],a={};return Te(e,function(s){if(!t.hasNode(s))throw new Error("Graph does not have node: "+s);Ote(t,s,r==="post",a,n,i)}),i}function Ote(t,e,r,n,i,a){Object.prototype.hasOwnProperty.call(n,e)||(n[e]=!0,r||a.push(e),Te(i(e),function(s){Ote(t,s,r,n,i,a)}),r&&a.push(e))}var j_=F(()=>{Ot()});function K_(t,e){return gw(t,e,"post")}var Pte=F(()=>{j_()});function Z_(t,e){return gw(t,e,"pre")}var Bte=F(()=>{j_()});var Fte=F(()=>{W_();uw()});var zte=F(()=>{Rte();H_();Nte();Ite();Mte();Dte();Pte();Bte();Fte();q_();X_()});function qh(t){t=dte(t),ly(t);var e=pw(t);J_(e),Q_(e,t);for(var r,n;r=Vte(e);)n=Wte(e,t,r),Hte(e,t,r,n)}function Q_(t,e){var r=K_(t,t.nodes());r=r.slice(0,r.length-1),Te(r,function(n){v_e(t,e,n)})}function v_e(t,e,r){var n=t.node(r),i=n.parent;t.edge(r,i).cutvalue=Gte(t,e,r)}function Gte(t,e,r){var n=t.node(r),i=n.parent,a=!0,s=e.edge(r,i),o=0;return s||(a=!1,s=e.edge(i,r)),o=s.weight,Te(e.nodeEdges(r),function(l){var u=l.v===r,h=u?l.w:l.v;if(h!==i){var f=u===a,d=e.edge(l).weight;if(o+=f?d:-d,x_e(t,r,h)){var p=t.edge(r,h).cutvalue;o+=f?-p:p}}}),o}function J_(t,e){arguments.length<2&&(e=t.nodes()[0]),Ute(t,{},1,e)}function Ute(t,e,r,n,i){var a=r,s=t.node(n);return e[n]=!0,Te(t.neighbors(n),function(o){Object.prototype.hasOwnProperty.call(e,o)||(r=Ute(t,e,r,o,n))}),s.low=a,s.lim=r++,i?s.parent=i:delete s.parent,r}function Vte(t){return ja(t.edges(),function(e){return t.edge(e).cutvalue<0})}function Wte(t,e,r){var n=r.v,i=r.w;e.hasEdge(n,i)||(n=r.w,i=r.v);var a=t.node(n),s=t.node(i),o=a,l=!1;a.lim>s.lim&&(o=s,l=!0);var u=Fr(e.edges(),function(h){return l===$te(t,t.node(h.v),o)&&l!==$te(t,t.node(h.w),o)});return Ad(u,function(h){return Nd(e,h)})}function Hte(t,e,r,n){var i=r.v,a=r.w;t.removeEdge(i,a),t.setEdge(n.v,n.w,{}),J_(t),Q_(t,e),y_e(t,e)}function y_e(t,e){var r=ja(t.nodes(),function(i){return!e.node(i).parent}),n=Z_(t,r);n=n.slice(1),Te(n,function(i){var a=t.node(i).parent,s=e.edge(i,a),o=!1;s||(s=e.edge(a,i),o=!0),e.node(i).rank=e.node(a).rank+(o?s.minlen:-s.minlen)})}function x_e(t,e,r){return t.hasEdge(e,r)}function $te(t,e,r){return r.low<=e.lim&&e.lim<=r.lim}var qte=F(()=>{Ot();zte();kc();V_();dw();qh.initLowLimValues=J_;qh.initCutValues=Q_;qh.calcCutValue=Gte;qh.leaveEdge=Vte;qh.enterEdge=Wte;qh.exchangeEdges=Hte});function e9(t){switch(t.graph().ranker){case"network-simplex":Yte(t);break;case"tight-tree":w_e(t);break;case"longest-path":b_e(t);break;default:Yte(t)}}function w_e(t){ly(t),pw(t)}function Yte(t){qh(t)}var b_e,t9=F(()=>{V_();qte();dw();b_e=ly});function Xte(t){var e=wc(t,"root",{},"_root"),r=k_e(t),n=Ss(fr(r))-1,i=2*n+1;t.graph().nestingRoot=e,Te(t.edges(),function(s){t.edge(s).minlen*=i});var a=T_e(t)+1;Te(t.children(),function(s){jte(t,e,i,a,n,r,s)}),t.graph().nodeRankFactor=i}function jte(t,e,r,n,i,a,s){var o=t.children(s);if(!o.length){s!==e&&t.setEdge(e,s,{weight:0,minlen:r});return}var l=F_(t,"_bt"),u=F_(t,"_bb"),h=t.node(s);t.setParent(l,s),h.borderTop=l,t.setParent(u,s),h.borderBottom=u,Te(o,function(f){jte(t,e,r,n,i,a,f);var d=t.node(f),p=d.borderTop?d.borderTop:f,g=d.borderBottom?d.borderBottom:f,m=d.borderTop?n:2*n,y=p!==g?1:i-a[s]+1;t.setEdge(l,p,{weight:m,minlen:y,nestingEdge:!0}),t.setEdge(g,u,{weight:m,minlen:y,nestingEdge:!0})}),t.parent(s)||t.setEdge(e,l,{weight:0,minlen:i+a[s]})}function k_e(t){var e={};function r(n,i){var a=t.children(n);a&&a.length&&Te(a,function(s){r(s,i+1)}),e[n]=i}return Te(t.children(),function(n){r(n,1)}),e}function T_e(t){return zr(t.edges(),function(e,r){return e+t.edge(r).weight},0)}function Kte(t){var e=t.graph();t.removeNode(e.nestingRoot),delete e.nestingRoot,Te(t.edges(),function(r){var n=t.edge(r);n.nestingEdge&&t.removeEdge(r)})}var Zte=F(()=>{Ot();kc()});function Qte(t,e,r){var n={},i;Te(r,function(a){for(var s=t.parent(a),o,l;s;){if(o=t.parent(s),o?(l=n[o],n[o]=s):(l=i,i=s),l&&l!==s){e.setEdge(l,s);return}s=o}})}var Jte=F(()=>{Ot()});function ere(t,e,r){var n=S_e(t),i=new Sr({compound:!0}).setGraph({root:n}).setDefaultNodeLabel(function(a){return t.node(a)});return Te(t.nodes(),function(a){var s=t.node(a),o=t.parent(a);(s.rank===e||s.minRank<=e&&e<=s.maxRank)&&(i.setNode(a),i.setParent(a,o||n),Te(t[r](a),function(l){var u=l.v===a?l.w:l.v,h=i.edge(u,a),f=ar(h)?0:h.weight;i.setEdge(u,a,{weight:t.edge(l).weight+f})}),Object.prototype.hasOwnProperty.call(s,"minRank")&&i.setNode(a,{borderLeft:s.borderLeft[e],borderRight:s.borderRight[e]}))}),i}function S_e(t){for(var e;t.hasNode(e=Ld("_root")););return e}var tre=F(()=>{Ot();As()});function rre(t,e){for(var r=0,n=1;n0;)h%2&&(f+=o[h+1]),h=h-1>>1,o[h]+=u.weight;l+=u.weight*f})),l}var nre=F(()=>{Ot()});function ire(t){var e={},r=Fr(t.nodes(),function(o){return!t.children(o).length}),n=Ss(je(r,function(o){return t.node(o).rank})),i=je(Mo(n+1),function(){return[]});function a(o){if(!St(e,o)){e[o]=!0;var l=t.node(o);i[l.rank].push(o),Te(t.successors(o),a)}}var s=bc(r,function(o){return t.node(o).rank});return Te(s,a),i}var are=F(()=>{Ot()});function sre(t,e){return je(e,function(r){var n=t.inEdges(r);if(n.length){var i=zr(n,function(a,s){var o=t.edge(s),l=t.node(s.v);return{sum:a.sum+o.weight*l.order,weight:a.weight+o.weight}},{sum:0,weight:0});return{v:r,barycenter:i.sum/i.weight,weight:i.weight}}else return{v:r}})}var ore=F(()=>{Ot()});function lre(t,e){var r={};Te(t,function(i,a){var s=r[i.v]={indegree:0,in:[],out:[],vs:[i.v],i:a};ar(i.barycenter)||(s.barycenter=i.barycenter,s.weight=i.weight)}),Te(e.edges(),function(i){var a=r[i.v],s=r[i.w];!ar(a)&&!ar(s)&&(s.indegree++,a.out.push(r[i.w]))});var n=Fr(r,function(i){return!i.indegree});return A_e(n)}function A_e(t){var e=[];function r(a){return function(s){s.merged||(ar(s.barycenter)||ar(a.barycenter)||s.barycenter>=a.barycenter)&&__e(a,s)}}function n(a){return function(s){s.in.push(a),--s.indegree===0&&t.push(s)}}for(;t.length;){var i=t.pop();e.push(i),Te(i.in.reverse(),r(i)),Te(i.out,n(i))}return je(Fr(e,function(a){return!a.merged}),function(a){return _d(a,["vs","i","barycenter","weight"])})}function __e(t,e){var r=0,n=0;t.weight&&(r+=t.barycenter*t.weight,n+=t.weight),e.weight&&(r+=e.barycenter*e.weight,n+=e.weight),t.vs=e.vs.concat(t.vs),t.barycenter=r/n,t.weight=n,t.i=Math.min(e.i,t.i),e.merged=!0}var cre=F(()=>{Ot()});function hre(t,e){var r=mte(t,function(h){return Object.prototype.hasOwnProperty.call(h,"barycenter")}),n=r.lhs,i=bc(r.rhs,function(h){return-h.i}),a=[],s=0,o=0,l=0;n.sort(L_e(!!e)),l=ure(a,i,l),Te(n,function(h){l+=h.vs.length,a.push(h.vs),s+=h.barycenter*h.weight,o+=h.weight,l=ure(a,i,l)});var u={vs:Br(a)};return o&&(u.barycenter=s/o,u.weight=o),u}function ure(t,e,r){for(var n;e.length&&(n=ha(e)).i<=r;)e.pop(),t.push(n.vs),r++;return r}function L_e(t){return function(e,r){return e.barycenterr.barycenter?1:t?r.i-e.i:e.i-r.i}}var fre=F(()=>{Ot();kc()});function r9(t,e,r,n){var i=t.children(e),a=t.node(e),s=a?a.borderLeft:void 0,o=a?a.borderRight:void 0,l={};s&&(i=Fr(i,function(g){return g!==s&&g!==o}));var u=sre(t,i);Te(u,function(g){if(t.children(g.v).length){var m=r9(t,g.v,r,n);l[g.v]=m,Object.prototype.hasOwnProperty.call(m,"barycenter")&&N_e(g,m)}});var h=lre(u,r);R_e(h,l);var f=hre(h,n);if(s&&(f.vs=Br([s,f.vs,o]),t.predecessors(s).length)){var d=t.node(t.predecessors(s)[0]),p=t.node(t.predecessors(o)[0]);Object.prototype.hasOwnProperty.call(f,"barycenter")||(f.barycenter=0,f.weight=0),f.barycenter=(f.barycenter*f.weight+d.order+p.order)/(f.weight+2),f.weight+=2}return f}function R_e(t,e){Te(t,function(r){r.vs=Br(r.vs.map(function(n){return e[n]?e[n].vs:n}))})}function N_e(t,e){ar(t.barycenter)?(t.barycenter=e.barycenter,t.weight=e.weight):(t.barycenter=(t.barycenter*t.weight+e.barycenter*e.weight)/(t.weight+e.weight),t.weight+=e.weight)}var dre=F(()=>{Ot();ore();cre();fre()});function mre(t){var e=z_(t),r=pre(t,Mo(1,e+1),"inEdges"),n=pre(t,Mo(e-1,-1,-1),"outEdges"),i=ire(t);gre(t,i);for(var a=Number.POSITIVE_INFINITY,s,o=0,l=0;l<4;++o,++l){I_e(o%2?r:n,o%4>=2),i=Wh(t);var u=rre(t,i);u{Ot();As();kc();Jte();tre();nre();are();dre()});function yre(t){var e=D_e(t);Te(t.graph().dummyChains,function(r){for(var n=t.node(r),i=n.edgeObj,a=M_e(t,e,i.v,i.w),s=a.path,o=a.lca,l=0,u=s[l],h=!0;r!==i.w;){if(n=t.node(r),h){for(;(u=s[l])!==o&&t.node(u).maxRanks||o>e[l].lim));for(u=l,l=n;(l=t.parent(l))!==u;)a.push(l);return{path:i.concat(a.reverse()),lca:u}}function D_e(t){var e={},r=0;function n(i){var a=r;Te(t.children(i),n),e[i]={low:a,lim:r++}}return Te(t.children(),n),e}var xre=F(()=>{Ot()});function O_e(t,e){var r={};function n(i,a){var s=0,o=0,l=i.length,u=ha(a);return Te(a,function(h,f){var d=B_e(t,h),p=d?t.node(d).order:l;(d||h===u)&&(Te(a.slice(o,f+1),function(g){Te(t.predecessors(g),function(m){var y=t.node(m),x=y.order;(xu)&&bre(r,d,h)})})}function i(a,s){var o=-1,l,u=0;return Te(s,function(h,f){if(t.node(h).dummy==="border"){var d=t.predecessors(h);d.length&&(l=t.node(d[0]).order,n(s,u,f,o,l),u=f,o=l)}n(s,u,s.length,l,a.length)}),s}return zr(e,i),r}function B_e(t,e){if(t.node(e).dummy)return ja(t.predecessors(e),function(r){return t.node(r).dummy})}function bre(t,e,r){if(e>r){var n=e;e=r,r=n}var i=t[e];i||(t[e]=i={}),i[r]=!0}function F_e(t,e,r){if(e>r){var n=e;e=r,r=n}return!!t[e]&&Object.prototype.hasOwnProperty.call(t[e],r)}function z_e(t,e,r,n){var i={},a={},s={};return Te(e,function(o){Te(o,function(l,u){i[l]=l,a[l]=l,s[l]=u})}),Te(e,function(o){var l=-1;Te(o,function(u){var h=n(u);if(h.length){h=bc(h,function(m){return s[m]});for(var f=(h.length-1)/2,d=Math.floor(f),p=Math.ceil(f);d<=p;++d){var g=h[d];a[u]===u&&l{Ot();As();kc()});function Tre(t){t=fw(t),Y_e(t),k_(wre(t),function(e,r){t.node(r).x=e})}function Y_e(t){var e=Wh(t),r=t.graph().ranksep,n=0;Te(e,function(i){var a=Ss(je(i,function(s){return t.node(s).height}));Te(i,function(s){t.node(s).y=n+a/2}),n+=a+r})}var Ere=F(()=>{Ot();kc();kre()});function Ru(t,e){var r=e&&e.debugTiming?vte:yte;r("layout",()=>{var n=r(" buildLayoutGraph",()=>i9e(t));r(" runLayout",()=>X_e(n,r)),r(" updateInputGraph",()=>j_e(t,n))})}function X_e(t,e){e(" makeSpaceForEdgeLabels",()=>a9e(t)),e(" removeSelfEdges",()=>p9e(t)),e(" acyclic",()=>ute(t)),e(" nestingGraph.run",()=>Xte(t)),e(" rank",()=>e9(fw(t))),e(" injectEdgeLabelProxies",()=>s9e(t)),e(" removeEmptyRanks",()=>gte(t)),e(" nestingGraph.cleanup",()=>Kte(t)),e(" normalizeRanks",()=>pte(t)),e(" assignRankMinMax",()=>o9e(t)),e(" removeEdgeLabelProxies",()=>l9e(t)),e(" normalize.run",()=>Ate(t)),e(" parentDummyChains",()=>yre(t)),e(" addBorderSegments",()=>bte(t)),e(" order",()=>mre(t)),e(" insertSelfEdges",()=>g9e(t)),e(" adjustCoordinateSystem",()=>Tte(t)),e(" position",()=>Tre(t)),e(" positionSelfEdges",()=>m9e(t)),e(" removeBorderNodes",()=>d9e(t)),e(" normalize.undo",()=>_te(t)),e(" fixupEdgeLabelCoords",()=>h9e(t)),e(" undoCoordinateSystem",()=>Ete(t)),e(" translateGraph",()=>c9e(t)),e(" assignNodeIntersects",()=>u9e(t)),e(" reversePoints",()=>f9e(t)),e(" acyclic.undo",()=>hte(t))}function j_e(t,e){Te(t.nodes(),function(r){var n=t.node(r),i=e.node(r);n&&(n.x=i.x,n.y=i.y,e.children(r).length&&(n.width=i.width,n.height=i.height))}),Te(t.edges(),function(r){var n=t.edge(r),i=e.edge(r);n.points=i.points,Object.prototype.hasOwnProperty.call(i,"x")&&(n.x=i.x,n.y=i.y)}),t.graph().width=e.graph().width,t.graph().height=e.graph().height}function i9e(t){var e=new Sr({multigraph:!0,compound:!0}),r=i9(t.graph());return e.setGraph(Mh({},Z_e,n9(r,K_e),_d(r,Q_e))),Te(t.nodes(),function(n){var i=i9(t.node(n));e.setNode(n,Gh(n9(i,J_e),e9e)),e.setParent(n,t.parent(n))}),Te(t.edges(),function(n){var i=i9(t.edge(n));e.setEdge(n,Mh({},r9e,n9(i,t9e),_d(i,n9e)))}),e}function a9e(t){var e=t.graph();e.ranksep/=2,Te(t.edges(),function(r){var n=t.edge(r);n.minlen*=2,n.labelpos.toLowerCase()!=="c"&&(e.rankdir==="TB"||e.rankdir==="BT"?n.width+=n.labeloffset:n.height+=n.labeloffset)})}function s9e(t){Te(t.edges(),function(e){var r=t.edge(e);if(r.width&&r.height){var n=t.node(e.v),i=t.node(e.w),a={rank:(i.rank-n.rank)/2+n.rank,e};wc(t,"edge-proxy",a,"_ep")}})}function o9e(t){var e=0;Te(t.nodes(),function(r){var n=t.node(r);n.borderTop&&(n.minRank=t.node(n.borderTop).rank,n.maxRank=t.node(n.borderBottom).rank,e=Ss(e,n.maxRank))}),t.graph().maxRank=e}function l9e(t){Te(t.nodes(),function(e){var r=t.node(e);r.dummy==="edge-proxy"&&(t.edge(r.e).labelRank=r.rank,t.removeNode(e))})}function c9e(t){var e=Number.POSITIVE_INFINITY,r=0,n=Number.POSITIVE_INFINITY,i=0,a=t.graph(),s=a.marginx||0,o=a.marginy||0;function l(u){var h=u.x,f=u.y,d=u.width,p=u.height;e=Math.min(e,h-d/2),r=Math.max(r,h+d/2),n=Math.min(n,f-p/2),i=Math.max(i,f+p/2)}Te(t.nodes(),function(u){l(t.node(u))}),Te(t.edges(),function(u){var h=t.edge(u);Object.prototype.hasOwnProperty.call(h,"x")&&l(h)}),e-=s,n-=o,Te(t.nodes(),function(u){var h=t.node(u);h.x-=e,h.y-=n}),Te(t.edges(),function(u){var h=t.edge(u);Te(h.points,function(f){f.x-=e,f.y-=n}),Object.prototype.hasOwnProperty.call(h,"x")&&(h.x-=e),Object.prototype.hasOwnProperty.call(h,"y")&&(h.y-=n)}),a.width=r-e+s,a.height=i-n+o}function u9e(t){Te(t.edges(),function(e){var r=t.edge(e),n=t.node(e.v),i=t.node(e.w),a,s;r.points?(a=r.points[0],s=r.points[r.points.length-1]):(r.points=[],a=i,s=n),r.points.unshift(B_(n,a)),r.points.push(B_(i,s))})}function h9e(t){Te(t.edges(),function(e){var r=t.edge(e);if(Object.prototype.hasOwnProperty.call(r,"x"))switch((r.labelpos==="l"||r.labelpos==="r")&&(r.width-=r.labeloffset),r.labelpos){case"l":r.x-=r.width/2+r.labeloffset;break;case"r":r.x+=r.width/2+r.labeloffset;break}})}function f9e(t){Te(t.edges(),function(e){var r=t.edge(e);r.reversed&&r.points.reverse()})}function d9e(t){Te(t.nodes(),function(e){if(t.children(e).length){var r=t.node(e),n=t.node(r.borderTop),i=t.node(r.borderBottom),a=t.node(ha(r.borderLeft)),s=t.node(ha(r.borderRight));r.width=Math.abs(s.x-a.x),r.height=Math.abs(i.y-n.y),r.x=a.x+r.width/2,r.y=n.y+r.height/2}}),Te(t.nodes(),function(e){t.node(e).dummy==="border"&&t.removeNode(e)})}function p9e(t){Te(t.edges(),function(e){if(e.v===e.w){var r=t.node(e.v);r.selfEdges||(r.selfEdges=[]),r.selfEdges.push({e,label:t.edge(e)}),t.removeEdge(e)}})}function g9e(t){var e=Wh(t);Te(e,function(r){var n=0;Te(r,function(i,a){var s=t.node(i);s.order=a+n,Te(s.selfEdges,function(o){wc(t,"selfedge",{width:o.label.width,height:o.label.height,rank:s.rank,order:a+ ++n,e:o.e,label:o.label},"_se")}),delete s.selfEdges})})}function m9e(t){Te(t.nodes(),function(e){var r=t.node(e);if(r.dummy==="selfedge"){var n=t.node(r.e.v),i=n.x+n.width/2,a=n.y,s=r.x-i,o=n.height/2;t.setEdge(r.e,r.label),t.removeNode(e),r.label.points=[{x:i+2*s/3,y:a-o},{x:i+5*s/6,y:a-o},{x:i+s,y:a},{x:i+5*s/6,y:a+o},{x:i+2*s/3,y:a+o}],r.label.x=r.x,r.label.y=r.y}})}function n9(t,e){return Cd(_d(t,e),Number)}function i9(t){var e={};return Te(t,function(r,n){e[n.toLowerCase()]=r}),e}var K_e,Z_e,Q_e,J_e,e9e,t9e,r9e,n9e,Sre=F(()=>{Ot();As();wte();Cte();P_();U_();t9();Zte();vre();xre();Ere();kc();K_e=["nodesep","edgesep","ranksep","marginx","marginy"],Z_e={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Q_e=["acyclicer","ranker","rankdir","align"],J_e=["width","height"],e9e={width:0,height:0},t9e=["minlen","weight","width","height","labeloffset"],r9e={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},n9e=["labelpos"]});var uy=F(()=>{P_();Sre();U_();t9()});function Do(t){var e={options:{directed:t.isDirected(),multigraph:t.isMultigraph(),compound:t.isCompound()},nodes:v9e(t),edges:y9e(t)};return ar(t.graph())||(e.value=jr(t.graph())),e}function v9e(t){return je(t.nodes(),function(e){var r=t.node(e),n=t.parent(e),i={v:e};return ar(r)||(i.value=r),ar(n)||(i.parent=n),i})}function y9e(t){return je(t.edges(),function(e){var r=t.edge(e),n={v:e.v,w:e.w};return ar(e.name)||(n.name=e.name),ar(r)||(n.value=r),n})}var a9=F(()=>{Ot();uw()});var Dre={};vr(Dre,{render:()=>E9e});var dr,Id,_re,x9e,mw,b9e,Lre,Rre,w9e,hy,Are,k9e,Nre,Ire,T9e,Mre,E9e,Ore=F(()=>{_u();yl();sl();pc();bo();Ya();kn();or();uy();a9();As();As();a9();dr=new Map,Id=new Map,_re=new Map,x9e=v(()=>{Id.clear(),_re.clear(),dr.clear()},"clear"),mw=v((t,e)=>{let r=Id.get(e)||[];return re.trace("In isDescendant",e," ",t," = ",r.includes(t)),r.includes(t)},"isDescendant"),b9e=v((t,e)=>{let r=Id.get(e)||[];return re.info("Descendants of ",e," is ",r),re.info("Edge is ",t),t.v===e||t.w===e?!1:r?r.includes(t.v)||mw(t.v,e)||mw(t.w,e)||r.includes(t.w):(re.debug("Tilt, ",e,",not in descendants"),!1)},"edgeInCluster"),Lre=v((t,e,r,n)=>{re.warn("Copying children of ",t,"root",n,"data",e.node(t),n);let i=e.children(t)||[];t!==n&&i.push(t),re.warn("Copying (nodes) clusterId",t,"nodes",i),i.forEach(a=>{if(e.children(a).length>0)Lre(a,e,r,n);else{let s=e.node(a);re.info("cp ",a," to ",n," with parent ",t),r.setNode(a,s),n!==e.parent(a)&&(re.warn("Setting parent",a,e.parent(a)),r.setParent(a,e.parent(a))),t!==n&&a!==t?(re.debug("Setting parent",a,t),r.setParent(a,t)):(re.info("In copy ",t,"root",n,"data",e.node(t),n),re.debug("Not Setting parent for node=",a,"cluster!==rootId",t!==n,"node!==clusterId",a!==t));let o=e.edges(a);re.debug("Copying Edges",o),o.forEach(l=>{re.info("Edge",l);let u=e.edge(l.v,l.w,l.name);re.info("Edge data",u,n);try{b9e(l,n)?(re.info("Copying as ",l.v,l.w,u,l.name),r.setEdge(l.v,l.w,u,l.name),re.info("newGraph edges ",r.edges(),r.edge(r.edges()[0]))):re.info("Skipping copy of edge ",l.v,"-->",l.w," rootId: ",n," clusterId:",t)}catch(h){re.error(h)}})}re.debug("Removing node",a),e.removeNode(a)})},"copy"),Rre=v((t,e)=>{let r=e.children(t),n=[...r];for(let i of r)_re.set(i,t),n=[...n,...Rre(i,e)];return n},"extractDescendants"),w9e=v((t,e,r)=>{let n=t.edges().filter(l=>l.v===e||l.w===e),i=t.edges().filter(l=>l.v===r||l.w===r),a=n.map(l=>({v:l.v===e?r:l.v,w:l.w===e?e:l.w})),s=i.map(l=>({v:l.v,w:l.w}));return a.filter(l=>s.some(u=>l.v===u.v&&l.w===u.w))},"findCommonEdges"),hy=v((t,e,r)=>{let n=e.children(t);if(re.trace("Searching children of id ",t,n),n.length<1)return t;let i;for(let a of n){let s=hy(a,e,r),o=w9e(e,r,s);if(s)if(o.length>0)i=s;else return s}return i},"findNonClusterChild"),Are=v(t=>!dr.has(t)||!dr.get(t).externalConnections?t:dr.has(t)?dr.get(t).id:t,"getAnchorId"),k9e=v((t,e)=>{if(!t||e>10){re.debug("Opting out, no graph ");return}else re.debug("Opting in, graph ");t.nodes().forEach(function(r){t.children(r).length>0&&(re.warn("Cluster identified",r," Replacement id in edges: ",hy(r,t,r)),Id.set(r,Rre(r,t)),dr.set(r,{id:hy(r,t,r),clusterData:t.node(r)}))}),t.nodes().forEach(function(r){let n=t.children(r),i=t.edges();n.length>0?(re.debug("Cluster identified",r,Id),i.forEach(a=>{let s=mw(a.v,r),o=mw(a.w,r);s^o&&(re.warn("Edge: ",a," leaves cluster ",r),re.warn("Descendants of XXX ",r,": ",Id.get(r)),dr.get(r).externalConnections=!0)})):re.debug("Not a cluster ",r,Id)});for(let r of dr.keys()){let n=dr.get(r).id,i=t.parent(n);i!==r&&dr.has(i)&&!dr.get(i).externalConnections&&(dr.get(r).id=i)}t.edges().forEach(function(r){let n=t.edge(r);re.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(r)),re.warn("Edge "+r.v+" -> "+r.w+": "+JSON.stringify(t.edge(r)));let i=r.v,a=r.w;if(re.warn("Fix XXX",dr,"ids:",r.v,r.w,"Translating: ",dr.get(r.v)," --- ",dr.get(r.w)),dr.get(r.v)||dr.get(r.w)){if(re.warn("Fixing and trying - removing XXX",r.v,r.w,r.name),i=Are(r.v),a=Are(r.w),t.removeEdge(r.v,r.w,r.name),i!==r.v){let s=t.parent(i);dr.get(s).externalConnections=!0,n.fromCluster=r.v}if(a!==r.w){let s=t.parent(a);dr.get(s).externalConnections=!0,n.toCluster=r.w}re.warn("Fix Replacing with XXX",i,a,r.name),t.setEdge(i,a,n,r.name)}}),re.warn("Adjusted Graph",Do(t)),Nre(t,0),re.trace(dr)},"adjustClustersAndEdges"),Nre=v((t,e)=>{if(re.warn("extractor - ",e,Do(t),t.children("D")),e>10){re.error("Bailing out");return}let r=t.nodes(),n=!1;for(let i of r){let a=t.children(i);n=n||a.length>0}if(!n){re.debug("Done, no node has children",t.nodes());return}re.debug("Nodes = ",r,e);for(let i of r)if(re.debug("Extracting node",i,dr,dr.has(i)&&!dr.get(i).externalConnections,!t.parent(i),t.node(i),t.children("D")," Depth ",e),!dr.has(i))re.debug("Not a cluster",i,e);else if(!dr.get(i).externalConnections&&t.children(i)&&t.children(i).length>0){re.warn("Cluster without external connections, without a parent and with children",i,e);let s=t.graph().rankdir==="TB"?"LR":"TB";dr.get(i)?.clusterData?.dir&&(s=dr.get(i).clusterData.dir,re.warn("Fixing dir",dr.get(i).clusterData.dir,s));let o=new Sr({multigraph:!0,compound:!0}).setGraph({rankdir:s,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});re.warn("Old graph before copy",Do(t)),Lre(i,t,o,i),t.setNode(i,{clusterNode:!0,id:i,clusterData:dr.get(i).clusterData,label:dr.get(i).label,graph:o}),re.warn("New graph after copy node: (",i,")",Do(o)),re.debug("Old graph after copy",Do(t))}else re.warn("Cluster ** ",i," **not meeting the criteria !externalConnections:",!dr.get(i).externalConnections," no parent: ",!t.parent(i)," children ",t.children(i)&&t.children(i).length>0,t.children("D"),e),re.debug(dr);r=t.nodes(),re.warn("New list of nodes",r);for(let i of r){let a=t.node(i);re.warn(" Now next level",i,a),a?.clusterNode&&Nre(a.graph,e+1)}},"extractor"),Ire=v((t,e)=>{if(e.length===0)return[];let r=Object.assign([],e);return e.forEach(n=>{let i=t.children(n),a=Ire(t,i);r=[...r,...a]}),r},"sorter"),T9e=v(t=>Ire(t,t.children()),"sortNodesByHierarchy"),Mre=v(async(t,e,r,n,i,a)=>{re.warn("Graph in recursive render:XAX",Do(e),i);let s=e.graph().rankdir;re.trace("Dir in recursive render - dir:",s);let o=t.insert("g").attr("class","root");e.nodes()?re.info("Recursive render XXX",e.nodes()):re.info("No nodes found for",e),e.edges().length>0&&re.info("Recursive edges",e.edge(e.edges()[0]));let l=o.insert("g").attr("class","clusters"),u=o.insert("g").attr("class","edgePaths"),h=o.insert("g").attr("class","edgeLabels"),f=o.insert("g").attr("class","nodes");await Promise.all(e.nodes().map(async function(m){let y=e.node(m);if(i!==void 0){let x=JSON.parse(JSON.stringify(i.clusterData));re.trace(`Setting data for parent cluster XXX Node.id = `,m,` data=`,x.height,` Parent cluster`,i.height),e.setNode(i.id,x),e.parent(m)||(re.trace("Setting parent",m,i.id),e.setParent(m,i.id,x))}if(re.info("(Insert) Node XXX"+m+": "+JSON.stringify(e.node(m))),y?.clusterNode){re.info("Cluster identified XBX",m,y.width,e.node(m));let{ranksep:x,nodesep:b}=e.graph();y.graph.setGraph({...y.graph.graph(),ranksep:x+25,nodesep:b});let w=await Mre(f,y.graph,r,n,e.node(m),a),_=w.elem;Pt(y,_),y.diff=w.diff||0,re.info("New compound node after recursive render XAX",m,"width",y.width,"height",y.height),JK(_,y)}else e.children(m).length>0?(re.trace("Cluster - the non recursive path XBX",m,y.id,y,y.width,"Graph:",e),re.trace(hy(y.id,e)),dr.set(y.id,{id:hy(y.id,e),node:y})):(re.trace("Node - the non recursive path XAX",m,f,e.node(m),s),await wd(f,e.node(m),{config:a,dir:s}))})),await v(async()=>{let m=e.edges().map(async function(y){let x=e.edge(y.v,y.w,y.name);re.info("Edge "+y.v+" -> "+y.w+": "+JSON.stringify(y)),re.info("Edge "+y.v+" -> "+y.w+": ",y," ",JSON.stringify(e.edge(y))),re.info("Fix",dr,"ids:",y.v,y.w,"Translating: ",dr.get(y.v),dr.get(y.w)),await h5(h,x)});await Promise.all(m)},"processEdges")(),re.info("Graph before layout:",JSON.stringify(Do(e))),re.info("############################################# XXX"),re.info("### Layout ### XXX"),re.info("############################################# XXX"),Ru(e),re.info("Graph after layout:",JSON.stringify(Do(e)));let p=0,{subGraphTitleTotalMargin:g}=ou(a);return await Promise.all(T9e(e).map(async function(m){let y=e.node(m);if(re.info("Position XBX => "+m+": ("+y.x,","+y.y,") width: ",y.width," height: ",y.height),y?.clusterNode)y.y+=g,re.info("A tainted cluster node XBX1",m,y.id,y.width,y.height,y.x,y.y,e.parent(m)),dr.get(y.id).node=y,Jv(y);else if(e.children(m).length>0){re.info("A pure cluster node XBX1",m,y.id,y.x,y.y,y.width,y.height,e.parent(m)),y.height+=g,e.node(y.parentId);let x=y?.padding/2||0,b=y?.labelBBox?.height||0,w=b-x||0;re.debug("OffsetY",w,"labelHeight",b,"halfPadding",x),await tg(l,y),dr.get(y.id).node=y}else{let x=e.node(y.parentId);y.y+=g/2,re.info("A regular node XBX1 - using the padding",y.id,"parent",y.parentId,y.width,y.height,y.x,y.y,"offsetY",y.offsetY,"parent",x,x?.offsetY,y),Jv(y)}})),e.edges().forEach(function(m){let y=e.edge(m);re.info("Edge "+m.v+" -> "+m.w+": "+JSON.stringify(y),y),y.points.forEach(_=>_.y+=g/2);let x=e.node(m.v);var b=e.node(m.w);let w=d5(u,y,dr,r,x,b,n);f5(y,w)}),e.nodes().forEach(function(m){let y=e.node(m);re.info(m,y.type,y.diff),y.isGroup&&(p=y.diff)}),re.warn("Returning from recursive render XAX",o,p),{elem:o,diff:p}},"recursiveRender"),E9e=v(async(t,e)=>{let r=new Sr({multigraph:!0,compound:!0}).setGraph({rankdir:t.direction,nodesep:t.config?.nodeSpacing||t.config?.flowchart?.nodeSpacing||t.nodeSpacing,ranksep:t.config?.rankSpacing||t.config?.flowchart?.rankSpacing||t.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),n=e.select("g");p5(n,t.markers,t.type,t.diagramId),eZ(),iZ(),zj(),x9e(),t.nodes.forEach(a=>{r.setNode(a.id,{...a}),a.parentId&&r.setParent(a.id,a.parentId)}),re.debug("Edges:",t.edges),t.edges.forEach(a=>{if(a.start===a.end){let s=a.start,o=s+"---"+s+"---1",l=s+"---"+s+"---2",u=r.node(s);r.setNode(o,{domId:o,id:o,parentId:u.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),r.setParent(o,u.parentId),r.setNode(l,{domId:l,id:l,parentId:u.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),r.setParent(l,u.parentId);let h=structuredClone(a),f=structuredClone(a),d=structuredClone(a);h.label="",h.arrowTypeEnd="none",h.id=s+"-cyclic-special-1",f.arrowTypeEnd="none",f.id=s+"-cyclic-special-mid",d.label="",u.isGroup&&(h.fromCluster=s,d.toCluster=s),d.id=s+"-cyclic-special-2",r.setEdge(s,o,h,s+"-cyclic-special-0"),r.setEdge(o,l,f,s+"-cyclic-special-1"),r.setEdge(l,s,d,s+"-cyc{_u();yl();kn();or();S9e={common:Xe,getConfig:Or,insertCluster:tg,insertEdge:d5,insertEdgeLabel:h5,insertMarkers:p5,insertNode:wd,interpolateToCurve:$3,labelHelper:tr,log:re,positionEdgeLabel:f5},fy={},s9=v(t=>{for(let e of t)fy[e.name]=e},"registerLayoutLoaders"),C9e=v(()=>{s9([{name:"dagre",loader:v(async()=>await Promise.resolve().then(()=>(Ore(),Dre)),"loader")}])},"registerDefaultLayoutLoaders");C9e();kg=v(async(t,e)=>{if(!(t.layoutAlgorithm in fy))throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);let r=fy[t.layoutAlgorithm];return(await r.loader()).render(t,e,S9e,{algorithm:r.algorithm})},"render"),vw=v((t="",{fallback:e="dagre"}={})=>{if(t in fy)return t;if(e in fy)return re.warn(`Layout algorithm ${t} is not registered. Using ${e} as fallback.`),e;throw new Error(`Both layout algorithms ${t} and ${e} are not registered.`)},"getRegisteredLayoutAlgorithm")});var dy,o9=F(()=>{dy="11.4.0"});var La,Iu=F(()=>{or();lr();La=v(t=>{let{securityLevel:e}=pe(),r=Ve("body");if(e==="sandbox"){let a=Ve(`#i${t}`).node()?.contentDocument??document;r=Ve(a.body)}return r.select(`#${t}`)},"selectSvgElement")});var u9,Dd,_w,ene,tne,rne,Tc,Lw,Rw=F(()=>{or();u9=Gi(hp(),1),Dd=v((t,e)=>{let r=t.append("rect");if(r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("width",e.width),r.attr("height",e.height),e.name&&r.attr("name",e.name),e.rx&&r.attr("rx",e.rx),e.ry&&r.attr("ry",e.ry),e.attrs!==void 0)for(let n in e.attrs)r.attr(n,e.attrs[n]);return e.class&&r.attr("class",e.class),r},"drawRect"),_w=v((t,e)=>{let r={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};Dd(t,r).lower()},"drawBackgroundRect"),ene=v((t,e)=>{let r=e.text.replace(zf," "),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.attr("class","legend"),n.style("text-anchor",e.anchor),e.class&&n.attr("class",e.class);let i=n.append("tspan");return i.attr("x",e.x+e.textMargin*2),i.text(r),n},"drawText"),tne=v((t,e,r,n)=>{let i=t.append("image");i.attr("x",e),i.attr("y",r);let a=(0,u9.sanitizeUrl)(n);i.attr("xlink:href",a)},"drawImage"),rne=v((t,e,r,n)=>{let i=t.append("use");i.attr("x",e),i.attr("y",r);let a=(0,u9.sanitizeUrl)(n);i.attr("xlink:href",`#${a}`)},"drawEmbeddedImage"),Tc=v(()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),"getNoteRect"),Lw=v(()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),"getTextObj")});var pne={};vr(pne,{diagram:()=>wLe});function Fo(t,e,r,n,i){if(!e[t].width)if(r)e[t].text=cA(e[t].text,i,n),e[t].textLines=e[t].text.split(Xe.lineBreakRegex).length,e[t].width=i,e[t].height=Gv(e[t].text,n);else{let a=e[t].text.split(Xe.lineBreakRegex);e[t].textLines=a.length;let s=0;e[t].height=0,e[t].width=0;for(let o of a)e[t].width=Math.max(bs(o,n),e[t].width),s=Gv(o,n),e[t].height=e[t].height+s}}function v9(t,e,r,n,i){let a=new hne(i);a.data.widthLimit=r.data.widthLimit/Math.min(f9,n.length);for(let[s,o]of n.entries()){let l=0;o.image={width:0,height:0,Y:0},o.sprite&&(o.image.width=48,o.image.height=48,o.image.Y=l,l=o.image.Y+o.image.height);let u=o.wrap&&Mt.wrap,h=Nw(Mt);if(h.fontSize=h.fontSize+2,h.fontWeight="bold",Fo("label",o,u,h,a.data.widthLimit),o.label.Y=l+8,l=o.label.Y+o.label.height,o.type&&o.type.text!==""){o.type.text="["+o.type.text+"]";let g=Nw(Mt);Fo("type",o,u,g,a.data.widthLimit),o.type.Y=l+5,l=o.type.Y+o.type.height}if(o.descr&&o.descr.text!==""){let g=Nw(Mt);g.fontSize=g.fontSize-2,Fo("descr",o,u,g,a.data.widthLimit),o.descr.Y=l+20,l=o.descr.Y+o.descr.height}if(s==0||s%f9===0){let g=r.data.startx+Mt.diagramMarginX,m=r.data.stopy+Mt.diagramMarginY+l;a.setData(g,g,m,m)}else{let g=a.data.stopx!==a.data.startx?a.data.stopx+Mt.diagramMarginX:a.data.startx,m=a.data.starty;a.setData(g,g,m,m)}a.name=o.alias;let f=i.db.getC4ShapeArray(o.alias),d=i.db.getC4ShapeKeys(o.alias);d.length>0&&dne(a,t,f,d),e=o.alias;let p=i.db.getBoundarys(e);p.length>0&&v9(t,e,a,p,i),o.alias!=="global"&&fne(t,o,a),r.data.stopy=Math.max(a.data.stopy+Mt.c4ShapeMargin,r.data.stopy),r.data.stopx=Math.max(a.data.stopx+Mt.c4ShapeMargin,r.data.stopx),Ow=Math.max(Ow,r.data.stopx),Pw=Math.max(Pw,r.data.stopy)}}var lne,Iw,_9e,wl,Xh,Ka,bl,Sc,yy,p9,g9,Mw,Dw,ane,L9e,R9e,N9e,I9e,M9e,D9e,O9e,P9e,B9e,F9e,z9e,$9e,G9e,U9e,V9e,W9e,H9e,sne,q9e,Y9e,one,X9e,j9e,K9e,Z9e,jh,Q9e,J9e,eLe,tLe,rLe,h9,m9,cne,nLe,iLe,aLe,sLe,oLe,lLe,cLe,uLe,hLe,fLe,dLe,pLe,Du,Ec,Ow,Pw,une,f9,Mt,hne,d9,vy,Nw,gLe,fne,dne,Bo,nne,mLe,vLe,yLe,ine,xLe,bLe,wLe,gne=F(()=>{Rw();kn();or();lr();lne=Gi(hp(),1),Iw=function(){var t=v(function(We,Re,Pe,xe){for(Pe=Pe||{},xe=We.length;xe--;Pe[We[xe]]=Re);return Pe},"o"),e=[1,24],r=[1,25],n=[1,26],i=[1,27],a=[1,28],s=[1,63],o=[1,64],l=[1,65],u=[1,66],h=[1,67],f=[1,68],d=[1,69],p=[1,29],g=[1,30],m=[1,31],y=[1,32],x=[1,33],b=[1,34],w=[1,35],_=[1,36],k=[1,37],E=[1,38],L=[1,39],S=[1,40],C=[1,41],M=[1,42],R=[1,43],T=[1,44],I=[1,45],A=[1,46],D=[1,47],N=[1,48],O=[1,50],B=[1,51],P=[1,52],$=[1,53],z=[1,54],H=[1,55],J=[1,56],X=[1,57],oe=[1,58],K=[1,59],ee=[1,60],Q=[14,42],W=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Y=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Z=[1,82],se=[1,83],ce=[1,84],ue=[1,85],te=[12,14,42],Ne=[12,14,33,42],ae=[12,14,33,42,76,77,79,80],we=[12,33],Ie=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Ee={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:v(function(Re,Pe,xe,q,de,ie,he){var U=ie.length-1;switch(de){case 3:q.setDirection("TB");break;case 4:q.setDirection("BT");break;case 5:q.setDirection("RL");break;case 6:q.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:q.setC4Type(ie[U-3]);break;case 19:q.setTitle(ie[U].substring(6)),this.$=ie[U].substring(6);break;case 20:q.setAccDescription(ie[U].substring(15)),this.$=ie[U].substring(15);break;case 21:this.$=ie[U].trim(),q.setTitle(this.$);break;case 22:case 23:this.$=ie[U].trim(),q.setAccDescription(this.$);break;case 28:ie[U].splice(2,0,"ENTERPRISE"),q.addPersonOrSystemBoundary(...ie[U]),this.$=ie[U];break;case 29:ie[U].splice(2,0,"SYSTEM"),q.addPersonOrSystemBoundary(...ie[U]),this.$=ie[U];break;case 30:q.addPersonOrSystemBoundary(...ie[U]),this.$=ie[U];break;case 31:ie[U].splice(2,0,"CONTAINER"),q.addContainerBoundary(...ie[U]),this.$=ie[U];break;case 32:q.addDeploymentNode("node",...ie[U]),this.$=ie[U];break;case 33:q.addDeploymentNode("nodeL",...ie[U]),this.$=ie[U];break;case 34:q.addDeploymentNode("nodeR",...ie[U]),this.$=ie[U];break;case 35:q.popBoundaryParseStack();break;case 39:q.addPersonOrSystem("person",...ie[U]),this.$=ie[U];break;case 40:q.addPersonOrSystem("external_person",...ie[U]),this.$=ie[U];break;case 41:q.addPersonOrSystem("system",...ie[U]),this.$=ie[U];break;case 42:q.addPersonOrSystem("system_db",...ie[U]),this.$=ie[U];break;case 43:q.addPersonOrSystem("system_queue",...ie[U]),this.$=ie[U];break;case 44:q.addPersonOrSystem("external_system",...ie[U]),this.$=ie[U];break;case 45:q.addPersonOrSystem("external_system_db",...ie[U]),this.$=ie[U];break;case 46:q.addPersonOrSystem("external_system_queue",...ie[U]),this.$=ie[U];break;case 47:q.addContainer("container",...ie[U]),this.$=ie[U];break;case 48:q.addContainer("container_db",...ie[U]),this.$=ie[U];break;case 49:q.addContainer("container_queue",...ie[U]),this.$=ie[U];break;case 50:q.addContainer("external_container",...ie[U]),this.$=ie[U];break;case 51:q.addContainer("external_container_db",...ie[U]),this.$=ie[U];break;case 52:q.addContainer("external_container_queue",...ie[U]),this.$=ie[U];break;case 53:q.addComponent("component",...ie[U]),this.$=ie[U];break;case 54:q.addComponent("component_db",...ie[U]),this.$=ie[U];break;case 55:q.addComponent("component_queue",...ie[U]),this.$=ie[U];break;case 56:q.addComponent("external_component",...ie[U]),this.$=ie[U];break;case 57:q.addComponent("external_component_db",...ie[U]),this.$=ie[U];break;case 58:q.addComponent("external_component_queue",...ie[U]),this.$=ie[U];break;case 60:q.addRel("rel",...ie[U]),this.$=ie[U];break;case 61:q.addRel("birel",...ie[U]),this.$=ie[U];break;case 62:q.addRel("rel_u",...ie[U]),this.$=ie[U];break;case 63:q.addRel("rel_d",...ie[U]),this.$=ie[U];break;case 64:q.addRel("rel_l",...ie[U]),this.$=ie[U];break;case 65:q.addRel("rel_r",...ie[U]),this.$=ie[U];break;case 66:q.addRel("rel_b",...ie[U]),this.$=ie[U];break;case 67:ie[U].splice(0,1),q.addRel("rel",...ie[U]),this.$=ie[U];break;case 68:q.updateElStyle("update_el_style",...ie[U]),this.$=ie[U];break;case 69:q.updateRelStyle("update_rel_style",...ie[U]),this.$=ie[U];break;case 70:q.updateLayoutConfig("update_layout_config",...ie[U]),this.$=ie[U];break;case 71:this.$=[ie[U]];break;case 72:ie[U].unshift(ie[U-1]),this.$=ie[U];break;case 73:case 75:this.$=ie[U].trim();break;case 74:let ke={};ke[ie[U-1].trim()]=ie[U].trim(),this.$=ke;break;case 76:this.$="";break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:o,37:l,38:u,39:h,40:f,41:d,43:23,44:p,45:g,46:m,47:y,48:x,49:b,50:w,51:_,52:k,53:E,54:L,55:S,56:C,57:M,58:R,59:T,60:I,61:A,62:D,63:N,64:O,65:B,66:P,67:$,68:z,69:H,70:J,71:X,72:oe,73:K,74:ee},{13:70,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:o,37:l,38:u,39:h,40:f,41:d,43:23,44:p,45:g,46:m,47:y,48:x,49:b,50:w,51:_,52:k,53:E,54:L,55:S,56:C,57:M,58:R,59:T,60:I,61:A,62:D,63:N,64:O,65:B,66:P,67:$,68:z,69:H,70:J,71:X,72:oe,73:K,74:ee},{13:71,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:o,37:l,38:u,39:h,40:f,41:d,43:23,44:p,45:g,46:m,47:y,48:x,49:b,50:w,51:_,52:k,53:E,54:L,55:S,56:C,57:M,58:R,59:T,60:I,61:A,62:D,63:N,64:O,65:B,66:P,67:$,68:z,69:H,70:J,71:X,72:oe,73:K,74:ee},{13:72,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:o,37:l,38:u,39:h,40:f,41:d,43:23,44:p,45:g,46:m,47:y,48:x,49:b,50:w,51:_,52:k,53:E,54:L,55:S,56:C,57:M,58:R,59:T,60:I,61:A,62:D,63:N,64:O,65:B,66:P,67:$,68:z,69:H,70:J,71:X,72:oe,73:K,74:ee},{13:73,19:20,20:21,21:22,22:e,23:r,24:n,26:i,28:a,29:49,30:61,32:62,34:s,36:o,37:l,38:u,39:h,40:f,41:d,43:23,44:p,45:g,46:m,47:y,48:x,49:b,50:w,51:_,52:k,53:E,54:L,55:S,56:C,57:M,58:R,59:T,60:I,61:A,62:D,63:N,64:O,65:B,66:P,67:$,68:z,69:H,70:J,71:X,72:oe,73:K,74:ee},{14:[1,74]},t(Q,[2,13],{43:23,29:49,30:61,32:62,20:75,34:s,36:o,37:l,38:u,39:h,40:f,41:d,44:p,45:g,46:m,47:y,48:x,49:b,50:w,51:_,52:k,53:E,54:L,55:S,56:C,57:M,58:R,59:T,60:I,61:A,62:D,63:N,64:O,65:B,66:P,67:$,68:z,69:H,70:J,71:X,72:oe,73:K,74:ee}),t(Q,[2,14]),t(W,[2,16],{12:[1,76]}),t(Q,[2,36],{12:[1,77]}),t(Y,[2,19]),t(Y,[2,20]),{25:[1,78]},{27:[1,79]},t(Y,[2,23]),{35:80,75:81,76:Z,77:se,79:ce,80:ue},{35:86,75:81,76:Z,77:se,79:ce,80:ue},{35:87,75:81,76:Z,77:se,79:ce,80:ue},{35:88,75:81,76:Z,77:se,79:ce,80:ue},{35:89,75:81,76:Z,77:se,79:ce,80:ue},{35:90,75:81,76:Z,77:se,79:ce,80:ue},{35:91,75:81,76:Z,77:se,79:ce,80:ue},{35:92,75:81,76:Z,77:se,79:ce,80:ue},{35:93,75:81,76:Z,77:se,79:ce,80:ue},{35:94,75:81,76:Z,77:se,79:ce,80:ue},{35:95,75:81,76:Z,77:se,79:ce,80:ue},{35:96,75:81,76:Z,77:se,79:ce,80:ue},{35:97,75:81,76:Z,77:se,79:ce,80:ue},{35:98,75:81,76:Z,77:se,79:ce,80:ue},{35:99,75:81,76:Z,77:se,79:ce,80:ue},{35:100,75:81,76:Z,77:se,79:ce,80:ue},{35:101,75:81,76:Z,77:se,79:ce,80:ue},{35:102,75:81,76:Z,77:se,79:ce,80:ue},{35:103,75:81,76:Z,77:se,79:ce,80:ue},{35:104,75:81,76:Z,77:se,79:ce,80:ue},t(te,[2,59]),{35:105,75:81,76:Z,77:se,79:ce,80:ue},{35:106,75:81,76:Z,77:se,79:ce,80:ue},{35:107,75:81,76:Z,77:se,79:ce,80:ue},{35:108,75:81,76:Z,77:se,79:ce,80:ue},{35:109,75:81,76:Z,77:se,79:ce,80:ue},{35:110,75:81,76:Z,77:se,79:ce,80:ue},{35:111,75:81,76:Z,77:se,79:ce,80:ue},{35:112,75:81,76:Z,77:se,79:ce,80:ue},{35:113,75:81,76:Z,77:se,79:ce,80:ue},{35:114,75:81,76:Z,77:se,79:ce,80:ue},{35:115,75:81,76:Z,77:se,79:ce,80:ue},{20:116,29:49,30:61,32:62,34:s,36:o,37:l,38:u,39:h,40:f,41:d,43:23,44:p,45:g,46:m,47:y,48:x,49:b,50:w,51:_,52:k,53:E,54:L,55:S,56:C,57:M,58:R,59:T,60:I,61:A,62:D,63:N,64:O,65:B,66:P,67:$,68:z,69:H,70:J,71:X,72:oe,73:K,74:ee},{12:[1,118],33:[1,117]},{35:119,75:81,76:Z,77:se,79:ce,80:ue},{35:120,75:81,76:Z,77:se,79:ce,80:ue},{35:121,75:81,76:Z,77:se,79:ce,80:ue},{35:122,75:81,76:Z,77:se,79:ce,80:ue},{35:123,75:81,76:Z,77:se,79:ce,80:ue},{35:124,75:81,76:Z,77:se,79:ce,80:ue},{35:125,75:81,76:Z,77:se,79:ce,80:ue},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},t(Q,[2,15]),t(W,[2,17],{21:22,19:130,22:e,23:r,24:n,26:i,28:a}),t(Q,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:e,23:r,24:n,26:i,28:a,34:s,36:o,37:l,38:u,39:h,40:f,41:d,44:p,45:g,46:m,47:y,48:x,49:b,50:w,51:_,52:k,53:E,54:L,55:S,56:C,57:M,58:R,59:T,60:I,61:A,62:D,63:N,64:O,65:B,66:P,67:$,68:z,69:H,70:J,71:X,72:oe,73:K,74:ee}),t(Y,[2,21]),t(Y,[2,22]),t(te,[2,39]),t(Ne,[2,71],{75:81,35:132,76:Z,77:se,79:ce,80:ue}),t(ae,[2,73]),{78:[1,133]},t(ae,[2,75]),t(ae,[2,76]),t(te,[2,40]),t(te,[2,41]),t(te,[2,42]),t(te,[2,43]),t(te,[2,44]),t(te,[2,45]),t(te,[2,46]),t(te,[2,47]),t(te,[2,48]),t(te,[2,49]),t(te,[2,50]),t(te,[2,51]),t(te,[2,52]),t(te,[2,53]),t(te,[2,54]),t(te,[2,55]),t(te,[2,56]),t(te,[2,57]),t(te,[2,58]),t(te,[2,60]),t(te,[2,61]),t(te,[2,62]),t(te,[2,63]),t(te,[2,64]),t(te,[2,65]),t(te,[2,66]),t(te,[2,67]),t(te,[2,68]),t(te,[2,69]),t(te,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},t(we,[2,28]),t(we,[2,29]),t(we,[2,30]),t(we,[2,31]),t(we,[2,32]),t(we,[2,33]),t(we,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},t(W,[2,18]),t(Q,[2,38]),t(Ne,[2,72]),t(ae,[2,74]),t(te,[2,24]),t(te,[2,35]),t(Ie,[2,25]),t(Ie,[2,26],{12:[1,138]}),t(Ie,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:v(function(Re,Pe){if(Pe.recoverable)this.trace(Re);else{var xe=new Error(Re);throw xe.hash=Pe,xe}},"parseError"),parse:v(function(Re){var Pe=this,xe=[0],q=[],de=[null],ie=[],he=this.table,U="",ke=0,j=0,ye=0,Ae=2,Ge=1,Fe=ie.slice.call(arguments,1),ge=Object.create(this.lexer),$e={yy:{}};for(var Ce in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ce)&&($e.yy[Ce]=this.yy[Ce]);ge.setInput(Re,$e.yy),$e.yy.lexer=ge,$e.yy.parser=this,typeof ge.yylloc>"u"&&(ge.yylloc={});var qe=ge.yylloc;ie.push(qe);var lt=ge.options&&ge.options.ranges;typeof $e.yy.parseError=="function"?this.parseError=$e.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function xt(_t){xe.length=xe.length-2*_t,de.length=de.length-_t,ie.length=ie.length-_t}v(xt,"popStack");function ft(){var _t;return _t=q.pop()||ge.lex()||Ge,typeof _t!="number"&&(_t instanceof Array&&(q=_t,_t=q.pop()),_t=Pe.symbols_[_t]||_t),_t}v(ft,"lex");for(var Ze,st,Ue,Ke,it,mt,Ht={},ot,et,ht,bt;;){if(Ue=xe[xe.length-1],this.defaultActions[Ue]?Ke=this.defaultActions[Ue]:((Ze===null||typeof Ze>"u")&&(Ze=ft()),Ke=he[Ue]&&he[Ue][Ze]),typeof Ke>"u"||!Ke.length||!Ke[0]){var tt="";bt=[];for(ot in he[Ue])this.terminals_[ot]&&ot>Ae&&bt.push("'"+this.terminals_[ot]+"'");ge.showPosition?tt="Parse error on line "+(ke+1)+`: `+ge.showPosition()+` Expecting `+bt.join(", ")+", got '"+(this.terminals_[Ze]||Ze)+"'":tt="Parse error on line "+(ke+1)+": Unexpected "+(Ze==Ge?"end of input":"'"+(this.terminals_[Ze]||Ze)+"'"),this.parseError(tt,{text:ge.match,token:this.terminals_[Ze]||Ze,line:ge.yylineno,loc:qe,expected:bt})}if(Ke[0]instanceof Array&&Ke.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ue+", token: "+Ze);switch(Ke[0]){case 1:xe.push(Ze),de.push(ge.yytext),ie.push(ge.yylloc),xe.push(Ke[1]),Ze=null,st?(Ze=st,st=null):(j=ge.yyleng,U=ge.yytext,ke=ge.yylineno,qe=ge.yylloc,ye>0&&ye--);break;case 2:if(et=this.productions_[Ke[1]][1],Ht.$=de[de.length-et],Ht._$={first_line:ie[ie.length-(et||1)].first_line,last_line:ie[ie.length-1].last_line,first_column:ie[ie.length-(et||1)].first_column,last_column:ie[ie.length-1].last_column},lt&&(Ht._$.range=[ie[ie.length-(et||1)].range[0],ie[ie.length-1].range[1]]),mt=this.performAction.apply(Ht,[U,j,ke,$e.yy,Ke[1],de,ie].concat(Fe)),typeof mt<"u")return mt;et&&(xe=xe.slice(0,-1*et*2),de=de.slice(0,-1*et),ie=ie.slice(0,-1*et)),xe.push(this.productions_[Ke[1]][0]),de.push(Ht.$),ie.push(Ht._$),ht=he[xe[xe.length-2]][xe[xe.length-1]],xe.push(ht);break;case 3:return!0}}return!0},"parse")},Oe=function(){var We={EOF:1,parseError:v(function(Pe,xe){if(this.yy.parser)this.yy.parser.parseError(Pe,xe);else throw new Error(Pe)},"parseError"),setInput:v(function(Re,Pe){return this.yy=Pe||this.yy||{},this._input=Re,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var Re=this._input[0];this.yytext+=Re,this.yyleng++,this.offset++,this.match+=Re,this.matched+=Re;var Pe=Re.match(/(?:\r\n?|\n).*/g);return Pe?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Re},"input"),unput:v(function(Re){var Pe=Re.length,xe=Re.split(/(?:\r\n?|\n)/g);this._input=Re+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Pe),this.offset-=Pe;var q=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),xe.length-1&&(this.yylineno-=xe.length-1);var de=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:xe?(xe.length===q.length?this.yylloc.first_column:0)+q[q.length-xe.length].length-xe[0].length:this.yylloc.first_column-Pe},this.options.ranges&&(this.yylloc.range=[de[0],de[0]+this.yyleng-Pe]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(Re){this.unput(this.match.slice(Re))},"less"),pastInput:v(function(){var Re=this.matched.substr(0,this.matched.length-this.match.length);return(Re.length>20?"...":"")+Re.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var Re=this.match;return Re.length<20&&(Re+=this._input.substr(0,20-Re.length)),(Re.substr(0,20)+(Re.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var Re=this.pastInput(),Pe=new Array(Re.length+1).join("-");return Re+this.upcomingInput()+` `+Pe+"^"},"showPosition"),test_match:v(function(Re,Pe){var xe,q,de;if(this.options.backtrack_lexer&&(de={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(de.yylloc.range=this.yylloc.range.slice(0))),q=Re[0].match(/(?:\r\n?|\n).*/g),q&&(this.yylineno+=q.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:q?q[q.length-1].length-q[q.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Re[0].length},this.yytext+=Re[0],this.match+=Re[0],this.matches=Re,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Re[0].length),this.matched+=Re[0],xe=this.performAction.call(this,this.yy,this,Pe,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),xe)return xe;if(this._backtrack){for(var ie in de)this[ie]=de[ie];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Re,Pe,xe,q;this._more||(this.yytext="",this.match="");for(var de=this._currentRules(),ie=0;iePe[0].length)){if(Pe=xe,q=ie,this.options.backtrack_lexer){if(Re=this.test_match(xe,de[ie]),Re!==!1)return Re;if(this._backtrack){Pe=!1;continue}else return!1}else if(!this.options.flex)break}return Pe?(Re=this.test_match(Pe,de[q]),Re!==!1?Re:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var Pe=this.next();return Pe||this.lex()},"lex"),begin:v(function(Pe){this.conditionStack.push(Pe)},"begin"),popState:v(function(){var Pe=this.conditionStack.length-1;return Pe>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(Pe){return Pe=this.conditionStack.length-1-Math.abs(Pe||0),Pe>=0?this.conditionStack[Pe]:"INITIAL"},"topState"),pushState:v(function(Pe){this.begin(Pe)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:v(function(Pe,xe,q,de){var ie=de;switch(q){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),26;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;break;case 23:return this.begin("person"),44;break;case 24:return this.begin("system_ext_queue"),51;break;case 25:return this.begin("system_ext_db"),50;break;case 26:return this.begin("system_ext"),49;break;case 27:return this.begin("system_queue"),48;break;case 28:return this.begin("system_db"),47;break;case 29:return this.begin("system"),46;break;case 30:return this.begin("boundary"),37;break;case 31:return this.begin("enterprise_boundary"),34;break;case 32:return this.begin("system_boundary"),36;break;case 33:return this.begin("container_ext_queue"),57;break;case 34:return this.begin("container_ext_db"),56;break;case 35:return this.begin("container_ext"),55;break;case 36:return this.begin("container_queue"),54;break;case 37:return this.begin("container_db"),53;break;case 38:return this.begin("container"),52;break;case 39:return this.begin("container_boundary"),38;break;case 40:return this.begin("component_ext_queue"),63;break;case 41:return this.begin("component_ext_db"),62;break;case 42:return this.begin("component_ext"),61;break;case 43:return this.begin("component_queue"),60;break;case 44:return this.begin("component_db"),59;break;case 45:return this.begin("component"),58;break;case 46:return this.begin("node"),39;break;case 47:return this.begin("node"),39;break;case 48:return this.begin("node_l"),40;break;case 49:return this.begin("node_r"),41;break;case 50:return this.begin("rel"),64;break;case 51:return this.begin("birel"),65;break;case 52:return this.begin("rel_u"),66;break;case 53:return this.begin("rel_u"),66;break;case 54:return this.begin("rel_d"),67;break;case 55:return this.begin("rel_d"),67;break;case 56:return this.begin("rel_l"),68;break;case 57:return this.begin("rel_l"),68;break;case 58:return this.begin("rel_r"),69;break;case 59:return this.begin("rel_r"),69;break;case 60:return this.begin("rel_b"),70;break;case 61:return this.begin("rel_index"),71;break;case 62:return this.begin("update_el_style"),72;break;case 63:return this.begin("update_rel_style"),73;break;case 64:return this.begin("update_layout_config"),74;break;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";break;case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";break;case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return We}();Ee.lexer=Oe;function De(){this.yy={}}return v(De,"Parser"),De.prototype=Ee,Ee.Parser=De,new De}();Iw.parser=Iw;_9e=Iw,wl=[],Xh=[""],Ka="global",bl="",Sc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],yy=[],p9="",g9=!1,Mw=4,Dw=2,L9e=v(function(){return ane},"getC4Type"),R9e=v(function(t){ane=yr(t,pe())},"setC4Type"),N9e=v(function(t,e,r,n,i,a,s,o,l){if(t==null||e===void 0||e===null||r===void 0||r===null||n===void 0||n===null)return;let u={},h=yy.find(f=>f.from===e&&f.to===r);if(h?u=h:yy.push(u),u.type=t,u.from=e,u.to=r,u.label={text:n},i==null)u.techn={text:""};else if(typeof i=="object"){let[f,d]=Object.entries(i)[0];u[f]={text:d}}else u.techn={text:i};if(a==null)u.descr={text:""};else if(typeof a=="object"){let[f,d]=Object.entries(a)[0];u[f]={text:d}}else u.descr={text:a};if(typeof s=="object"){let[f,d]=Object.entries(s)[0];u[f]=d}else u.sprite=s;if(typeof o=="object"){let[f,d]=Object.entries(o)[0];u[f]=d}else u.tags=o;if(typeof l=="object"){let[f,d]=Object.entries(l)[0];u[f]=d}else u.link=l;u.wrap=jh()},"addRel"),I9e=v(function(t,e,r,n,i,a,s){if(e===null||r===null)return;let o={},l=wl.find(u=>u.alias===e);if(l&&e===l.alias?o=l:(o.alias=e,wl.push(o)),r==null?o.label={text:""}:o.label={text:r},n==null)o.descr={text:""};else if(typeof n=="object"){let[u,h]=Object.entries(n)[0];o[u]={text:h}}else o.descr={text:n};if(typeof i=="object"){let[u,h]=Object.entries(i)[0];o[u]=h}else o.sprite=i;if(typeof a=="object"){let[u,h]=Object.entries(a)[0];o[u]=h}else o.tags=a;if(typeof s=="object"){let[u,h]=Object.entries(s)[0];o[u]=h}else o.link=s;o.typeC4Shape={text:t},o.parentBoundary=Ka,o.wrap=jh()},"addPersonOrSystem"),M9e=v(function(t,e,r,n,i,a,s,o){if(e===null||r===null)return;let l={},u=wl.find(h=>h.alias===e);if(u&&e===u.alias?l=u:(l.alias=e,wl.push(l)),r==null?l.label={text:""}:l.label={text:r},n==null)l.techn={text:""};else if(typeof n=="object"){let[h,f]=Object.entries(n)[0];l[h]={text:f}}else l.techn={text:n};if(i==null)l.descr={text:""};else if(typeof i=="object"){let[h,f]=Object.entries(i)[0];l[h]={text:f}}else l.descr={text:i};if(typeof a=="object"){let[h,f]=Object.entries(a)[0];l[h]=f}else l.sprite=a;if(typeof s=="object"){let[h,f]=Object.entries(s)[0];l[h]=f}else l.tags=s;if(typeof o=="object"){let[h,f]=Object.entries(o)[0];l[h]=f}else l.link=o;l.wrap=jh(),l.typeC4Shape={text:t},l.parentBoundary=Ka},"addContainer"),D9e=v(function(t,e,r,n,i,a,s,o){if(e===null||r===null)return;let l={},u=wl.find(h=>h.alias===e);if(u&&e===u.alias?l=u:(l.alias=e,wl.push(l)),r==null?l.label={text:""}:l.label={text:r},n==null)l.techn={text:""};else if(typeof n=="object"){let[h,f]=Object.entries(n)[0];l[h]={text:f}}else l.techn={text:n};if(i==null)l.descr={text:""};else if(typeof i=="object"){let[h,f]=Object.entries(i)[0];l[h]={text:f}}else l.descr={text:i};if(typeof a=="object"){let[h,f]=Object.entries(a)[0];l[h]=f}else l.sprite=a;if(typeof s=="object"){let[h,f]=Object.entries(s)[0];l[h]=f}else l.tags=s;if(typeof o=="object"){let[h,f]=Object.entries(o)[0];l[h]=f}else l.link=o;l.wrap=jh(),l.typeC4Shape={text:t},l.parentBoundary=Ka},"addComponent"),O9e=v(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=Sc.find(o=>o.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,Sc.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"system"};else if(typeof r=="object"){let[o,l]=Object.entries(r)[0];a[o]={text:l}}else a.type={text:r};if(typeof n=="object"){let[o,l]=Object.entries(n)[0];a[o]=l}else a.tags=n;if(typeof i=="object"){let[o,l]=Object.entries(i)[0];a[o]=l}else a.link=i;a.parentBoundary=Ka,a.wrap=jh(),bl=Ka,Ka=t,Xh.push(bl)},"addPersonOrSystemBoundary"),P9e=v(function(t,e,r,n,i){if(t===null||e===null)return;let a={},s=Sc.find(o=>o.alias===t);if(s&&t===s.alias?a=s:(a.alias=t,Sc.push(a)),e==null?a.label={text:""}:a.label={text:e},r==null)a.type={text:"container"};else if(typeof r=="object"){let[o,l]=Object.entries(r)[0];a[o]={text:l}}else a.type={text:r};if(typeof n=="object"){let[o,l]=Object.entries(n)[0];a[o]=l}else a.tags=n;if(typeof i=="object"){let[o,l]=Object.entries(i)[0];a[o]=l}else a.link=i;a.parentBoundary=Ka,a.wrap=jh(),bl=Ka,Ka=t,Xh.push(bl)},"addContainerBoundary"),B9e=v(function(t,e,r,n,i,a,s,o){if(e===null||r===null)return;let l={},u=Sc.find(h=>h.alias===e);if(u&&e===u.alias?l=u:(l.alias=e,Sc.push(l)),r==null?l.label={text:""}:l.label={text:r},n==null)l.type={text:"node"};else if(typeof n=="object"){let[h,f]=Object.entries(n)[0];l[h]={text:f}}else l.type={text:n};if(i==null)l.descr={text:""};else if(typeof i=="object"){let[h,f]=Object.entries(i)[0];l[h]={text:f}}else l.descr={text:i};if(typeof s=="object"){let[h,f]=Object.entries(s)[0];l[h]=f}else l.tags=s;if(typeof o=="object"){let[h,f]=Object.entries(o)[0];l[h]=f}else l.link=o;l.nodeType=t,l.parentBoundary=Ka,l.wrap=jh(),bl=Ka,Ka=e,Xh.push(bl)},"addDeploymentNode"),F9e=v(function(){Ka=bl,Xh.pop(),bl=Xh.pop(),Xh.push(bl)},"popBoundaryParseStack"),z9e=v(function(t,e,r,n,i,a,s,o,l,u,h){let f=wl.find(d=>d.alias===e);if(!(f===void 0&&(f=Sc.find(d=>d.alias===e),f===void 0))){if(r!=null)if(typeof r=="object"){let[d,p]=Object.entries(r)[0];f[d]=p}else f.bgColor=r;if(n!=null)if(typeof n=="object"){let[d,p]=Object.entries(n)[0];f[d]=p}else f.fontColor=n;if(i!=null)if(typeof i=="object"){let[d,p]=Object.entries(i)[0];f[d]=p}else f.borderColor=i;if(a!=null)if(typeof a=="object"){let[d,p]=Object.entries(a)[0];f[d]=p}else f.shadowing=a;if(s!=null)if(typeof s=="object"){let[d,p]=Object.entries(s)[0];f[d]=p}else f.shape=s;if(o!=null)if(typeof o=="object"){let[d,p]=Object.entries(o)[0];f[d]=p}else f.sprite=o;if(l!=null)if(typeof l=="object"){let[d,p]=Object.entries(l)[0];f[d]=p}else f.techn=l;if(u!=null)if(typeof u=="object"){let[d,p]=Object.entries(u)[0];f[d]=p}else f.legendText=u;if(h!=null)if(typeof h=="object"){let[d,p]=Object.entries(h)[0];f[d]=p}else f.legendSprite=h}},"updateElStyle"),$9e=v(function(t,e,r,n,i,a,s){let o=yy.find(l=>l.from===e&&l.to===r);if(o!==void 0){if(n!=null)if(typeof n=="object"){let[l,u]=Object.entries(n)[0];o[l]=u}else o.textColor=n;if(i!=null)if(typeof i=="object"){let[l,u]=Object.entries(i)[0];o[l]=u}else o.lineColor=i;if(a!=null)if(typeof a=="object"){let[l,u]=Object.entries(a)[0];o[l]=parseInt(u)}else o.offsetX=parseInt(a);if(s!=null)if(typeof s=="object"){let[l,u]=Object.entries(s)[0];o[l]=parseInt(u)}else o.offsetY=parseInt(s)}},"updateRelStyle"),G9e=v(function(t,e,r){let n=Mw,i=Dw;if(typeof e=="object"){let a=Object.values(e)[0];n=parseInt(a)}else n=parseInt(e);if(typeof r=="object"){let a=Object.values(r)[0];i=parseInt(a)}else i=parseInt(r);n>=1&&(Mw=n),i>=1&&(Dw=i)},"updateLayoutConfig"),U9e=v(function(){return Mw},"getC4ShapeInRow"),V9e=v(function(){return Dw},"getC4BoundaryInRow"),W9e=v(function(){return Ka},"getCurrentBoundaryParse"),H9e=v(function(){return bl},"getParentBoundaryParse"),sne=v(function(t){return t==null?wl:wl.filter(e=>e.parentBoundary===t)},"getC4ShapeArray"),q9e=v(function(t){return wl.find(e=>e.alias===t)},"getC4Shape"),Y9e=v(function(t){return Object.keys(sne(t))},"getC4ShapeKeys"),one=v(function(t){return t==null?Sc:Sc.filter(e=>e.parentBoundary===t)},"getBoundaries"),X9e=one,j9e=v(function(){return yy},"getRels"),K9e=v(function(){return p9},"getTitle"),Z9e=v(function(t){g9=t},"setWrap"),jh=v(function(){return g9},"autoWrap"),Q9e=v(function(){wl=[],Sc=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],bl="",Ka="global",Xh=[""],yy=[],Xh=[""],p9="",g9=!1,Mw=4,Dw=2},"clear"),J9e={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},eLe={FILLED:0,OPEN:1},tLe={LEFTOF:0,RIGHTOF:1,OVER:2},rLe=v(function(t){p9=yr(t,pe())},"setTitle"),h9={addPersonOrSystem:I9e,addPersonOrSystemBoundary:O9e,addContainer:M9e,addContainerBoundary:P9e,addComponent:D9e,addDeploymentNode:B9e,popBoundaryParseStack:F9e,addRel:N9e,updateElStyle:z9e,updateRelStyle:$9e,updateLayoutConfig:G9e,autoWrap:jh,setWrap:Z9e,getC4ShapeArray:sne,getC4Shape:q9e,getC4ShapeKeys:Y9e,getBoundaries:one,getBoundarys:X9e,getCurrentBoundaryParse:W9e,getParentBoundaryParse:H9e,getRels:j9e,getTitle:K9e,getC4Type:L9e,getC4ShapeInRow:U9e,getC4BoundaryInRow:V9e,setAccTitle:Tr,getAccTitle:_r,getAccDescription:Rr,setAccDescription:Lr,getConfig:v(()=>pe().c4,"getConfig"),clear:Q9e,LINETYPE:J9e,ARROWTYPE:eLe,PLACEMENT:tLe,setTitle:rLe,setC4Type:R9e},m9=v(function(t,e){return Dd(t,e)},"drawRect"),cne=v(function(t,e,r,n,i,a){let s=t.append("image");s.attr("width",e),s.attr("height",r),s.attr("x",n),s.attr("y",i);let o=a.startsWith("data:image/png;base64")?a:(0,lne.sanitizeUrl)(a);s.attr("xlink:href",o)},"drawImage"),nLe=v((t,e,r)=>{let n=t.append("g"),i=0;for(let a of e){let s=a.textColor?a.textColor:"#444444",o=a.lineColor?a.lineColor:"#444444",l=a.offsetX?parseInt(a.offsetX):0,u=a.offsetY?parseInt(a.offsetY):0,h="";if(i===0){let d=n.append("line");d.attr("x1",a.startPoint.x),d.attr("y1",a.startPoint.y),d.attr("x2",a.endPoint.x),d.attr("y2",a.endPoint.y),d.attr("stroke-width","1"),d.attr("stroke",o),d.style("fill","none"),a.type!=="rel_b"&&d.attr("marker-end","url("+h+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&d.attr("marker-start","url("+h+"#arrowend)"),i=-1}else{let d=n.append("path");d.attr("fill","none").attr("stroke-width","1").attr("stroke",o).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",a.startPoint.x).replaceAll("starty",a.startPoint.y).replaceAll("controlx",a.startPoint.x+(a.endPoint.x-a.startPoint.x)/2-(a.endPoint.x-a.startPoint.x)/4).replaceAll("controly",a.startPoint.y+(a.endPoint.y-a.startPoint.y)/2).replaceAll("stopx",a.endPoint.x).replaceAll("stopy",a.endPoint.y)),a.type!=="rel_b"&&d.attr("marker-end","url("+h+"#arrowhead)"),(a.type==="birel"||a.type==="rel_b")&&d.attr("marker-start","url("+h+"#arrowend)")}let f=r.messageFont();Du(r)(a.label.text,n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+l,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+u,a.label.width,a.label.height,{fill:s},f),a.techn&&a.techn.text!==""&&(f=r.messageFont(),Du(r)("["+a.techn.text+"]",n,Math.min(a.startPoint.x,a.endPoint.x)+Math.abs(a.endPoint.x-a.startPoint.x)/2+l,Math.min(a.startPoint.y,a.endPoint.y)+Math.abs(a.endPoint.y-a.startPoint.y)/2+r.messageFontSize+5+u,Math.max(a.label.width,a.techn.width),a.techn.height,{fill:s,"font-style":"italic"},f))}},"drawRels"),iLe=v(function(t,e,r){let n=t.append("g"),i=e.bgColor?e.bgColor:"none",a=e.borderColor?e.borderColor:"#444444",s=e.fontColor?e.fontColor:"black",o={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(o={"stroke-width":1});let l={x:e.x,y:e.y,fill:i,stroke:a,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:o};m9(n,l);let u=r.boundaryFont();u.fontWeight="bold",u.fontSize=u.fontSize+2,u.fontColor=s,Du(r)(e.label.text,n,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},u),e.type&&e.type.text!==""&&(u=r.boundaryFont(),u.fontColor=s,Du(r)(e.type.text,n,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},u)),e.descr&&e.descr.text!==""&&(u=r.boundaryFont(),u.fontSize=u.fontSize-2,u.fontColor=s,Du(r)(e.descr.text,n,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},u))},"drawBoundary"),aLe=v(function(t,e,r){let n=e.bgColor?e.bgColor:r[e.typeC4Shape.text+"_bg_color"],i=e.borderColor?e.borderColor:r[e.typeC4Shape.text+"_border_color"],a=e.fontColor?e.fontColor:"#FFFFFF",s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(e.typeC4Shape.text){case"person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}let o=t.append("g");o.attr("class","person-man");let l=Tc();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":l.x=e.x,l.y=e.y,l.fill=n,l.width=e.width,l.height=e.height,l.stroke=i,l.rx=2.5,l.ry=2.5,l.attrs={"stroke-width":.5},m9(o,l);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":o.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2).replaceAll("height",e.height)),o.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":o.append("path").attr("fill",n).attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("width",e.width).replaceAll("half",e.height/2)),o.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",i).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",e.x+e.width).replaceAll("starty",e.y).replaceAll("half",e.height/2));break}let u=pLe(r,e.typeC4Shape.text);switch(o.append("text").attr("fill",a).attr("font-family",u.fontFamily).attr("font-size",u.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",e.typeC4Shape.width).attr("x",e.x+e.width/2-e.typeC4Shape.width/2).attr("y",e.y+e.typeC4Shape.Y).text("<<"+e.typeC4Shape.text+">>"),e.typeC4Shape.text){case"person":case"external_person":cne(o,48,48,e.x+e.width/2-24,e.y+e.image.Y,s);break}let h=r[e.typeC4Shape.text+"Font"]();return h.fontWeight="bold",h.fontSize=h.fontSize+2,h.fontColor=a,Du(r)(e.label.text,o,e.x,e.y+e.label.Y,e.width,e.height,{fill:a},h),h=r[e.typeC4Shape.text+"Font"](),h.fontColor=a,e.techn&&e.techn?.text!==""?Du(r)(e.techn.text,o,e.x,e.y+e.techn.Y,e.width,e.height,{fill:a,"font-style":"italic"},h):e.type&&e.type.text!==""&&Du(r)(e.type.text,o,e.x,e.y+e.type.Y,e.width,e.height,{fill:a,"font-style":"italic"},h),e.descr&&e.descr.text!==""&&(h=r.personFont(),h.fontColor=a,Du(r)(e.descr.text,o,e.x,e.y+e.descr.Y,e.width,e.height,{fill:a},h)),e.height},"drawC4Shape"),sLe=v(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),oLe=v(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),lLe=v(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),cLe=v(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},"insertArrowHead"),uLe=v(function(t){t.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},"insertArrowEnd"),hLe=v(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),fLe=v(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertDynamicNumber"),dLe=v(function(t){let r=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);r.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),r.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},"insertArrowCrossHead"),pLe=v((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"getC4ShapeFont"),Du=function(){function t(i,a,s,o,l,u,h){let f=a.append("text").attr("x",s+l/2).attr("y",o+u/2+5).style("text-anchor","middle").text(i);n(f,h)}v(t,"byText");function e(i,a,s,o,l,u,h,f){let{fontSize:d,fontFamily:p,fontWeight:g}=f,m=i.split(Xe.lineBreakRegex);for(let y=0;y=this.data.widthLimit||r>=this.data.widthLimit||this.nextData.cnt>une)&&(e=this.nextData.startx+t.margin+Mt.nextLinePaddingX,n=this.nextData.stopy+t.margin*2,this.nextData.stopx=r=e+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=i=n+t.height,this.nextData.cnt=1),t.x=e,t.y=n,this.updateVal(this.data,"startx",e,Math.min),this.updateVal(this.data,"starty",n,Math.min),this.updateVal(this.data,"stopx",r,Math.max),this.updateVal(this.data,"stopy",i,Math.max),this.updateVal(this.nextData,"startx",e,Math.min),this.updateVal(this.nextData,"starty",n,Math.min),this.updateVal(this.nextData,"stopx",r,Math.max),this.updateVal(this.nextData,"stopy",i,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},d9(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},d9=v(function(t){Hn(Mt,t),t.fontFamily&&(Mt.personFontFamily=Mt.systemFontFamily=Mt.messageFontFamily=t.fontFamily),t.fontSize&&(Mt.personFontSize=Mt.systemFontSize=Mt.messageFontSize=t.fontSize),t.fontWeight&&(Mt.personFontWeight=Mt.systemFontWeight=Mt.messageFontWeight=t.fontWeight)},"setConf"),vy=v((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]}),"c4ShapeFont"),Nw=v(t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight}),"boundaryFont"),gLe=v(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont");v(Fo,"calcC4ShapeTextWH");fne=v(function(t,e,r){e.x=r.data.startx,e.y=r.data.starty,e.width=r.data.stopx-r.data.startx,e.height=r.data.stopy-r.data.starty,e.label.y=Mt.c4ShapeMargin-35;let n=e.wrap&&Mt.wrap,i=Nw(Mt);i.fontSize=i.fontSize+2,i.fontWeight="bold";let a=bs(e.label.text,i);Fo("label",e,n,i,a),Ec.drawBoundary(t,e,Mt)},"drawBoundary"),dne=v(function(t,e,r,n){let i=0;for(let a of n){i=0;let s=r[a],o=vy(Mt,s.typeC4Shape.text);switch(o.fontSize=o.fontSize-2,s.typeC4Shape.width=bs("\xAB"+s.typeC4Shape.text+"\xBB",o),s.typeC4Shape.height=o.fontSize+2,s.typeC4Shape.Y=Mt.c4ShapePadding,i=s.typeC4Shape.Y+s.typeC4Shape.height-4,s.image={width:0,height:0,Y:0},s.typeC4Shape.text){case"person":case"external_person":s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height;break}s.sprite&&(s.image.width=48,s.image.height=48,s.image.Y=i,i=s.image.Y+s.image.height);let l=s.wrap&&Mt.wrap,u=Mt.width-Mt.c4ShapePadding*2,h=vy(Mt,s.typeC4Shape.text);if(h.fontSize=h.fontSize+2,h.fontWeight="bold",Fo("label",s,l,h,u),s.label.Y=i+8,i=s.label.Y+s.label.height,s.type&&s.type.text!==""){s.type.text="["+s.type.text+"]";let p=vy(Mt,s.typeC4Shape.text);Fo("type",s,l,p,u),s.type.Y=i+5,i=s.type.Y+s.type.height}else if(s.techn&&s.techn.text!==""){s.techn.text="["+s.techn.text+"]";let p=vy(Mt,s.techn.text);Fo("techn",s,l,p,u),s.techn.Y=i+5,i=s.techn.Y+s.techn.height}let f=i,d=s.label.width;if(s.descr&&s.descr.text!==""){let p=vy(Mt,s.typeC4Shape.text);Fo("descr",s,l,p,u),s.descr.Y=i+20,i=s.descr.Y+s.descr.height,d=Math.max(s.label.width,s.descr.width),f=i-s.descr.textLines*5}d=d+Mt.c4ShapePadding,s.width=Math.max(s.width||Mt.width,d,Mt.width),s.height=Math.max(s.height||Mt.height,f,Mt.height),s.margin=s.margin||Mt.c4ShapeMargin,t.insert(s),Ec.drawC4Shape(e,s,Mt)}t.bumpLastMargin(Mt.c4ShapeMargin)},"drawC4ShapeArray"),Bo=class{static{v(this,"Point")}constructor(t,e){this.x=t,this.y=e}},nne=v(function(t,e){let r=t.x,n=t.y,i=e.x,a=e.y,s=r+t.width/2,o=n+t.height/2,l=Math.abs(r-i),u=Math.abs(n-a),h=u/l,f=t.height/t.width,d=null;return n==a&&ri?d=new Bo(r,o):r==i&&na&&(d=new Bo(s,n)),r>i&&n=h?d=new Bo(r,o+h*t.width/2):d=new Bo(s-l/u*t.height/2,n+t.height):r=h?d=new Bo(r+t.width,o+h*t.width/2):d=new Bo(s+l/u*t.height/2,n+t.height):ra?f>=h?d=new Bo(r+t.width,o-h*t.width/2):d=new Bo(s+t.height/2*l/u,n):r>i&&n>a&&(f>=h?d=new Bo(r,o-t.width/2*h):d=new Bo(s-t.height/2*l/u,n)),d},"getIntersectPoint"),mLe=v(function(t,e){let r={x:0,y:0};r.x=e.x+e.width/2,r.y=e.y+e.height/2;let n=nne(t,r);r.x=t.x+t.width/2,r.y=t.y+t.height/2;let i=nne(e,r);return{startPoint:n,endPoint:i}},"getIntersectPoints"),vLe=v(function(t,e,r,n){let i=0;for(let a of e){i=i+1;let s=a.wrap&&Mt.wrap,o=gLe(Mt);n.db.getC4Type()==="C4Dynamic"&&(a.label.text=i+": "+a.label.text);let u=bs(a.label.text,o);Fo("label",a,s,o,u),a.techn&&a.techn.text!==""&&(u=bs(a.techn.text,o),Fo("techn",a,s,o,u)),a.descr&&a.descr.text!==""&&(u=bs(a.descr.text,o),Fo("descr",a,s,o,u));let h=r(a.from),f=r(a.to),d=mLe(h,f);a.startPoint=d.startPoint,a.endPoint=d.endPoint}Ec.drawRels(t,e,Mt)},"drawRels");v(v9,"drawInsideBoundary");yLe=v(function(t,e,r,n){Mt=pe().c4;let i=pe().securityLevel,a;i==="sandbox"&&(a=Ve("#i"+e));let s=i==="sandbox"?Ve(a.nodes()[0].contentDocument.body):Ve("body"),o=n.db;n.db.setWrap(Mt.wrap),une=o.getC4ShapeInRow(),f9=o.getC4BoundaryInRow(),re.debug(`C:${JSON.stringify(Mt,null,2)}`);let l=i==="sandbox"?s.select(`[id="${e}"]`):Ve(`[id="${e}"]`);Ec.insertComputerIcon(l),Ec.insertDatabaseIcon(l),Ec.insertClockIcon(l);let u=new hne(n);u.setData(Mt.diagramMarginX,Mt.diagramMarginX,Mt.diagramMarginY,Mt.diagramMarginY),u.data.widthLimit=screen.availWidth,Ow=Mt.diagramMarginX,Pw=Mt.diagramMarginY;let h=n.db.getTitle(),f=n.db.getBoundarys("");v9(l,"",u,f,n),Ec.insertArrowHead(l),Ec.insertArrowEnd(l),Ec.insertArrowCrossHead(l),Ec.insertArrowFilledHead(l),vLe(l,n.db.getRels(),n.db.getC4Shape,n),u.data.stopx=Ow,u.data.stopy=Pw;let d=u.data,g=d.stopy-d.starty+2*Mt.diagramMarginY,y=d.stopx-d.startx+2*Mt.diagramMarginX;h&&l.append("text").text(h).attr("x",(d.stopx-d.startx)/2-4*Mt.diagramMarginX).attr("y",d.starty+Mt.diagramMarginY),Hr(l,g,y,Mt.useMaxWidth);let x=h?60:0;l.attr("viewBox",d.startx-Mt.diagramMarginX+" -"+(Mt.diagramMarginY+x)+" "+y+" "+(g+x)),re.debug("models:",d)},"draw"),ine={drawPersonOrSystemArray:dne,drawBoundary:fne,setConf:d9,draw:yLe},xLe=v(t=>`.person { stroke: ${t.personBorder}; fill: ${t.personBkg}; } `,"getStyles"),bLe=xLe,wLe={parser:_9e,db:h9,renderer:ine,styles:bLe,init:v(({c4:t,wrap:e})=>{ine.setConf(t),h9.setWrap(e)},"init")}});var Ag,_g,kLe,TLe,Kh=F(()=>{or();lr();Ag=v((t,e)=>{let r;return e==="sandbox"&&(r=Ve("#i"+t)),(e==="sandbox"?Ve(r.nodes()[0].contentDocument.body):Ve("body")).select(`[id="${t}"]`)},"getDiagramElement"),_g=v((t,e,r,n)=>{t.attr("class",r);let{width:i,height:a,x:s,y:o}=kLe(t,e);Hr(t,a,i,n);let l=TLe(s,o,i,a,e);t.attr("viewBox",l),re.debug(`viewBox configured: ${l} with padding: ${e}`)},"setupViewPortForSVG"),kLe=v((t,e)=>{let r=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:r.width+e*2,height:r.height+e*2,x:r.x,y:r.y}},"calculateDimensionsWithPadding"),TLe=v((t,e,r,n,i)=>`${t-i} ${e-i} ${r} ${n}`,"createViewBox")});var Vw={};vr(Vw,{diagram:()=>cRe});function Fw(t){let e=[];for(let r of t){let n=by.get(r);n?.styles&&(e=[...e,...n.styles??[]].map(i=>i.trim())),n?.textStyles&&(e=[...e,...n.textStyles??[]].map(i=>i.trim()))}return e}var ELe,mne,Lg,Zh,_s,by,Ou,w9,k9,Bw,x9,zo,zw,$w,Gw,Uw,SLe,CLe,ALe,_Le,LLe,RLe,NLe,T9,ILe,MLe,DLe,vne,OLe,PLe,yne,xne,bne,BLe,wne,FLe,zLe,$Le,GLe,ULe,xy,kne,Tne,VLe,WLe,Ene,HLe,qLe,YLe,XLe,jLe,Sne,Cne,KLe,ZLe,QLe,JLe,eRe,tRe,y9,rRe,nRe,iRe,b9,aRe,sRe,oRe,lRe,cRe,Ww=F(()=>{Kh();r4();Nu();_u();yl();sl();pc();bo();Ya();kn();or();lr();lr();go();ELe="flowchart-",mne=0,Lg=pe(),Zh=new Map,_s=[],by=new Map,Ou=[],w9=new Map,k9=new Map,Bw=0,x9=!0,$w=[],Gw=v(t=>Xe.sanitizeText(t,Lg),"sanitizeText"),Uw=v(function(t){for(let e of Zh.values())if(e.id===t)return e.domId;return t},"lookUpDomId"),SLe=v(function(t,e,r,n,i,a,s={},o){if(!t||t.trim().length===0)return;let l,u=Zh.get(t);if(u===void 0&&(u={id:t,labelType:"text",domId:ELe+t+"-"+mne,styles:[],classes:[]},Zh.set(t,u)),mne++,e!==void 0?(Lg=pe(),l=Gw(e.text.trim()),u.labelType=e.type,l.startsWith('"')&&l.endsWith('"')&&(l=l.substring(1,l.length-1)),u.text=l):u.text===void 0&&(u.text=t),r!==void 0&&(u.type=r),n?.forEach(function(h){u.styles.push(h)}),i?.forEach(function(h){u.classes.push(h)}),a!==void 0&&(u.dir=a),u.props===void 0?u.props=s:s!==void 0&&Object.assign(u.props,s),o!==void 0){let h;o.includes(` `)?h=o+` `:h=`{ `+o+` }`;let f=sp(h,{schema:ap});if(f.shape){if(f.shape!==f.shape.toLowerCase()||f.shape.includes("_"))throw new Error(`No such shape: ${f.shape}. Shape names should be lowercase.`);if(!WA(f.shape))throw new Error(`No such shape: ${f.shape}.`);u.type=f?.shape}f?.label&&(u.text=f?.label),f?.icon&&(u.icon=f?.icon,!f.label?.trim()&&u.text===t&&(u.text="")),f?.form&&(u.form=f?.form),f?.pos&&(u.pos=f?.pos),f?.img&&(u.img=f?.img,!f.label?.trim()&&u.text===t&&(u.text="")),f?.constraint&&(u.constraint=f.constraint),f.w&&(u.assetWidth=Number(f.w)),f.h&&(u.assetHeight=Number(f.h))}},"addVertex"),CLe=v(function(t,e,r){let a={start:t,end:e,type:void 0,text:"",labelType:"text"};re.info("abc78 Got edge...",a);let s=r.text;if(s!==void 0&&(a.text=Gw(s.text.trim()),a.text.startsWith('"')&&a.text.endsWith('"')&&(a.text=a.text.substring(1,a.text.length-1)),a.labelType=s.type),r!==void 0&&(a.type=r.type,a.stroke=r.stroke,a.length=r.length>10?10:r.length),_s.length<(Lg.maxEdges??500))re.info("Pushing edge..."),_s.push(a);else throw new Error(`Edge limit exceeded. ${_s.length} edges found, but the limit is ${Lg.maxEdges}. Initialize mermaid with maxEdges set to a higher number to allow more edges. You cannot set this config via configuration inside the diagram as it is a secure config. You have to call mermaid.initialize.`)},"addSingleLink"),ALe=v(function(t,e,r){re.info("addLink",t,e,r);for(let n of t)for(let i of e)CLe(n,i,r)},"addLink"),_Le=v(function(t,e){t.forEach(function(r){r==="default"?_s.defaultInterpolate=e:_s[r].interpolate=e})},"updateLinkInterpolate"),LLe=v(function(t,e){t.forEach(function(r){if(typeof r=="number"&&r>=_s.length)throw new Error(`The index ${r} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${_s.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);r==="default"?_s.defaultStyle=e:(_s[r].style=e,(_s[r]?.style?.length??0)>0&&!_s[r]?.style?.some(n=>n?.startsWith("fill"))&&_s[r]?.style?.push("fill:none"))})},"updateLink"),RLe=v(function(t,e){t.split(",").forEach(function(r){let n=by.get(r);n===void 0&&(n={id:r,styles:[],textStyles:[]},by.set(r,n)),e?.forEach(function(i){if(/color/.exec(i)){let a=i.replace("fill","bgFill");n.textStyles.push(a)}n.styles.push(i)})})},"addClass"),NLe=v(function(t){zo=t,/.*/.exec(zo)&&(zo="LR"),/.*v/.exec(zo)&&(zo="TB"),zo==="TD"&&(zo="TB")},"setDirection"),T9=v(function(t,e){for(let r of t.split(",")){let n=Zh.get(r);n&&n.classes.push(e);let i=w9.get(r);i&&i.classes.push(e)}},"setClass"),ILe=v(function(t,e){if(e!==void 0){e=Gw(e);for(let r of t.split(","))k9.set(zw==="gen-1"?Uw(r):r,e)}},"setTooltip"),MLe=v(function(t,e,r){let n=Uw(t);if(pe().securityLevel!=="loose"||e===void 0)return;let i=[];if(typeof r=="string"){i=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let s=0;s")),i.classed("hover",!0)}).on("mouseout",function(){e.transition().duration(500).style("opacity",0),Ve(this).classed("hover",!1)})},"setupToolTips");$w.push(wne);FLe=v(function(t="gen-1"){Zh=new Map,by=new Map,_s=[],$w=[wne],Ou=[],w9=new Map,Bw=0,k9=new Map,x9=!0,zw=t,Lg=pe(),xr()},"clear"),zLe=v(t=>{zw=t||"gen-2"},"setGen"),$Le=v(function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},"defaultStyle"),GLe=v(function(t,e,r){let n=t.text.trim(),i=r.text;t===r&&/\s/.exec(r.text)&&(n=void 0);function a(u){let h={boolean:{},number:{},string:{}},f=[],d;return{nodeList:u.filter(function(g){let m=typeof g;return g.stmt&&g.stmt==="dir"?(d=g.value,!1):g.trim()===""?!1:m in h?h[m].hasOwnProperty(g)?!1:h[m][g]=!0:f.includes(g)?!1:f.push(g)}),dir:d}}v(a,"uniq");let{nodeList:s,dir:o}=a(e.flat());if(zw==="gen-1")for(let u=0;u2e3)return{result:!1,count:0};if(kne[xy]=e,Ou[e].id===t)return{result:!0,count:0};let n=0,i=1;for(;n=0){let s=Tne(t,a);if(s.result)return{result:!0,count:i+s.count};i=i+s.count}n=n+1}return{result:!1,count:i}},"indexNodes2"),VLe=v(function(t){return kne[t]},"getDepthFirstPos"),WLe=v(function(){xy=-1,Ou.length>0&&Tne("none",Ou.length-1)},"indexNodes"),Ene=v(function(){return Ou},"getSubGraphs"),HLe=v(()=>x9?(x9=!1,!0):!1,"firstGraph"),qLe=v(t=>{let e=t.trim(),r="arrow_open";switch(e[0]){case"<":r="arrow_point",e=e.slice(1);break;case"x":r="arrow_cross",e=e.slice(1);break;case"o":r="arrow_circle",e=e.slice(1);break}let n="normal";return e.includes("=")&&(n="thick"),e.includes(".")&&(n="dotted"),{type:r,stroke:n}},"destructStartLink"),YLe=v((t,e)=>{let r=e.length,n=0;for(let i=0;i{let e=t.trim(),r=e.slice(0,-1),n="arrow_open";switch(e.slice(-1)){case"x":n="arrow_cross",e.startsWith("x")&&(n="double_"+n,r=r.slice(1));break;case">":n="arrow_point",e.startsWith("<")&&(n="double_"+n,r=r.slice(1));break;case"o":n="arrow_circle",e.startsWith("o")&&(n="double_"+n,r=r.slice(1));break}let i="normal",a=r.length-1;r.startsWith("=")&&(i="thick"),r.startsWith("~")&&(i="invisible");let s=YLe(".",r);return s&&(i="dotted",a=s),{type:n,stroke:i,length:a}},"destructEndLink"),jLe=v((t,e)=>{let r=XLe(t),n;if(e){if(n=qLe(e),n.stroke!==r.stroke)return{type:"INVALID",stroke:"INVALID"};if(n.type==="arrow_open")n.type=r.type;else{if(n.type!==r.type)return{type:"INVALID",stroke:"INVALID"};n.type="double_"+n.type}return n.type==="double_arrow"&&(n.type="double_arrow_point"),n.length=r.length,n}return r},"destructLink"),Sne=v((t,e)=>{for(let r of t)if(r.nodes.includes(e))return!0;return!1},"exists"),Cne=v((t,e)=>{let r=[];return t.nodes.forEach((n,i)=>{Sne(e,n)||r.push(t.nodes[i])}),{nodes:r}},"makeUniq"),KLe={firstGraph:HLe},ZLe=v(t=>{if(t.img)return"imageSquare";if(t.icon)return t.form==="circle"?"iconCircle":t.form==="square"?"iconSquare":t.form==="rounded"?"iconRounded":"icon";switch(t.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return t.type}},"getTypeFromVertex"),QLe=v((t,e)=>t.find(r=>r.id===e),"findNode"),JLe=v(t=>{let e="none",r="arrow_point";switch(t){case"arrow_point":case"arrow_circle":case"arrow_cross":r=t;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":e=t.replace("double_",""),r=e;break}return{arrowTypeStart:e,arrowTypeEnd:r}},"destructEdgeType"),eRe=v((t,e,r,n,i,a)=>{let s=r.get(t.id),o=n.get(t.id)??!1,l=QLe(e,t.id);if(l)l.cssStyles=t.styles,l.cssCompiledStyles=Fw(t.classes),l.cssClasses=t.classes.join(" ");else{let u={id:t.id,label:t.text,labelStyle:"",parentId:s,padding:i.flowchart?.padding||8,cssStyles:t.styles,cssCompiledStyles:Fw(["default","node",...t.classes]),cssClasses:"default "+t.classes.join(" "),dir:t.dir,domId:t.domId,look:a,link:t.link,linkTarget:t.linkTarget,tooltip:vne(t.id),icon:t.icon,pos:t.pos,img:t.img,assetWidth:t.assetWidth,assetHeight:t.assetHeight,constraint:t.constraint};o?e.push({...u,isGroup:!0,shape:"rect"}):e.push({...u,isGroup:!1,shape:ZLe(t)})}},"addNodeFromVertex");v(Fw,"getCompiledStyles");tRe=v(()=>{let t=pe(),e=[],r=[],n=Ene(),i=new Map,a=new Map;for(let l=n.length-1;l>=0;l--){let u=n[l];u.nodes.length>0&&a.set(u.id,!0);for(let h of u.nodes)i.set(h,u.id)}for(let l=n.length-1;l>=0;l--){let u=n[l];e.push({id:u.id,label:u.title,labelStyle:"",parentId:i.get(u.id),padding:8,cssCompiledStyles:Fw(u.classes),cssClasses:u.classes.join(" "),shape:"rect",dir:u.dir,isGroup:!0,look:t.look})}xne().forEach(l=>{eRe(l,e,i,a,t,t.look||"classic")});let o=bne();return o.forEach((l,u)=>{let{arrowTypeStart:h,arrowTypeEnd:f}=JLe(l.type),d=[...o.defaultStyle??[]];l.style&&d.push(...l.style);let p={id:V3(l.start,l.end,{counter:u,prefix:"L"}),start:l.start,end:l.end,type:l.type??"normal",label:l.text,labelpos:"c",thickness:l.stroke,minlen:l.length,classes:l?.stroke==="invisible"?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:l?.stroke==="invisible"?"none":h,arrowTypeEnd:l?.stroke==="invisible"?"none":f,arrowheadStyle:"fill: #333",labelStyle:d,style:d,pattern:l.stroke,look:t.look};r.push(p)}),{nodes:e,edges:r,other:{},config:t}},"getData"),y9={defaultConfig:v(()=>Vb.flowchart,"defaultConfig"),setAccTitle:Tr,getAccTitle:_r,getAccDescription:Rr,getData:tRe,setAccDescription:Lr,addVertex:SLe,lookUpDomId:Uw,addLink:ALe,updateLinkInterpolate:_Le,updateLink:LLe,addClass:RLe,setDirection:NLe,setClass:T9,setTooltip:ILe,getTooltip:vne,setClickEvent:OLe,setLink:DLe,bindFunctions:PLe,getDirection:yne,getVertices:xne,getEdges:bne,getClasses:BLe,clear:FLe,setGen:zLe,defaultStyle:$Le,addSubGraph:GLe,getDepthFirstPos:VLe,indexNodes:WLe,getSubGraphs:Ene,destructLink:jLe,lex:KLe,exists:Sne,makeUniq:Cne,setDiagramTitle:tn,getDiagramTitle:qr},rRe=v(function(t,e){return e.db.getClasses()},"getClasses"),nRe=v(async function(t,e,r,n){re.info("REF0:"),re.info("Drawing state diagram (v2)",e);let{securityLevel:i,flowchart:a,layout:s}=pe(),o;i==="sandbox"&&(o=Ve("#i"+e));let l=i==="sandbox"?o.nodes()[0].contentDocument:document;re.debug("Before getData: ");let u=n.db.getData();re.debug("Data: ",u);let h=Ag(e,i),f=yne();u.type=n.type,u.layoutAlgorithm=vw(s),u.layoutAlgorithm==="dagre"&&s==="elk"&&re.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),u.direction=f,u.nodeSpacing=a?.nodeSpacing||50,u.rankSpacing=a?.rankSpacing||50,u.markers=["point","circle","cross"],u.diagramId=e,re.debug("REF1:",u),await kg(u,h);let d=u.config.flowchart?.diagramPadding??8;Ut.insertTitle(h,"flowchartTitleText",a?.titleTopMargin||0,n.db.getDiagramTitle()),_g(h,d,"flowchart",a?.useMaxWidth||!1);for(let p of u.nodes){let g=Ve(`#${e} [id="${p.id}"]`);if(!g||!p.link)continue;let m=l.createElementNS("http://www.w3.org/2000/svg","a");m.setAttributeNS("http://www.w3.org/2000/svg","class",p.cssClasses),m.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),i==="sandbox"?m.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):p.linkTarget&&m.setAttributeNS("http://www.w3.org/2000/svg","target",p.linkTarget);let y=g.insert(function(){return m},":first-child"),x=g.select(".label-container");x&&y.append(function(){return x.node()});let b=g.select(".label");b&&y.append(function(){return b.node()})}},"draw"),iRe={getClasses:rRe,draw:nRe},b9=function(){var t=v(function($i,pt,Rt,wt){for(Rt=Rt||{},wt=$i.length;wt--;Rt[$i[wt]]=pt);return Rt},"o"),e=[1,4],r=[1,3],n=[1,5],i=[1,8,9,10,11,27,34,36,38,44,60,83,84,85,86,87,88,101,104,105,108,110,113,114,115,120,121,122,123],a=[2,2],s=[1,13],o=[1,14],l=[1,15],u=[1,16],h=[1,23],f=[1,25],d=[1,26],p=[1,27],g=[1,49],m=[1,48],y=[1,29],x=[1,30],b=[1,31],w=[1,32],_=[1,33],k=[1,44],E=[1,46],L=[1,42],S=[1,47],C=[1,43],M=[1,50],R=[1,45],T=[1,51],I=[1,52],A=[1,34],D=[1,35],N=[1,36],O=[1,37],B=[1,57],P=[1,8,9,10,11,27,32,34,36,38,44,60,83,84,85,86,87,88,101,104,105,108,110,113,114,115,120,121,122,123],$=[1,61],z=[1,60],H=[1,62],J=[8,9,11,75,77],X=[1,77],oe=[1,90],K=[1,95],ee=[1,94],Q=[1,91],W=[1,87],Y=[1,93],Z=[1,89],se=[1,96],ce=[1,92],ue=[1,97],te=[1,88],Ne=[8,9,10,11,40,75,77],ae=[8,9,10,11,40,46,75,77],we=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,88,101,104,105,108,110,113,114,115],Ie=[8,9,11,44,60,75,77,88,101,104,105,108,110,113,114,115],Ee=[44,60,88,101,104,105,108,110,113,114,115],Oe=[1,123],De=[1,122],We=[1,130],Re=[1,144],Pe=[1,145],xe=[1,146],q=[1,147],de=[1,132],ie=[1,134],he=[1,138],U=[1,139],ke=[1,140],j=[1,141],ye=[1,142],Ae=[1,143],Ge=[1,148],Fe=[1,149],ge=[1,128],$e=[1,129],Ce=[1,136],qe=[1,131],lt=[1,135],xt=[1,133],ft=[8,9,10,11,27,32,34,36,38,44,60,83,84,85,86,87,88,101,104,105,108,110,113,114,115,120,121,122,123],Ze=[1,151],st=[1,153],Ue=[8,9,11],Ke=[8,9,10,11,14,44,60,88,104,105,108,110,113,114,115],it=[1,173],mt=[1,169],Ht=[1,170],ot=[1,174],et=[1,171],ht=[1,172],bt=[77,115,118],tt=[8,9,10,11,12,14,27,29,32,44,60,75,83,84,85,86,87,88,89,104,108,110,113,114,115],_t=[10,105],ur=[31,49,51,53,55,57,62,64,66,67,69,71,115,116,117],Qt=[1,242],Jt=[1,240],en=[1,244],Cr=[1,238],Kn=[1,239],cn=[1,241],Rn=[1,243],Vr=[1,245],xi=[1,263],Fa=[8,9,11,105],yn=[8,9,10,11,60,83,104,105,108,109,110,111],os={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,edgeTextToken:78,STR:79,MD_STR:80,textToken:81,keywords:82,STYLE:83,LINKSTYLE:84,CLASSDEF:85,CLASS:86,CLICK:87,DOWN:88,UP:89,textNoTagsToken:90,stylesOpt:91,"idString[vertex]":92,"idString[class]":93,CALLBACKNAME:94,CALLBACKARGS:95,HREF:96,LINK_TARGET:97,"STR[link]":98,"STR[tooltip]":99,alphaNum:100,DEFAULT:101,numList:102,INTERPOLATE:103,NUM:104,COMMA:105,style:106,styleComponent:107,NODE_STRING:108,UNIT:109,BRKT:110,PCT:111,idStringToken:112,MINUS:113,MULT:114,UNICODE_TEXT:115,TEXT:116,TAGSTART:117,EDGE_TEXT:118,alphaNumToken:119,direction_tb:120,direction_bt:121,direction_rl:122,direction_lr:123,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",79:"STR",80:"MD_STR",83:"STYLE",84:"LINKSTYLE",85:"CLASSDEF",86:"CLASS",87:"CLICK",88:"DOWN",89:"UP",92:"idString[vertex]",93:"idString[class]",94:"CALLBACKNAME",95:"CALLBACKARGS",96:"HREF",97:"LINK_TARGET",98:"STR[link]",99:"STR[tooltip]",101:"DEFAULT",103:"INTERPOLATE",104:"NUM",105:"COMMA",108:"NODE_STRING",109:"UNIT",110:"BRKT",111:"PCT",113:"MINUS",114:"MULT",115:"UNICODE_TEXT",116:"TEXT",117:"TAGSTART",118:"EDGE_TEXT",120:"direction_tb",121:"direction_bt",122:"direction_rl",123:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[76,1],[76,2],[76,1],[76,1],[72,1],[73,3],[30,1],[30,2],[30,1],[30,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[82,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[102,1],[102,3],[91,1],[91,3],[106,1],[106,2],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[107,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[112,1],[81,1],[81,1],[81,1],[81,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[90,1],[78,1],[78,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[119,1],[47,1],[47,2],[100,1],[100,2],[33,1],[33,1],[33,1],[33,1]],performAction:v(function(pt,Rt,wt,He,yt,fe,un){var me=fe.length-1;switch(yt){case 2:this.$=[];break;case 3:(!Array.isArray(fe[me])||fe[me].length>0)&&fe[me-1].push(fe[me]),this.$=fe[me-1];break;case 4:case 181:this.$=fe[me];break;case 11:He.setDirection("TB"),this.$="TB";break;case 12:He.setDirection(fe[me-1]),this.$=fe[me-1];break;case 27:this.$=fe[me-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=He.addSubGraph(fe[me-6],fe[me-1],fe[me-4]);break;case 34:this.$=He.addSubGraph(fe[me-3],fe[me-1],fe[me-3]);break;case 35:this.$=He.addSubGraph(void 0,fe[me-1],void 0);break;case 37:this.$=fe[me].trim(),He.setAccTitle(this.$);break;case 38:case 39:this.$=fe[me].trim(),He.setAccDescription(this.$);break;case 43:this.$=fe[me-1]+fe[me];break;case 44:this.$=fe[me];break;case 45:He.addVertex(fe[me-1][0],void 0,void 0,void 0,void 0,void 0,void 0,fe[me]),He.addLink(fe[me-3].stmt,fe[me-1],fe[me-2]),this.$={stmt:fe[me-1],nodes:fe[me-1].concat(fe[me-3].nodes)};break;case 46:He.addLink(fe[me-2].stmt,fe[me],fe[me-1]),this.$={stmt:fe[me],nodes:fe[me].concat(fe[me-2].nodes)};break;case 47:He.addLink(fe[me-3].stmt,fe[me-1],fe[me-2]),this.$={stmt:fe[me-1],nodes:fe[me-1].concat(fe[me-3].nodes)};break;case 48:this.$={stmt:fe[me-1],nodes:fe[me-1]};break;case 49:He.addVertex(fe[me-1][0],void 0,void 0,void 0,void 0,void 0,void 0,fe[me]),this.$={stmt:fe[me-1],nodes:fe[me-1],shapeData:fe[me]};break;case 50:this.$={stmt:fe[me],nodes:fe[me]};break;case 51:this.$=[fe[me]];break;case 52:He.addVertex(fe[me-5][0],void 0,void 0,void 0,void 0,void 0,void 0,fe[me-4]),this.$=fe[me-5].concat(fe[me]);break;case 53:this.$=fe[me-4].concat(fe[me]);break;case 54:this.$=fe[me];break;case 55:this.$=fe[me-2],He.setClass(fe[me-2],fe[me]);break;case 56:this.$=fe[me-3],He.addVertex(fe[me-3],fe[me-1],"square");break;case 57:this.$=fe[me-3],He.addVertex(fe[me-3],fe[me-1],"doublecircle");break;case 58:this.$=fe[me-5],He.addVertex(fe[me-5],fe[me-2],"circle");break;case 59:this.$=fe[me-3],He.addVertex(fe[me-3],fe[me-1],"ellipse");break;case 60:this.$=fe[me-3],He.addVertex(fe[me-3],fe[me-1],"stadium");break;case 61:this.$=fe[me-3],He.addVertex(fe[me-3],fe[me-1],"subroutine");break;case 62:this.$=fe[me-7],He.addVertex(fe[me-7],fe[me-1],"rect",void 0,void 0,void 0,Object.fromEntries([[fe[me-5],fe[me-3]]]));break;case 63:this.$=fe[me-3],He.addVertex(fe[me-3],fe[me-1],"cylinder");break;case 64:this.$=fe[me-3],He.addVertex(fe[me-3],fe[me-1],"round");break;case 65:this.$=fe[me-3],He.addVertex(fe[me-3],fe[me-1],"diamond");break;case 66:this.$=fe[me-5],He.addVertex(fe[me-5],fe[me-2],"hexagon");break;case 67:this.$=fe[me-3],He.addVertex(fe[me-3],fe[me-1],"odd");break;case 68:this.$=fe[me-3],He.addVertex(fe[me-3],fe[me-1],"trapezoid");break;case 69:this.$=fe[me-3],He.addVertex(fe[me-3],fe[me-1],"inv_trapezoid");break;case 70:this.$=fe[me-3],He.addVertex(fe[me-3],fe[me-1],"lean_right");break;case 71:this.$=fe[me-3],He.addVertex(fe[me-3],fe[me-1],"lean_left");break;case 72:this.$=fe[me],He.addVertex(fe[me]);break;case 73:fe[me-1].text=fe[me],this.$=fe[me-1];break;case 74:case 75:fe[me-2].text=fe[me-1],this.$=fe[me-2];break;case 76:this.$=fe[me];break;case 77:var za=He.destructLink(fe[me],fe[me-2]);this.$={type:za.type,stroke:za.stroke,length:za.length,text:fe[me-1]};break;case 78:this.$={text:fe[me],type:"text"};break;case 79:this.$={text:fe[me-1].text+""+fe[me],type:fe[me-1].type};break;case 80:this.$={text:fe[me],type:"string"};break;case 81:this.$={text:fe[me],type:"markdown"};break;case 82:var za=He.destructLink(fe[me]);this.$={type:za.type,stroke:za.stroke,length:za.length};break;case 83:this.$=fe[me-1];break;case 84:this.$={text:fe[me],type:"text"};break;case 85:this.$={text:fe[me-1].text+""+fe[me],type:fe[me-1].type};break;case 86:this.$={text:fe[me],type:"string"};break;case 87:case 102:this.$={text:fe[me],type:"markdown"};break;case 99:this.$={text:fe[me],type:"text"};break;case 100:this.$={text:fe[me-1].text+""+fe[me],type:fe[me-1].type};break;case 101:this.$={text:fe[me],type:"text"};break;case 103:this.$=fe[me-4],He.addClass(fe[me-2],fe[me]);break;case 104:this.$=fe[me-4],He.setClass(fe[me-2],fe[me]);break;case 105:case 113:this.$=fe[me-1],He.setClickEvent(fe[me-1],fe[me]);break;case 106:case 114:this.$=fe[me-3],He.setClickEvent(fe[me-3],fe[me-2]),He.setTooltip(fe[me-3],fe[me]);break;case 107:this.$=fe[me-2],He.setClickEvent(fe[me-2],fe[me-1],fe[me]);break;case 108:this.$=fe[me-4],He.setClickEvent(fe[me-4],fe[me-3],fe[me-2]),He.setTooltip(fe[me-4],fe[me]);break;case 109:this.$=fe[me-2],He.setLink(fe[me-2],fe[me]);break;case 110:this.$=fe[me-4],He.setLink(fe[me-4],fe[me-2]),He.setTooltip(fe[me-4],fe[me]);break;case 111:this.$=fe[me-4],He.setLink(fe[me-4],fe[me-2],fe[me]);break;case 112:this.$=fe[me-6],He.setLink(fe[me-6],fe[me-4],fe[me]),He.setTooltip(fe[me-6],fe[me-2]);break;case 115:this.$=fe[me-1],He.setLink(fe[me-1],fe[me]);break;case 116:this.$=fe[me-3],He.setLink(fe[me-3],fe[me-2]),He.setTooltip(fe[me-3],fe[me]);break;case 117:this.$=fe[me-3],He.setLink(fe[me-3],fe[me-2],fe[me]);break;case 118:this.$=fe[me-5],He.setLink(fe[me-5],fe[me-4],fe[me]),He.setTooltip(fe[me-5],fe[me-2]);break;case 119:this.$=fe[me-4],He.addVertex(fe[me-2],void 0,void 0,fe[me]);break;case 120:this.$=fe[me-4],He.updateLink([fe[me-2]],fe[me]);break;case 121:this.$=fe[me-4],He.updateLink(fe[me-2],fe[me]);break;case 122:this.$=fe[me-8],He.updateLinkInterpolate([fe[me-6]],fe[me-2]),He.updateLink([fe[me-6]],fe[me]);break;case 123:this.$=fe[me-8],He.updateLinkInterpolate(fe[me-6],fe[me-2]),He.updateLink(fe[me-6],fe[me]);break;case 124:this.$=fe[me-6],He.updateLinkInterpolate([fe[me-4]],fe[me]);break;case 125:this.$=fe[me-6],He.updateLinkInterpolate(fe[me-4],fe[me]);break;case 126:case 128:this.$=[fe[me]];break;case 127:case 129:fe[me-2].push(fe[me]),this.$=fe[me-2];break;case 131:this.$=fe[me-1]+fe[me];break;case 179:this.$=fe[me];break;case 180:this.$=fe[me-1]+""+fe[me];break;case 182:this.$=fe[me-1]+""+fe[me];break;case 183:this.$={stmt:"dir",value:"TB"};break;case 184:this.$={stmt:"dir",value:"BT"};break;case 185:this.$={stmt:"dir",value:"RL"};break;case 186:this.$={stmt:"dir",value:"LR"};break}},"anonymous"),table:[{3:1,4:2,9:e,10:r,12:n},{1:[3]},t(i,a,{5:6}),{4:7,9:e,10:r,12:n},{4:8,9:e,10:r,12:n},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:s,9:o,10:l,11:u,20:17,22:18,23:19,24:20,25:21,26:22,27:h,33:24,34:f,36:d,38:p,42:28,43:38,44:g,45:39,47:40,60:m,83:y,84:x,85:b,86:w,87:_,88:k,101:E,104:L,105:S,108:C,110:M,112:41,113:R,114:T,115:I,120:A,121:D,122:N,123:O},t(i,[2,9]),t(i,[2,10]),t(i,[2,11]),{8:[1,54],9:[1,55],10:B,15:53,18:56},t(P,[2,3]),t(P,[2,4]),t(P,[2,5]),t(P,[2,6]),t(P,[2,7]),t(P,[2,8]),{8:$,9:z,11:H,21:58,41:59,72:63,75:[1,64],77:[1,65]},{8:$,9:z,11:H,21:66},{8:$,9:z,11:H,21:67},{8:$,9:z,11:H,21:68},{8:$,9:z,11:H,21:69},{8:$,9:z,11:H,21:70},{8:$,9:z,10:[1,71],11:H,21:72},t(P,[2,36]),{35:[1,73]},{37:[1,74]},t(P,[2,39]),t(J,[2,50],{18:75,39:76,10:B,40:X}),{10:[1,78]},{10:[1,79]},{10:[1,80]},{10:[1,81]},{14:oe,44:K,60:ee,79:[1,85],88:Q,94:[1,82],96:[1,83],100:84,104:W,105:Y,108:Z,110:se,113:ce,114:ue,115:te,119:86},t(P,[2,183]),t(P,[2,184]),t(P,[2,185]),t(P,[2,186]),t(Ne,[2,51]),t(Ne,[2,54],{46:[1,98]}),t(ae,[2,72],{112:111,29:[1,99],44:g,48:[1,100],50:[1,101],52:[1,102],54:[1,103],56:[1,104],58:[1,105],60:m,63:[1,106],65:[1,107],67:[1,108],68:[1,109],70:[1,110],88:k,101:E,104:L,105:S,108:C,110:M,113:R,114:T,115:I}),t(we,[2,179]),t(we,[2,140]),t(we,[2,141]),t(we,[2,142]),t(we,[2,143]),t(we,[2,144]),t(we,[2,145]),t(we,[2,146]),t(we,[2,147]),t(we,[2,148]),t(we,[2,149]),t(we,[2,150]),t(i,[2,12]),t(i,[2,18]),t(i,[2,19]),{9:[1,112]},t(Ie,[2,26],{18:113,10:B}),t(P,[2,27]),{42:114,43:38,44:g,45:39,47:40,60:m,88:k,101:E,104:L,105:S,108:C,110:M,112:41,113:R,114:T,115:I},t(P,[2,40]),t(P,[2,41]),t(P,[2,42]),t(Ee,[2,76],{73:115,62:[1,117],74:[1,116]}),{76:118,78:119,79:[1,120],80:[1,121],115:Oe,118:De},t([44,60,62,74,88,101,104,105,108,110,113,114,115],[2,82]),t(P,[2,28]),t(P,[2,29]),t(P,[2,30]),t(P,[2,31]),t(P,[2,32]),{10:We,12:Re,14:Pe,27:xe,28:124,32:q,44:de,60:ie,75:he,79:[1,126],80:[1,127],82:137,83:U,84:ke,85:j,86:ye,87:Ae,88:Ge,89:Fe,90:125,104:ge,108:$e,110:Ce,113:qe,114:lt,115:xt},t(ft,a,{5:150}),t(P,[2,37]),t(P,[2,38]),t(J,[2,48],{44:Ze}),t(J,[2,49],{18:152,10:B,40:st}),t(Ne,[2,44]),{44:g,47:154,60:m,88:k,101:E,104:L,105:S,108:C,110:M,112:41,113:R,114:T,115:I},{101:[1,155],102:156,104:[1,157]},{44:g,47:158,60:m,88:k,101:E,104:L,105:S,108:C,110:M,112:41,113:R,114:T,115:I},{44:g,47:159,60:m,88:k,101:E,104:L,105:S,108:C,110:M,112:41,113:R,114:T,115:I},t(Ue,[2,105],{10:[1,160],95:[1,161]}),{79:[1,162]},t(Ue,[2,113],{119:164,10:[1,163],14:oe,44:K,60:ee,88:Q,104:W,105:Y,108:Z,110:se,113:ce,114:ue,115:te}),t(Ue,[2,115],{10:[1,165]}),t(Ke,[2,181]),t(Ke,[2,168]),t(Ke,[2,169]),t(Ke,[2,170]),t(Ke,[2,171]),t(Ke,[2,172]),t(Ke,[2,173]),t(Ke,[2,174]),t(Ke,[2,175]),t(Ke,[2,176]),t(Ke,[2,177]),t(Ke,[2,178]),{44:g,47:166,60:m,88:k,101:E,104:L,105:S,108:C,110:M,112:41,113:R,114:T,115:I},{30:167,67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},{30:175,67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},{30:177,50:[1,176],67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},{30:178,67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},{30:179,67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},{30:180,67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},{108:[1,181]},{30:182,67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},{30:183,65:[1,184],67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},{30:185,67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},{30:186,67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},{30:187,67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},t(we,[2,180]),t(i,[2,20]),t(Ie,[2,25]),t(J,[2,46],{39:188,18:189,10:B,40:X}),t(Ee,[2,73],{10:[1,190]}),{10:[1,191]},{30:192,67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},{77:[1,193],78:194,115:Oe,118:De},t(bt,[2,78]),t(bt,[2,80]),t(bt,[2,81]),t(bt,[2,166]),t(bt,[2,167]),{8:$,9:z,10:We,11:H,12:Re,14:Pe,21:196,27:xe,29:[1,195],32:q,44:de,60:ie,75:he,82:137,83:U,84:ke,85:j,86:ye,87:Ae,88:Ge,89:Fe,90:197,104:ge,108:$e,110:Ce,113:qe,114:lt,115:xt},t(tt,[2,99]),t(tt,[2,101]),t(tt,[2,102]),t(tt,[2,155]),t(tt,[2,156]),t(tt,[2,157]),t(tt,[2,158]),t(tt,[2,159]),t(tt,[2,160]),t(tt,[2,161]),t(tt,[2,162]),t(tt,[2,163]),t(tt,[2,164]),t(tt,[2,165]),t(tt,[2,88]),t(tt,[2,89]),t(tt,[2,90]),t(tt,[2,91]),t(tt,[2,92]),t(tt,[2,93]),t(tt,[2,94]),t(tt,[2,95]),t(tt,[2,96]),t(tt,[2,97]),t(tt,[2,98]),{6:11,7:12,8:s,9:o,10:l,11:u,20:17,22:18,23:19,24:20,25:21,26:22,27:h,32:[1,198],33:24,34:f,36:d,38:p,42:28,43:38,44:g,45:39,47:40,60:m,83:y,84:x,85:b,86:w,87:_,88:k,101:E,104:L,105:S,108:C,110:M,112:41,113:R,114:T,115:I,120:A,121:D,122:N,123:O},{10:B,18:199},{44:[1,200]},t(Ne,[2,43]),{10:[1,201],44:g,60:m,88:k,101:E,104:L,105:S,108:C,110:M,112:111,113:R,114:T,115:I},{10:[1,202]},{10:[1,203],105:[1,204]},t(_t,[2,126]),{10:[1,205],44:g,60:m,88:k,101:E,104:L,105:S,108:C,110:M,112:111,113:R,114:T,115:I},{10:[1,206],44:g,60:m,88:k,101:E,104:L,105:S,108:C,110:M,112:111,113:R,114:T,115:I},{79:[1,207]},t(Ue,[2,107],{10:[1,208]}),t(Ue,[2,109],{10:[1,209]}),{79:[1,210]},t(Ke,[2,182]),{79:[1,211],97:[1,212]},t(Ne,[2,55],{112:111,44:g,60:m,88:k,101:E,104:L,105:S,108:C,110:M,113:R,114:T,115:I}),{31:[1,213],67:it,81:214,115:ot,116:et,117:ht},t(ur,[2,84]),t(ur,[2,86]),t(ur,[2,87]),t(ur,[2,151]),t(ur,[2,152]),t(ur,[2,153]),t(ur,[2,154]),{49:[1,215],67:it,81:214,115:ot,116:et,117:ht},{30:216,67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},{51:[1,217],67:it,81:214,115:ot,116:et,117:ht},{53:[1,218],67:it,81:214,115:ot,116:et,117:ht},{55:[1,219],67:it,81:214,115:ot,116:et,117:ht},{57:[1,220],67:it,81:214,115:ot,116:et,117:ht},{60:[1,221]},{64:[1,222],67:it,81:214,115:ot,116:et,117:ht},{66:[1,223],67:it,81:214,115:ot,116:et,117:ht},{30:224,67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},{31:[1,225],67:it,81:214,115:ot,116:et,117:ht},{67:it,69:[1,226],71:[1,227],81:214,115:ot,116:et,117:ht},{67:it,69:[1,229],71:[1,228],81:214,115:ot,116:et,117:ht},t(J,[2,45],{18:152,10:B,40:st}),t(J,[2,47],{44:Ze}),t(Ee,[2,75]),t(Ee,[2,74]),{62:[1,230],67:it,81:214,115:ot,116:et,117:ht},t(Ee,[2,77]),t(bt,[2,79]),{30:231,67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},t(ft,a,{5:232}),t(tt,[2,100]),t(P,[2,35]),{43:233,44:g,45:39,47:40,60:m,88:k,101:E,104:L,105:S,108:C,110:M,112:41,113:R,114:T,115:I},{10:B,18:234},{10:Qt,60:Jt,83:en,91:235,104:Cr,106:236,107:237,108:Kn,109:cn,110:Rn,111:Vr},{10:Qt,60:Jt,83:en,91:246,103:[1,247],104:Cr,106:236,107:237,108:Kn,109:cn,110:Rn,111:Vr},{10:Qt,60:Jt,83:en,91:248,103:[1,249],104:Cr,106:236,107:237,108:Kn,109:cn,110:Rn,111:Vr},{104:[1,250]},{10:Qt,60:Jt,83:en,91:251,104:Cr,106:236,107:237,108:Kn,109:cn,110:Rn,111:Vr},{44:g,47:252,60:m,88:k,101:E,104:L,105:S,108:C,110:M,112:41,113:R,114:T,115:I},t(Ue,[2,106]),{79:[1,253]},{79:[1,254],97:[1,255]},t(Ue,[2,114]),t(Ue,[2,116],{10:[1,256]}),t(Ue,[2,117]),t(ae,[2,56]),t(ur,[2,85]),t(ae,[2,57]),{51:[1,257],67:it,81:214,115:ot,116:et,117:ht},t(ae,[2,64]),t(ae,[2,59]),t(ae,[2,60]),t(ae,[2,61]),{108:[1,258]},t(ae,[2,63]),t(ae,[2,65]),{66:[1,259],67:it,81:214,115:ot,116:et,117:ht},t(ae,[2,67]),t(ae,[2,68]),t(ae,[2,70]),t(ae,[2,69]),t(ae,[2,71]),t([10,44,60,88,101,104,105,108,110,113,114,115],[2,83]),{31:[1,260],67:it,81:214,115:ot,116:et,117:ht},{6:11,7:12,8:s,9:o,10:l,11:u,20:17,22:18,23:19,24:20,25:21,26:22,27:h,32:[1,261],33:24,34:f,36:d,38:p,42:28,43:38,44:g,45:39,47:40,60:m,83:y,84:x,85:b,86:w,87:_,88:k,101:E,104:L,105:S,108:C,110:M,112:41,113:R,114:T,115:I,120:A,121:D,122:N,123:O},t(Ne,[2,53]),{43:262,44:g,45:39,47:40,60:m,88:k,101:E,104:L,105:S,108:C,110:M,112:41,113:R,114:T,115:I},t(Ue,[2,119],{105:xi}),t(Fa,[2,128],{107:264,10:Qt,60:Jt,83:en,104:Cr,108:Kn,109:cn,110:Rn,111:Vr}),t(yn,[2,130]),t(yn,[2,132]),t(yn,[2,133]),t(yn,[2,134]),t(yn,[2,135]),t(yn,[2,136]),t(yn,[2,137]),t(yn,[2,138]),t(yn,[2,139]),t(Ue,[2,120],{105:xi}),{10:[1,265]},t(Ue,[2,121],{105:xi}),{10:[1,266]},t(_t,[2,127]),t(Ue,[2,103],{105:xi}),t(Ue,[2,104],{112:111,44:g,60:m,88:k,101:E,104:L,105:S,108:C,110:M,113:R,114:T,115:I}),t(Ue,[2,108]),t(Ue,[2,110],{10:[1,267]}),t(Ue,[2,111]),{97:[1,268]},{51:[1,269]},{62:[1,270]},{66:[1,271]},{8:$,9:z,11:H,21:272},t(P,[2,34]),t(Ne,[2,52]),{10:Qt,60:Jt,83:en,104:Cr,106:273,107:237,108:Kn,109:cn,110:Rn,111:Vr},t(yn,[2,131]),{14:oe,44:K,60:ee,88:Q,100:274,104:W,105:Y,108:Z,110:se,113:ce,114:ue,115:te,119:86},{14:oe,44:K,60:ee,88:Q,100:275,104:W,105:Y,108:Z,110:se,113:ce,114:ue,115:te,119:86},{97:[1,276]},t(Ue,[2,118]),t(ae,[2,58]),{30:277,67:it,79:mt,80:Ht,81:168,115:ot,116:et,117:ht},t(ae,[2,66]),t(ft,a,{5:278}),t(Fa,[2,129],{107:264,10:Qt,60:Jt,83:en,104:Cr,108:Kn,109:cn,110:Rn,111:Vr}),t(Ue,[2,124],{119:164,10:[1,279],14:oe,44:K,60:ee,88:Q,104:W,105:Y,108:Z,110:se,113:ce,114:ue,115:te}),t(Ue,[2,125],{119:164,10:[1,280],14:oe,44:K,60:ee,88:Q,104:W,105:Y,108:Z,110:se,113:ce,114:ue,115:te}),t(Ue,[2,112]),{31:[1,281],67:it,81:214,115:ot,116:et,117:ht},{6:11,7:12,8:s,9:o,10:l,11:u,20:17,22:18,23:19,24:20,25:21,26:22,27:h,32:[1,282],33:24,34:f,36:d,38:p,42:28,43:38,44:g,45:39,47:40,60:m,83:y,84:x,85:b,86:w,87:_,88:k,101:E,104:L,105:S,108:C,110:M,112:41,113:R,114:T,115:I,120:A,121:D,122:N,123:O},{10:Qt,60:Jt,83:en,91:283,104:Cr,106:236,107:237,108:Kn,109:cn,110:Rn,111:Vr},{10:Qt,60:Jt,83:en,91:284,104:Cr,106:236,107:237,108:Kn,109:cn,110:Rn,111:Vr},t(ae,[2,62]),t(P,[2,33]),t(Ue,[2,122],{105:xi}),t(Ue,[2,123],{105:xi})],defaultActions:{},parseError:v(function(pt,Rt){if(Rt.recoverable)this.trace(pt);else{var wt=new Error(pt);throw wt.hash=Rt,wt}},"parseError"),parse:v(function(pt){var Rt=this,wt=[0],He=[],yt=[null],fe=[],un=this.table,me="",za=0,p1=0,g1=0,m1=2,v1=1,V0=fe.slice.call(arguments,1),Gn=Object.create(this.lexer),Qi={yy:{}};for(var Ul in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ul)&&(Qi.yy[Ul]=this.yy[Ul]);Gn.setInput(pt,Qi.yy),Qi.yy.lexer=Gn,Qi.yy.parser=this,typeof Gn.yylloc>"u"&&(Gn.yylloc={});var _f=Gn.yylloc;fe.push(_f);var y1=Gn.options&&Gn.options.ranges;typeof Qi.yy.parseError=="function"?this.parseError=Qi.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function AE($a){wt.length=wt.length-2*$a,yt.length=yt.length-$a,fe.length=fe.length-$a}v(AE,"popStack");function ih(){var $a;return $a=He.pop()||Gn.lex()||v1,typeof $a!="number"&&($a instanceof Array&&(He=$a,$a=He.pop()),$a=Rt.symbols_[$a]||$a),$a}v(ih,"lex");for(var Ji,x1,xn,bi,KO,W0,Vl={},Lf,po,tb,Rf;;){if(xn=wt[wt.length-1],this.defaultActions[xn]?bi=this.defaultActions[xn]:((Ji===null||typeof Ji>"u")&&(Ji=ih()),bi=un[xn]&&un[xn][Ji]),typeof bi>"u"||!bi.length||!bi[0]){var H0="";Rf=[];for(Lf in un[xn])this.terminals_[Lf]&&Lf>m1&&Rf.push("'"+this.terminals_[Lf]+"'");Gn.showPosition?H0="Parse error on line "+(za+1)+`: `+Gn.showPosition()+` Expecting `+Rf.join(", ")+", got '"+(this.terminals_[Ji]||Ji)+"'":H0="Parse error on line "+(za+1)+": Unexpected "+(Ji==v1?"end of input":"'"+(this.terminals_[Ji]||Ji)+"'"),this.parseError(H0,{text:Gn.match,token:this.terminals_[Ji]||Ji,line:Gn.yylineno,loc:_f,expected:Rf})}if(bi[0]instanceof Array&&bi.length>1)throw new Error("Parse Error: multiple actions possible at state: "+xn+", token: "+Ji);switch(bi[0]){case 1:wt.push(Ji),yt.push(Gn.yytext),fe.push(Gn.yylloc),wt.push(bi[1]),Ji=null,x1?(Ji=x1,x1=null):(p1=Gn.yyleng,me=Gn.yytext,za=Gn.yylineno,_f=Gn.yylloc,g1>0&&g1--);break;case 2:if(po=this.productions_[bi[1]][1],Vl.$=yt[yt.length-po],Vl._$={first_line:fe[fe.length-(po||1)].first_line,last_line:fe[fe.length-1].last_line,first_column:fe[fe.length-(po||1)].first_column,last_column:fe[fe.length-1].last_column},y1&&(Vl._$.range=[fe[fe.length-(po||1)].range[0],fe[fe.length-1].range[1]]),W0=this.performAction.apply(Vl,[me,p1,za,Qi.yy,bi[1],yt,fe].concat(V0)),typeof W0<"u")return W0;po&&(wt=wt.slice(0,-1*po*2),yt=yt.slice(0,-1*po),fe=fe.slice(0,-1*po)),wt.push(this.productions_[bi[1]][0]),yt.push(Vl.$),fe.push(Vl._$),tb=un[wt[wt.length-2]][wt[wt.length-1]],wt.push(tb);break;case 3:return!0}}return!0},"parse")},fo=function(){var $i={EOF:1,parseError:v(function(Rt,wt){if(this.yy.parser)this.yy.parser.parseError(Rt,wt);else throw new Error(Rt)},"parseError"),setInput:v(function(pt,Rt){return this.yy=Rt||this.yy||{},this._input=pt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var pt=this._input[0];this.yytext+=pt,this.yyleng++,this.offset++,this.match+=pt,this.matched+=pt;var Rt=pt.match(/(?:\r\n?|\n).*/g);return Rt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),pt},"input"),unput:v(function(pt){var Rt=pt.length,wt=pt.split(/(?:\r\n?|\n)/g);this._input=pt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Rt),this.offset-=Rt;var He=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),wt.length-1&&(this.yylineno-=wt.length-1);var yt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:wt?(wt.length===He.length?this.yylloc.first_column:0)+He[He.length-wt.length].length-wt[0].length:this.yylloc.first_column-Rt},this.options.ranges&&(this.yylloc.range=[yt[0],yt[0]+this.yyleng-Rt]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(pt){this.unput(this.match.slice(pt))},"less"),pastInput:v(function(){var pt=this.matched.substr(0,this.matched.length-this.match.length);return(pt.length>20?"...":"")+pt.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var pt=this.match;return pt.length<20&&(pt+=this._input.substr(0,20-pt.length)),(pt.substr(0,20)+(pt.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var pt=this.pastInput(),Rt=new Array(pt.length+1).join("-");return pt+this.upcomingInput()+` `+Rt+"^"},"showPosition"),test_match:v(function(pt,Rt){var wt,He,yt;if(this.options.backtrack_lexer&&(yt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(yt.yylloc.range=this.yylloc.range.slice(0))),He=pt[0].match(/(?:\r\n?|\n).*/g),He&&(this.yylineno+=He.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:He?He[He.length-1].length-He[He.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+pt[0].length},this.yytext+=pt[0],this.match+=pt[0],this.matches=pt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(pt[0].length),this.matched+=pt[0],wt=this.performAction.call(this,this.yy,this,Rt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),wt)return wt;if(this._backtrack){for(var fe in yt)this[fe]=yt[fe];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var pt,Rt,wt,He;this._more||(this.yytext="",this.match="");for(var yt=this._currentRules(),fe=0;feRt[0].length)){if(Rt=wt,He=fe,this.options.backtrack_lexer){if(pt=this.test_match(wt,yt[fe]),pt!==!1)return pt;if(this._backtrack){Rt=!1;continue}else return!1}else if(!this.options.flex)break}return Rt?(pt=this.test_match(Rt,yt[He]),pt!==!1?pt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var Rt=this.next();return Rt||this.lex()},"lex"),begin:v(function(Rt){this.conditionStack.push(Rt)},"begin"),popState:v(function(){var Rt=this.conditionStack.length-1;return Rt>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(Rt){return Rt=this.conditionStack.length-1-Math.abs(Rt||0),Rt>=0?this.conditionStack[Rt]:"INITIAL"},"topState"),pushState:v(function(Rt){this.begin(Rt)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:v(function(Rt,wt,He,yt){var fe=yt;switch(He){case 0:return this.begin("acc_title"),34;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),36;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),wt.yytext="",40;break;case 8:return this.pushState("shapeDataStr"),40;break;case 9:return this.popState(),40;break;case 10:let un=/\n\s*/g;return wt.yytext=wt.yytext.replace(un,"
    "),40;break;case 11:return 40;case 12:this.popState();break;case 13:this.begin("callbackname");break;case 14:this.popState();break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 94;case 17:this.popState();break;case 18:return 95;case 19:return"MD_STR";case 20:this.popState();break;case 21:this.begin("md_string");break;case 22:return"STR";case 23:this.popState();break;case 24:this.pushState("string");break;case 25:return 83;case 26:return 101;case 27:return 84;case 28:return 103;case 29:return 85;case 30:return 86;case 31:return 96;case 32:this.begin("click");break;case 33:this.popState();break;case 34:return 87;case 35:return Rt.lex.firstGraph()&&this.begin("dir"),12;break;case 36:return Rt.lex.firstGraph()&&this.begin("dir"),12;break;case 37:return Rt.lex.firstGraph()&&this.begin("dir"),12;break;case 38:return 27;case 39:return 32;case 40:return 97;case 41:return 97;case 42:return 97;case 43:return 97;case 44:return this.popState(),13;break;case 45:return this.popState(),14;break;case 46:return this.popState(),14;break;case 47:return this.popState(),14;break;case 48:return this.popState(),14;break;case 49:return this.popState(),14;break;case 50:return this.popState(),14;break;case 51:return this.popState(),14;break;case 52:return this.popState(),14;break;case 53:return this.popState(),14;break;case 54:return this.popState(),14;break;case 55:return 120;case 56:return 121;case 57:return 122;case 58:return 123;case 59:return 104;case 60:return 110;case 61:return 46;case 62:return 60;case 63:return 44;case 64:return 8;case 65:return 105;case 66:return 114;case 67:return this.popState(),77;break;case 68:return this.pushState("edgeText"),75;break;case 69:return 118;case 70:return this.popState(),77;break;case 71:return this.pushState("thickEdgeText"),75;break;case 72:return 118;case 73:return this.popState(),77;break;case 74:return this.pushState("dottedEdgeText"),75;break;case 75:return 118;case 76:return 77;case 77:return this.popState(),53;break;case 78:return"TEXT";case 79:return this.pushState("ellipseText"),52;break;case 80:return this.popState(),55;break;case 81:return this.pushState("text"),54;break;case 82:return this.popState(),57;break;case 83:return this.pushState("text"),56;break;case 84:return 58;case 85:return this.pushState("text"),67;break;case 86:return this.popState(),64;break;case 87:return this.pushState("text"),63;break;case 88:return this.popState(),49;break;case 89:return this.pushState("text"),48;break;case 90:return this.popState(),69;break;case 91:return this.popState(),71;break;case 92:return 116;case 93:return this.pushState("trapText"),68;break;case 94:return this.pushState("trapText"),70;break;case 95:return 117;case 96:return 67;case 97:return 89;case 98:return"SEP";case 99:return 88;case 100:return 114;case 101:return 110;case 102:return 44;case 103:return 108;case 104:return 113;case 105:return 115;case 106:return this.popState(),62;break;case 107:return this.pushState("text"),62;break;case 108:return this.popState(),51;break;case 109:return this.pushState("text"),50;break;case 110:return this.popState(),31;break;case 111:return this.pushState("text"),29;break;case 112:return this.popState(),66;break;case 113:return this.pushState("text"),65;break;case 114:return"TEXT";case 115:return"QUOTE";case 116:return 9;case 117:return 10;case 118:return 11}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},shapeData:{rules:[8,11,12,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},callbackargs:{rules:[17,18,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},callbackname:{rules:[14,15,16,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},href:{rules:[21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},click:{rules:[21,24,33,34,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},dottedEdgeText:{rules:[21,24,73,75,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},thickEdgeText:{rules:[21,24,70,72,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},edgeText:{rules:[21,24,67,69,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},trapText:{rules:[21,24,76,79,81,83,87,89,90,91,92,93,94,107,109,111,113],inclusive:!1},ellipseText:{rules:[21,24,76,77,78,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},text:{rules:[21,24,76,79,80,81,82,83,86,87,88,89,93,94,106,107,108,109,110,111,112,113,114],inclusive:!1},vertex:{rules:[21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},acc_descr:{rules:[3,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},acc_title:{rules:[1,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},md_string:{rules:[19,20,21,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},string:{rules:[21,22,23,24,76,79,81,83,87,89,93,94,107,109,111,113],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,70,71,73,74,76,79,81,83,84,85,87,89,93,94,95,96,97,98,99,100,101,102,103,104,105,107,109,111,113,115,116,117,118],inclusive:!0}}};return $i}();os.lexer=fo;function Zi(){this.yy={}}return v(Zi,"Parser"),Zi.prototype=os,os.Parser=Zi,new Zi}();b9.parser=b9;aRe=b9,sRe=v((t,e)=>{let r=S1,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return $s(n,i,a,e)},"fade"),oRe=v(t=>`.label { font-family: ${t.fontFamily}; color: ${t.nodeTextColor||t.textColor}; } .cluster-label text { fill: ${t.titleColor}; } .cluster-label span { color: ${t.titleColor}; } .cluster-label span p { background-color: transparent; } .label text,span { fill: ${t.nodeTextColor||t.textColor}; color: ${t.nodeTextColor||t.textColor}; } .node rect, .node circle, .node ellipse, .node polygon, .node path { fill: ${t.mainBkg}; stroke: ${t.nodeBorder}; stroke-width: 1px; } .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label { text-anchor: middle; } // .flowchart-label .text-outer-tspan { // text-anchor: middle; // } // .flowchart-label .text-inner-tspan { // text-anchor: start; // } .node .katex path { fill: #000; stroke: #000; stroke-width: 1px; } .rough-node .label,.node .label, .image-shape .label, .icon-shape .label { text-align: center; } .node.clickable { cursor: pointer; } .root .anchor path { fill: ${t.lineColor} !important; stroke-width: 0; stroke: ${t.lineColor}; } .arrowheadPath { fill: ${t.arrowheadColor}; } .edgePath .path { stroke: ${t.lineColor}; stroke-width: 2.0px; } .flowchart-link { stroke: ${t.lineColor}; fill: none; } .edgeLabel { background-color: ${t.edgeLabelBackground}; p { background-color: ${t.edgeLabelBackground}; } rect { opacity: 0.5; background-color: ${t.edgeLabelBackground}; fill: ${t.edgeLabelBackground}; } text-align: center; } /* For html labels only */ .labelBkg { background-color: ${sRe(t.edgeLabelBackground,.5)}; // background-color: } .cluster rect { fill: ${t.clusterBkg}; stroke: ${t.clusterBorder}; stroke-width: 1px; } .cluster text { fill: ${t.titleColor}; } .cluster span { color: ${t.titleColor}; } /* .cluster div { color: ${t.titleColor}; } */ div.mermaidTooltip { position: absolute; text-align: center; max-width: 200px; padding: 2px; font-family: ${t.fontFamily}; font-size: 12px; background: ${t.tertiaryColor}; border: 1px solid ${t.border2}; border-radius: 2px; pointer-events: none; z-index: 100; } .flowchartTitleText { text-anchor: middle; font-size: 18px; fill: ${t.textColor}; } rect.text { fill: none; stroke-width: 0; } .icon-shape, .image-shape { background-color: ${t.edgeLabelBackground}; p { background-color: ${t.edgeLabelBackground}; padding: 2px; } rect { opacity: 0.5; background-color: ${t.edgeLabelBackground}; fill: ${t.edgeLabelBackground}; } text-align: center; } `,"getStyles"),lRe=oRe,cRe={parser:aRe,db:y9,renderer:iRe,styles:lRe,init:v(t=>{t.flowchart||(t.flowchart={}),t.layout&&VS({layout:t.layout}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,VS({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}}),y9.clear(),y9.setGen("gen-2")},"init")}});var Ane,_ne=F(()=>{Ane=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i});function uRe(t){return typeof t=="string"&&Ane.test(t)}var Lne,Rne=F(()=>{_ne();Lne=uRe});function Nne(t,e=0){return da[t[e+0]]+da[t[e+1]]+da[t[e+2]]+da[t[e+3]]+"-"+da[t[e+4]]+da[t[e+5]]+"-"+da[t[e+6]]+da[t[e+7]]+"-"+da[t[e+8]]+da[t[e+9]]+"-"+da[t[e+10]]+da[t[e+11]]+da[t[e+12]]+da[t[e+13]]+da[t[e+14]]+da[t[e+15]]}var da,Ine=F(()=>{da=[];for(let t=0;t<256;++t)da.push((t+256).toString(16).slice(1))});function hRe(t){if(!Lne(t))throw TypeError("Invalid UUID");let e,r=new Uint8Array(16);return r[0]=(e=parseInt(t.slice(0,8),16))>>>24,r[1]=e>>>16&255,r[2]=e>>>8&255,r[3]=e&255,r[4]=(e=parseInt(t.slice(9,13),16))>>>8,r[5]=e&255,r[6]=(e=parseInt(t.slice(14,18),16))>>>8,r[7]=e&255,r[8]=(e=parseInt(t.slice(19,23),16))>>>8,r[9]=e&255,r[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,r[11]=e/4294967296&255,r[12]=e>>>24&255,r[13]=e>>>16&255,r[14]=e>>>8&255,r[15]=e&255,r}var Mne,Dne=F(()=>{Rne();Mne=hRe});function fRe(t){t=unescape(encodeURIComponent(t));let e=[];for(let r=0;r{Ine();Dne();dRe="6ba7b810-9dad-11d1-80b4-00c04fd430c8",pRe="6ba7b811-9dad-11d1-80b4-00c04fd430c8"});function gRe(t,e,r,n){switch(t){case 0:return e&r^~e&n;case 1:return e^r^n;case 2:return e&r^e&n^r&n;case 3:return e^r^n}}function S9(t,e){return t<>>32-e}function mRe(t){let e=[1518500249,1859775393,2400959708,3395469782],r=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof t=="string"){let s=unescape(encodeURIComponent(t));t=[];for(let o=0;o>>0;d=f,f=h,h=S9(u,30)>>>0,u=l,l=m}r[0]=r[0]+l>>>0,r[1]=r[1]+u>>>0,r[2]=r[2]+h>>>0,r[3]=r[3]+f>>>0,r[4]=r[4]+d>>>0}return[r[0]>>24&255,r[0]>>16&255,r[0]>>8&255,r[0]&255,r[1]>>24&255,r[1]>>16&255,r[1]>>8&255,r[1]&255,r[2]>>24&255,r[2]>>16&255,r[2]>>8&255,r[2]&255,r[3]>>24&255,r[3]>>16&255,r[3]>>8&255,r[3]&255,r[4]>>24&255,r[4]>>16&255,r[4]>>8&255,r[4]&255]}var Pne,Bne=F(()=>{Pne=mRe});var vRe,C9,Fne=F(()=>{One();Bne();vRe=E9("v5",80,Pne),C9=vRe});var zne=F(()=>{Fne()});var Wne={};vr(Wne,{diagram:()=>$Re});function Vne(t="",e=""){let r=t.replace(_Re,"");return`${_9(e)}${_9(r)}${C9(t,PRe)}`}function _9(t=""){return t.length>0?`${t}-`:""}var A9,yRe,Od,L9,xRe,bRe,Gne,wRe,kRe,TRe,ERe,SRe,CRe,kl,ARe,Tl,_Re,Ai,wy,LRe,RRe,NRe,IRe,Une,MRe,$ne,DRe,ORe,PRe,BRe,FRe,zRe,$Re,Hne=F(()=>{kn();or();As();lr();uy();zne();A9=function(){var t=v(function(S,C,M,R){for(M=M||{},R=S.length;R--;M[S[R]]=C);return M},"o"),e=[6,8,10,20,22,24,26,27,28],r=[1,10],n=[1,11],i=[1,12],a=[1,13],s=[1,14],o=[1,15],l=[1,21],u=[1,22],h=[1,23],f=[1,24],d=[1,25],p=[6,8,10,13,15,18,19,20,22,24,26,27,28,41,42,43,44,45],g=[1,34],m=[27,28,46,47],y=[41,42,43,44,45],x=[17,34],b=[1,54],w=[1,53],_=[17,34,36,38],k={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,":":13,role:14,BLOCK_START:15,attributes:16,BLOCK_STOP:17,SQS:18,SQE:19,title:20,title_value:21,acc_title:22,acc_title_value:23,acc_descr:24,acc_descr_value:25,acc_descr_multiline_value:26,ALPHANUM:27,ENTITY_NAME:28,attribute:29,attributeType:30,attributeName:31,attributeKeyTypeList:32,attributeComment:33,ATTRIBUTE_WORD:34,attributeKeyType:35,COMMA:36,ATTRIBUTE_KEY:37,COMMENT:38,cardinality:39,relType:40,ZERO_OR_ONE:41,ZERO_OR_MORE:42,ONE_OR_MORE:43,ONLY_ONE:44,MD_PARENT:45,NON_IDENTIFYING:46,IDENTIFYING:47,WORD:48,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:":",15:"BLOCK_START",17:"BLOCK_STOP",18:"SQS",19:"SQE",20:"title",21:"title_value",22:"acc_title",23:"acc_title_value",24:"acc_descr",25:"acc_descr_value",26:"acc_descr_multiline_value",27:"ALPHANUM",28:"ENTITY_NAME",34:"ATTRIBUTE_WORD",36:"COMMA",37:"ATTRIBUTE_KEY",38:"COMMENT",41:"ZERO_OR_ONE",42:"ZERO_OR_MORE",43:"ONE_OR_MORE",44:"ONLY_ONE",45:"MD_PARENT",46:"NON_IDENTIFYING",47:"IDENTIFYING",48:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,4],[9,3],[9,1],[9,7],[9,6],[9,4],[9,2],[9,2],[9,2],[9,1],[11,1],[11,1],[16,1],[16,2],[29,2],[29,3],[29,3],[29,4],[30,1],[31,1],[32,1],[32,3],[35,1],[33,1],[12,3],[39,1],[39,1],[39,1],[39,1],[39,1],[40,1],[40,1],[14,1],[14,1],[14,1]],performAction:v(function(C,M,R,T,I,A,D){var N=A.length-1;switch(I){case 1:break;case 2:this.$=[];break;case 3:A[N-1].push(A[N]),this.$=A[N-1];break;case 4:case 5:this.$=A[N];break;case 6:case 7:this.$=[];break;case 8:T.addEntity(A[N-4]),T.addEntity(A[N-2]),T.addRelationship(A[N-4],A[N],A[N-2],A[N-3]);break;case 9:T.addEntity(A[N-3]),T.addAttributes(A[N-3],A[N-1]);break;case 10:T.addEntity(A[N-2]);break;case 11:T.addEntity(A[N]);break;case 12:T.addEntity(A[N-6],A[N-4]),T.addAttributes(A[N-6],A[N-1]);break;case 13:T.addEntity(A[N-5],A[N-3]);break;case 14:T.addEntity(A[N-3],A[N-1]);break;case 15:case 16:this.$=A[N].trim(),T.setAccTitle(this.$);break;case 17:case 18:this.$=A[N].trim(),T.setAccDescription(this.$);break;case 19:case 43:this.$=A[N];break;case 20:case 41:case 42:this.$=A[N].replace(/"/g,"");break;case 21:case 29:this.$=[A[N]];break;case 22:A[N].push(A[N-1]),this.$=A[N];break;case 23:this.$={attributeType:A[N-1],attributeName:A[N]};break;case 24:this.$={attributeType:A[N-2],attributeName:A[N-1],attributeKeyTypeList:A[N]};break;case 25:this.$={attributeType:A[N-2],attributeName:A[N-1],attributeComment:A[N]};break;case 26:this.$={attributeType:A[N-3],attributeName:A[N-2],attributeKeyTypeList:A[N-1],attributeComment:A[N]};break;case 27:case 28:case 31:this.$=A[N];break;case 30:A[N-2].push(A[N]),this.$=A[N-2];break;case 32:this.$=A[N].replace(/"/g,"");break;case 33:this.$={cardA:A[N],relType:A[N-1],cardB:A[N-2]};break;case 34:this.$=T.Cardinality.ZERO_OR_ONE;break;case 35:this.$=T.Cardinality.ZERO_OR_MORE;break;case 36:this.$=T.Cardinality.ONE_OR_MORE;break;case 37:this.$=T.Cardinality.ONLY_ONE;break;case 38:this.$=T.Cardinality.MD_PARENT;break;case 39:this.$=T.Identification.NON_IDENTIFYING;break;case 40:this.$=T.Identification.IDENTIFYING;break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,20:r,22:n,24:i,26:a,27:s,28:o},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:16,11:9,20:r,22:n,24:i,26:a,27:s,28:o},t(e,[2,5]),t(e,[2,6]),t(e,[2,11],{12:17,39:20,15:[1,18],18:[1,19],41:l,42:u,43:h,44:f,45:d}),{21:[1,26]},{23:[1,27]},{25:[1,28]},t(e,[2,18]),t(p,[2,19]),t(p,[2,20]),t(e,[2,4]),{11:29,27:s,28:o},{16:30,17:[1,31],29:32,30:33,34:g},{11:35,27:s,28:o},{40:36,46:[1,37],47:[1,38]},t(m,[2,34]),t(m,[2,35]),t(m,[2,36]),t(m,[2,37]),t(m,[2,38]),t(e,[2,15]),t(e,[2,16]),t(e,[2,17]),{13:[1,39]},{17:[1,40]},t(e,[2,10]),{16:41,17:[2,21],29:32,30:33,34:g},{31:42,34:[1,43]},{34:[2,27]},{19:[1,44]},{39:45,41:l,42:u,43:h,44:f,45:d},t(y,[2,39]),t(y,[2,40]),{14:46,27:[1,49],28:[1,48],48:[1,47]},t(e,[2,9]),{17:[2,22]},t(x,[2,23],{32:50,33:51,35:52,37:b,38:w}),t([17,34,37,38],[2,28]),t(e,[2,14],{15:[1,55]}),t([27,28],[2,33]),t(e,[2,8]),t(e,[2,41]),t(e,[2,42]),t(e,[2,43]),t(x,[2,24],{33:56,36:[1,57],38:w}),t(x,[2,25]),t(_,[2,29]),t(x,[2,32]),t(_,[2,31]),{16:58,17:[1,59],29:32,30:33,34:g},t(x,[2,26]),{35:60,37:b},{17:[1,61]},t(e,[2,13]),t(_,[2,30]),t(e,[2,12])],defaultActions:{34:[2,27],41:[2,22]},parseError:v(function(C,M){if(M.recoverable)this.trace(C);else{var R=new Error(C);throw R.hash=M,R}},"parseError"),parse:v(function(C){var M=this,R=[0],T=[],I=[null],A=[],D=this.table,N="",O=0,B=0,P=0,$=2,z=1,H=A.slice.call(arguments,1),J=Object.create(this.lexer),X={yy:{}};for(var oe in this.yy)Object.prototype.hasOwnProperty.call(this.yy,oe)&&(X.yy[oe]=this.yy[oe]);J.setInput(C,X.yy),X.yy.lexer=J,X.yy.parser=this,typeof J.yylloc>"u"&&(J.yylloc={});var K=J.yylloc;A.push(K);var ee=J.options&&J.options.ranges;typeof X.yy.parseError=="function"?this.parseError=X.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Q(De){R.length=R.length-2*De,I.length=I.length-De,A.length=A.length-De}v(Q,"popStack");function W(){var De;return De=T.pop()||J.lex()||z,typeof De!="number"&&(De instanceof Array&&(T=De,De=T.pop()),De=M.symbols_[De]||De),De}v(W,"lex");for(var Y,Z,se,ce,ue,te,Ne={},ae,we,Ie,Ee;;){if(se=R[R.length-1],this.defaultActions[se]?ce=this.defaultActions[se]:((Y===null||typeof Y>"u")&&(Y=W()),ce=D[se]&&D[se][Y]),typeof ce>"u"||!ce.length||!ce[0]){var Oe="";Ee=[];for(ae in D[se])this.terminals_[ae]&&ae>$&&Ee.push("'"+this.terminals_[ae]+"'");J.showPosition?Oe="Parse error on line "+(O+1)+`: `+J.showPosition()+` Expecting `+Ee.join(", ")+", got '"+(this.terminals_[Y]||Y)+"'":Oe="Parse error on line "+(O+1)+": Unexpected "+(Y==z?"end of input":"'"+(this.terminals_[Y]||Y)+"'"),this.parseError(Oe,{text:J.match,token:this.terminals_[Y]||Y,line:J.yylineno,loc:K,expected:Ee})}if(ce[0]instanceof Array&&ce.length>1)throw new Error("Parse Error: multiple actions possible at state: "+se+", token: "+Y);switch(ce[0]){case 1:R.push(Y),I.push(J.yytext),A.push(J.yylloc),R.push(ce[1]),Y=null,Z?(Y=Z,Z=null):(B=J.yyleng,N=J.yytext,O=J.yylineno,K=J.yylloc,P>0&&P--);break;case 2:if(we=this.productions_[ce[1]][1],Ne.$=I[I.length-we],Ne._$={first_line:A[A.length-(we||1)].first_line,last_line:A[A.length-1].last_line,first_column:A[A.length-(we||1)].first_column,last_column:A[A.length-1].last_column},ee&&(Ne._$.range=[A[A.length-(we||1)].range[0],A[A.length-1].range[1]]),te=this.performAction.apply(Ne,[N,B,O,X.yy,ce[1],I,A].concat(H)),typeof te<"u")return te;we&&(R=R.slice(0,-1*we*2),I=I.slice(0,-1*we),A=A.slice(0,-1*we)),R.push(this.productions_[ce[1]][0]),I.push(Ne.$),A.push(Ne._$),Ie=D[R[R.length-2]][R[R.length-1]],R.push(Ie);break;case 3:return!0}}return!0},"parse")},E=function(){var S={EOF:1,parseError:v(function(M,R){if(this.yy.parser)this.yy.parser.parseError(M,R);else throw new Error(M)},"parseError"),setInput:v(function(C,M){return this.yy=M||this.yy||{},this._input=C,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var C=this._input[0];this.yytext+=C,this.yyleng++,this.offset++,this.match+=C,this.matched+=C;var M=C.match(/(?:\r\n?|\n).*/g);return M?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),C},"input"),unput:v(function(C){var M=C.length,R=C.split(/(?:\r\n?|\n)/g);this._input=C+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-M),this.offset-=M;var T=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),R.length-1&&(this.yylineno-=R.length-1);var I=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:R?(R.length===T.length?this.yylloc.first_column:0)+T[T.length-R.length].length-R[0].length:this.yylloc.first_column-M},this.options.ranges&&(this.yylloc.range=[I[0],I[0]+this.yyleng-M]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(C){this.unput(this.match.slice(C))},"less"),pastInput:v(function(){var C=this.matched.substr(0,this.matched.length-this.match.length);return(C.length>20?"...":"")+C.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var C=this.match;return C.length<20&&(C+=this._input.substr(0,20-C.length)),(C.substr(0,20)+(C.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var C=this.pastInput(),M=new Array(C.length+1).join("-");return C+this.upcomingInput()+` `+M+"^"},"showPosition"),test_match:v(function(C,M){var R,T,I;if(this.options.backtrack_lexer&&(I={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(I.yylloc.range=this.yylloc.range.slice(0))),T=C[0].match(/(?:\r\n?|\n).*/g),T&&(this.yylineno+=T.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:T?T[T.length-1].length-T[T.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+C[0].length},this.yytext+=C[0],this.match+=C[0],this.matches=C,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(C[0].length),this.matched+=C[0],R=this.performAction.call(this,this.yy,this,M,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),R)return R;if(this._backtrack){for(var A in I)this[A]=I[A];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var C,M,R,T;this._more||(this.yytext="",this.match="");for(var I=this._currentRules(),A=0;AM[0].length)){if(M=R,T=A,this.options.backtrack_lexer){if(C=this.test_match(R,I[A]),C!==!1)return C;if(this._backtrack){M=!1;continue}else return!1}else if(!this.options.flex)break}return M?(C=this.test_match(M,I[T]),C!==!1?C:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var M=this.next();return M||this.lex()},"lex"),begin:v(function(M){this.conditionStack.push(M)},"begin"),popState:v(function(){var M=this.conditionStack.length-1;return M>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(M){return M=this.conditionStack.length-1-Math.abs(M||0),M>=0?this.conditionStack[M]:"INITIAL"},"topState"),pushState:v(function(M){this.begin(M)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:v(function(M,R,T,I){var A=I;switch(T){case 0:return this.begin("acc_title"),22;break;case 1:return this.popState(),"acc_title_value";break;case 2:return this.begin("acc_descr"),24;break;case 3:return this.popState(),"acc_descr_value";break;case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 10;case 8:break;case 9:return 8;case 10:return 28;case 11:return 48;case 12:return 4;case 13:return this.begin("block"),15;break;case 14:return 36;case 15:break;case 16:return 37;case 17:return 34;case 18:return 34;case 19:return 38;case 20:break;case 21:return this.popState(),17;break;case 22:return R.yytext[0];case 23:return 18;case 24:return 19;case 25:return 41;case 26:return 43;case 27:return 43;case 28:return 43;case 29:return 41;case 30:return 41;case 31:return 42;case 32:return 42;case 33:return 42;case 34:return 42;case 35:return 42;case 36:return 43;case 37:return 42;case 38:return 43;case 39:return 44;case 40:return 44;case 41:return 44;case 42:return 44;case 43:return 41;case 44:return 42;case 45:return 43;case 46:return 45;case 47:return 46;case 48:return 47;case 49:return 47;case 50:return 46;case 51:return 46;case 52:return 46;case 53:return 27;case 54:return R.yytext[0];case 55:return 6}},"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[\*A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[14,15,16,17,18,19,20,21,22],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],inclusive:!0}}};return S}();k.lexer=E;function L(){this.yy={}}return v(L,"Parser"),L.prototype=k,k.Parser=L,new L}();A9.parser=A9;yRe=A9,Od=new Map,L9=[],xRe={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},bRe={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},Gne=v(function(t,e=void 0){return Od.has(t)?!Od.get(t).alias&&e&&(Od.get(t).alias=e,re.info(`Add alias '${e}' to entity '${t}'`)):(Od.set(t,{attributes:[],alias:e}),re.info("Added new entity :",t)),Od.get(t)},"addEntity"),wRe=v(()=>Od,"getEntities"),kRe=v(function(t,e){let r=Gne(t),n;for(n=e.length-1;n>=0;n--)r.attributes.push(e[n]),re.debug("Added attribute ",e[n].attributeName)},"addAttributes"),TRe=v(function(t,e,r,n){let i={entityA:t,roleA:e,entityB:r,relSpec:n};L9.push(i),re.debug("Added new relationship :",i)},"addRelationship"),ERe=v(()=>L9,"getRelationships"),SRe=v(function(){Od=new Map,L9=[],xr()},"clear"),CRe={Cardinality:xRe,Identification:bRe,getConfig:v(()=>pe().er,"getConfig"),addEntity:Gne,addAttributes:kRe,getEntities:wRe,addRelationship:TRe,getRelationships:ERe,clear:SRe,setAccTitle:Tr,getAccTitle:_r,setAccDescription:Lr,getAccDescription:Rr,setDiagramTitle:tn,getDiagramTitle:qr},kl={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END",MD_PARENT_END:"MD_PARENT_END",MD_PARENT_START:"MD_PARENT_START"},ARe=v(function(t,e){let r;t.append("defs").append("marker").attr("id",kl.MD_PARENT_START).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",kl.MD_PARENT_END).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",kl.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",kl.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),r=t.append("defs").append("marker").attr("id",kl.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M9,0 L9,18"),r=t.append("defs").append("marker").attr("id",kl.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,0 L21,18"),t.append("defs").append("marker").attr("id",kl.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",kl.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),r=t.append("defs").append("marker").attr("id",kl.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),r=t.append("defs").append("marker").attr("id",kl.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),r.append("circle").attr("stroke",e.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),r.append("path").attr("stroke",e.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")},"insertMarkers"),Tl={ERMarkers:kl,insertMarkers:ARe},_Re=/[^\dA-Za-z](\W)*/g,Ai={},wy=new Map,LRe=v(function(t){let e=Object.keys(t);for(let r of e)Ai[r]=t[r]},"setConf"),RRe=v((t,e,r)=>{let n=Ai.entityPadding/3,i=Ai.entityPadding/3,a=Ai.fontSize*.85,s=e.node().getBBox(),o=[],l=!1,u=!1,h=0,f=0,d=0,p=0,g=s.height+n*2,m=1;r.forEach(w=>{w.attributeKeyTypeList!==void 0&&w.attributeKeyTypeList.length>0&&(l=!0),w.attributeComment!==void 0&&(u=!0)}),r.forEach(w=>{let _=`${e.node().id}-attr-${m}`,k=0,E=iu(w.attributeType),L=t.append("text").classed("er entityLabel",!0).attr("id",`${_}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",pe().fontFamily).style("font-size",a+"px").text(E),S=t.append("text").classed("er entityLabel",!0).attr("id",`${_}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",pe().fontFamily).style("font-size",a+"px").text(w.attributeName),C={};C.tn=L,C.nn=S;let M=L.node().getBBox(),R=S.node().getBBox();if(h=Math.max(h,M.width),f=Math.max(f,R.width),k=Math.max(M.height,R.height),l){let T=w.attributeKeyTypeList!==void 0?w.attributeKeyTypeList.join(","):"",I=t.append("text").classed("er entityLabel",!0).attr("id",`${_}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",pe().fontFamily).style("font-size",a+"px").text(T);C.kn=I;let A=I.node().getBBox();d=Math.max(d,A.width),k=Math.max(k,A.height)}if(u){let T=t.append("text").classed("er entityLabel",!0).attr("id",`${_}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",pe().fontFamily).style("font-size",a+"px").text(w.attributeComment||"");C.cn=T;let I=T.node().getBBox();p=Math.max(p,I.width),k=Math.max(k,I.height)}C.height=k,o.push(C),g+=k+n*2,m+=1});let y=4;l&&(y+=2),u&&(y+=2);let x=h+f+d+p,b={width:Math.max(Ai.minEntityWidth,Math.max(s.width+Ai.entityPadding*2,x+i*y)),height:r.length>0?g:Math.max(Ai.minEntityHeight,s.height+Ai.entityPadding*2)};if(r.length>0){let w=Math.max(0,(b.width-x-i*y)/(y/2));e.attr("transform","translate("+b.width/2+","+(n+s.height/2)+")");let _=s.height+n*2,k="attributeBoxOdd";o.forEach(E=>{let L=_+n+E.height/2;E.tn.attr("transform","translate("+i+","+L+")");let S=t.insert("rect","#"+E.tn.node().id).classed(`er ${k}`,!0).attr("x",0).attr("y",_).attr("width",h+i*2+w).attr("height",E.height+n*2),C=parseFloat(S.attr("x"))+parseFloat(S.attr("width"));E.nn.attr("transform","translate("+(C+i)+","+L+")");let M=t.insert("rect","#"+E.nn.node().id).classed(`er ${k}`,!0).attr("x",C).attr("y",_).attr("width",f+i*2+w).attr("height",E.height+n*2),R=parseFloat(M.attr("x"))+parseFloat(M.attr("width"));if(l){E.kn.attr("transform","translate("+(R+i)+","+L+")");let T=t.insert("rect","#"+E.kn.node().id).classed(`er ${k}`,!0).attr("x",R).attr("y",_).attr("width",d+i*2+w).attr("height",E.height+n*2);R=parseFloat(T.attr("x"))+parseFloat(T.attr("width"))}u&&(E.cn.attr("transform","translate("+(R+i)+","+L+")"),t.insert("rect","#"+E.cn.node().id).classed(`er ${k}`,"true").attr("x",R).attr("y",_).attr("width",p+i*2+w).attr("height",E.height+n*2)),_+=E.height+n*2,k=k==="attributeBoxOdd"?"attributeBoxEven":"attributeBoxOdd"})}else b.height=Math.max(Ai.minEntityHeight,g),e.attr("transform","translate("+b.width/2+","+b.height/2+")");return b},"drawAttributes"),NRe=v(function(t,e,r){let n=[...e.keys()],i;return n.forEach(function(a){let s=Vne(a,"entity");wy.set(a,s);let o=t.append("g").attr("id",s);i=i===void 0?s:i;let l="text-"+s,u=o.append("text").classed("er entityLabel",!0).attr("id",l).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",pe().fontFamily).style("font-size",Ai.fontSize+"px").text(e.get(a).alias??a),{width:h,height:f}=RRe(o,u,e.get(a).attributes),p=o.insert("rect","#"+l).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",h).attr("height",f).node().getBBox();r.setNode(s,{width:p.width,height:p.height,shape:"rect",id:s})}),i},"drawEntities"),IRe=v(function(t,e){e.nodes().forEach(function(r){r!==void 0&&e.node(r)!==void 0&&t.select("#"+r).attr("transform","translate("+(e.node(r).x-e.node(r).width/2)+","+(e.node(r).y-e.node(r).height/2)+" )")})},"adjustEntities"),Une=v(function(t){return(t.entityA+t.roleA+t.entityB).replace(/\s/g,"")},"getEdgeName"),MRe=v(function(t,e){return t.forEach(function(r){e.setEdge(wy.get(r.entityA),wy.get(r.entityB),{relationship:r},Une(r))}),t},"addRelationships"),$ne=0,DRe=v(function(t,e,r,n,i){$ne++;let a=r.edge(wy.get(e.entityA),wy.get(e.entityB),Une(e)),s=ms().x(function(m){return m.x}).y(function(m){return m.y}).curve(gl),o=t.insert("path","#"+n).classed("er relationshipLine",!0).attr("d",s(a.points)).style("stroke",Ai.stroke).style("fill","none");e.relSpec.relType===i.db.Identification.NON_IDENTIFYING&&o.attr("stroke-dasharray","8,8");let l="";switch(Ai.arrowMarkerAbsolute&&(l=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,l=l.replace(/\(/g,"\\("),l=l.replace(/\)/g,"\\)")),e.relSpec.cardA){case i.db.Cardinality.ZERO_OR_ONE:o.attr("marker-end","url("+l+"#"+Tl.ERMarkers.ZERO_OR_ONE_END+")");break;case i.db.Cardinality.ZERO_OR_MORE:o.attr("marker-end","url("+l+"#"+Tl.ERMarkers.ZERO_OR_MORE_END+")");break;case i.db.Cardinality.ONE_OR_MORE:o.attr("marker-end","url("+l+"#"+Tl.ERMarkers.ONE_OR_MORE_END+")");break;case i.db.Cardinality.ONLY_ONE:o.attr("marker-end","url("+l+"#"+Tl.ERMarkers.ONLY_ONE_END+")");break;case i.db.Cardinality.MD_PARENT:o.attr("marker-end","url("+l+"#"+Tl.ERMarkers.MD_PARENT_END+")");break}switch(e.relSpec.cardB){case i.db.Cardinality.ZERO_OR_ONE:o.attr("marker-start","url("+l+"#"+Tl.ERMarkers.ZERO_OR_ONE_START+")");break;case i.db.Cardinality.ZERO_OR_MORE:o.attr("marker-start","url("+l+"#"+Tl.ERMarkers.ZERO_OR_MORE_START+")");break;case i.db.Cardinality.ONE_OR_MORE:o.attr("marker-start","url("+l+"#"+Tl.ERMarkers.ONE_OR_MORE_START+")");break;case i.db.Cardinality.ONLY_ONE:o.attr("marker-start","url("+l+"#"+Tl.ERMarkers.ONLY_ONE_START+")");break;case i.db.Cardinality.MD_PARENT:o.attr("marker-start","url("+l+"#"+Tl.ERMarkers.MD_PARENT_START+")");break}let u=o.node().getTotalLength(),h=o.node().getPointAtLength(u*.5),f="rel"+$ne,d=e.roleA.split(/
    /g),p=t.append("text").classed("er relationshipLabel",!0).attr("id",f).attr("x",h.x).attr("y",h.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",pe().fontFamily).style("font-size",Ai.fontSize+"px");if(d.length==1)p.text(e.roleA);else{let m=-(d.length-1)*.5;d.forEach((y,x)=>{p.append("tspan").attr("x",h.x).attr("dy",`${x===0?m:1}em`).text(y)})}let g=p.node().getBBox();t.insert("rect","#"+f).classed("er relationshipLabelBox",!0).attr("x",h.x-g.width/2).attr("y",h.y-g.height/2).attr("width",g.width).attr("height",g.height)},"drawRelationshipFromLayout"),ORe=v(function(t,e,r,n){Ai=pe().er,re.info("Drawing ER diagram");let i=pe().securityLevel,a;i==="sandbox"&&(a=Ve("#i"+e));let o=(i==="sandbox"?Ve(a.nodes()[0].contentDocument.body):Ve("body")).select(`[id='${e}']`);Tl.insertMarkers(o,Ai);let l;l=new Sr({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:Ai.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});let u=NRe(o,n.db.getEntities(),l),h=MRe(n.db.getRelationships(),l);Ru(l),IRe(o,l),h.forEach(function(m){DRe(o,m,l,u,n)});let f=Ai.diagramPadding;Ut.insertTitle(o,"entityTitleText",Ai.titleTopMargin,n.db.getDiagramTitle());let d=o.node().getBBox(),p=d.width+f*2,g=d.height+f*2;Hr(o,g,p,Ai.useMaxWidth),o.attr("viewBox",`${d.x-f} ${d.y-f} ${p} ${g}`)},"draw"),PRe="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";v(Vne,"generateId");v(_9,"strWithHyphen");BRe={setConf:LRe,draw:ORe},FRe=v(t=>` .entityBox { fill: ${t.mainBkg}; stroke: ${t.nodeBorder}; } .attributeBoxOdd { fill: ${t.attributeBackgroundColorOdd}; stroke: ${t.nodeBorder}; } .attributeBoxEven { fill: ${t.attributeBackgroundColorEven}; stroke: ${t.nodeBorder}; } .relationshipLabelBox { fill: ${t.tertiaryColor}; opacity: 0.7; background-color: ${t.tertiaryColor}; rect { opacity: 0.5; } } .relationshipLine { stroke: ${t.lineColor}; } .entityTitleText { text-anchor: middle; font-size: 18px; fill: ${t.textColor}; } #MD_PARENT_START { fill: #f5f5f5 !important; stroke: ${t.lineColor} !important; stroke-width: 1; } #MD_PARENT_END { fill: #f5f5f5 !important; stroke: ${t.lineColor} !important; stroke-width: 1; } `,"getStyles"),zRe=FRe,$Re={parser:yRe,db:CRe,renderer:BRe,styles:zRe}});function Pu(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}var ky=F(()=>{or();v(Pu,"populateCommonDb")});var Rg,Hw=F(()=>{or();Rg=class{constructor(t){this.init=t,this.records=this.init()}static{v(this,"ImperativeState")}reset(){this.records=this.init()}}});function Xn(t){return typeof t=="object"&&t!==null&&typeof t.$type=="string"}function pa(t){return typeof t=="object"&&t!==null&&typeof t.$refText=="string"}function R9(t){return typeof t=="object"&&t!==null&&typeof t.name=="string"&&typeof t.type=="string"&&typeof t.path=="string"}function Bd(t){return typeof t=="object"&&t!==null&&Xn(t.container)&&pa(t.reference)&&typeof t.message=="string"}function eo(t){return typeof t=="object"&&t!==null&&Array.isArray(t.content)}function Qh(t){return typeof t=="object"&&t!==null&&typeof t.tokenType=="object"}function Ty(t){return eo(t)&&typeof t.fullText=="string"}var Pd,$o=F(()=>{Pd=class{constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,r){return Xn(e)&&this.isSubtype(e.$type,r)}isSubtype(e,r){if(e===r)return!0;let n=this.subtypes[e];n||(n=this.subtypes[e]={});let i=n[r];if(i!==void 0)return i;{let a=this.computeIsSubtype(e,r);return n[r]=a,a}}getAllSubTypes(e){let r=this.allSubtypes[e];if(r)return r;{let n=this.getAllTypes(),i=[];for(let a of n)this.isSubtype(a,e)&&i.push(a);return this.allSubtypes[e]=i,i}}}});function GRe(t){return typeof t=="string"?t:typeof t>"u"?"undefined":typeof t.toString=="function"?t.toString():Object.prototype.toString.call(t)}function qw(t){return!!t&&typeof t[Symbol.iterator]=="function"}function Xr(...t){if(t.length===1){let e=t[0];if(e instanceof to)return e;if(qw(e))return new to(()=>e[Symbol.iterator](),r=>r.next());if(typeof e.length=="number")return new to(()=>({index:0}),r=>r.index1?new to(()=>({collIndex:0,arrIndex:0}),e=>{do{if(e.iterator){let r=e.iterator.next();if(!r.done)return r;e.iterator=void 0}if(e.array){if(e.arrIndex{to=class t{constructor(e,r){this.startFn=e,this.nextFn=r}iterator(){let e={state:this.startFn(),next:()=>this.nextFn(e.state),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){return!!this.iterator().next().done}count(){let e=this.iterator(),r=0,n=e.next();for(;!n.done;)r++,n=e.next();return r}toArray(){let e=[],r=this.iterator(),n;do n=r.next(),n.value!==void 0&&e.push(n.value);while(!n.done);return e}toSet(){return new Set(this)}toMap(e,r){let n=this.map(i=>[e?e(i):i,r?r(i):i]);return new Map(n)}toString(){return this.join()}concat(e){let r=e[Symbol.iterator]();return new t(()=>({first:this.startFn(),firstDone:!1}),n=>{let i;if(!n.firstDone){do if(i=this.nextFn(n.first),!i.done)return i;while(!i.done);n.firstDone=!0}do if(i=r.next(),!i.done)return i;while(!i.done);return Za})}join(e=","){let r=this.iterator(),n="",i,a=!1;do i=r.next(),i.done||(a&&(n+=e),n+=GRe(i.value)),a=!0;while(!i.done);return n}indexOf(e,r=0){let n=this.iterator(),i=0,a=n.next();for(;!a.done;){if(i>=r&&a.value===e)return i;a=n.next(),i++}return-1}every(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(!e(n.value))return!1;n=r.next()}return!0}some(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return!0;n=r.next()}return!1}forEach(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;)e(i.value,n),i=r.next(),n++}map(e){return new t(this.startFn,r=>{let{done:n,value:i}=this.nextFn(r);return n?Za:{done:!1,value:e(i)}})}filter(e){return new t(this.startFn,r=>{let n;do if(n=this.nextFn(r),!n.done&&e(n.value))return n;while(!n.done);return Za})}nonNullable(){return this.filter(e=>e!=null)}reduce(e,r){let n=this.iterator(),i=r,a=n.next();for(;!a.done;)i===void 0?i=a.value:i=e(i,a.value),a=n.next();return i}reduceRight(e,r){return this.recursiveReduce(this.iterator(),e,r)}recursiveReduce(e,r,n){let i=e.next();if(i.done)return n;let a=this.recursiveReduce(e,r,n);return a===void 0?i.value:r(a,i.value)}find(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(e(n.value))return n.value;n=r.next()}}findIndex(e){let r=this.iterator(),n=0,i=r.next();for(;!i.done;){if(e(i.value))return n;i=r.next(),n++}return-1}includes(e){let r=this.iterator(),n=r.next();for(;!n.done;){if(n.value===e)return!0;n=r.next()}return!1}flatMap(e){return new t(()=>({this:this.startFn()}),r=>{do{if(r.iterator){let a=r.iterator.next();if(a.done)r.iterator=void 0;else return a}let{done:n,value:i}=this.nextFn(r.this);if(!n){let a=e(i);if(qw(a))r.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}}while(r.iterator);return Za})}flat(e){if(e===void 0&&(e=1),e<=0)return this;let r=e>1?this.flat(e-1):this;return new t(()=>({this:r.startFn()}),n=>{do{if(n.iterator){let s=n.iterator.next();if(s.done)n.iterator=void 0;else return s}let{done:i,value:a}=r.nextFn(n.this);if(!i)if(qw(a))n.iterator=a[Symbol.iterator]();else return{done:!1,value:a}}while(n.iterator);return Za})}head(){let r=this.iterator().next();if(!r.done)return r.value}tail(e=1){return new t(()=>{let r=this.startFn();for(let n=0;n({size:0,state:this.startFn()}),r=>(r.size++,r.size>e?Za:this.nextFn(r.state)))}distinct(e){let r=new Set;return this.filter(n=>{let i=e?e(n):n;return r.has(i)?!1:(r.add(i),!0)})}exclude(e,r){let n=new Set;for(let i of e){let a=r?r(i):i;n.add(a)}return this.filter(i=>{let a=r?r(i):i;return!n.has(a)})}};Ey=new to(()=>{},()=>Za),Za=Object.freeze({done:!0,value:void 0});Cc=class extends to{constructor(e,r,n){super(()=>({iterators:n?.includeRoot?[[e][Symbol.iterator]()]:[r(e)[Symbol.iterator]()],pruned:!1}),i=>{for(i.pruned&&(i.iterators.pop(),i.pruned=!1);i.iterators.length>0;){let s=i.iterators[i.iterators.length-1].next();if(s.done)i.iterators.pop();else return i.iterators.push(r(s.value)[Symbol.iterator]()),s}return Za})}iterator(){let e={state:this.startFn(),next:()=>this.nextFn(e.state),prune:()=>{e.state.pruned=!0},[Symbol.iterator]:()=>e};return e}};(function(t){function e(a){return a.reduce((s,o)=>s+o,0)}t.sum=e;function r(a){return a.reduce((s,o)=>s*o,0)}t.product=r;function n(a){return a.reduce((s,o)=>Math.min(s,o))}t.min=n;function i(a){return a.reduce((s,o)=>Math.max(s,o))}t.max=i})(Ng||(Ng={}))});var Xw={};vr(Xw,{DefaultNameRegexp:()=>Yw,RangeComparison:()=>Bu,compareRange:()=>Yne,findCommentNode:()=>D9,findDeclarationNodeAtOffset:()=>VRe,findLeafNodeAtOffset:()=>O9,findLeafNodeBeforeOffset:()=>Xne,flattenCst:()=>URe,getInteriorNodes:()=>qRe,getNextNode:()=>WRe,getPreviousNode:()=>Kne,getStartlineNode:()=>HRe,inRange:()=>M9,isChildNode:()=>I9,isCommentNode:()=>N9,streamCst:()=>Fd,toDocumentSegment:()=>zd,tokenToRange:()=>Ig});function Fd(t){return new Cc(t,e=>eo(e)?e.content:[],{includeRoot:!0})}function URe(t){return Fd(t).filter(Qh)}function I9(t,e){for(;t.container;)if(t=t.container,t===e)return!0;return!1}function Ig(t){return{start:{character:t.startColumn-1,line:t.startLine-1},end:{character:t.endColumn,line:t.endLine-1}}}function zd(t){if(!t)return;let{offset:e,end:r,range:n}=t;return{range:n,offset:e,end:r,length:r-e}}function Yne(t,e){if(t.end.linee.end.line||t.start.line===e.end.line&&t.start.character>e.end.character)return Bu.After;let r=t.start.line>e.start.line||t.start.line===e.start.line&&t.start.character>=e.start.character,n=t.end.lineBu.After}function VRe(t,e,r=Yw){if(t){if(e>0){let n=e-t.offset,i=t.text.charAt(n);r.test(i)||e--}return O9(t,e)}}function D9(t,e){if(t){let r=Kne(t,!0);if(r&&N9(r,e))return r;if(Ty(t)){let n=t.content.findIndex(i=>!i.hidden);for(let i=n-1;i>=0;i--){let a=t.content[i];if(N9(a,e))return a}}}}function N9(t,e){return Qh(t)&&e.includes(t.tokenType.name)}function O9(t,e){if(Qh(t))return t;if(eo(t)){let r=jne(t,e,!1);if(r)return O9(r,e)}}function Xne(t,e){if(Qh(t))return t;if(eo(t)){let r=jne(t,e,!0);if(r)return Xne(r,e)}}function jne(t,e,r){let n=0,i=t.content.length-1,a;for(;n<=i;){let s=Math.floor((n+i)/2),o=t.content[s];if(o.offset<=e&&o.end>e)return o;o.end<=e?(a=r?o:void 0,n=s+1):i=s-1}return a}function Kne(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t);for(;n>0;){n--;let i=r.content[n];if(e||!i.hidden)return i}t=r}}function WRe(t,e=!0){for(;t.container;){let r=t.container,n=r.content.indexOf(t),i=r.content.length-1;for(;n{$o();Ls();(function(t){t[t.Before=0]="Before",t[t.After=1]="After",t[t.OverlapFront=2]="OverlapFront",t[t.OverlapBack=3]="OverlapBack",t[t.Inside=4]="Inside"})(Bu||(Bu={}));Yw=/^[\w\p{L}]$/u});function Jh(t){throw new Error("Error! The input value was not handled.")}var $d,jw=F(()=>{$d=class extends Error{constructor(e,r){super(e?`${r} at ${e.range.start.line}:${e.range.start.character}`:r)}}});var Ly={};vr(Ly,{AbstractElement:()=>B9,AbstractRule:()=>Sy,AbstractType:()=>Cy,Action:()=>hL,Alternatives:()=>fL,ArrayLiteral:()=>F9,ArrayType:()=>z9,Assignment:()=>dL,BooleanLiteral:()=>G9,CharacterRange:()=>pL,Condition:()=>Kw,Conjunction:()=>V9,CrossReference:()=>mL,Disjunction:()=>H9,EndOfFile:()=>vL,Grammar:()=>Y9,GrammarImport:()=>Qne,Group:()=>xL,InferredType:()=>X9,Interface:()=>j9,Keyword:()=>bL,LangiumGrammarAstReflection:()=>Mg,LangiumGrammarTerminals:()=>XRe,NamedArgument:()=>Jne,NegatedToken:()=>wL,Negation:()=>K9,NumberLiteral:()=>Q9,Parameter:()=>J9,ParameterReference:()=>eL,ParserRule:()=>rL,ReferenceType:()=>nL,RegexToken:()=>TL,ReturnType:()=>eie,RuleCall:()=>SL,SimpleType:()=>sL,StringLiteral:()=>oL,TerminalAlternatives:()=>CL,TerminalGroup:()=>_L,TerminalRule:()=>Qw,TerminalRuleCall:()=>RL,Type:()=>lL,TypeAttribute:()=>tie,TypeDefinition:()=>P9,UnionType:()=>cL,UnorderedGroup:()=>NL,UntilToken:()=>IL,ValueLiteral:()=>Zw,Wildcard:()=>DL,isAbstractElement:()=>Ay,isAbstractRule:()=>jRe,isAbstractType:()=>KRe,isAction:()=>Fu,isAlternatives:()=>rk,isArrayLiteral:()=>tNe,isArrayType:()=>$9,isAssignment:()=>Sl,isBooleanLiteral:()=>U9,isCharacterRange:()=>gL,isCondition:()=>ZRe,isConjunction:()=>W9,isCrossReference:()=>Gd,isDisjunction:()=>q9,isEndOfFile:()=>yL,isFeatureName:()=>QRe,isGrammar:()=>rNe,isGrammarImport:()=>nNe,isGroup:()=>ef,isInferredType:()=>Jw,isInterface:()=>ek,isKeyword:()=>Uo,isNamedArgument:()=>iNe,isNegatedToken:()=>kL,isNegation:()=>Z9,isNumberLiteral:()=>aNe,isParameter:()=>sNe,isParameterReference:()=>tL,isParserRule:()=>Ra,isPrimitiveType:()=>Zne,isReferenceType:()=>iL,isRegexToken:()=>EL,isReturnType:()=>aL,isRuleCall:()=>Cl,isSimpleType:()=>tk,isStringLiteral:()=>oNe,isTerminalAlternatives:()=>AL,isTerminalGroup:()=>LL,isTerminalRule:()=>Go,isTerminalRuleCall:()=>nk,isType:()=>_y,isTypeAttribute:()=>lNe,isTypeDefinition:()=>JRe,isUnionType:()=>uL,isUnorderedGroup:()=>ik,isUntilToken:()=>ML,isValueLiteral:()=>eNe,isWildcard:()=>OL,reflection:()=>nr});function jRe(t){return nr.isInstance(t,Sy)}function KRe(t){return nr.isInstance(t,Cy)}function ZRe(t){return nr.isInstance(t,Kw)}function QRe(t){return Zne(t)||t==="current"||t==="entry"||t==="extends"||t==="false"||t==="fragment"||t==="grammar"||t==="hidden"||t==="import"||t==="interface"||t==="returns"||t==="terminal"||t==="true"||t==="type"||t==="infer"||t==="infers"||t==="with"||typeof t=="string"&&/\^?[_a-zA-Z][\w_]*/.test(t)}function Zne(t){return t==="string"||t==="number"||t==="boolean"||t==="Date"||t==="bigint"}function JRe(t){return nr.isInstance(t,P9)}function eNe(t){return nr.isInstance(t,Zw)}function Ay(t){return nr.isInstance(t,B9)}function tNe(t){return nr.isInstance(t,F9)}function $9(t){return nr.isInstance(t,z9)}function U9(t){return nr.isInstance(t,G9)}function W9(t){return nr.isInstance(t,V9)}function q9(t){return nr.isInstance(t,H9)}function rNe(t){return nr.isInstance(t,Y9)}function nNe(t){return nr.isInstance(t,Qne)}function Jw(t){return nr.isInstance(t,X9)}function ek(t){return nr.isInstance(t,j9)}function iNe(t){return nr.isInstance(t,Jne)}function Z9(t){return nr.isInstance(t,K9)}function aNe(t){return nr.isInstance(t,Q9)}function sNe(t){return nr.isInstance(t,J9)}function tL(t){return nr.isInstance(t,eL)}function Ra(t){return nr.isInstance(t,rL)}function iL(t){return nr.isInstance(t,nL)}function aL(t){return nr.isInstance(t,eie)}function tk(t){return nr.isInstance(t,sL)}function oNe(t){return nr.isInstance(t,oL)}function Go(t){return nr.isInstance(t,Qw)}function _y(t){return nr.isInstance(t,lL)}function lNe(t){return nr.isInstance(t,tie)}function uL(t){return nr.isInstance(t,cL)}function Fu(t){return nr.isInstance(t,hL)}function rk(t){return nr.isInstance(t,fL)}function Sl(t){return nr.isInstance(t,dL)}function gL(t){return nr.isInstance(t,pL)}function Gd(t){return nr.isInstance(t,mL)}function yL(t){return nr.isInstance(t,vL)}function ef(t){return nr.isInstance(t,xL)}function Uo(t){return nr.isInstance(t,bL)}function kL(t){return nr.isInstance(t,wL)}function EL(t){return nr.isInstance(t,TL)}function Cl(t){return nr.isInstance(t,SL)}function AL(t){return nr.isInstance(t,CL)}function LL(t){return nr.isInstance(t,_L)}function nk(t){return nr.isInstance(t,RL)}function ik(t){return nr.isInstance(t,NL)}function ML(t){return nr.isInstance(t,IL)}function OL(t){return nr.isInstance(t,DL)}var XRe,Sy,Cy,Kw,P9,Zw,B9,F9,z9,G9,V9,H9,Y9,Qne,X9,j9,Jne,K9,Q9,J9,eL,rL,nL,eie,sL,oL,Qw,lL,tie,cL,hL,fL,dL,pL,mL,vL,xL,bL,wL,TL,SL,CL,_L,RL,NL,IL,DL,Mg,nr,Ac=F(()=>{$o();XRe={ID:/\^?[_a-zA-Z][\w_]*/,STRING:/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'/,NUMBER:/NaN|-?((\d*\.\d+|\d+)([Ee][+-]?\d+)?|Infinity)/,RegexLiteral:/\/(?![*+?])(?:[^\r\n\[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*\])+\/[a-z]*/,WS:/\s+/,ML_COMMENT:/\/\*[\s\S]*?\*\//,SL_COMMENT:/\/\/[^\n\r]*/},Sy="AbstractRule";Cy="AbstractType";Kw="Condition";P9="TypeDefinition";Zw="ValueLiteral";B9="AbstractElement";F9="ArrayLiteral";z9="ArrayType";G9="BooleanLiteral";V9="Conjunction";H9="Disjunction";Y9="Grammar";Qne="GrammarImport";X9="InferredType";j9="Interface";Jne="NamedArgument";K9="Negation";Q9="NumberLiteral";J9="Parameter";eL="ParameterReference";rL="ParserRule";nL="ReferenceType";eie="ReturnType";sL="SimpleType";oL="StringLiteral";Qw="TerminalRule";lL="Type";tie="TypeAttribute";cL="UnionType";hL="Action";fL="Alternatives";dL="Assignment";pL="CharacterRange";mL="CrossReference";vL="EndOfFile";xL="Group";bL="Keyword";wL="NegatedToken";TL="RegexToken";SL="RuleCall";CL="TerminalAlternatives";_L="TerminalGroup";RL="TerminalRuleCall";NL="UnorderedGroup";IL="UntilToken";DL="Wildcard";Mg=class extends Pd{getAllTypes(){return["AbstractElement","AbstractRule","AbstractType","Action","Alternatives","ArrayLiteral","ArrayType","Assignment","BooleanLiteral","CharacterRange","Condition","Conjunction","CrossReference","Disjunction","EndOfFile","Grammar","GrammarImport","Group","InferredType","Interface","Keyword","NamedArgument","NegatedToken","Negation","NumberLiteral","Parameter","ParameterReference","ParserRule","ReferenceType","RegexToken","ReturnType","RuleCall","SimpleType","StringLiteral","TerminalAlternatives","TerminalGroup","TerminalRule","TerminalRuleCall","Type","TypeAttribute","TypeDefinition","UnionType","UnorderedGroup","UntilToken","ValueLiteral","Wildcard"]}computeIsSubtype(e,r){switch(e){case hL:case fL:case dL:case pL:case mL:case vL:case xL:case bL:case wL:case TL:case SL:case CL:case _L:case RL:case NL:case IL:case DL:return this.isSubtype(B9,r);case F9:case Q9:case oL:return this.isSubtype(Zw,r);case z9:case nL:case sL:case cL:return this.isSubtype(P9,r);case G9:return this.isSubtype(Kw,r)||this.isSubtype(Zw,r);case V9:case H9:case K9:case eL:return this.isSubtype(Kw,r);case X9:case j9:case lL:return this.isSubtype(Cy,r);case rL:return this.isSubtype(Sy,r)||this.isSubtype(Cy,r);case Qw:return this.isSubtype(Sy,r);default:return!1}}getReferenceType(e){let r=`${e.container.$type}:${e.property}`;switch(r){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return Cy;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return Sy;case"Grammar:usedGrammars":return Y9;case"NamedArgument:parameter":case"ParameterReference:parameter":return J9;case"TerminalRuleCall:rule":return Qw;default:throw new Error(`${r} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case"AbstractElement":return{name:"AbstractElement",properties:[{name:"cardinality"},{name:"lookahead"}]};case"ArrayLiteral":return{name:"ArrayLiteral",properties:[{name:"elements",defaultValue:[]}]};case"ArrayType":return{name:"ArrayType",properties:[{name:"elementType"}]};case"BooleanLiteral":return{name:"BooleanLiteral",properties:[{name:"true",defaultValue:!1}]};case"Conjunction":return{name:"Conjunction",properties:[{name:"left"},{name:"right"}]};case"Disjunction":return{name:"Disjunction",properties:[{name:"left"},{name:"right"}]};case"Grammar":return{name:"Grammar",properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case"GrammarImport":return{name:"GrammarImport",properties:[{name:"path"}]};case"InferredType":return{name:"InferredType",properties:[{name:"name"}]};case"Interface":return{name:"Interface",properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case"NamedArgument":return{name:"NamedArgument",properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case"Negation":return{name:"Negation",properties:[{name:"value"}]};case"NumberLiteral":return{name:"NumberLiteral",properties:[{name:"value"}]};case"Parameter":return{name:"Parameter",properties:[{name:"name"}]};case"ParameterReference":return{name:"ParameterReference",properties:[{name:"parameter"}]};case"ParserRule":return{name:"ParserRule",properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case"ReferenceType":return{name:"ReferenceType",properties:[{name:"referenceType"}]};case"ReturnType":return{name:"ReturnType",properties:[{name:"name"}]};case"SimpleType":return{name:"SimpleType",properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case"StringLiteral":return{name:"StringLiteral",properties:[{name:"value"}]};case"TerminalRule":return{name:"TerminalRule",properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case"Type":return{name:"Type",properties:[{name:"name"},{name:"type"}]};case"TypeAttribute":return{name:"TypeAttribute",properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case"UnionType":return{name:"UnionType",properties:[{name:"types",defaultValue:[]}]};case"Action":return{name:"Action",properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case"Alternatives":return{name:"Alternatives",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case"Assignment":return{name:"Assignment",properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case"CharacterRange":return{name:"CharacterRange",properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case"CrossReference":return{name:"CrossReference",properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case"EndOfFile":return{name:"EndOfFile",properties:[{name:"cardinality"},{name:"lookahead"}]};case"Group":return{name:"Group",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case"Keyword":return{name:"Keyword",properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case"NegatedToken":return{name:"NegatedToken",properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case"RegexToken":return{name:"RegexToken",properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case"RuleCall":return{name:"RuleCall",properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case"TerminalAlternatives":return{name:"TerminalAlternatives",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case"TerminalGroup":return{name:"TerminalGroup",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case"TerminalRuleCall":return{name:"TerminalRuleCall",properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case"UnorderedGroup":return{name:"UnorderedGroup",properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case"UntilToken":return{name:"UntilToken",properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case"Wildcard":return{name:"Wildcard",properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}},nr=new Mg});var sk={};vr(sk,{assignMandatoryProperties:()=>FL,copyAstNode:()=>BL,findLocalReferences:()=>uNe,findRootNode:()=>rie,getContainerOfType:()=>Ud,getDocument:()=>_i,hasContainerOfType:()=>cNe,linkContentToContainer:()=>ak,streamAllContents:()=>_c,streamAst:()=>Vo,streamContents:()=>Ry,streamReferences:()=>Dg});function ak(t){for(let[e,r]of Object.entries(t))e.startsWith("$")||(Array.isArray(r)?r.forEach((n,i)=>{Xn(n)&&(n.$container=t,n.$containerProperty=e,n.$containerIndex=i)}):Xn(r)&&(r.$container=t,r.$containerProperty=e))}function Ud(t,e){let r=t;for(;r;){if(e(r))return r;r=r.$container}}function cNe(t,e){let r=t;for(;r;){if(e(r))return!0;r=r.$container}return!1}function _i(t){let r=rie(t).$document;if(!r)throw new Error("AST node has no document.");return r}function rie(t){for(;t.$container;)t=t.$container;return t}function Ry(t,e){if(!t)throw new Error("Node must be an AstNode.");let r=e?.range;return new to(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),n=>{for(;n.keyIndexRy(r,e))}function Vo(t,e){if(t){if(e?.range&&!PL(t,e.range))return new Cc(t,()=>[])}else throw new Error("Root node must be an AstNode.");return new Cc(t,r=>Ry(r,e),{includeRoot:!0})}function PL(t,e){var r;if(!e)return!0;let n=(r=t.$cstNode)===null||r===void 0?void 0:r.range;return n?M9(n,e):!1}function Dg(t){return new to(()=>({keys:Object.keys(t),keyIndex:0,arrayIndex:0}),e=>{for(;e.keyIndex{Dg(n).forEach(i=>{i.reference.ref===t&&r.push(i.reference)})}),Xr(r)}function FL(t,e){let r=t.getTypeMetaData(e.$type),n=e;for(let i of r.properties)i.defaultValue!==void 0&&n[i.name]===void 0&&(n[i.name]=nie(i.defaultValue))}function nie(t){return Array.isArray(t)?[...t.map(nie)]:t}function BL(t,e){let r={$type:t.$type};for(let[n,i]of Object.entries(t))if(!n.startsWith("$"))if(Xn(i))r[n]=BL(i,e);else if(pa(i))r[n]=e(r,n,i.$refNode,i.$refText);else if(Array.isArray(i)){let a=[];for(let s of i)Xn(s)?a.push(BL(s,e)):pa(s)?a.push(e(r,n,s.$refNode,s.$refText)):a.push(s);r[n]=a}else r[n]=i;return ak(r),r}var Qa=F(()=>{$o();Ls();El()});function Zt(t){return t.charCodeAt(0)}function ok(t,e){Array.isArray(t)?t.forEach(function(r){e.push(r)}):e.push(t)}function Og(t,e){if(t[e]===!0)throw"duplicate flag "+e;let r=t[e];t[e]=!0}function Vd(t){if(t===void 0)throw Error("Internal Error - Should never get here!");return!0}function Ny(){throw Error("Internal Error - Should never get here!")}function zL(t){return t.type==="Character"}var $L=F(()=>{});var Iy,My,GL,iie=F(()=>{$L();Iy=[];for(let t=Zt("0");t<=Zt("9");t++)Iy.push(t);My=[Zt("_")].concat(Iy);for(let t=Zt("a");t<=Zt("z");t++)My.push(t);for(let t=Zt("A");t<=Zt("Z");t++)My.push(t);GL=[Zt(" "),Zt("\f"),Zt(` `),Zt("\r"),Zt(" "),Zt("\v"),Zt(" "),Zt("\xA0"),Zt("\u1680"),Zt("\u2000"),Zt("\u2001"),Zt("\u2002"),Zt("\u2003"),Zt("\u2004"),Zt("\u2005"),Zt("\u2006"),Zt("\u2007"),Zt("\u2008"),Zt("\u2009"),Zt("\u200A"),Zt("\u2028"),Zt("\u2029"),Zt("\u202F"),Zt("\u205F"),Zt("\u3000"),Zt("\uFEFF")]});var hNe,lk,fNe,Wd,aie=F(()=>{$L();iie();hNe=/[0-9a-fA-F]/,lk=/[0-9]/,fNe=/[1-9]/,Wd=class{constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");let r=this.disjunction();this.consumeChar("/");let n={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":Og(n,"global");break;case"i":Og(n,"ignoreCase");break;case"m":Og(n,"multiLine");break;case"u":Og(n,"unicode");break;case"y":Og(n,"sticky");break}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:r,loc:this.loc(0)}}disjunction(){let e=[],r=this.idx;for(e.push(this.alternative());this.peekChar()==="|";)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(r)}}alternative(){let e=[],r=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(r)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){let e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":this.consumeChar("?");let r;switch(this.popChar()){case"=":r="Lookahead";break;case"!":r="NegativeLookahead";break}Vd(r);let n=this.disjunction();return this.consumeChar(")"),{type:r,value:n,loc:this.loc(e)}}return Ny()}quantifier(e=!1){let r,n=this.idx;switch(this.popChar()){case"*":r={atLeast:0,atMost:1/0};break;case"+":r={atLeast:1,atMost:1/0};break;case"?":r={atLeast:0,atMost:1};break;case"{":let i=this.integerIncludingZero();switch(this.popChar()){case"}":r={atLeast:i,atMost:i};break;case",":let a;this.isDigit()?(a=this.integerIncludingZero(),r={atLeast:i,atMost:a}):r={atLeast:i,atMost:1/0},this.consumeChar("}");break}if(e===!0&&r===void 0)return;Vd(r);break}if(!(e===!0&&r===void 0)&&Vd(r))return this.peekChar(0)==="?"?(this.consumeChar("?"),r.greedy=!1):r.greedy=!0,r.type="Quantifier",r.loc=this.loc(n),r}atom(){let e,r=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group();break}return e===void 0&&this.isPatternCharacter()&&(e=this.patternCharacter()),Vd(e)?(e.loc=this.loc(r),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):Ny()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[Zt(` `),Zt("\r"),Zt("\u2028"),Zt("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,r=!1;switch(this.popChar()){case"d":e=Iy;break;case"D":e=Iy,r=!0;break;case"s":e=GL;break;case"S":e=GL,r=!0;break;case"w":e=My;break;case"W":e=My,r=!0;break}return Vd(e)?{type:"Set",value:e,complement:r}:Ny()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=Zt("\f");break;case"n":e=Zt(` `);break;case"r":e=Zt("\r");break;case"t":e=Zt(" ");break;case"v":e=Zt("\v");break}return Vd(e)?{type:"Character",value:e}:Ny()}controlLetterEscapeAtom(){this.consumeChar("c");let e=this.popChar();if(/[a-zA-Z]/.test(e)===!1)throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:Zt("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){let e=this.popChar();return{type:"Character",value:Zt(e)}}classPatternCharacterAtom(){switch(this.peekChar()){case` `:case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:let e=this.popChar();return{type:"Character",value:Zt(e)}}}characterClass(){let e=[],r=!1;for(this.consumeChar("["),this.peekChar(0)==="^"&&(this.consumeChar("^"),r=!0);this.isClassAtom();){let n=this.classAtom(),i=n.type==="Character";if(zL(n)&&this.isRangeDash()){this.consumeChar("-");let a=this.classAtom(),s=a.type==="Character";if(zL(a)){if(a.value=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}}});var Lc,sie=F(()=>{Lc=class{visitChildren(e){for(let r in e){let n=e[r];e.hasOwnProperty(r)&&(n.type!==void 0?this.visit(n):Array.isArray(n)&&n.forEach(i=>{this.visit(i)},this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e);break}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}}});var Dy=F(()=>{aie();sie()});var uk={};vr(uk,{NEWLINE_REGEXP:()=>VL,escapeRegExp:()=>qd,getCaseInsensitivePattern:()=>HL,getTerminalParts:()=>dNe,isMultilineComment:()=>WL,isWhitespace:()=>ck,partialMatches:()=>qL,partialRegExp:()=>lie});function dNe(t){try{typeof t!="string"&&(t=t.source),t=`/${t}/`;let e=oie.pattern(t),r=[];for(let n of e.value.value)Hd.reset(t),Hd.visit(n),r.push({start:Hd.startRegexp,end:Hd.endRegex});return r}catch{return[]}}function WL(t){try{return typeof t=="string"&&(t=new RegExp(t)),t=t.toString(),Hd.reset(t),Hd.visit(oie.pattern(t)),Hd.multiline}catch{return!1}}function ck(t){return(typeof t=="string"?new RegExp(t):t).test(" ")}function qd(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function HL(t){return Array.prototype.map.call(t,e=>/\w/.test(e)?`[${e.toLowerCase()}${e.toUpperCase()}]`:qd(e)).join("")}function qL(t,e){let r=lie(t),n=e.match(r);return!!n&&n[0].length>0}function lie(t){typeof t=="string"&&(t=new RegExp(t));let e=t,r=t.source,n=0;function i(){let a="",s;function o(u){a+=r.substr(n,u),n+=u}function l(u){a+="(?:"+r.substr(n,u)+"|$)",n+=u}for(;n",n)-n+1);break;default:l(2);break}break;case"[":s=/\[(?:\\.|.)*?\]/g,s.lastIndex=n,s=s.exec(r)||[],l(s[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":o(1);break;case"{":s=/\{\d+,?\d*\}/g,s.lastIndex=n,s=s.exec(r),s?o(s[0].length):l(1);break;case"(":if(r[n+1]==="?")switch(r[n+2]){case":":a+="(?:",n+=3,a+=i()+"|$)";break;case"=":a+="(?=",n+=3,a+=i()+")";break;case"!":s=n,n+=3,i(),a+=r.substr(s,n-s);break;case"<":switch(r[n+3]){case"=":case"!":s=n,n+=4,i(),a+=r.substr(s,n-s);break;default:o(r.indexOf(">",n)-n+1),a+=i()+"|$)";break}break}else o(1),a+=i()+"|$)";break;case")":return++n,a;default:l(1);break}return a}return new RegExp(i(),t.flags)}var VL,oie,UL,Hd,Pg=F(()=>{Dy();VL=/\r?\n/gm,oie=new Wd,UL=class extends Lc{constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){let r=String.fromCharCode(e.value);if(!this.multiline&&r===` `&&(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let n=qd(r);this.endRegexpStack.push(n),this.isStarting&&(this.startRegexp+=n)}}visitSet(e){if(!this.multiline){let r=this.regex.substring(e.loc.begin,e.loc.end),n=new RegExp(r);this.multiline=!!` `.match(n)}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{let r=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(r),this.isStarting&&(this.startRegexp+=r)}}visitChildren(e){e.type==="Group"&&e.quantifier||super.visitChildren(e)}},Hd=new UL});var fk={};vr(fk,{findAssignment:()=>tR,findNameAssignment:()=>hk,findNodeForKeyword:()=>JL,findNodeForProperty:()=>Py,findNodesForKeyword:()=>pNe,findNodesForKeywordInternal:()=>eR,findNodesForProperty:()=>ZL,getActionAtElement:()=>die,getActionType:()=>gie,getAllReachableRules:()=>Oy,getCrossReferenceTerminal:()=>jL,getEntryRule:()=>cie,getExplicitRuleType:()=>rR,getHiddenRules:()=>uie,getRuleType:()=>nR,getTypeName:()=>Yd,isArrayCardinality:()=>mNe,isArrayOperator:()=>vNe,isCommentTerminal:()=>KL,isDataType:()=>yNe,isDataTypeRule:()=>By,isOptionalCardinality:()=>gNe,terminalRegex:()=>Bg});function cie(t){return t.rules.find(e=>Ra(e)&&e.entry)}function uie(t){return t.rules.filter(e=>Go(e)&&e.hidden)}function Oy(t,e){let r=new Set,n=cie(t);if(!n)return new Set(t.rules);let i=[n].concat(uie(t));for(let s of i)hie(s,r,e);let a=new Set;for(let s of t.rules)(r.has(s.name)||Go(s)&&s.hidden)&&a.add(s);return a}function hie(t,e,r){e.add(t.name),_c(t).forEach(n=>{if(Cl(n)||r&&nk(n)){let i=n.rule.ref;i&&!e.has(i.name)&&hie(i,e,r)}})}function jL(t){if(t.terminal)return t.terminal;if(t.type.ref){let e=hk(t.type.ref);return e?.terminal}}function KL(t){return t.hidden&&!Bg(t).test(" ")}function ZL(t,e){return!t||!e?[]:QL(t,e,t.astNode,!0)}function Py(t,e,r){if(!t||!e)return;let n=QL(t,e,t.astNode,!0);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function QL(t,e,r,n){if(!n){let i=Ud(t.grammarSource,Sl);if(i&&i.feature===e)return[t]}return eo(t)&&t.astNode===r?t.content.flatMap(i=>QL(i,e,r,!1)):[]}function pNe(t,e){return t?eR(t,e,t?.astNode):[]}function JL(t,e,r){if(!t)return;let n=eR(t,e,t?.astNode);if(n.length!==0)return r!==void 0?r=Math.max(0,Math.min(r,n.length-1)):r=0,n[r]}function eR(t,e,r){if(t.astNode!==r)return[];if(Uo(t.grammarSource)&&t.grammarSource.value===e)return[t];let n=Fd(t).iterator(),i,a=[];do if(i=n.next(),!i.done){let s=i.value;s.astNode===r?Uo(s.grammarSource)&&s.grammarSource.value===e&&a.push(s):n.prune()}while(!i.done);return a}function tR(t){var e;let r=t.astNode;for(;r===((e=t.container)===null||e===void 0?void 0:e.astNode);){let n=Ud(t.grammarSource,Sl);if(n)return n;t=t.container}}function hk(t){let e=t;return Jw(e)&&(Fu(e.$container)?e=e.$container.$container:Ra(e.$container)?e=e.$container:Jh(e.$container)),fie(t,e,new Map)}function fie(t,e,r){var n;function i(a,s){let o;return Ud(a,Sl)||(o=fie(s,s,r)),r.set(t,o),o}if(r.has(t))return r.get(t);r.set(t,void 0);for(let a of _c(e)){if(Sl(a)&&a.feature.toLowerCase()==="name")return r.set(t,a),a;if(Cl(a)&&Ra(a.rule.ref))return i(a,a.rule.ref);if(tk(a)&&(!((n=a.typeRef)===null||n===void 0)&&n.ref))return i(a,a.typeRef.ref)}}function die(t){let e=t.$container;if(ef(e)){let r=e.elements,n=r.indexOf(t);for(let i=n-1;i>=0;i--){let a=r[i];if(Fu(a))return a;{let s=_c(r[i]).find(Fu);if(s)return s}}}if(Ay(e))return die(e)}function gNe(t,e){return t==="?"||t==="*"||ef(e)&&!!e.guardCondition}function mNe(t){return t==="*"||t==="+"}function vNe(t){return t==="+="}function By(t){return pie(t,new Set)}function pie(t,e){if(e.has(t))return!0;e.add(t);for(let r of _c(t))if(Cl(r)){if(!r.rule.ref||Ra(r.rule.ref)&&!pie(r.rule.ref,e))return!1}else{if(Sl(r))return!1;if(Fu(r))return!1}return!!t.definition}function yNe(t){return XL(t.type,new Set)}function XL(t,e){if(e.has(t))return!0;if(e.add(t),$9(t))return!1;if(iL(t))return!1;if(uL(t))return t.types.every(r=>XL(r,e));if(tk(t)){if(t.primitiveType!==void 0)return!0;if(t.stringType!==void 0)return!0;if(t.typeRef!==void 0){let r=t.typeRef.ref;return _y(r)?XL(r.type,e):!1}else return!1}else return!1}function rR(t){if(t.inferredType)return t.inferredType.name;if(t.dataType)return t.dataType;if(t.returnType){let e=t.returnType.ref;if(e){if(Ra(e))return e.name;if(ek(e)||_y(e))return e.name}}}function Yd(t){var e;if(Ra(t))return By(t)?t.name:(e=rR(t))!==null&&e!==void 0?e:t.name;if(ek(t)||_y(t)||aL(t))return t.name;if(Fu(t)){let r=gie(t);if(r)return r}else if(Jw(t))return t.name;throw new Error("Cannot get name of Unknown Type")}function gie(t){var e;if(t.inferredType)return t.inferredType.name;if(!((e=t.type)===null||e===void 0)&&e.ref)return Yd(t.type.ref)}function nR(t){var e,r,n;return Go(t)?(r=(e=t.type)===null||e===void 0?void 0:e.name)!==null&&r!==void 0?r:"string":By(t)?t.name:(n=rR(t))!==null&&n!==void 0?n:t.name}function Bg(t){let e={s:!1,i:!1,u:!1},r=Fg(t.definition,e),n=Object.entries(e).filter(([,i])=>i).map(([i])=>i).join("");return new RegExp(r,n)}function Fg(t,e){if(AL(t))return xNe(t);if(LL(t))return bNe(t);if(gL(t))return TNe(t);if(nk(t)){let r=t.rule.ref;if(!r)throw new Error("Missing rule reference.");return zu(Fg(r.definition),{cardinality:t.cardinality,lookahead:t.lookahead})}else{if(kL(t))return kNe(t);if(ML(t))return wNe(t);if(EL(t)){let r=t.regex.lastIndexOf("/"),n=t.regex.substring(1,r),i=t.regex.substring(r+1);return e&&(e.i=i.includes("i"),e.s=i.includes("s"),e.u=i.includes("u")),zu(n,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}else{if(OL(t))return zu(iR,{cardinality:t.cardinality,lookahead:t.lookahead});throw new Error(`Invalid terminal element: ${t?.$type}`)}}}function xNe(t){return zu(t.elements.map(e=>Fg(e)).join("|"),{cardinality:t.cardinality,lookahead:t.lookahead})}function bNe(t){return zu(t.elements.map(e=>Fg(e)).join(""),{cardinality:t.cardinality,lookahead:t.lookahead})}function wNe(t){return zu(`${iR}*?${Fg(t.terminal)}`,{cardinality:t.cardinality,lookahead:t.lookahead})}function kNe(t){return zu(`(?!${Fg(t.terminal)})${iR}*?`,{cardinality:t.cardinality,lookahead:t.lookahead})}function TNe(t){return t.right?zu(`[${YL(t.left)}-${YL(t.right)}]`,{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1}):zu(YL(t.left),{cardinality:t.cardinality,lookahead:t.lookahead,wrap:!1})}function YL(t){return qd(t.value)}function zu(t,e){var r;return(e.wrap!==!1||e.lookahead)&&(t=`(${(r=e.lookahead)!==null&&r!==void 0?r:""}${t})`),e.cardinality?`${t}${e.cardinality}`:t}var iR,Al=F(()=>{jw();Ac();$o();Qa();El();Pg();iR=/[\s\S]/.source});function aR(t){let e=[],r=t.Grammar;for(let n of r.rules)Go(n)&&KL(n)&&WL(Bg(n))&&e.push(n.name);return{multilineCommentRules:e,nameRegexp:Yw}}var sR=F(()=>{El();Al();Pg();Ac()});var oR=F(()=>{});function zg(t){console&&console.error&&console.error(`Error: ${t}`)}function Fy(t){console&&console.warn&&console.warn(`Warning: ${t}`)}var mie=F(()=>{});function zy(t){let e=new Date().getTime(),r=t();return{time:new Date().getTime()-e,value:r}}var vie=F(()=>{});function $y(t){function e(){}e.prototype=t;let r=new e;function n(){return typeof r.bar}return n(),n(),t;(0,eval)(t)}var yie=F(()=>{});var $g=F(()=>{mie();vie();yie()});function ENe(t){return SNe(t)?t.LABEL:t.name}function SNe(t){return ci(t.LABEL)&&t.LABEL!==""}function dk(t){return je(t,Gg)}function Gg(t){function e(r){return je(r,Gg)}if(t instanceof Kr){let r={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return ci(t.label)&&(r.label=t.label),r}else{if(t instanceof En)return{type:"Alternative",definition:e(t.definition)};if(t instanceof Zr)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof Sn)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof Cn)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:Gg(new pr({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof pn)return{type:"RepetitionWithSeparator",idx:t.idx,separator:Gg(new pr({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof br)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof gn)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof pr){let r={type:"Terminal",name:t.terminalType.name,label:ENe(t.terminalType),idx:t.idx};ci(t.label)&&(r.terminalLabel=t.label);let n=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(r.pattern=Io(n)?n.source:n),r}else{if(t instanceof Ja)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}}}var ro,Kr,Ja,En,Zr,Sn,Cn,br,pn,gn,pr,pk=F(()=>{Ot();ro=class{get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){this._definition=e}accept(e){e.visit(this),Te(this.definition,r=>{r.accept(e)})}},Kr=class extends ro{constructor(e){super([]),this.idx=1,ua(this,Cs(e,r=>r!==void 0))}set definition(e){}get definition(){return this.referencedRule!==void 0?this.referencedRule.definition:[]}accept(e){e.visit(this)}},Ja=class extends ro{constructor(e){super(e.definition),this.orgText="",ua(this,Cs(e,r=>r!==void 0))}},En=class extends ro{constructor(e){super(e.definition),this.ignoreAmbiguities=!1,ua(this,Cs(e,r=>r!==void 0))}},Zr=class extends ro{constructor(e){super(e.definition),this.idx=1,ua(this,Cs(e,r=>r!==void 0))}},Sn=class extends ro{constructor(e){super(e.definition),this.idx=1,ua(this,Cs(e,r=>r!==void 0))}},Cn=class extends ro{constructor(e){super(e.definition),this.idx=1,ua(this,Cs(e,r=>r!==void 0))}},br=class extends ro{constructor(e){super(e.definition),this.idx=1,ua(this,Cs(e,r=>r!==void 0))}},pn=class extends ro{constructor(e){super(e.definition),this.idx=1,ua(this,Cs(e,r=>r!==void 0))}},gn=class extends ro{get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,ua(this,Cs(e,r=>r!==void 0))}},pr=class{constructor(e){this.idx=1,ua(this,Cs(e,r=>r!==void 0))}accept(e){e.visit(this)}}});var es,xie=F(()=>{pk();es=class{visit(e){let r=e;switch(r.constructor){case Kr:return this.visitNonTerminal(r);case En:return this.visitAlternative(r);case Zr:return this.visitOption(r);case Sn:return this.visitRepetitionMandatory(r);case Cn:return this.visitRepetitionMandatoryWithSeparator(r);case pn:return this.visitRepetitionWithSeparator(r);case br:return this.visitRepetition(r);case gn:return this.visitAlternation(r);case pr:return this.visitTerminal(r);case Ja:return this.visitRule(r);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}}});function lR(t){return t instanceof En||t instanceof Zr||t instanceof br||t instanceof Sn||t instanceof Cn||t instanceof pn||t instanceof pr||t instanceof Ja}function Xd(t,e=[]){return t instanceof Zr||t instanceof br||t instanceof pn?!0:t instanceof gn?sy(t.definition,n=>Xd(n,e)):t instanceof Kr&&Bn(e,t)?!1:t instanceof ro?(t instanceof Kr&&e.push(t),_a(t.definition,n=>Xd(n,e))):!1}function cR(t){return t instanceof gn}function Rs(t){if(t instanceof Kr)return"SUBRULE";if(t instanceof Zr)return"OPTION";if(t instanceof gn)return"OR";if(t instanceof Sn)return"AT_LEAST_ONE";if(t instanceof Cn)return"AT_LEAST_ONE_SEP";if(t instanceof pn)return"MANY_SEP";if(t instanceof br)return"MANY";if(t instanceof pr)return"CONSUME";throw Error("non exhaustive match")}var bie=F(()=>{Ot();pk()});var ts=F(()=>{pk();xie();bie()});function wie(t,e,r){return[new Zr({definition:[new pr({terminalType:t.separator})].concat(t.definition)})].concat(e,r)}var $u,gk=F(()=>{Ot();ts();$u=class{walk(e,r=[]){Te(e.definition,(n,i)=>{let a=li(e.definition,i+1);if(n instanceof Kr)this.walkProdRef(n,a,r);else if(n instanceof pr)this.walkTerminal(n,a,r);else if(n instanceof En)this.walkFlat(n,a,r);else if(n instanceof Zr)this.walkOption(n,a,r);else if(n instanceof Sn)this.walkAtLeastOne(n,a,r);else if(n instanceof Cn)this.walkAtLeastOneSep(n,a,r);else if(n instanceof pn)this.walkManySep(n,a,r);else if(n instanceof br)this.walkMany(n,a,r);else if(n instanceof gn)this.walkOr(n,a,r);else throw Error("non exhaustive match")})}walkTerminal(e,r,n){}walkProdRef(e,r,n){}walkFlat(e,r,n){let i=r.concat(n);this.walk(e,i)}walkOption(e,r,n){let i=r.concat(n);this.walk(e,i)}walkAtLeastOne(e,r,n){let i=[new Zr({definition:e.definition})].concat(r,n);this.walk(e,i)}walkAtLeastOneSep(e,r,n){let i=wie(e,r,n);this.walk(e,i)}walkMany(e,r,n){let i=[new Zr({definition:e.definition})].concat(r,n);this.walk(e,i)}walkManySep(e,r,n){let i=wie(e,r,n);this.walk(e,i)}walkOr(e,r,n){let i=r.concat(n);Te(e.definition,a=>{let s=new En({definition:[a]});this.walk(s,i)})}}});function jd(t){if(t instanceof Kr)return jd(t.referencedRule);if(t instanceof pr)return _Ne(t);if(lR(t))return CNe(t);if(cR(t))return ANe(t);throw Error("non exhaustive match")}function CNe(t){let e=[],r=t.definition,n=0,i=r.length>n,a,s=!0;for(;i&&s;)a=r[n],s=Xd(a),e=e.concat(jd(a)),n=n+1,i=r.length>n;return bg(e)}function ANe(t){let e=je(t.definition,r=>jd(r));return bg(Br(e))}function _Ne(t){return[t.terminalType]}var uR=F(()=>{Ot();ts()});var mk,hR=F(()=>{mk="_~IN~_"});function kie(t){let e={};return Te(t,r=>{let n=new fR(r).startWalking();ua(e,n)}),e}function LNe(t,e){return t.name+e+mk}var fR,Tie=F(()=>{gk();uR();Ot();hR();ts();fR=class extends $u{constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,r,n){}walkProdRef(e,r,n){let i=LNe(e.referencedRule,e.idx)+this.topProd.name,a=r.concat(n),s=new En({definition:a}),o=jd(s);this.follows[i]=o}}});function Ug(t){let e=t.toString();if(vk.hasOwnProperty(e))return vk[e];{let r=RNe.pattern(e);return vk[e]=r,r}}function Eie(){vk={}}var vk,RNe,yk=F(()=>{Dy();vk={},RNe=new Wd});function Aie(t,e=!1){try{let r=Ug(t);return dR(r.value,{},r.flags.ignoreCase)}catch(r){if(r.message===Cie)e&&Fy(`${Gy} Unable to optimize: < ${t.toString()} > Complement Sets cannot be automatically optimized. This will disable the lexer's first char optimizations. See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";e&&(n=` This will disable the lexer's first char optimizations. See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details.`),zg(`${Gy} Failed parsing: < ${t.toString()} > Using the @chevrotain/regexp-to-ast library Please open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function dR(t,e,r){switch(t.type){case"Disjunction":for(let i=0;i{if(typeof l=="number")xk(l,e,r);else{let u=l;if(r===!0)for(let h=u.from;h<=u.to;h++)xk(h,e,r);else{for(let h=u.from;h<=u.to&&h=Vg){let h=u.from>=Vg?u.from:Vg,f=u.to,d=Rc(h),p=Rc(f);for(let g=d;g<=p;g++)e[g]=g}}}});break;case"Group":dR(s.value,e,r);break;default:throw Error("Non Exhaustive Match")}let o=s.quantifier!==void 0&&s.quantifier.atLeast===0;if(s.type==="Group"&&pR(s)===!1||s.type!=="Group"&&o===!1)break}break;default:throw Error("non exhaustive match!")}return fr(e)}function xk(t,e,r){let n=Rc(t);e[n]=n,r===!0&&NNe(t,e)}function NNe(t,e){let r=String.fromCharCode(t),n=r.toUpperCase();if(n!==r){let i=Rc(n.charCodeAt(0));e[i]=i}else{let i=r.toLowerCase();if(i!==r){let a=Rc(i.charCodeAt(0));e[a]=a}}}function Sie(t,e){return ja(t.value,r=>{if(typeof r=="number")return Bn(e,r);{let n=r;return ja(e,i=>n.from<=i&&i<=n.to)!==void 0}})}function pR(t){let e=t.quantifier;return e&&e.atLeast===0?!0:t.value?Et(t.value)?_a(t.value,pR):pR(t.value):!1}function bk(t,e){if(e instanceof RegExp){let r=Ug(e),n=new gR(t);return n.visit(r),n.found}else return ja(e,r=>Bn(t,r.charCodeAt(0)))!==void 0}var Cie,Gy,gR,_ie=F(()=>{Dy();Ot();$g();yk();mR();Cie="Complement Sets are not supported for first char optimization",Gy=`Unable to use "first char" lexer optimizations: `;gR=class extends Lc{constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(this.found!==!0){switch(e.type){case"Lookahead":this.visitLookahead(e);return;case"NegativeLookahead":this.visitNegativeLookahead(e);return}super.visitChildren(e)}}visitCharacter(e){Bn(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?Sie(e,this.targetCharCodes)===void 0&&(this.found=!0):Sie(e,this.targetCharCodes)!==void 0&&(this.found=!0)}}});function Nie(t,e){e=Gh(e,{useSticky:yR,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r",` `],tracer:(b,w)=>w()});let r=e.tracer;r("initCharCodeToOptimizedIndexMap",()=>{jNe()});let n;r("Reject Lexer.NA",()=>{n=Vh(t,b=>b[Kd]===ei.NA)});let i=!1,a;r("Transform Patterns",()=>{i=!1,a=je(n,b=>{let w=b[Kd];if(Io(w)){let _=w.source;return _.length===1&&_!=="^"&&_!=="$"&&_!=="."&&!w.ignoreCase?_:_.length===2&&_[0]==="\\"&&!Bn(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],_[1])?_[1]:e.useSticky?Rie(w):Lie(w)}else{if(gi(w))return i=!0,{exec:w};if(typeof w=="object")return i=!0,w;if(typeof w=="string"){if(w.length===1)return w;{let _=w.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),k=new RegExp(_);return e.useSticky?Rie(k):Lie(k)}}else throw Error("non exhaustive match")}})});let s,o,l,u,h;r("misc mapping",()=>{s=je(n,b=>b.tokenTypeIdx),o=je(n,b=>{let w=b.GROUP;if(w!==ei.SKIPPED){if(ci(w))return w;if(ar(w))return!1;throw Error("non exhaustive match")}}),l=je(n,b=>{let w=b.LONGER_ALT;if(w)return Et(w)?je(w,k=>nw(n,k)):[nw(n,w)]}),u=je(n,b=>b.PUSH_MODE),h=je(n,b=>St(b,"POP_MODE"))});let f;r("Line Terminator Handling",()=>{let b=zie(e.lineTerminatorCharacters);f=je(n,w=>!1),e.positionTracking!=="onlyOffset"&&(f=je(n,w=>St(w,"LINE_BREAKS")?!!w.LINE_BREAKS:Fie(w,b)===!1&&bk(b,w.PATTERN)))});let d,p,g,m;r("Misc Mapping #2",()=>{d=je(n,Pie),p=je(a,YNe),g=zr(n,(b,w)=>{let _=w.GROUP;return ci(_)&&_!==ei.SKIPPED&&(b[_]=[]),b},{}),m=je(a,(b,w)=>({pattern:a[w],longerAlt:l[w],canLineTerminator:f[w],isCustom:d[w],short:p[w],group:o[w],push:u[w],pop:h[w],tokenTypeIdx:s[w],tokenType:n[w]}))});let y=!0,x=[];return e.safeMode||r("First Char Optimization",()=>{x=zr(n,(b,w,_)=>{if(typeof w.PATTERN=="string"){let k=w.PATTERN.charCodeAt(0),E=Rc(k);vR(b,E,m[_])}else if(Et(w.START_CHARS_HINT)){let k;Te(w.START_CHARS_HINT,E=>{let L=typeof E=="string"?E.charCodeAt(0):E,S=Rc(L);k!==S&&(k=S,vR(b,S,m[_]))})}else if(Io(w.PATTERN))if(w.PATTERN.unicode)y=!1,e.ensureOptimizations&&zg(`${Gy} Unable to analyze < ${w.PATTERN.toString()} > pattern. The regexp unicode flag is not currently supported by the regexp-to-ast library. This will disable the lexer's first char optimizations. For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{let k=Aie(w.PATTERN,e.ensureOptimizations);ir(k)&&(y=!1),Te(k,E=>{vR(b,E,m[_])})}else e.ensureOptimizations&&zg(`${Gy} TokenType: <${w.name}> is using a custom token pattern without providing parameter. This will disable the lexer's first char optimizations. For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),y=!1;return b},[])}),{emptyGroups:g,patternIdxToConfig:m,charCodeToPatternIdxToConfig:x,hasCustom:i,canBeOptimized:y}}function Iie(t,e){let r=[],n=MNe(t);r=r.concat(n.errors);let i=DNe(n.valid),a=i.valid;return r=r.concat(i.errors),r=r.concat(INe(a)),r=r.concat(UNe(a)),r=r.concat(VNe(a,e)),r=r.concat(WNe(a)),r}function INe(t){let e=[],r=Fr(t,n=>Io(n[Kd]));return e=e.concat(PNe(r)),e=e.concat(zNe(r)),e=e.concat($Ne(r)),e=e.concat(GNe(r)),e=e.concat(BNe(r)),e}function MNe(t){let e=Fr(t,i=>!St(i,Kd)),r=je(e,i=>({message:"Token Type: ->"+i.name+"<- missing static 'PATTERN' property",type:Fn.MISSING_PATTERN,tokenTypes:[i]})),n=Uh(t,e);return{errors:r,valid:n}}function DNe(t){let e=Fr(t,i=>{let a=i[Kd];return!Io(a)&&!gi(a)&&!St(a,"exec")&&!ci(a)}),r=je(e,i=>({message:"Token Type: ->"+i.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:Fn.INVALID_PATTERN,tokenTypes:[i]})),n=Uh(t,e);return{errors:r,valid:n}}function PNe(t){class e extends Lc{constructor(){super(...arguments),this.found=!1}visitEndAnchor(a){this.found=!0}}let r=Fr(t,i=>{let a=i.PATTERN;try{let s=Ug(a),o=new e;return o.visit(s),o.found}catch{return ONe.test(a.source)}});return je(r,i=>({message:`Unexpected RegExp Anchor Error: Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain end of input anchor '$' See chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Fn.EOI_ANCHOR_FOUND,tokenTypes:[i]}))}function BNe(t){let e=Fr(t,n=>n.PATTERN.test(""));return je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' must not match an empty string",type:Fn.EMPTY_MATCH_PATTERN,tokenTypes:[n]}))}function zNe(t){class e extends Lc{constructor(){super(...arguments),this.found=!1}visitStartAnchor(a){this.found=!0}}let r=Fr(t,i=>{let a=i.PATTERN;try{let s=Ug(a),o=new e;return o.visit(s),o.found}catch{return FNe.test(a.source)}});return je(r,i=>({message:`Unexpected RegExp Anchor Error: Token Type: ->`+i.name+`<- static 'PATTERN' cannot contain start of input anchor '^' See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS for details.`,type:Fn.SOI_ANCHOR_FOUND,tokenTypes:[i]}))}function $Ne(t){let e=Fr(t,n=>{let i=n[Kd];return i instanceof RegExp&&(i.multiline||i.global)});return je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:Fn.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[n]}))}function GNe(t){let e=[],r=je(t,a=>zr(t,(s,o)=>(a.PATTERN.source===o.PATTERN.source&&!Bn(e,o)&&o.PATTERN!==ei.NA&&(e.push(o),s.push(o)),s),[]));r=xc(r);let n=Fr(r,a=>a.length>1);return je(n,a=>{let s=je(a,l=>l.name);return{message:`The same RegExp pattern ->${Yi(a).PATTERN}<-has been used in all of the following Token Types: ${s.join(", ")} <-`,type:Fn.DUPLICATE_PATTERNS_FOUND,tokenTypes:a}})}function UNe(t){let e=Fr(t,n=>{if(!St(n,"GROUP"))return!1;let i=n.GROUP;return i!==ei.SKIPPED&&i!==ei.NA&&!ci(i)});return je(e,n=>({message:"Token Type: ->"+n.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:Fn.INVALID_GROUP_TYPE_FOUND,tokenTypes:[n]}))}function VNe(t,e){let r=Fr(t,i=>i.PUSH_MODE!==void 0&&!Bn(e,i.PUSH_MODE));return je(r,i=>({message:`Token Type: ->${i.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${i.PUSH_MODE}<-which does not exist`,type:Fn.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[i]}))}function WNe(t){let e=[],r=zr(t,(n,i,a)=>{let s=i.PATTERN;return s===ei.NA||(ci(s)?n.push({str:s,idx:a,tokenType:i}):Io(s)&&qNe(s)&&n.push({str:s.source,idx:a,tokenType:i})),n},[]);return Te(t,(n,i)=>{Te(r,({str:a,idx:s,tokenType:o})=>{if(i${o.name}<- can never be matched. Because it appears AFTER the Token Type ->${n.name}<-in the lexer's definition. See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;e.push({message:l,type:Fn.UNREACHABLE_PATTERN,tokenTypes:[n,o]})}})}),e}function HNe(t,e){if(Io(e)){let r=e.exec(t);return r!==null&&r.index===0}else{if(gi(e))return e(t,0,[],{});if(St(e,"exec"))return e.exec(t,0,[],{});if(typeof e=="string")return e===t;throw Error("non exhaustive match")}}function qNe(t){return ja([".","\\","[","]","|","^","$","(",")","?","*","+","{"],r=>t.source.indexOf(r)!==-1)===void 0}function Lie(t){let e=t.ignoreCase?"i":"";return new RegExp(`^(?:${t.source})`,e)}function Rie(t){let e=t.ignoreCase?"iy":"y";return new RegExp(`${t.source}`,e)}function Mie(t,e,r){let n=[];return St(t,Wg)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+Wg+`> property in its definition `,type:Fn.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),St(t,wk)||n.push({message:"A MultiMode Lexer cannot be initialized without a <"+wk+`> property in its definition `,type:Fn.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),St(t,wk)&&St(t,Wg)&&!St(t.modes,t.defaultMode)&&n.push({message:`A MultiMode Lexer cannot be initialized with a ${Wg}: <${t.defaultMode}>which does not exist `,type:Fn.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),St(t,wk)&&Te(t.modes,(i,a)=>{Te(i,(s,o)=>{if(ar(s))n.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${a}> at index: <${o}> `,type:Fn.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if(St(s,"LONGER_ALT")){let l=Et(s.LONGER_ALT)?s.LONGER_ALT:[s.LONGER_ALT];Te(l,u=>{!ar(u)&&!Bn(i,u)&&n.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${u.name}> on token <${s.name}> outside of mode <${a}> `,type:Fn.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})})}})}),n}function Die(t,e,r){let n=[],i=!1,a=xc(Br(fr(t.modes))),s=Vh(a,l=>l[Kd]===ei.NA),o=zie(r);return e&&Te(s,l=>{let u=Fie(l,o);if(u!==!1){let f={message:XNe(l,u),type:u.issue,tokenType:l};n.push(f)}else St(l,"LINE_BREAKS")?l.LINE_BREAKS===!0&&(i=!0):bk(o,l.PATTERN)&&(i=!0)}),e&&!i&&n.push({message:`Warning: No LINE_BREAKS Found. This Lexer has been defined to track line and column information, But none of the Token Types can be identified as matching a line terminator. See https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS for details.`,type:Fn.NO_LINE_BREAKS_FLAGS}),n}function Oie(t){let e={},r=Nr(t);return Te(r,n=>{let i=t[n];if(Et(i))e[n]=[];else throw Error("non exhaustive match")}),e}function Pie(t){let e=t.PATTERN;if(Io(e))return!1;if(gi(e))return!0;if(St(e,"exec"))return!0;if(ci(e))return!1;throw Error("non exhaustive match")}function YNe(t){return ci(t)&&t.length===1?t.charCodeAt(0):!1}function Fie(t,e){if(St(t,"LINE_BREAKS"))return!1;if(Io(t.PATTERN)){try{bk(e,t.PATTERN)}catch(r){return{issue:Fn.IDENTIFY_TERMINATOR,errMsg:r.message}}return!1}else{if(ci(t.PATTERN))return!1;if(Pie(t))return{issue:Fn.CUSTOM_LINE_BREAK};throw Error("non exhaustive match")}}function XNe(t,e){if(e.issue===Fn.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern. The problem is in the <${t.name}> Token Type Root cause: ${e.errMsg}. For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(e.issue===Fn.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option. The problem is in the <${t.name}> Token Type For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}function zie(t){return je(t,r=>ci(r)?r.charCodeAt(0):r)}function vR(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function Rc(t){return t255?255+~~(t/255):t}}var Kd,Wg,wk,yR,ONe,FNe,Bie,Vg,kk,mR=F(()=>{Dy();Uy();Ot();$g();_ie();yk();Kd="PATTERN",Wg="defaultMode",wk="modes",yR=typeof new RegExp("(?:)").sticky=="boolean";ONe=/[^\\][$]/;FNe=/[^\\[][\^]|^\^/;Bie={test:function(t){let e=t.length;for(let r=this.lastIndex;r{r.isParent=r.categoryMatches.length>0})}function KNe(t){let e=jr(t),r=t,n=!0;for(;n;){r=xc(Br(je(r,a=>a.CATEGORIES)));let i=Uh(r,e);e=e.concat(i),ir(i)?n=!1:r=i}return e}function ZNe(t){Te(t,e=>{xR(e)||(Uie[$ie]=e,e.tokenTypeIdx=$ie++),Gie(e)&&!Et(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Gie(e)||(e.CATEGORIES=[]),eIe(e)||(e.categoryMatches=[]),tIe(e)||(e.categoryMatchesMap={})})}function QNe(t){Te(t,e=>{e.categoryMatches=[],Te(e.categoryMatchesMap,(r,n)=>{e.categoryMatches.push(Uie[n].tokenTypeIdx)})})}function JNe(t){Te(t,e=>{Vie([],e)})}function Vie(t,e){Te(t,r=>{e.categoryMatchesMap[r.tokenTypeIdx]=!0}),Te(e.CATEGORIES,r=>{let n=t.concat(e);Bn(n,r)||Vie(n,r)})}function xR(t){return St(t,"tokenTypeIdx")}function Gie(t){return St(t,"CATEGORIES")}function eIe(t){return St(t,"categoryMatches")}function tIe(t){return St(t,"categoryMatchesMap")}function Wie(t){return St(t,"tokenTypeIdx")}var $ie,Uie,Zd=F(()=>{Ot();$ie=1,Uie={}});var bR,wR=F(()=>{bR={buildUnableToPopLexerModeMessage(t){return`Unable to pop Lexer Mode after encountering Token ->${t.image}<- The Mode Stack is empty`},buildUnexpectedCharactersMessage(t,e,r,n,i){return`unexpected character: ->${t.charAt(e)}<- at offset: ${e}, skipped ${r} characters.`}}});var Fn,Vy,ei,Uy=F(()=>{mR();Ot();$g();Zd();wR();yk();(function(t){t[t.MISSING_PATTERN=0]="MISSING_PATTERN",t[t.INVALID_PATTERN=1]="INVALID_PATTERN",t[t.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",t[t.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",t[t.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",t[t.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",t[t.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",t[t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",t[t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",t[t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",t[t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",t[t.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",t[t.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",t[t.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",t[t.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",t[t.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",t[t.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",t[t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"})(Fn||(Fn={}));Vy={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:[` `,"\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:bR,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(Vy);ei=class{constructor(e,r=Vy){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(i,a)=>{if(this.traceInitPerf===!0){this.traceInitIndent++;let s=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${i}>`);let{time:o,value:l}=zy(a),u=o>10?console.warn:console.log;return this.traceInitIndent time: ${o}ms`),this.traceInitIndent--,l}else return a()},typeof r=="boolean")throw Error(`The second argument to the Lexer constructor is now an ILexerConfig Object. a boolean 2nd argument is no longer supported`);this.config=ua({},Vy,r);let n=this.config.traceInitPerf;n===!0?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):typeof n=="number"&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",()=>{let i,a=!0;this.TRACE_INIT("Lexer Config handling",()=>{if(this.config.lineTerminatorsPattern===Vy.lineTerminatorsPattern)this.config.lineTerminatorsPattern=Bie;else if(this.config.lineTerminatorCharacters===Vy.lineTerminatorCharacters)throw Error(`Error: Missing property on the Lexer config. For details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS`);if(r.safeMode&&r.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),Et(e)?i={modes:{defaultMode:jr(e)},defaultMode:Wg}:(a=!1,i=jr(e))}),this.config.skipValidations===!1&&(this.TRACE_INIT("performRuntimeChecks",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Mie(i,this.trackStartLines,this.config.lineTerminatorCharacters))}),this.TRACE_INIT("performWarningRuntimeChecks",()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(Die(i,this.trackStartLines,this.config.lineTerminatorCharacters))})),i.modes=i.modes?i.modes:{},Te(i.modes,(o,l)=>{i.modes[l]=Vh(o,u=>ar(u))});let s=Nr(i.modes);if(Te(i.modes,(o,l)=>{this.TRACE_INIT(`Mode: <${l}> processing`,()=>{if(this.modes.push(l),this.config.skipValidations===!1&&this.TRACE_INIT("validatePatterns",()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(Iie(o,s))}),ir(this.lexerDefinitionErrors)){Uu(o);let u;this.TRACE_INIT("analyzeTokenTypes",()=>{u=Nie(o,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:r.positionTracking,ensureOptimizations:r.ensureOptimizations,safeMode:r.safeMode,tracer:this.TRACE_INIT})}),this.patternIdxToConfig[l]=u.patternIdxToConfig,this.charCodeToPatternIdxToConfig[l]=u.charCodeToPatternIdxToConfig,this.emptyGroups=ua({},this.emptyGroups,u.emptyGroups),this.hasCustom=u.hasCustom||this.hasCustom,this.canModeBeOptimized[l]=u.canBeOptimized}})}),this.defaultMode=i.defaultMode,!ir(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){let l=je(this.lexerDefinitionErrors,u=>u.message).join(`----------------------- `);throw new Error(`Errors detected in definition of Lexer: `+l)}Te(this.lexerDefinitionWarning,o=>{Fy(o.message)}),this.TRACE_INIT("Choosing sub-methods implementations",()=>{if(yR?(this.chopInput=qi,this.match=this.matchWithTest):(this.updateLastIndex=Yn,this.match=this.matchWithExec),a&&(this.handleModes=Yn),this.trackStartLines===!1&&(this.computeNewColumn=qi),this.trackEndLines===!1&&(this.updateTokenEndLineColumnLocation=Yn),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else if(/onlyOffset/i.test(this.config.positionTracking))this.createTokenInstance=this.createOffsetOnlyToken;else throw Error(`Invalid config option: "${this.config.positionTracking}"`);this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)}),this.TRACE_INIT("Failed Optimization Warnings",()=>{let o=zr(this.canModeBeOptimized,(l,u,h)=>(u===!1&&l.push(h),l),[]);if(r.ensureOptimizations&&!ir(o))throw Error(`Lexer Modes: < ${o.join(", ")} > cannot be optimized. Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode. Or inspect the console log for details on how to resolve these issues.`)}),this.TRACE_INIT("clearRegExpParserCache",()=>{Eie()}),this.TRACE_INIT("toFastProperties",()=>{$y(this)})})}tokenize(e,r=this.defaultMode){if(!ir(this.lexerDefinitionErrors)){let i=je(this.lexerDefinitionErrors,a=>a.message).join(`----------------------- `);throw new Error(`Unable to Tokenize because Errors detected in definition of Lexer: `+i)}return this.tokenizeInternal(e,r)}tokenizeInternal(e,r){let n,i,a,s,o,l,u,h,f,d,p,g,m,y,x,b,w=e,_=w.length,k=0,E=0,L=this.hasCustom?0:Math.floor(e.length/10),S=new Array(L),C=[],M=this.trackStartLines?1:void 0,R=this.trackStartLines?1:void 0,T=Oie(this.emptyGroups),I=this.trackStartLines,A=this.config.lineTerminatorsPattern,D=0,N=[],O=[],B=[],P=[];Object.freeze(P);let $;function z(){return N}function H(ee){let Q=Rc(ee),W=O[Q];return W===void 0?P:W}let J=ee=>{if(B.length===1&&ee.tokenType.PUSH_MODE===void 0){let Q=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(ee);C.push({offset:ee.startOffset,line:ee.startLine,column:ee.startColumn,length:ee.image.length,message:Q})}else{B.pop();let Q=ha(B);N=this.patternIdxToConfig[Q],O=this.charCodeToPatternIdxToConfig[Q],D=N.length;let W=this.canModeBeOptimized[Q]&&this.config.safeMode===!1;O&&W?$=H:$=z}};function X(ee){B.push(ee),O=this.charCodeToPatternIdxToConfig[ee],N=this.patternIdxToConfig[ee],D=N.length,D=N.length;let Q=this.canModeBeOptimized[ee]&&this.config.safeMode===!1;O&&Q?$=H:$=z}X.call(this,r);let oe,K=this.config.recoveryEnabled;for(;k<_;){l=null;let ee=w.charCodeAt(k),Q=$(ee),W=Q.length;for(n=0;nl.length){l=s,u=h,oe=ce;break}}}break}}if(l!==null){if(f=l.length,d=oe.group,d!==void 0&&(p=oe.tokenTypeIdx,g=this.createTokenInstance(l,k,p,oe.tokenType,M,R,f),this.handlePayload(g,u),d===!1?E=this.addToken(S,E,g):T[d].push(g)),e=this.chopInput(e,f),k=k+f,R=this.computeNewColumn(R,f),I===!0&&oe.canLineTerminator===!0){let Y=0,Z,se;A.lastIndex=0;do Z=A.test(l),Z===!0&&(se=A.lastIndex-1,Y++);while(Z===!0);Y!==0&&(M=M+Y,R=f-se,this.updateTokenEndLineColumnLocation(g,d,se,Y,M,R,f))}this.handleModes(oe,J,X,g)}else{let Y=k,Z=M,se=R,ce=K===!1;for(;ce===!1&&k<_;)for(e=this.chopInput(e,1),k++,i=0;i{Ot();Uy();Zd();rIe="parent",Hie="categories",qie="label",Yie="group",Xie="push_mode",jie="pop_mode",Kie="longer_alt",Zie="line_breaks",Qie="start_chars_hint";no=Tk({name:"EOF",pattern:ei.NA});Uu([no])});var Wu,Jie,_l,qg=F(()=>{Jd();Ot();ts();Wu={buildMismatchTokenMessage({expected:t,actual:e,previous:r,ruleName:n}){return`Expecting ${kR(t)?`--> ${Vu(t)} <--`:`token of type --> ${t.name} <--`} but found --> '${e.image}' <--`},buildNotAllInputParsedMessage({firstRedundant:t,ruleName:e}){return"Redundant input, expecting EOF but found: "+t.image},buildNoViableAltMessage({expectedPathsPerAlt:t,actual:e,previous:r,customUserDescription:n,ruleName:i}){let a="Expecting: ",o=` but found: '`+Yi(e).image+"'";if(n)return a+n+o;{let l=zr(t,(d,p)=>d.concat(p),[]),u=je(l,d=>`[${je(d,p=>Vu(p)).join(", ")}]`),f=`one of these possible Token sequences: ${je(u,(d,p)=>` ${p+1}. ${d}`).join(` `)}`;return a+f+o}},buildEarlyExitMessage({expectedIterationPaths:t,actual:e,customUserDescription:r,ruleName:n}){let i="Expecting: ",s=` but found: '`+Yi(e).image+"'";if(r)return i+r+s;{let l=`expecting at least one iteration which starts with one of these possible Token sequences:: <${je(t,u=>`[${je(u,h=>Vu(h)).join(",")}]`).join(" ,")}>`;return i+l+s}}};Object.freeze(Wu);Jie={buildRuleNotFoundError(t,e){return"Invalid grammar, reference to a rule which is not defined: ->"+e.nonTerminalName+`<- inside top level rule: ->`+t.name+"<-"}},_l={buildDuplicateFoundError(t,e){function r(h){return h instanceof pr?h.terminalType.name:h instanceof Kr?h.nonTerminalName:""}let n=t.name,i=Yi(e),a=i.idx,s=Rs(i),o=r(i),l=a>0,u=`->${s}${l?a:""}<- ${o?`with argument: ->${o}<-`:""} appears more than once (${e.length} times) in the top level rule: ->${n}<-. For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES `;return u=u.replace(/[ \t]+/g," "),u=u.replace(/\s\s+/g,` `),u},buildNamespaceConflictError(t){return`Namespace conflict found in grammar. The grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${t.name}>. To resolve this make sure each Terminal and Non-Terminal names are unique This is easy to accomplish by using the convention that Terminal names start with an uppercase letter and Non-Terminal names start with a lower case letter.`},buildAlternationPrefixAmbiguityError(t){let e=je(t.prefixPath,i=>Vu(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx;return`Ambiguous alternatives: <${t.ambiguityIndices.join(" ,")}> due to common lookahead prefix in inside <${t.topLevelRule.name}> Rule, <${e}> may appears as a prefix path in all these alternatives. See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX For Further details.`},buildAlternationAmbiguityError(t){let e=je(t.prefixPath,i=>Vu(i)).join(", "),r=t.alternation.idx===0?"":t.alternation.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(" ,")}> in inside <${t.topLevelRule.name}> Rule, <${e}> may appears as a prefix path in all these alternatives. `;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES For Further details.`,n},buildEmptyRepetitionError(t){let e=Rs(t.repetition);return t.repetition.idx!==0&&(e+=t.repetition.idx),`The repetition <${e}> within Rule <${t.topLevelRule.name}> can never consume any tokens. This could lead to an infinite loop.`},buildTokenNameError(t){return"deprecated"},buildEmptyAlternationError(t){return`Ambiguous empty alternative: <${t.emptyChoiceIdx+1}> in inside <${t.topLevelRule.name}> Rule. Only the last alternative may be an empty alternative.`},buildTooManyAlternativesError(t){return`An Alternation cannot have more than 256 alternatives: inside <${t.topLevelRule.name}> Rule. has ${t.alternation.definition.length+1} alternatives.`},buildLeftRecursionError(t){let e=t.topLevelRule.name,r=je(t.leftRecursionPath,a=>a.name),n=`${e} --> ${r.concat([e]).join(" --> ")}`;return`Left Recursion found in grammar. rule: <${e}> can be invoked from itself (directly or indirectly) without consuming any Tokens. The grammar path that causes this is: ${n} To fix this refactor your grammar to remove the left recursion. see: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError(t){return"deprecated"},buildDuplicateRuleNameError(t){let e;return t.topLevelRule instanceof Ja?e=t.topLevelRule.name:e=t.topLevelRule,`Duplicate definition, rule: ->${e}<- is already defined in the grammar: ->${t.grammarName}<-`}}});function eae(t,e){let r=new TR(t,e);return r.resolveRefs(),r.errors}var TR,tae=F(()=>{Ns();Ot();ts();TR=class extends es{constructor(e,r){super(),this.nameToTopRule=e,this.errMsgProvider=r,this.errors=[]}resolveRefs(){Te(fr(this.nameToTopRule),e=>{this.currTopLevel=e,e.accept(this)})}visitNonTerminal(e){let r=this.nameToTopRule[e.nonTerminalName];if(r)e.referencedRule=r;else{let n=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:n,type:Li.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}}});function Ak(t,e,r=[]){r=jr(r);let n=[],i=0;function a(o){return o.concat(li(t,i+1))}function s(o){let l=Ak(a(o),e,r);return n.concat(l)}for(;r.length{ir(l.definition)===!1&&(n=s(l.definition))}),n;if(o instanceof pr)r.push(o.terminalType);else throw Error("non exhaustive match")}i++}return n.push({partialPath:r,suffixDef:li(t,i)}),n}function _k(t,e,r,n){let i="EXIT_NONE_TERMINAL",a=[i],s="EXIT_ALTERNATIVE",o=!1,l=e.length,u=l-n-1,h=[],f=[];for(f.push({idx:-1,def:t,ruleStack:[],occurrenceStack:[]});!ir(f);){let d=f.pop();if(d===s){o&&ha(f).idx<=u&&f.pop();continue}let p=d.def,g=d.idx,m=d.ruleStack,y=d.occurrenceStack;if(ir(p))continue;let x=p[0];if(x===i){let b={idx:g,def:li(p),ruleStack:Lu(m),occurrenceStack:Lu(y)};f.push(b)}else if(x instanceof pr)if(g=0;b--){let w=x.definition[b],_={idx:g,def:w.definition.concat(li(p)),ruleStack:m,occurrenceStack:y};f.push(_),f.push(s)}else if(x instanceof En)f.push({idx:g,def:x.definition.concat(li(p)),ruleStack:m,occurrenceStack:y});else if(x instanceof Ja)f.push(iIe(x,g,m,y));else throw Error("non exhaustive match")}return h}function iIe(t,e,r,n){let i=jr(r);i.push(t.name);let a=jr(n);return a.push(1),{idx:e,def:t.definition,ruleStack:i,occurrenceStack:a}}var ER,Ek,Yg,Sk,Hy,Ck,qy,Yy=F(()=>{Ot();uR();gk();ts();ER=class extends $u{constructor(e,r){super(),this.topProd=e,this.path=r,this.possibleTokTypes=[],this.nextProductionName="",this.nextProductionOccurrence=0,this.found=!1,this.isAtEndOfPath=!1}startWalking(){if(this.found=!1,this.path.ruleStack[0]!==this.topProd.name)throw Error("The path does not start with the walker's top Rule!");return this.ruleStack=jr(this.path.ruleStack).reverse(),this.occurrenceStack=jr(this.path.occurrenceStack).reverse(),this.ruleStack.pop(),this.occurrenceStack.pop(),this.updateExpectedNext(),this.walk(this.topProd),this.possibleTokTypes}walk(e,r=[]){this.found||super.walk(e,r)}walkProdRef(e,r,n){if(e.referencedRule.name===this.nextProductionName&&e.idx===this.nextProductionOccurrence){let i=r.concat(n);this.updateExpectedNext(),this.walk(e.referencedRule,i)}}updateExpectedNext(){ir(this.ruleStack)?(this.nextProductionName="",this.nextProductionOccurrence=0,this.isAtEndOfPath=!0):(this.nextProductionName=this.ruleStack.pop(),this.nextProductionOccurrence=this.occurrenceStack.pop())}},Ek=class extends ER{constructor(e,r){super(e,r),this.path=r,this.nextTerminalName="",this.nextTerminalOccurrence=0,this.nextTerminalName=this.path.lastTok.name,this.nextTerminalOccurrence=this.path.lastTokOccurrence}walkTerminal(e,r,n){if(this.isAtEndOfPath&&e.terminalType.name===this.nextTerminalName&&e.idx===this.nextTerminalOccurrence&&!this.found){let i=r.concat(n),a=new En({definition:i});this.possibleTokTypes=jd(a),this.found=!0}}},Yg=class extends $u{constructor(e,r){super(),this.topRule=e,this.occurrence=r,this.result={token:void 0,occurrence:void 0,isEndOfRule:void 0}}startWalking(){return this.walk(this.topRule),this.result}},Sk=class extends Yg{walkMany(e,r,n){if(e.idx===this.occurrence){let i=Yi(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof pr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkMany(e,r,n)}},Hy=class extends Yg{walkManySep(e,r,n){if(e.idx===this.occurrence){let i=Yi(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof pr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkManySep(e,r,n)}},Ck=class extends Yg{walkAtLeastOne(e,r,n){if(e.idx===this.occurrence){let i=Yi(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof pr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOne(e,r,n)}},qy=class extends Yg{walkAtLeastOneSep(e,r,n){if(e.idx===this.occurrence){let i=Yi(r.concat(n));this.result.isEndOfRule=i===void 0,i instanceof pr&&(this.result.token=i.terminalType,this.result.occurrence=i.idx)}else super.walkAtLeastOneSep(e,r,n)}}});function Xy(t){if(t instanceof Zr||t==="Option")return zn.OPTION;if(t instanceof br||t==="Repetition")return zn.REPETITION;if(t instanceof Sn||t==="RepetitionMandatory")return zn.REPETITION_MANDATORY;if(t instanceof Cn||t==="RepetitionMandatoryWithSeparator")return zn.REPETITION_MANDATORY_WITH_SEPARATOR;if(t instanceof pn||t==="RepetitionWithSeparator")return zn.REPETITION_WITH_SEPARATOR;if(t instanceof gn||t==="Alternation")return zn.ALTERNATION;throw Error("non exhaustive match")}function Rk(t){let{occurrence:e,rule:r,prodType:n,maxLookahead:i}=t,a=Xy(n);return a===zn.ALTERNATION?Xg(e,r,i):jg(e,r,a,i)}function nae(t,e,r,n,i,a){let s=Xg(t,e,r),o=cae(s)?Hg:Gu;return a(s,n,o,i)}function iae(t,e,r,n,i,a){let s=jg(t,e,i,r),o=cae(s)?Hg:Gu;return a(s[0],o,n)}function aae(t,e,r,n){let i=t.length,a=_a(t,s=>_a(s,o=>o.length===1));if(e)return function(s){let o=je(s,l=>l.GATE);for(let l=0;lBr(l)),o=zr(s,(l,u,h)=>(Te(u,f=>{St(l,f.tokenTypeIdx)||(l[f.tokenTypeIdx]=h),Te(f.categoryMatches,d=>{St(l,d)||(l[d]=h)})}),l),{});return function(){let l=this.LA(1);return o[l.tokenTypeIdx]}}else return function(){for(let s=0;sa.length===1),i=t.length;if(n&&!r){let a=Br(t);if(a.length===1&&ir(a[0].categoryMatches)){let o=a[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===o}}else{let s=zr(a,(o,l,u)=>(o[l.tokenTypeIdx]=!0,Te(l.categoryMatches,h=>{o[h]=!0}),o),[]);return function(){let o=this.LA(1);return s[o.tokenTypeIdx]===!0}}}else return function(){e:for(let a=0;aAk([s],1)),n=rae(r.length),i=je(r,s=>{let o={};return Te(s,l=>{let u=SR(l.partialPath);Te(u,h=>{o[h]=!0})}),o}),a=r;for(let s=1;s<=e;s++){let o=a;a=rae(o.length);for(let l=0;l{let x=SR(y.partialPath);Te(x,b=>{i[l][b]=!0})})}}}}return n}function Xg(t,e,r,n){let i=new Lk(t,zn.ALTERNATION,n);return e.accept(i),oae(i.result,r)}function jg(t,e,r,n){let i=new Lk(t,r);e.accept(i);let a=i.result,o=new CR(e,t,r).startWalking(),l=new En({definition:a}),u=new En({definition:o});return oae([l,u],n)}function Nk(t,e){e:for(let r=0;r{let i=e[n];return r===i||i.categoryMatchesMap[r.tokenTypeIdx]})}function cae(t){return _a(t,e=>_a(e,r=>_a(r,n=>ir(n.categoryMatches))))}var zn,CR,Lk,Kg=F(()=>{Ot();Yy();gk();Zd();ts();(function(t){t[t.OPTION=0]="OPTION",t[t.REPETITION=1]="REPETITION",t[t.REPETITION_MANDATORY=2]="REPETITION_MANDATORY",t[t.REPETITION_MANDATORY_WITH_SEPARATOR=3]="REPETITION_MANDATORY_WITH_SEPARATOR",t[t.REPETITION_WITH_SEPARATOR=4]="REPETITION_WITH_SEPARATOR",t[t.ALTERNATION=5]="ALTERNATION"})(zn||(zn={}));CR=class extends $u{constructor(e,r,n){super(),this.topProd=e,this.targetOccurrence=r,this.targetProdType=n}startWalking(){return this.walk(this.topProd),this.restDef}checkIsTarget(e,r,n,i){return e.idx===this.targetOccurrence&&this.targetProdType===r?(this.restDef=n.concat(i),!0):!1}walkOption(e,r,n){this.checkIsTarget(e,zn.OPTION,r,n)||super.walkOption(e,r,n)}walkAtLeastOne(e,r,n){this.checkIsTarget(e,zn.REPETITION_MANDATORY,r,n)||super.walkOption(e,r,n)}walkAtLeastOneSep(e,r,n){this.checkIsTarget(e,zn.REPETITION_MANDATORY_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}walkMany(e,r,n){this.checkIsTarget(e,zn.REPETITION,r,n)||super.walkOption(e,r,n)}walkManySep(e,r,n){this.checkIsTarget(e,zn.REPETITION_WITH_SEPARATOR,r,n)||super.walkOption(e,r,n)}},Lk=class extends es{constructor(e,r,n){super(),this.targetOccurrence=e,this.targetProdType=r,this.targetRef=n,this.result=[]}checkIsTarget(e,r){e.idx===this.targetOccurrence&&this.targetProdType===r&&(this.targetRef===void 0||e===this.targetRef)&&(this.result=e.definition)}visitOption(e){this.checkIsTarget(e,zn.OPTION)}visitRepetition(e){this.checkIsTarget(e,zn.REPETITION)}visitRepetitionMandatory(e){this.checkIsTarget(e,zn.REPETITION_MANDATORY)}visitRepetitionMandatoryWithSeparator(e){this.checkIsTarget(e,zn.REPETITION_MANDATORY_WITH_SEPARATOR)}visitRepetitionWithSeparator(e){this.checkIsTarget(e,zn.REPETITION_WITH_SEPARATOR)}visitAlternation(e){this.checkIsTarget(e,zn.ALTERNATION)}}});function uae(t){let e=t.lookaheadStrategy.validate({rules:t.rules,tokenTypes:t.tokenTypes,grammarName:t.grammarName});return je(e,r=>Object.assign({type:Li.CUSTOM_LOOKAHEAD_VALIDATION},r))}function hae(t,e,r,n){let i=fa(t,l=>sIe(l,r)),a=fIe(t,e,r),s=fa(t,l=>cIe(l,r)),o=fa(t,l=>lIe(l,t,n,r));return i.concat(a,s,o)}function sIe(t,e){let r=new AR;t.accept(r);let n=r.allProductions,i=T_(n,oIe),a=Cs(i,o=>o.length>1);return je(fr(a),o=>{let l=Yi(o),u=e.buildDuplicateFoundError(t,o),h=Rs(l),f={message:u,type:Li.DUPLICATE_PRODUCTIONS,ruleName:t.name,dslName:h,occurrence:l.idx},d=fae(l);return d&&(f.parameter=d),f})}function oIe(t){return`${Rs(t)}_#_${t.idx}_#_${fae(t)}`}function fae(t){return t instanceof pr?t.terminalType.name:t instanceof Kr?t.nonTerminalName:""}function lIe(t,e,r,n){let i=[];if(zr(e,(s,o)=>o.name===t.name?s+1:s,0)>1){let s=n.buildDuplicateRuleNameError({topLevelRule:t,grammarName:r});i.push({message:s,type:Li.DUPLICATE_RULE_NAME,ruleName:t.name})}return i}function dae(t,e,r){let n=[],i;return Bn(e,t)||(i=`Invalid rule override, rule: ->${t}<- cannot be overridden in the grammar: ->${r}<-as it is not defined in any of the super grammars `,n.push({message:i,type:Li.INVALID_RULE_OVERRIDE,ruleName:t})),n}function LR(t,e,r,n=[]){let i=[],a=Ik(e.definition);if(ir(a))return[];{let s=t.name;Bn(a,t)&&i.push({message:r.buildLeftRecursionError({topLevelRule:t,leftRecursionPath:n}),type:Li.LEFT_RECURSION,ruleName:s});let l=Uh(a,n.concat([t])),u=fa(l,h=>{let f=jr(n);return f.push(h),LR(t,h,r,f)});return i.concat(u)}}function Ik(t){let e=[];if(ir(t))return e;let r=Yi(t);if(r instanceof Kr)e.push(r.referencedRule);else if(r instanceof En||r instanceof Zr||r instanceof Sn||r instanceof Cn||r instanceof pn||r instanceof br)e=e.concat(Ik(r.definition));else if(r instanceof gn)e=Br(je(r.definition,a=>Ik(a.definition)));else if(!(r instanceof pr))throw Error("non exhaustive match");let n=Xd(r),i=t.length>1;if(n&&i){let a=li(t);return e.concat(Ik(a))}else return e}function pae(t,e){let r=new jy;t.accept(r);let n=r.alternations;return fa(n,a=>{let s=Lu(a.definition);return fa(s,(o,l)=>{let u=_k([o],[],Gu,1);return ir(u)?[{message:e.buildEmptyAlternationError({topLevelRule:t,alternation:a,emptyChoiceIdx:l}),type:Li.NONE_LAST_EMPTY_ALT,ruleName:t.name,occurrence:a.idx,alternative:l+1}]:[]})})}function gae(t,e,r){let n=new jy;t.accept(n);let i=n.alternations;return i=Vh(i,s=>s.ignoreAmbiguities===!0),fa(i,s=>{let o=s.idx,l=s.maxLookahead||e,u=Xg(o,t,l,s),h=uIe(u,s,t,r),f=hIe(u,s,t,r);return h.concat(f)})}function cIe(t,e){let r=new jy;t.accept(r);let n=r.alternations;return fa(n,a=>a.definition.length>255?[{message:e.buildTooManyAlternativesError({topLevelRule:t,alternation:a}),type:Li.TOO_MANY_ALTS,ruleName:t.name,occurrence:a.idx}]:[])}function mae(t,e,r){let n=[];return Te(t,i=>{let a=new _R;i.accept(a);let s=a.allProductions;Te(s,o=>{let l=Xy(o),u=o.maxLookahead||e,h=o.idx,d=jg(h,i,l,u)[0];if(ir(Br(d))){let p=r.buildEmptyRepetitionError({topLevelRule:i,repetition:o});n.push({message:p,type:Li.NO_NON_EMPTY_LOOKAHEAD,ruleName:i.name})}})}),n}function uIe(t,e,r,n){let i=[],a=zr(t,(o,l,u)=>(e.definition[u].ignoreAmbiguities===!0||Te(l,h=>{let f=[u];Te(t,(d,p)=>{u!==p&&Nk(d,h)&&e.definition[p].ignoreAmbiguities!==!0&&f.push(p)}),f.length>1&&!Nk(i,h)&&(i.push(h),o.push({alts:f,path:h}))}),o),[]);return je(a,o=>{let l=je(o.alts,h=>h+1);return{message:n.buildAlternationAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:l,prefixPath:o.path}),type:Li.AMBIGUOUS_ALTS,ruleName:r.name,occurrence:e.idx,alternatives:o.alts}})}function hIe(t,e,r,n){let i=zr(t,(s,o,l)=>{let u=je(o,h=>({idx:l,path:h}));return s.concat(u)},[]);return xc(fa(i,s=>{if(e.definition[s.idx].ignoreAmbiguities===!0)return[];let l=s.idx,u=s.path,h=Fr(i,d=>e.definition[d.idx].ignoreAmbiguities!==!0&&d.idx{let p=[d.idx+1,l+1],g=e.idx===0?"":e.idx;return{message:n.buildAlternationPrefixAmbiguityError({topLevelRule:r,alternation:e,ambiguityIndices:p,prefixPath:d.path}),type:Li.AMBIGUOUS_PREFIX_ALTS,ruleName:r.name,occurrence:g,alternatives:p}})}))}function fIe(t,e,r){let n=[],i=je(e,a=>a.name);return Te(t,a=>{let s=a.name;if(Bn(i,s)){let o=r.buildNamespaceConflictError(a);n.push({message:o,type:Li.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:s})}}),n}var AR,jy,_R,Ky=F(()=>{Ot();Ns();ts();Kg();Yy();Zd();AR=class extends es{constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}};jy=class extends es{constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}};_R=class extends es{constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}}});function vae(t){let e=Gh(t,{errMsgProvider:Jie}),r={};return Te(t.rules,n=>{r[n.name]=n}),eae(r,e.errMsgProvider)}function yae(t){return t=Gh(t,{errMsgProvider:_l}),hae(t.rules,t.tokenTypes,t.errMsgProvider,t.grammarName)}var xae=F(()=>{Ot();tae();Ky();qg()});function tf(t){return Bn(Eae,t.name)}var bae,wae,kae,Tae,Eae,Zg,e0,Zy,Qy,Jy,Qg=F(()=>{Ot();bae="MismatchedTokenException",wae="NoViableAltException",kae="EarlyExitException",Tae="NotAllInputParsedException",Eae=[bae,wae,kae,Tae];Object.freeze(Eae);Zg=class extends Error{constructor(e,r){super(e),this.token=r,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}},e0=class extends Zg{constructor(e,r,n){super(e,r),this.previousToken=n,this.name=bae}},Zy=class extends Zg{constructor(e,r,n){super(e,r),this.previousToken=n,this.name=wae}},Qy=class extends Zg{constructor(e,r){super(e,r),this.name=Tae}},Jy=class extends Zg{constructor(e,r,n){super(e,r),this.previousToken=n,this.name=kae}}});function dIe(t,e,r,n,i,a,s){let o=this.getKeyForAutomaticLookahead(n,i),l=this.firstAfterRepMap[o];if(l===void 0){let d=this.getCurrRuleFullName(),p=this.getGAstProductions()[d];l=new a(p,i).startWalking(),this.firstAfterRepMap[o]=l}let u=l.token,h=l.occurrence,f=l.isEndOfRule;this.RULE_STACK.length===1&&f&&u===void 0&&(u=no,h=1),!(u===void 0||h===void 0)&&this.shouldInRepetitionRecoveryBeTried(u,h,s)&&this.tryInRepetitionRecovery(t,e,r,u)}var RR,IR,NR,Mk,MR=F(()=>{Jd();Ot();Qg();hR();Ns();RR={},IR="InRuleRecoveryException",NR=class extends Error{constructor(e){super(e),this.name=IR}},Mk=class{initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=St(e,"recoveryEnabled")?e.recoveryEnabled:rs.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=dIe)}getTokenToInsert(e){let r=Qd(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return r.isInsertedInRecovery=!0,r}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,r,n,i){let a=this.findReSyncTokenType(),s=this.exportLexerState(),o=[],l=!1,u=this.LA(1),h=this.LA(1),f=()=>{let d=this.LA(0),p=this.errorMessageProvider.buildMismatchTokenMessage({expected:i,actual:u,previous:d,ruleName:this.getCurrRuleFullName()}),g=new e0(p,u,this.LA(0));g.resyncedTokens=Lu(o),this.SAVE_ERROR(g)};for(;!l;)if(this.tokenMatcher(h,i)){f();return}else if(n.call(this)){f(),e.apply(this,r);return}else this.tokenMatcher(h,a)?l=!0:(h=this.SKIP_TOKEN(),this.addToResyncTokens(h,o));this.importLexerState(s)}shouldInRepetitionRecoveryBeTried(e,r,n){return!(n===!1||this.tokenMatcher(this.LA(1),e)||this.isBackTracking()||this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,r)))}getFollowsForInRuleRecovery(e,r){let n=this.getCurrentGrammarPath(e,r);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(e,r){if(this.canRecoverWithSingleTokenInsertion(e,r))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){let n=this.SKIP_TOKEN();return this.consumeToken(),n}throw new NR("sad sad panda")}canPerformInRuleRecovery(e,r){return this.canRecoverWithSingleTokenInsertion(e,r)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,r){if(!this.canTokenTypeBeInsertedInRecovery(e)||ir(r))return!1;let n=this.LA(1);return ja(r,a=>this.tokenMatcher(n,a))!==void 0}canRecoverWithSingleTokenDeletion(e){return this.canTokenTypeBeDeletedInRecovery(e)?this.tokenMatcher(this.LA(2),e):!1}isInCurrentRuleReSyncSet(e){let r=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(r);return Bn(n,e)}findReSyncTokenType(){let e=this.flattenFollowSet(),r=this.LA(1),n=2;for(;;){let i=ja(e,a=>Wy(r,a));if(i!==void 0)return i;r=this.LA(n),n++}}getCurrFollowKey(){if(this.RULE_STACK.length===1)return RR;let e=this.getLastExplicitRuleShortName(),r=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:r,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){let e=this.RULE_STACK,r=this.RULE_OCCURRENCE_STACK;return je(e,(n,i)=>i===0?RR:{ruleName:this.shortRuleNameToFullName(n),idxInCallingRule:r[i],inRule:this.shortRuleNameToFullName(e[i-1])})}flattenFollowSet(){let e=je(this.buildFullFollowKeyStack(),r=>this.getFollowSetFromFollowKey(r));return Br(e)}getFollowSetFromFollowKey(e){if(e===RR)return[no];let r=e.ruleName+e.idxInCallingRule+mk+e.inRule;return this.resyncFollows[r]}addToResyncTokens(e,r){return this.tokenMatcher(e,no)||r.push(e),r}reSyncTo(e){let r=[],n=this.LA(1);for(;this.tokenMatcher(n,e)===!1;)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,r);return Lu(r)}attemptInRepetitionRecovery(e,r,n,i,a,s,o){}getCurrentGrammarPath(e,r){let n=this.getHumanReadableRuleStack(),i=jr(this.RULE_OCCURRENCE_STACK);return{ruleStack:n,occurrenceStack:i,lastTok:e,lastTokOccurrence:r}}getHumanReadableRuleStack(){return je(this.RULE_STACK,e=>this.shortRuleNameToFullName(e))}}});function Dk(t,e,r){return r|e|t}var Ok=F(()=>{});var Hu,DR=F(()=>{Ot();qg();Ns();Ky();Kg();Hu=class{constructor(e){var r;this.maxLookahead=(r=e?.maxLookahead)!==null&&r!==void 0?r:rs.maxLookahead}validate(e){let r=this.validateNoLeftRecursion(e.rules);if(ir(r)){let n=this.validateEmptyOrAlternatives(e.rules),i=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),a=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...r,...n,...i,...a]}return r}validateNoLeftRecursion(e){return fa(e,r=>LR(r,r,_l))}validateEmptyOrAlternatives(e){return fa(e,r=>pae(r,_l))}validateAmbiguousAlternationAlternatives(e,r){return fa(e,n=>gae(n,r,_l))}validateSomeNonEmptyLookaheadPath(e,r){return mae(e,r,_l)}buildLookaheadForAlternation(e){return nae(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,aae)}buildLookaheadForOptional(e){return iae(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,Xy(e.prodType),sae)}}});function pIe(t){Pk.reset(),t.accept(Pk);let e=Pk.dslMethods;return Pk.reset(),e}var Bk,OR,Pk,Sae=F(()=>{Ot();Ns();Ok();ts();DR();Bk=class{initLooksAhead(e){this.dynamicTokensEnabled=St(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:rs.dynamicTokensEnabled,this.maxLookahead=St(e,"maxLookahead")?e.maxLookahead:rs.maxLookahead,this.lookaheadStrategy=St(e,"lookaheadStrategy")?e.lookaheadStrategy:new Hu({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){Te(e,r=>{this.TRACE_INIT(`${r.name} Rule Lookahead`,()=>{let{alternation:n,repetition:i,option:a,repetitionMandatory:s,repetitionMandatoryWithSeparator:o,repetitionWithSeparator:l}=pIe(r);Te(n,u=>{let h=u.idx===0?"":u.idx;this.TRACE_INIT(`${Rs(u)}${h}`,()=>{let f=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:u.idx,rule:r,maxLookahead:u.maxLookahead||this.maxLookahead,hasPredicates:u.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),d=Dk(this.fullRuleNameToShort[r.name],256,u.idx);this.setLaFuncCache(d,f)})}),Te(i,u=>{this.computeLookaheadFunc(r,u.idx,768,"Repetition",u.maxLookahead,Rs(u))}),Te(a,u=>{this.computeLookaheadFunc(r,u.idx,512,"Option",u.maxLookahead,Rs(u))}),Te(s,u=>{this.computeLookaheadFunc(r,u.idx,1024,"RepetitionMandatory",u.maxLookahead,Rs(u))}),Te(o,u=>{this.computeLookaheadFunc(r,u.idx,1536,"RepetitionMandatoryWithSeparator",u.maxLookahead,Rs(u))}),Te(l,u=>{this.computeLookaheadFunc(r,u.idx,1280,"RepetitionWithSeparator",u.maxLookahead,Rs(u))})})})}computeLookaheadFunc(e,r,n,i,a,s){this.TRACE_INIT(`${s}${r===0?"":r}`,()=>{let o=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:r,rule:e,maxLookahead:a||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:i}),l=Dk(this.fullRuleNameToShort[e.name],n,r);this.setLaFuncCache(l,o)})}getKeyForAutomaticLookahead(e,r){let n=this.getLastExplicitRuleShortName();return Dk(n,e,r)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,r){this.lookAheadFuncsCache.set(e,r)}},OR=class extends es{constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}},Pk=new OR});function FR(t,e){isNaN(t.startOffset)===!0?(t.startOffset=e.startOffset,t.endOffset=e.endOffset):t.endOffset{});function $R(t,e){Object.defineProperty(t,gIe,{enumerable:!1,configurable:!0,writable:!1,value:e})}var gIe,Lae=F(()=>{gIe="name"});function mIe(t,e){let r=Nr(t),n=r.length;for(let i=0;is.msg);throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>: ${a.join(` `).replace(/\n/g,` `)}`)}}};return r.prototype=n,r.prototype.constructor=r,r._RULE_NAMES=e,r}function Nae(t,e,r){let n=function(){};$R(n,t+"BaseSemanticsWithDefaults");let i=Object.create(r.prototype);return Te(e,a=>{i[a]=mIe}),n.prototype=i,n.prototype.constructor=n,n}function vIe(t,e){return yIe(t,e)}function yIe(t,e){let r=Fr(e,i=>gi(t[i])===!1),n=je(r,i=>({msg:`Missing visitor method: <${i}> on ${t.constructor.name} CST Visitor.`,type:GR.MISSING_METHOD,methodName:i}));return xc(n)}var GR,Iae=F(()=>{Ot();Lae();(function(t){t[t.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",t[t.MISSING_METHOD=1]="MISSING_METHOD"})(GR||(GR={}))});var Gk,Mae=F(()=>{_ae();Ot();Iae();Ns();Gk=class{initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=St(e,"nodeLocationTracking")?e.nodeLocationTracking:rs.nodeLocationTracking,!this.outputCst)this.cstInvocationStateUpdate=Yn,this.cstFinallyStateUpdate=Yn,this.cstPostTerminal=Yn,this.cstPostNonTerminal=Yn,this.cstPostRule=Yn;else if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=zR,this.setNodeLocationFromNode=zR,this.cstPostRule=Yn,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Yn,this.setNodeLocationFromNode=Yn,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=FR,this.setNodeLocationFromNode=FR,this.cstPostRule=Yn,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Yn,this.setNodeLocationFromNode=Yn,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else if(/none/i.test(this.nodeLocationTracking))this.setNodeLocationFromToken=Yn,this.setNodeLocationFromNode=Yn,this.cstPostRule=Yn,this.setInitialNodeLocation=Yn;else throw Error(`Invalid config option: "${e.nodeLocationTracking}"`)}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){let r=this.LA(1);e.location={startOffset:r.startOffset,startLine:r.startLine,startColumn:r.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){let r={name:e,children:Object.create(null)};this.setInitialNodeLocation(r),this.CST_STACK.push(r)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?(n.endOffset=r.endOffset,n.endLine=r.endLine,n.endColumn=r.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(e){let r=this.LA(0),n=e.location;n.startOffset<=r.startOffset?n.endOffset=r.endOffset:n.startOffset=NaN}cstPostTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];Cae(n,r,e),this.setNodeLocationFromToken(n.location,r)}cstPostNonTerminal(e,r){let n=this.CST_STACK[this.CST_STACK.length-1];Aae(n,r,e),this.setNodeLocationFromNode(n.location,e.location)}getBaseCstVisitorConstructor(){if(ar(this.baseCstVisitorConstructor)){let e=Rae(this.className,Nr(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if(ar(this.baseCstVisitorWithDefaultsConstructor)){let e=Nae(this.className,Nr(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){let e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){let e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}}});var Uk,Dae=F(()=>{Ns();Uk=class{initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(this.selfAnalysisDone!==!0)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):Jg}LA(e){let r=this.currIdx+e;return r<0||this.tokVectorLength<=r?Jg:this.tokVector[r]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}}});var Vk,Oae=F(()=>{Ot();Qg();Ns();qg();Ky();ts();Vk=class{ACTION(e){return e.call(this)}consume(e,r,n){return this.consumeInternal(r,e,n)}subrule(e,r,n){return this.subruleInternal(r,e,n)}option(e,r){return this.optionInternal(r,e)}or(e,r){return this.orInternal(r,e)}many(e,r){return this.manyInternal(e,r)}atLeastOne(e,r){return this.atLeastOneInternal(e,r)}CONSUME(e,r){return this.consumeInternal(e,0,r)}CONSUME1(e,r){return this.consumeInternal(e,1,r)}CONSUME2(e,r){return this.consumeInternal(e,2,r)}CONSUME3(e,r){return this.consumeInternal(e,3,r)}CONSUME4(e,r){return this.consumeInternal(e,4,r)}CONSUME5(e,r){return this.consumeInternal(e,5,r)}CONSUME6(e,r){return this.consumeInternal(e,6,r)}CONSUME7(e,r){return this.consumeInternal(e,7,r)}CONSUME8(e,r){return this.consumeInternal(e,8,r)}CONSUME9(e,r){return this.consumeInternal(e,9,r)}SUBRULE(e,r){return this.subruleInternal(e,0,r)}SUBRULE1(e,r){return this.subruleInternal(e,1,r)}SUBRULE2(e,r){return this.subruleInternal(e,2,r)}SUBRULE3(e,r){return this.subruleInternal(e,3,r)}SUBRULE4(e,r){return this.subruleInternal(e,4,r)}SUBRULE5(e,r){return this.subruleInternal(e,5,r)}SUBRULE6(e,r){return this.subruleInternal(e,6,r)}SUBRULE7(e,r){return this.subruleInternal(e,7,r)}SUBRULE8(e,r){return this.subruleInternal(e,8,r)}SUBRULE9(e,r){return this.subruleInternal(e,9,r)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,r,n=em){if(Bn(this.definedRulesNames,e)){let s={message:_l.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:Li.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(s)}this.definedRulesNames.push(e);let i=this.defineRule(e,r,n);return this[e]=i,i}OVERRIDE_RULE(e,r,n=em){let i=dae(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(i);let a=this.defineRule(e,r,n);return this[e]=a,a}BACKTRACK(e,r){return function(){this.isBackTrackingStack.push(1);let n=this.saveRecogState();try{return e.apply(this,r),!0}catch(i){if(tf(i))return!1;throw i}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return dk(fr(this.gastProductionsCache))}}});var Wk,Pae=F(()=>{Ot();Ok();Qg();Kg();Yy();Ns();MR();Jd();Zd();Wk=class{initRecognizerEngine(e,r){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=Hg,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},St(r,"serializedGrammar"))throw Error(`The Parser's configuration can no longer contain a property. See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0 For Further details.`);if(Et(e)){if(ir(e))throw Error(`A Token Vocabulary cannot be empty. Note that the first argument for the parser constructor is no longer a Token vector (since v4.0).`);if(typeof e[0].startOffset=="number")throw Error(`The Parser constructor no longer accepts a token vector as the first argument. See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0 For Further details.`)}if(Et(e))this.tokensMap=zr(e,(a,s)=>(a[s.name]=s,a),{});else if(St(e,"modes")&&_a(Br(fr(e.modes)),Wie)){let a=Br(fr(e.modes)),s=bg(a);this.tokensMap=zr(s,(o,l)=>(o[l.name]=l,o),{})}else if(dn(e))this.tokensMap=jr(e);else throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap.EOF=no;let n=St(e,"modes")?Br(fr(e.modes)):fr(e),i=_a(n,a=>ir(a.categoryMatches));this.tokenMatcher=i?Hg:Gu,Uu(fr(this.tokensMap))}defineRule(e,r,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called' Make sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);let i=St(n,"resyncEnabled")?n.resyncEnabled:em.resyncEnabled,a=St(n,"recoveryValueFunc")?n.recoveryValueFunc:em.recoveryValueFunc,s=this.ruleShortNameIdx<<12;this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=e,this.fullRuleNameToShort[e]=s;let o;return this.outputCst===!0?o=function(...h){try{this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,h);let f=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(f),f}catch(f){return this.invokeRuleCatch(f,i,a)}finally{this.ruleFinallyStateUpdate()}}:o=function(...h){try{return this.ruleInvocationStateUpdate(s,e,this.subruleIdx),r.apply(this,h)}catch(f){return this.invokeRuleCatch(f,i,a)}finally{this.ruleFinallyStateUpdate()}},Object.assign(o,{ruleName:e,originalGrammarAction:r})}invokeRuleCatch(e,r,n){let i=this.RULE_STACK.length===1,a=r&&!this.isBackTracking()&&this.recoveryEnabled;if(tf(e)){let s=e;if(a){let o=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(o))if(s.resyncedTokens=this.reSyncTo(o),this.outputCst){let l=this.CST_STACK[this.CST_STACK.length-1];return l.recoveredNode=!0,l}else return n(e);else{if(this.outputCst){let l=this.CST_STACK[this.CST_STACK.length-1];l.recoveredNode=!0,s.partialCstResult=l}throw s}}else{if(i)return this.moveToTerminatedState(),n(e);throw s}}else throw e}optionInternal(e,r){let n=this.getKeyForAutomaticLookahead(512,r);return this.optionInternalLogic(e,r,n)}optionInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof e!="function"){a=e.DEF;let s=e.GATE;if(s!==void 0){let o=i;i=()=>s.call(this)&&o.call(this)}}else a=e;if(i.call(this)===!0)return a.call(this)}atLeastOneInternal(e,r){let n=this.getKeyForAutomaticLookahead(1024,e);return this.atLeastOneInternalLogic(e,r,n)}atLeastOneInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let s=r.GATE;if(s!==void 0){let o=i;i=()=>s.call(this)&&o.call(this)}}else a=r;if(i.call(this)===!0){let s=this.doSingleRepetition(a);for(;i.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a)}else throw this.raiseEarlyExitException(e,zn.REPETITION_MANDATORY,r.ERR_MSG);this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,r],i,1024,e,Ck)}atLeastOneSepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1536,e);this.atLeastOneSepFirstInternalLogic(e,r,n)}atLeastOneSepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let o=()=>this.tokenMatcher(this.LA(1),a);for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,o,i,qy],o,1536,e,qy)}else throw this.raiseEarlyExitException(e,zn.REPETITION_MANDATORY_WITH_SEPARATOR,r.ERR_MSG)}manyInternal(e,r){let n=this.getKeyForAutomaticLookahead(768,e);return this.manyInternalLogic(e,r,n)}manyInternalLogic(e,r,n){let i=this.getLaFuncFromCache(n),a;if(typeof r!="function"){a=r.DEF;let o=r.GATE;if(o!==void 0){let l=i;i=()=>o.call(this)&&l.call(this)}}else a=r;let s=!0;for(;i.call(this)===!0&&s===!0;)s=this.doSingleRepetition(a);this.attemptInRepetitionRecovery(this.manyInternal,[e,r],i,768,e,Sk,s)}manySepFirstInternal(e,r){let n=this.getKeyForAutomaticLookahead(1280,e);this.manySepFirstInternalLogic(e,r,n)}manySepFirstInternalLogic(e,r,n){let i=r.DEF,a=r.SEP;if(this.getLaFuncFromCache(n).call(this)===!0){i.call(this);let o=()=>this.tokenMatcher(this.LA(1),a);for(;this.tokenMatcher(this.LA(1),a)===!0;)this.CONSUME(a),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,a,o,i,Hy],o,1280,e,Hy)}}repetitionSepSecondInternal(e,r,n,i,a){for(;n();)this.CONSUME(r),i.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,r,n,i,a],n,1536,e,a)}doSingleRepetition(e){let r=this.getLexerPosition();return e.call(this),this.getLexerPosition()>r}orInternal(e,r){let n=this.getKeyForAutomaticLookahead(256,r),i=Et(e)?e:e.DEF,s=this.getLaFuncFromCache(n).call(this,i);if(s!==void 0)return i[s].ALT.call(this);this.raiseNoAltException(r,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),this.RULE_STACK.length===0&&this.isAtEndOfInput()===!1){let e=this.LA(1),r=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new Qy(r,e))}}subruleInternal(e,r,n){let i;try{let a=n!==void 0?n.ARGS:void 0;return this.subruleIdx=r,i=e.apply(this,a),this.cstPostNonTerminal(i,n!==void 0&&n.LABEL!==void 0?n.LABEL:e.ruleName),i}catch(a){throw this.subruleInternalError(a,n,e.ruleName)}}subruleInternalError(e,r,n){throw tf(e)&&e.partialCstResult!==void 0&&(this.cstPostNonTerminal(e.partialCstResult,r!==void 0&&r.LABEL!==void 0?r.LABEL:n),delete e.partialCstResult),e}consumeInternal(e,r,n){let i;try{let a=this.LA(1);this.tokenMatcher(a,e)===!0?(this.consumeToken(),i=a):this.consumeInternalError(e,a,n)}catch(a){i=this.consumeInternalRecovery(e,r,a)}return this.cstPostTerminal(n!==void 0&&n.LABEL!==void 0?n.LABEL:e.name,i),i}consumeInternalError(e,r,n){let i,a=this.LA(0);throw n!==void 0&&n.ERR_MSG?i=n.ERR_MSG:i=this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:r,previous:a,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new e0(i,r,a))}consumeInternalRecovery(e,r,n){if(this.recoveryEnabled&&n.name==="MismatchedTokenException"&&!this.isBackTracking()){let i=this.getFollowsForInRuleRecovery(e,r);try{return this.tryInRuleRecovery(e,i)}catch(a){throw a.name===IR?n:a}}else throw n}saveRecogState(){let e=this.errors,r=jr(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:r,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,r,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(r)}isBackTracking(){return this.isBackTrackingStack.length!==0}getCurrRuleFullName(){let e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),no)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}}});var Hk,Bae=F(()=>{Qg();Ot();Kg();Ns();Hk=class{initErrorHandler(e){this._errors=[],this.errorMessageProvider=St(e,"errorMessageProvider")?e.errorMessageProvider:rs.errorMessageProvider}SAVE_ERROR(e){if(tf(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:jr(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return jr(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,r,n){let i=this.getCurrRuleFullName(),a=this.getGAstProductions()[i],o=jg(e,a,r,this.maxLookahead)[0],l=[];for(let h=1;h<=this.maxLookahead;h++)l.push(this.LA(h));let u=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:o,actual:l,previous:this.LA(0),customUserDescription:n,ruleName:i});throw this.SAVE_ERROR(new Jy(u,this.LA(1),this.LA(0)))}raiseNoAltException(e,r){let n=this.getCurrRuleFullName(),i=this.getGAstProductions()[n],a=Xg(e,i,this.maxLookahead),s=[];for(let u=1;u<=this.maxLookahead;u++)s.push(this.LA(u));let o=this.LA(0),l=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:a,actual:s,previous:o,customUserDescription:r,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new Zy(l,this.LA(1),o))}}});var qk,Fae=F(()=>{Yy();Ot();qk=class{initContentAssist(){}computeContentAssist(e,r){let n=this.gastProductionsCache[e];if(ar(n))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return _k([n],r,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){let r=Yi(e.ruleStack),i=this.getGAstProductions()[r];return new Ek(i,e).startWalking()}}});function t2(t,e,r,n=!1){Xk(r);let i=ha(this.recordingProdStack),a=gi(e)?e:e.DEF,s=new t({definition:[],idx:r});return n&&(s.separator=e.SEP),St(e,"MAX_LOOKAHEAD")&&(s.maxLookahead=e.MAX_LOOKAHEAD),this.recordingProdStack.push(s),a.call(this),i.definition.push(s),this.recordingProdStack.pop(),jk}function wIe(t,e){Xk(e);let r=ha(this.recordingProdStack),n=Et(t)===!1,i=n===!1?t:t.DEF,a=new gn({definition:[],idx:e,ignoreAmbiguities:n&&t.IGNORE_AMBIGUITIES===!0});St(t,"MAX_LOOKAHEAD")&&(a.maxLookahead=t.MAX_LOOKAHEAD);let s=sy(i,o=>gi(o.GATE));return a.hasPredicates=s,r.definition.push(a),Te(i,o=>{let l=new En({definition:[]});a.definition.push(l),St(o,"IGNORE_AMBIGUITIES")?l.ignoreAmbiguities=o.IGNORE_AMBIGUITIES:St(o,"GATE")&&(l.ignoreAmbiguities=!0),this.recordingProdStack.push(l),o.ALT.call(this),this.recordingProdStack.pop()}),jk}function Gae(t){return t===0?"":`${t}`}function Xk(t){if(t<0||t>$ae){let e=new Error(`Invalid DSL Method idx value: <${t}> Idx value must be a none negative value smaller than ${$ae+1}`);throw e.KNOWN_RECORDER_ERROR=!0,e}}var jk,zae,$ae,Uae,Vae,bIe,Yk,Wae=F(()=>{Ot();ts();Uy();Zd();Jd();Ns();Ok();jk={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(jk);zae=!0,$ae=Math.pow(2,8)-1,Uae=Tk({name:"RECORDING_PHASE_TOKEN",pattern:ei.NA});Uu([Uae]);Vae=Qd(Uae,`This IToken indicates the Parser is in Recording Phase See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,-1,-1,-1,-1,-1,-1);Object.freeze(Vae);bIe={name:`This CSTNode indicates the Parser is in Recording Phase See: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details`,children:{}},Yk=class{initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",()=>{for(let e=0;e<10;e++){let r=e>0?e:"";this[`CONSUME${r}`]=function(n,i){return this.consumeInternalRecord(n,e,i)},this[`SUBRULE${r}`]=function(n,i){return this.subruleInternalRecord(n,e,i)},this[`OPTION${r}`]=function(n){return this.optionInternalRecord(n,e)},this[`OR${r}`]=function(n){return this.orInternalRecord(n,e)},this[`MANY${r}`]=function(n){this.manyInternalRecord(e,n)},this[`MANY_SEP${r}`]=function(n){this.manySepFirstInternalRecord(e,n)},this[`AT_LEAST_ONE${r}`]=function(n){this.atLeastOneInternalRecord(e,n)},this[`AT_LEAST_ONE_SEP${r}`]=function(n){this.atLeastOneSepFirstInternalRecord(e,n)}}this.consume=function(e,r,n){return this.consumeInternalRecord(r,e,n)},this.subrule=function(e,r,n){return this.subruleInternalRecord(r,e,n)},this.option=function(e,r){return this.optionInternalRecord(r,e)},this.or=function(e,r){return this.orInternalRecord(r,e)},this.many=function(e,r){this.manyInternalRecord(e,r)},this.atLeastOne=function(e,r){this.atLeastOneInternalRecord(e,r)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD})}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",()=>{let e=this;for(let r=0;r<10;r++){let n=r>0?r:"";delete e[`CONSUME${n}`],delete e[`SUBRULE${n}`],delete e[`OPTION${n}`],delete e[`OR${n}`],delete e[`MANY${n}`],delete e[`MANY_SEP${n}`],delete e[`AT_LEAST_ONE${n}`],delete e[`AT_LEAST_ONE_SEP${n}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA})}ACTION_RECORD(e){}BACKTRACK_RECORD(e,r){return()=>!0}LA_RECORD(e){return Jg}topLevelRuleRecord(e,r){try{let n=new Ja({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),r.call(this),this.recordingProdStack.pop(),n}catch(n){if(n.KNOWN_RECORDER_ERROR!==!0)try{n.message=n.message+` This error was thrown during the "grammar recording phase" For more info see: https://chevrotain.io/docs/guide/internals.html#grammar-recording`}catch{throw n}throw n}}optionInternalRecord(e,r){return t2.call(this,Zr,e,r)}atLeastOneInternalRecord(e,r){t2.call(this,Sn,r,e)}atLeastOneSepFirstInternalRecord(e,r){t2.call(this,Cn,r,e,zae)}manyInternalRecord(e,r){t2.call(this,br,r,e)}manySepFirstInternalRecord(e,r){t2.call(this,pn,r,e,zae)}orInternalRecord(e,r){return wIe.call(this,e,r)}subruleInternalRecord(e,r,n){if(Xk(r),!e||St(e,"ruleName")===!1){let o=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}> inside top level rule: <${this.recordingProdStack[0].name}>`);throw o.KNOWN_RECORDER_ERROR=!0,o}let i=ha(this.recordingProdStack),a=e.ruleName,s=new Kr({idx:r,nonTerminalName:a,label:n?.LABEL,referencedRule:void 0});return i.definition.push(s),this.outputCst?bIe:jk}consumeInternalRecord(e,r,n){if(Xk(r),!xR(e)){let s=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}> inside top level rule: <${this.recordingProdStack[0].name}>`);throw s.KNOWN_RECORDER_ERROR=!0,s}let i=ha(this.recordingProdStack),a=new pr({idx:r,terminalType:e,label:n?.LABEL});return i.definition.push(a),Vae}}});var Kk,Hae=F(()=>{Ot();$g();Ns();Kk=class{initPerformanceTracer(e){if(St(e,"traceInitPerf")){let r=e.traceInitPerf,n=typeof r=="number";this.traceInitMaxIdent=n?r:1/0,this.traceInitPerf=n?r>0:r}else this.traceInitMaxIdent=0,this.traceInitPerf=rs.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,r){if(this.traceInitPerf===!0){this.traceInitIndent++;let n=new Array(this.traceInitIndent+1).join(" ");this.traceInitIndent <${e}>`);let{time:i,value:a}=zy(r),s=i>10?console.warn:console.log;return this.traceInitIndent time: ${i}ms`),this.traceInitIndent--,a}else return r()}}});function qae(t,e){e.forEach(r=>{let n=r.prototype;Object.getOwnPropertyNames(n).forEach(i=>{if(i==="constructor")return;let a=Object.getOwnPropertyDescriptor(n,i);a&&(a.get||a.set)?Object.defineProperty(t.prototype,i,a):t.prototype[i]=r.prototype[i]})})}var Yae=F(()=>{});function Zk(t=void 0){return function(){return t}}var Jg,rs,em,Li,r2,n2,Ns=F(()=>{Ot();$g();Tie();Jd();qg();xae();MR();Sae();Mae();Dae();Oae();Pae();Bae();Fae();Wae();Hae();Yae();Ky();Jg=Qd(no,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(Jg);rs=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Wu,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),em=Object.freeze({recoveryValueFunc:()=>{},resyncEnabled:!0});(function(t){t[t.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",t[t.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",t[t.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",t[t.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",t[t.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",t[t.LEFT_RECURSION=5]="LEFT_RECURSION",t[t.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",t[t.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",t[t.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",t[t.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",t[t.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",t[t.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",t[t.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",t[t.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"})(Li||(Li={}));r2=class t{static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated. \nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",()=>{let e;this.selfAnalysisDone=!0;let r=this.className;this.TRACE_INIT("toFastProps",()=>{$y(this)}),this.TRACE_INIT("Grammar Recording",()=>{try{this.enableRecording(),Te(this.definedRulesNames,i=>{let s=this[i].originalGrammarAction,o;this.TRACE_INIT(`${i} Rule`,()=>{o=this.topLevelRuleRecord(i,s)}),this.gastProductionsCache[i]=o})}finally{this.disableRecording()}});let n=[];if(this.TRACE_INIT("Grammar Resolving",()=>{n=vae({rules:fr(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)}),this.TRACE_INIT("Grammar Validations",()=>{if(ir(n)&&this.skipValidations===!1){let i=yae({rules:fr(this.gastProductionsCache),tokenTypes:fr(this.tokensMap),errMsgProvider:_l,grammarName:r}),a=uae({lookaheadStrategy:this.lookaheadStrategy,rules:fr(this.gastProductionsCache),tokenTypes:fr(this.tokensMap),grammarName:r});this.definitionErrors=this.definitionErrors.concat(i,a)}}),ir(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",()=>{let i=kie(fr(this.gastProductionsCache));this.resyncFollows=i}),this.TRACE_INIT("ComputeLookaheadFunctions",()=>{var i,a;(a=(i=this.lookaheadStrategy).initialize)===null||a===void 0||a.call(i,{rules:fr(this.gastProductionsCache)}),this.preComputeLookaheadFunctions(fr(this.gastProductionsCache))})),!t.DEFER_DEFINITION_ERRORS_HANDLING&&!ir(this.definitionErrors))throw e=je(this.definitionErrors,i=>i.message),new Error(`Parser Definition Errors detected: ${e.join(` ------------------------------- `)}`)})}constructor(e,r){this.definitionErrors=[],this.selfAnalysisDone=!1;let n=this;if(n.initErrorHandler(r),n.initLexerAdapter(),n.initLooksAhead(r),n.initRecognizerEngine(e,r),n.initRecoverable(r),n.initTreeBuilder(r),n.initContentAssist(),n.initGastRecorder(r),n.initPerformanceTracer(r),St(r,"ignoredIssues"))throw new Error(`The IParserConfig property has been deprecated. Please use the flag on the relevant DSL method instead. See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES For further details.`);this.skipValidations=St(r,"skipValidations")?r.skipValidations:rs.skipValidations}};r2.DEFER_DEFINITION_ERRORS_HANDLING=!1;qae(r2,[Mk,Bk,Gk,Uk,Wk,Vk,Hk,qk,Yk,Kk]);n2=class extends r2{constructor(e,r=rs){let n=jr(r);n.outputCst=!1,super(e,n)}}});var Xae=F(()=>{ts()});var jae=F(()=>{});var Kae=F(()=>{Xae();jae()});var Zae=F(()=>{oR()});var t0=F(()=>{oR();Ns();Uy();Jd();Kg();DR();qg();Qg();wR();ts();ts();Kae();Zae()});function r0(t,e,r){return`${t.name}_${e}_${r}`}function tse(t){let e={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};_Ie(e,t);let r=t.length;for(let n=0;nrse(t,e,s));return im(t,e,n,r,...i)}function DIe(t,e,r){let n=Xi(t,e,r,{type:rf});nf(t,n);let i=im(t,e,n,r,n0(t,e,r));return OIe(t,e,r,i)}function n0(t,e,r){let n=Fr(je(r.definition,i=>rse(t,e,i)),i=>i!==void 0);return n.length===1?n[0]:n.length===0?void 0:BIe(t,n)}function nse(t,e,r,n,i){let a=n.left,s=n.right,o=Xi(t,e,r,{type:AIe});nf(t,o);let l=Xi(t,e,r,{type:ese});return a.loopback=o,l.loopback=o,t.decisionMap[r0(e,i?"RepetitionMandatoryWithSeparator":"RepetitionMandatory",r.idx)]=o,yi(s,o),i===void 0?(yi(o,a),yi(o,l)):(yi(o,l),yi(o,i.left),yi(i.right,a)),{left:a,right:l}}function ise(t,e,r,n,i){let a=n.left,s=n.right,o=Xi(t,e,r,{type:CIe});nf(t,o);let l=Xi(t,e,r,{type:ese}),u=Xi(t,e,r,{type:SIe});return o.loopback=u,l.loopback=u,yi(o,a),yi(o,l),yi(s,u),i!==void 0?(yi(u,l),yi(u,i.left),yi(i.right,a)):yi(u,o),t.decisionMap[r0(e,i?"RepetitionWithSeparator":"Repetition",r.idx)]=o,{left:o,right:l}}function OIe(t,e,r,n){let i=n.left,a=n.right;return yi(i,a),t.decisionMap[r0(e,"Option",r.idx)]=i,n}function nf(t,e){return t.decisionStates.push(e),e.decision=t.decisionStates.length-1,e.decision}function im(t,e,r,n,...i){let a=Xi(t,e,n,{type:EIe,start:r});r.end=a;for(let o of i)o!==void 0?(yi(r,o.left),yi(o.right,a)):yi(r,a);let s={left:r,right:a};return t.decisionMap[r0(e,PIe(n),n.idx)]=r,s}function PIe(t){if(t instanceof gn)return"Alternation";if(t instanceof Zr)return"Option";if(t instanceof br)return"Repetition";if(t instanceof pn)return"RepetitionWithSeparator";if(t instanceof Sn)return"RepetitionMandatory";if(t instanceof Cn)return"RepetitionMandatoryWithSeparator";throw new Error("Invalid production type encountered")}function BIe(t,e){let r=e.length;for(let a=0;a{vg();y_();t0();rf=1,TIe=2,Qae=4,Jae=5,nm=7,EIe=8,SIe=9,CIe=10,AIe=11,ese=12,i2=class{constructor(e){this.target=e}isEpsilon(){return!1}},tm=class extends i2{constructor(e,r){super(e),this.tokenType=r}},a2=class extends i2{constructor(e){super(e)}isEpsilon(){return!0}},rm=class extends i2{constructor(e,r,n){super(e),this.rule=r,this.followState=n}isEpsilon(){return!0}}});function HR(t,e=!0){return`${e?`a${t.alt}`:""}s${t.state.stateNumber}:${t.stack.map(r=>r.stateNumber.toString()).join("_")}`}var s2,am,sse=F(()=>{vg();s2={},am=class{constructor(){this.map={},this.configs=[]}get size(){return this.configs.length}finalize(){this.map={}}add(e){let r=HR(e);r in this.map||(this.map[r]=this.configs.length,this.configs.push(e))}get elements(){return this.configs}get alts(){return je(this.configs,e=>e.alt)}get key(){let e="";for(let r in this.map)e+=r+":";return e}}});function GIe(t,e){let r={};return n=>{let i=n.toString(),a=r[i];return a!==void 0||(a={atnStartState:t,decision:e,states:{}},r[i]=a),a}}function lse(t,e=!0){let r=new Set;for(let n of t){let i=new Set;for(let a of n){if(a===void 0){if(e)break;return!1}let s=[a.tokenTypeIdx].concat(a.categoryMatches);for(let o of s)if(r.has(o)){if(!i.has(o))return!1}else r.add(o),i.add(o)}}return!0}function UIe(t){let e=t.decisionStates.length,r=Array(e);for(let n=0;nVu(i)).join(", "),r=t.production.idx===0?"":t.production.idx,n=`Ambiguous Alternatives Detected: <${t.ambiguityIndices.join(", ")}> in <${YIe(t.production)}${r}> inside <${t.topLevelRule.name}> Rule, <${e}> may appears as a prefix path in all these alternatives. `;return n=n+`See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES For Further details.`,n}function YIe(t){if(t instanceof Kr)return"SUBRULE";if(t instanceof Zr)return"OPTION";if(t instanceof gn)return"OR";if(t instanceof Sn)return"AT_LEAST_ONE";if(t instanceof Cn)return"AT_LEAST_ONE_SEP";if(t instanceof pn)return"MANY_SEP";if(t instanceof br)return"MANY";if(t instanceof pr)return"CONSUME";throw Error("non exhaustive match")}function XIe(t,e,r){let n=fa(e.configs.elements,a=>a.state.transitions),i=Zee(n.filter(a=>a instanceof tm).map(a=>a.tokenType),a=>a.tokenTypeIdx);return{actualToken:r,possibleTokenTypes:i,tokenPath:t}}function jIe(t,e){return t.edges[e.tokenTypeIdx]}function KIe(t,e,r){let n=new am,i=[];for(let s of t.elements){if(r.is(s.alt)===!1)continue;if(s.state.type===nm){i.push(s);continue}let o=s.state.transitions.length;for(let l=0;l0&&!tMe(a))for(let s of i)a.add(s);return a}function ZIe(t,e){if(t instanceof tm&&Wy(e,t.tokenType))return t.target}function QIe(t,e){let r;for(let n of t.elements)if(e.is(n.alt)===!0){if(r===void 0)r=n.alt;else if(r!==n.alt)return}return r}function use(t){return{configs:t,edges:{},isAcceptState:!1,prediction:-1}}function cse(t,e,r,n){return n=hse(t,n),e.edges[r.tokenTypeIdx]=n,n}function hse(t,e){if(e===s2)return e;let r=e.configs.key,n=t.states[r];return n!==void 0?n:(e.configs.finalize(),t.states[r]=e,e)}function JIe(t){let e=new am,r=t.transitions.length;for(let n=0;n0){let i=[...t.stack],s={state:i.pop(),alt:t.alt,stack:i};Jk(s,e)}else e.add(t);return}r.epsilonOnlyTransitions||e.add(t);let n=r.transitions.length;for(let i=0;i1)return!0;return!1}function sMe(t){for(let e of Array.from(t.values()))if(Object.keys(e).length===1)return!0;return!1}var Qk,ose,o2,fse=F(()=>{t0();ase();sse();C_();b_();Qee();vg();E5();J5();iw();R_();Qk=class{constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,r){this.predicates[e]=r}toString(){let e="",r=this.predicates.length;for(let n=0;nconsole.log(n)}initialize(e){this.atn=tse(e.rules),this.dfas=UIe(this.atn)}validateAmbiguousAlternationAlternatives(){return[]}validateEmptyOrAlternatives(){return[]}buildLookaheadForAlternation(e){let{prodOccurrence:r,rule:n,hasPredicates:i,dynamicTokensEnabled:a}=e,s=this.dfas,o=this.logging,l=r0(n,"Alternation",r),h=this.atn.decisionMap[l].decision,f=je(Rk({maxLookahead:1,occurrence:r,prodType:"Alternation",rule:n}),d=>je(d,p=>p[0]));if(lse(f,!1)&&!a){let d=zr(f,(p,g,m)=>(Te(g,y=>{y&&(p[y.tokenTypeIdx]=m,Te(y.categoryMatches,x=>{p[x]=m}))}),p),{});return i?function(p){var g;let m=this.LA(1),y=d[m.tokenTypeIdx];if(p!==void 0&&y!==void 0){let x=(g=p[y])===null||g===void 0?void 0:g.GATE;if(x!==void 0&&x.call(this)===!1)return}return y}:function(){let p=this.LA(1);return d[p.tokenTypeIdx]}}else return i?function(d){let p=new Qk,g=d===void 0?0:d.length;for(let y=0;yje(d,p=>p[0]));if(lse(f)&&f[0][0]&&!a){let d=f[0],p=Br(d);if(p.length===1&&ir(p[0].categoryMatches)){let m=p[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===m}}else{let g=zr(p,(m,y)=>(y!==void 0&&(m[y.tokenTypeIdx]=!0,Te(y.categoryMatches,x=>{m[x]=!0})),m),{});return function(){let m=this.LA(1);return g[m.tokenTypeIdx]===!0}}}return function(){let d=qR.call(this,s,h,ose,o);return typeof d=="object"?!1:d===0}}}});var dse=F(()=>{fse()});var pse,YR,gse,eT,$r,wr,tT,mse,XR,vse,yse,xse,bse,jR,wse,kse,Tse,rT,sm,om,KR,lm,Ese,ZR,QR,JR,eN,tN,Sse,Cse,rN,Ase,nN,l2,_se,Lse,Rse,Nse,Ise,Mse,Dse,Ose,nT,Pse,Bse,Fse,zse,$se,Gse,Use,Vse,Wse,Hse,qse,iT,Yse,Xse,jse,Kse,Zse,Qse,Jse,eoe,toe,roe,noe,ioe,aoe,iN,aN,soe,ooe,loe,coe,uoe,hoe,foe,doe,poe,sN,ze,oN=F(()=>{"use strict";(function(t){function e(r){return typeof r=="string"}t.is=e})(pse||(pse={}));(function(t){function e(r){return typeof r=="string"}t.is=e})(YR||(YR={}));(function(t){t.MIN_VALUE=-2147483648,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}t.is=e})(gse||(gse={}));(function(t){t.MIN_VALUE=0,t.MAX_VALUE=2147483647;function e(r){return typeof r=="number"&&t.MIN_VALUE<=r&&r<=t.MAX_VALUE}t.is=e})(eT||(eT={}));(function(t){function e(n,i){return n===Number.MAX_VALUE&&(n=eT.MAX_VALUE),i===Number.MAX_VALUE&&(i=eT.MAX_VALUE),{line:n,character:i}}t.create=e;function r(n){let i=n;return ze.objectLiteral(i)&&ze.uinteger(i.line)&&ze.uinteger(i.character)}t.is=r})($r||($r={}));(function(t){function e(n,i,a,s){if(ze.uinteger(n)&&ze.uinteger(i)&&ze.uinteger(a)&&ze.uinteger(s))return{start:$r.create(n,i),end:$r.create(a,s)};if($r.is(n)&&$r.is(i))return{start:n,end:i};throw new Error(`Range#create called with invalid arguments[${n}, ${i}, ${a}, ${s}]`)}t.create=e;function r(n){let i=n;return ze.objectLiteral(i)&&$r.is(i.start)&&$r.is(i.end)}t.is=r})(wr||(wr={}));(function(t){function e(n,i){return{uri:n,range:i}}t.create=e;function r(n){let i=n;return ze.objectLiteral(i)&&wr.is(i.range)&&(ze.string(i.uri)||ze.undefined(i.uri))}t.is=r})(tT||(tT={}));(function(t){function e(n,i,a,s){return{targetUri:n,targetRange:i,targetSelectionRange:a,originSelectionRange:s}}t.create=e;function r(n){let i=n;return ze.objectLiteral(i)&&wr.is(i.targetRange)&&ze.string(i.targetUri)&&wr.is(i.targetSelectionRange)&&(wr.is(i.originSelectionRange)||ze.undefined(i.originSelectionRange))}t.is=r})(mse||(mse={}));(function(t){function e(n,i,a,s){return{red:n,green:i,blue:a,alpha:s}}t.create=e;function r(n){let i=n;return ze.objectLiteral(i)&&ze.numberRange(i.red,0,1)&&ze.numberRange(i.green,0,1)&&ze.numberRange(i.blue,0,1)&&ze.numberRange(i.alpha,0,1)}t.is=r})(XR||(XR={}));(function(t){function e(n,i){return{range:n,color:i}}t.create=e;function r(n){let i=n;return ze.objectLiteral(i)&&wr.is(i.range)&&XR.is(i.color)}t.is=r})(vse||(vse={}));(function(t){function e(n,i,a){return{label:n,textEdit:i,additionalTextEdits:a}}t.create=e;function r(n){let i=n;return ze.objectLiteral(i)&&ze.string(i.label)&&(ze.undefined(i.textEdit)||om.is(i))&&(ze.undefined(i.additionalTextEdits)||ze.typedArray(i.additionalTextEdits,om.is))}t.is=r})(yse||(yse={}));(function(t){t.Comment="comment",t.Imports="imports",t.Region="region"})(xse||(xse={}));(function(t){function e(n,i,a,s,o,l){let u={startLine:n,endLine:i};return ze.defined(a)&&(u.startCharacter=a),ze.defined(s)&&(u.endCharacter=s),ze.defined(o)&&(u.kind=o),ze.defined(l)&&(u.collapsedText=l),u}t.create=e;function r(n){let i=n;return ze.objectLiteral(i)&&ze.uinteger(i.startLine)&&ze.uinteger(i.startLine)&&(ze.undefined(i.startCharacter)||ze.uinteger(i.startCharacter))&&(ze.undefined(i.endCharacter)||ze.uinteger(i.endCharacter))&&(ze.undefined(i.kind)||ze.string(i.kind))}t.is=r})(bse||(bse={}));(function(t){function e(n,i){return{location:n,message:i}}t.create=e;function r(n){let i=n;return ze.defined(i)&&tT.is(i.location)&&ze.string(i.message)}t.is=r})(jR||(jR={}));(function(t){t.Error=1,t.Warning=2,t.Information=3,t.Hint=4})(wse||(wse={}));(function(t){t.Unnecessary=1,t.Deprecated=2})(kse||(kse={}));(function(t){function e(r){let n=r;return ze.objectLiteral(n)&&ze.string(n.href)}t.is=e})(Tse||(Tse={}));(function(t){function e(n,i,a,s,o,l){let u={range:n,message:i};return ze.defined(a)&&(u.severity=a),ze.defined(s)&&(u.code=s),ze.defined(o)&&(u.source=o),ze.defined(l)&&(u.relatedInformation=l),u}t.create=e;function r(n){var i;let a=n;return ze.defined(a)&&wr.is(a.range)&&ze.string(a.message)&&(ze.number(a.severity)||ze.undefined(a.severity))&&(ze.integer(a.code)||ze.string(a.code)||ze.undefined(a.code))&&(ze.undefined(a.codeDescription)||ze.string((i=a.codeDescription)===null||i===void 0?void 0:i.href))&&(ze.string(a.source)||ze.undefined(a.source))&&(ze.undefined(a.relatedInformation)||ze.typedArray(a.relatedInformation,jR.is))}t.is=r})(rT||(rT={}));(function(t){function e(n,i,...a){let s={title:n,command:i};return ze.defined(a)&&a.length>0&&(s.arguments=a),s}t.create=e;function r(n){let i=n;return ze.defined(i)&&ze.string(i.title)&&ze.string(i.command)}t.is=r})(sm||(sm={}));(function(t){function e(a,s){return{range:a,newText:s}}t.replace=e;function r(a,s){return{range:{start:a,end:a},newText:s}}t.insert=r;function n(a){return{range:a,newText:""}}t.del=n;function i(a){let s=a;return ze.objectLiteral(s)&&ze.string(s.newText)&&wr.is(s.range)}t.is=i})(om||(om={}));(function(t){function e(n,i,a){let s={label:n};return i!==void 0&&(s.needsConfirmation=i),a!==void 0&&(s.description=a),s}t.create=e;function r(n){let i=n;return ze.objectLiteral(i)&&ze.string(i.label)&&(ze.boolean(i.needsConfirmation)||i.needsConfirmation===void 0)&&(ze.string(i.description)||i.description===void 0)}t.is=r})(KR||(KR={}));(function(t){function e(r){let n=r;return ze.string(n)}t.is=e})(lm||(lm={}));(function(t){function e(a,s,o){return{range:a,newText:s,annotationId:o}}t.replace=e;function r(a,s,o){return{range:{start:a,end:a},newText:s,annotationId:o}}t.insert=r;function n(a,s){return{range:a,newText:"",annotationId:s}}t.del=n;function i(a){let s=a;return om.is(s)&&(KR.is(s.annotationId)||lm.is(s.annotationId))}t.is=i})(Ese||(Ese={}));(function(t){function e(n,i){return{textDocument:n,edits:i}}t.create=e;function r(n){let i=n;return ze.defined(i)&&rN.is(i.textDocument)&&Array.isArray(i.edits)}t.is=r})(ZR||(ZR={}));(function(t){function e(n,i,a){let s={kind:"create",uri:n};return i!==void 0&&(i.overwrite!==void 0||i.ignoreIfExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}t.create=e;function r(n){let i=n;return i&&i.kind==="create"&&ze.string(i.uri)&&(i.options===void 0||(i.options.overwrite===void 0||ze.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||ze.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||lm.is(i.annotationId))}t.is=r})(QR||(QR={}));(function(t){function e(n,i,a,s){let o={kind:"rename",oldUri:n,newUri:i};return a!==void 0&&(a.overwrite!==void 0||a.ignoreIfExists!==void 0)&&(o.options=a),s!==void 0&&(o.annotationId=s),o}t.create=e;function r(n){let i=n;return i&&i.kind==="rename"&&ze.string(i.oldUri)&&ze.string(i.newUri)&&(i.options===void 0||(i.options.overwrite===void 0||ze.boolean(i.options.overwrite))&&(i.options.ignoreIfExists===void 0||ze.boolean(i.options.ignoreIfExists)))&&(i.annotationId===void 0||lm.is(i.annotationId))}t.is=r})(JR||(JR={}));(function(t){function e(n,i,a){let s={kind:"delete",uri:n};return i!==void 0&&(i.recursive!==void 0||i.ignoreIfNotExists!==void 0)&&(s.options=i),a!==void 0&&(s.annotationId=a),s}t.create=e;function r(n){let i=n;return i&&i.kind==="delete"&&ze.string(i.uri)&&(i.options===void 0||(i.options.recursive===void 0||ze.boolean(i.options.recursive))&&(i.options.ignoreIfNotExists===void 0||ze.boolean(i.options.ignoreIfNotExists)))&&(i.annotationId===void 0||lm.is(i.annotationId))}t.is=r})(eN||(eN={}));(function(t){function e(r){let n=r;return n&&(n.changes!==void 0||n.documentChanges!==void 0)&&(n.documentChanges===void 0||n.documentChanges.every(i=>ze.string(i.kind)?QR.is(i)||JR.is(i)||eN.is(i):ZR.is(i)))}t.is=e})(tN||(tN={}));(function(t){function e(n){return{uri:n}}t.create=e;function r(n){let i=n;return ze.defined(i)&&ze.string(i.uri)}t.is=r})(Sse||(Sse={}));(function(t){function e(n,i){return{uri:n,version:i}}t.create=e;function r(n){let i=n;return ze.defined(i)&&ze.string(i.uri)&&ze.integer(i.version)}t.is=r})(Cse||(Cse={}));(function(t){function e(n,i){return{uri:n,version:i}}t.create=e;function r(n){let i=n;return ze.defined(i)&&ze.string(i.uri)&&(i.version===null||ze.integer(i.version))}t.is=r})(rN||(rN={}));(function(t){function e(n,i,a,s){return{uri:n,languageId:i,version:a,text:s}}t.create=e;function r(n){let i=n;return ze.defined(i)&&ze.string(i.uri)&&ze.string(i.languageId)&&ze.integer(i.version)&&ze.string(i.text)}t.is=r})(Ase||(Ase={}));(function(t){t.PlainText="plaintext",t.Markdown="markdown";function e(r){let n=r;return n===t.PlainText||n===t.Markdown}t.is=e})(nN||(nN={}));(function(t){function e(r){let n=r;return ze.objectLiteral(r)&&nN.is(n.kind)&&ze.string(n.value)}t.is=e})(l2||(l2={}));(function(t){t.Text=1,t.Method=2,t.Function=3,t.Constructor=4,t.Field=5,t.Variable=6,t.Class=7,t.Interface=8,t.Module=9,t.Property=10,t.Unit=11,t.Value=12,t.Enum=13,t.Keyword=14,t.Snippet=15,t.Color=16,t.File=17,t.Reference=18,t.Folder=19,t.EnumMember=20,t.Constant=21,t.Struct=22,t.Event=23,t.Operator=24,t.TypeParameter=25})(_se||(_se={}));(function(t){t.PlainText=1,t.Snippet=2})(Lse||(Lse={}));(function(t){t.Deprecated=1})(Rse||(Rse={}));(function(t){function e(n,i,a){return{newText:n,insert:i,replace:a}}t.create=e;function r(n){let i=n;return i&&ze.string(i.newText)&&wr.is(i.insert)&&wr.is(i.replace)}t.is=r})(Nse||(Nse={}));(function(t){t.asIs=1,t.adjustIndentation=2})(Ise||(Ise={}));(function(t){function e(r){let n=r;return n&&(ze.string(n.detail)||n.detail===void 0)&&(ze.string(n.description)||n.description===void 0)}t.is=e})(Mse||(Mse={}));(function(t){function e(r){return{label:r}}t.create=e})(Dse||(Dse={}));(function(t){function e(r,n){return{items:r||[],isIncomplete:!!n}}t.create=e})(Ose||(Ose={}));(function(t){function e(n){return n.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")}t.fromPlainText=e;function r(n){let i=n;return ze.string(i)||ze.objectLiteral(i)&&ze.string(i.language)&&ze.string(i.value)}t.is=r})(nT||(nT={}));(function(t){function e(r){let n=r;return!!n&&ze.objectLiteral(n)&&(l2.is(n.contents)||nT.is(n.contents)||ze.typedArray(n.contents,nT.is))&&(r.range===void 0||wr.is(r.range))}t.is=e})(Pse||(Pse={}));(function(t){function e(r,n){return n?{label:r,documentation:n}:{label:r}}t.create=e})(Bse||(Bse={}));(function(t){function e(r,n,...i){let a={label:r};return ze.defined(n)&&(a.documentation=n),ze.defined(i)?a.parameters=i:a.parameters=[],a}t.create=e})(Fse||(Fse={}));(function(t){t.Text=1,t.Read=2,t.Write=3})(zse||(zse={}));(function(t){function e(r,n){let i={range:r};return ze.number(n)&&(i.kind=n),i}t.create=e})($se||($se={}));(function(t){t.File=1,t.Module=2,t.Namespace=3,t.Package=4,t.Class=5,t.Method=6,t.Property=7,t.Field=8,t.Constructor=9,t.Enum=10,t.Interface=11,t.Function=12,t.Variable=13,t.Constant=14,t.String=15,t.Number=16,t.Boolean=17,t.Array=18,t.Object=19,t.Key=20,t.Null=21,t.EnumMember=22,t.Struct=23,t.Event=24,t.Operator=25,t.TypeParameter=26})(Gse||(Gse={}));(function(t){t.Deprecated=1})(Use||(Use={}));(function(t){function e(r,n,i,a,s){let o={name:r,kind:n,location:{uri:a,range:i}};return s&&(o.containerName=s),o}t.create=e})(Vse||(Vse={}));(function(t){function e(r,n,i,a){return a!==void 0?{name:r,kind:n,location:{uri:i,range:a}}:{name:r,kind:n,location:{uri:i}}}t.create=e})(Wse||(Wse={}));(function(t){function e(n,i,a,s,o,l){let u={name:n,detail:i,kind:a,range:s,selectionRange:o};return l!==void 0&&(u.children=l),u}t.create=e;function r(n){let i=n;return i&&ze.string(i.name)&&ze.number(i.kind)&&wr.is(i.range)&&wr.is(i.selectionRange)&&(i.detail===void 0||ze.string(i.detail))&&(i.deprecated===void 0||ze.boolean(i.deprecated))&&(i.children===void 0||Array.isArray(i.children))&&(i.tags===void 0||Array.isArray(i.tags))}t.is=r})(Hse||(Hse={}));(function(t){t.Empty="",t.QuickFix="quickfix",t.Refactor="refactor",t.RefactorExtract="refactor.extract",t.RefactorInline="refactor.inline",t.RefactorRewrite="refactor.rewrite",t.Source="source",t.SourceOrganizeImports="source.organizeImports",t.SourceFixAll="source.fixAll"})(qse||(qse={}));(function(t){t.Invoked=1,t.Automatic=2})(iT||(iT={}));(function(t){function e(n,i,a){let s={diagnostics:n};return i!=null&&(s.only=i),a!=null&&(s.triggerKind=a),s}t.create=e;function r(n){let i=n;return ze.defined(i)&&ze.typedArray(i.diagnostics,rT.is)&&(i.only===void 0||ze.typedArray(i.only,ze.string))&&(i.triggerKind===void 0||i.triggerKind===iT.Invoked||i.triggerKind===iT.Automatic)}t.is=r})(Yse||(Yse={}));(function(t){function e(n,i,a){let s={title:n},o=!0;return typeof i=="string"?(o=!1,s.kind=i):sm.is(i)?s.command=i:s.edit=i,o&&a!==void 0&&(s.kind=a),s}t.create=e;function r(n){let i=n;return i&&ze.string(i.title)&&(i.diagnostics===void 0||ze.typedArray(i.diagnostics,rT.is))&&(i.kind===void 0||ze.string(i.kind))&&(i.edit!==void 0||i.command!==void 0)&&(i.command===void 0||sm.is(i.command))&&(i.isPreferred===void 0||ze.boolean(i.isPreferred))&&(i.edit===void 0||tN.is(i.edit))}t.is=r})(Xse||(Xse={}));(function(t){function e(n,i){let a={range:n};return ze.defined(i)&&(a.data=i),a}t.create=e;function r(n){let i=n;return ze.defined(i)&&wr.is(i.range)&&(ze.undefined(i.command)||sm.is(i.command))}t.is=r})(jse||(jse={}));(function(t){function e(n,i){return{tabSize:n,insertSpaces:i}}t.create=e;function r(n){let i=n;return ze.defined(i)&&ze.uinteger(i.tabSize)&&ze.boolean(i.insertSpaces)}t.is=r})(Kse||(Kse={}));(function(t){function e(n,i,a){return{range:n,target:i,data:a}}t.create=e;function r(n){let i=n;return ze.defined(i)&&wr.is(i.range)&&(ze.undefined(i.target)||ze.string(i.target))}t.is=r})(Zse||(Zse={}));(function(t){function e(n,i){return{range:n,parent:i}}t.create=e;function r(n){let i=n;return ze.objectLiteral(i)&&wr.is(i.range)&&(i.parent===void 0||t.is(i.parent))}t.is=r})(Qse||(Qse={}));(function(t){t.namespace="namespace",t.type="type",t.class="class",t.enum="enum",t.interface="interface",t.struct="struct",t.typeParameter="typeParameter",t.parameter="parameter",t.variable="variable",t.property="property",t.enumMember="enumMember",t.event="event",t.function="function",t.method="method",t.macro="macro",t.keyword="keyword",t.modifier="modifier",t.comment="comment",t.string="string",t.number="number",t.regexp="regexp",t.operator="operator",t.decorator="decorator"})(Jse||(Jse={}));(function(t){t.declaration="declaration",t.definition="definition",t.readonly="readonly",t.static="static",t.deprecated="deprecated",t.abstract="abstract",t.async="async",t.modification="modification",t.documentation="documentation",t.defaultLibrary="defaultLibrary"})(eoe||(eoe={}));(function(t){function e(r){let n=r;return ze.objectLiteral(n)&&(n.resultId===void 0||typeof n.resultId=="string")&&Array.isArray(n.data)&&(n.data.length===0||typeof n.data[0]=="number")}t.is=e})(toe||(toe={}));(function(t){function e(n,i){return{range:n,text:i}}t.create=e;function r(n){let i=n;return i!=null&&wr.is(i.range)&&ze.string(i.text)}t.is=r})(roe||(roe={}));(function(t){function e(n,i,a){return{range:n,variableName:i,caseSensitiveLookup:a}}t.create=e;function r(n){let i=n;return i!=null&&wr.is(i.range)&&ze.boolean(i.caseSensitiveLookup)&&(ze.string(i.variableName)||i.variableName===void 0)}t.is=r})(noe||(noe={}));(function(t){function e(n,i){return{range:n,expression:i}}t.create=e;function r(n){let i=n;return i!=null&&wr.is(i.range)&&(ze.string(i.expression)||i.expression===void 0)}t.is=r})(ioe||(ioe={}));(function(t){function e(n,i){return{frameId:n,stoppedLocation:i}}t.create=e;function r(n){let i=n;return ze.defined(i)&&wr.is(n.stoppedLocation)}t.is=r})(aoe||(aoe={}));(function(t){t.Type=1,t.Parameter=2;function e(r){return r===1||r===2}t.is=e})(iN||(iN={}));(function(t){function e(n){return{value:n}}t.create=e;function r(n){let i=n;return ze.objectLiteral(i)&&(i.tooltip===void 0||ze.string(i.tooltip)||l2.is(i.tooltip))&&(i.location===void 0||tT.is(i.location))&&(i.command===void 0||sm.is(i.command))}t.is=r})(aN||(aN={}));(function(t){function e(n,i,a){let s={position:n,label:i};return a!==void 0&&(s.kind=a),s}t.create=e;function r(n){let i=n;return ze.objectLiteral(i)&&$r.is(i.position)&&(ze.string(i.label)||ze.typedArray(i.label,aN.is))&&(i.kind===void 0||iN.is(i.kind))&&i.textEdits===void 0||ze.typedArray(i.textEdits,om.is)&&(i.tooltip===void 0||ze.string(i.tooltip)||l2.is(i.tooltip))&&(i.paddingLeft===void 0||ze.boolean(i.paddingLeft))&&(i.paddingRight===void 0||ze.boolean(i.paddingRight))}t.is=r})(soe||(soe={}));(function(t){function e(r){return{kind:"snippet",value:r}}t.createSnippet=e})(ooe||(ooe={}));(function(t){function e(r,n,i,a){return{insertText:r,filterText:n,range:i,command:a}}t.create=e})(loe||(loe={}));(function(t){function e(r){return{items:r}}t.create=e})(coe||(coe={}));(function(t){t.Invoked=0,t.Automatic=1})(uoe||(uoe={}));(function(t){function e(r,n){return{range:r,text:n}}t.create=e})(hoe||(hoe={}));(function(t){function e(r,n){return{triggerKind:r,selectedCompletionInfo:n}}t.create=e})(foe||(foe={}));(function(t){function e(r){let n=r;return ze.objectLiteral(n)&&YR.is(n.uri)&&ze.string(n.name)}t.is=e})(doe||(doe={}));(function(t){function e(a,s,o,l){return new sN(a,s,o,l)}t.create=e;function r(a){let s=a;return!!(ze.defined(s)&&ze.string(s.uri)&&(ze.undefined(s.languageId)||ze.string(s.languageId))&&ze.uinteger(s.lineCount)&&ze.func(s.getText)&&ze.func(s.positionAt)&&ze.func(s.offsetAt))}t.is=r;function n(a,s){let o=a.getText(),l=i(s,(h,f)=>{let d=h.range.start.line-f.range.start.line;return d===0?h.range.start.character-f.range.start.character:d}),u=o.length;for(let h=l.length-1;h>=0;h--){let f=l[h],d=a.offsetAt(f.range.start),p=a.offsetAt(f.range.end);if(p<=u)o=o.substring(0,d)+f.newText+o.substring(p,o.length);else throw new Error("Overlapping edit");u=d}return o}t.applyEdits=n;function i(a,s){if(a.length<=1)return a;let o=a.length/2|0,l=a.slice(0,o),u=a.slice(o);i(l,s),i(u,s);let h=0,f=0,d=0;for(;h0&&e.push(r.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let r=this.getLineOffsets(),n=0,i=r.length;if(i===0)return $r.create(0,e);for(;ne?i=s:n=s+1}let a=n-1;return $r.create(a,e-r[a])}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line],i=e.line+1"u"}t.undefined=n;function i(p){return p===!0||p===!1}t.boolean=i;function a(p){return e.call(p)==="[object String]"}t.string=a;function s(p){return e.call(p)==="[object Number]"}t.number=s;function o(p,g,m){return e.call(p)==="[object Number]"&&g<=p&&p<=m}t.numberRange=o;function l(p){return e.call(p)==="[object Number]"&&-2147483648<=p&&p<=2147483647}t.integer=l;function u(p){return e.call(p)==="[object Number]"&&0<=p&&p<=2147483647}t.uinteger=u;function h(p){return e.call(p)==="[object Function]"}t.func=h;function f(p){return p!==null&&typeof p=="object"}t.objectLiteral=f;function d(p,g){return Array.isArray(p)&&p.every(g)}t.typedArray=d})(ze||(ze={}))});var c2,u2,i0,a0,lN,cm,aT=F(()=>{oN();$o();El();c2=class{constructor(){this.nodeStack=[]}get current(){return this.nodeStack[this.nodeStack.length-1]}buildRootNode(e){return this.rootNode=new cm(e),this.rootNode.root=this.rootNode,this.nodeStack=[this.rootNode],this.rootNode}buildCompositeNode(e){let r=new a0;return r.grammarSource=e,r.root=this.rootNode,this.current.content.push(r),this.nodeStack.push(r),r}buildLeafNode(e,r){let n=new i0(e.startOffset,e.image.length,Ig(e),e.tokenType,!1);return n.grammarSource=r,n.root=this.rootNode,this.current.content.push(n),n}removeNode(e){let r=e.container;if(r){let n=r.content.indexOf(e);n>=0&&r.content.splice(n,1)}}construct(e){let r=this.current;typeof e.$type=="string"&&(this.current.astNode=e),e.$cstNode=r;let n=this.nodeStack.pop();n?.content.length===0&&this.removeNode(n)}addHiddenTokens(e){for(let r of e){let n=new i0(r.startOffset,r.image.length,Ig(r),r.tokenType,!0);n.root=this.rootNode,this.addHiddenToken(this.rootNode,n)}}addHiddenToken(e,r){let{offset:n,end:i}=r;for(let a=0;ao&&i=0;e--){let r=this.content[e];if(!r.hidden)return r}return this.content[this.content.length-1]}},lN=class t extends Array{constructor(e){super(),this.parent=e,Object.setPrototypeOf(this,t.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,r,...n){return this.addParents(n),super.splice(e,r,...n)}addParents(e){for(let r of e)r.container=this.parent}},cm=class extends a0{get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=e??""}}});function cN(t){return t.$type===sT}var sT,goe,moe,h2,f2,oT,um,d2,oMe,uN,p2=F(()=>{t0();dse();Ac();Al();Qa();aT();sT=Symbol("Datatype");goe="\u200B",moe=t=>t.endsWith(goe)?t:t+goe,h2=class{constructor(e){this._unorderedGroups=new Map,this.lexer=e.parser.Lexer;let r=this.lexer.definition;this.wrapper=new uN(r,Object.assign(Object.assign({},e.parser.ParserConfig),{errorMessageProvider:e.parser.ParserErrorMessageProvider}))}alternatives(e,r){this.wrapper.wrapOr(e,r)}optional(e,r){this.wrapper.wrapOption(e,r)}many(e,r){this.wrapper.wrapMany(e,r)}atLeastOne(e,r){this.wrapper.wrapAtLeastOne(e,r)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}},f2=class extends h2{get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new c2,this.stack=[],this.assignmentMap=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,r){let n=e.fragment?void 0:By(e)?sT:Yd(e),i=this.wrapper.DEFINE_RULE(moe(e.name),this.startImplementation(n,r).bind(this));return e.entry&&(this.mainRule=i),i}parse(e){this.nodeBuilder.buildRootNode(e);let r=this.lexer.tokenize(e);this.wrapper.input=r.tokens;let n=this.mainRule.call(this.wrapper,{});return this.nodeBuilder.addHiddenTokens(r.hidden),this.unorderedGroups.clear(),{value:n,lexerErrors:r.errors,parserErrors:this.wrapper.errors}}startImplementation(e,r){return n=>{if(!this.isRecording()){let a={$type:e};this.stack.push(a),e===sT&&(a.value="")}let i;try{i=r(n)}catch{i=void 0}return!this.isRecording()&&i===void 0&&(i=this.construct()),i}}consume(e,r,n){let i=this.wrapper.wrapConsume(e,r);if(!this.isRecording()&&this.isValidToken(i)){let a=this.nodeBuilder.buildLeafNode(i,n),{assignment:s,isCrossRef:o}=this.getAssignment(n),l=this.current;if(s){let u=Uo(n)?i.image:this.converter.convert(i.image,a);this.assign(s.operator,s.feature,u,a,o)}else if(cN(l)){let u=i.image;Uo(n)||(u=this.converter.convert(u,a).toString()),l.value+=u}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&typeof e.endOffset=="number"&&!isNaN(e.endOffset)}subrule(e,r,n,i){let a;this.isRecording()||(a=this.nodeBuilder.buildCompositeNode(n));let s=this.wrapper.wrapSubrule(e,r,i);!this.isRecording()&&a&&a.length>0&&this.performSubruleAssignment(s,n,a)}performSubruleAssignment(e,r,n){let{assignment:i,isCrossRef:a}=this.getAssignment(r);if(i)this.assign(i.operator,i.feature,e,n,a);else if(!i){let s=this.current;if(cN(s))s.value+=e.toString();else if(typeof e=="object"&&e){let o=e.$type,l=this.assignWithoutOverride(e,s);o&&(l.$type=o);let u=l;this.stack.pop(),this.stack.push(u)}}}action(e,r){if(!this.isRecording()){let n=this.current;if(!n.$cstNode&&r.feature&&r.operator){n=this.construct(!1);let a=n.$cstNode.feature;this.nodeBuilder.buildCompositeNode(a)}let i={$type:e};this.stack.pop(),this.stack.push(i),r.feature&&r.operator&&this.assign(r.operator,r.feature,n,n.$cstNode,!1)}}construct(e=!0){if(this.isRecording())return;let r=this.current;return ak(r),this.nodeBuilder.construct(r),e&&this.stack.pop(),cN(r)?this.converter.convert(r.value,r.$cstNode):(FL(this.astReflection,r),r)}getAssignment(e){if(!this.assignmentMap.has(e)){let r=Ud(e,Sl);this.assignmentMap.set(e,{assignment:r,isCrossRef:r?Gd(r.terminal):!1})}return this.assignmentMap.get(e)}assign(e,r,n,i,a){let s=this.current,o;switch(a&&typeof n=="string"?o=this.linker.buildReference(s,r,i,n):o=n,e){case"=":{s[r]=o;break}case"?=":{s[r]=!0;break}case"+=":Array.isArray(s[r])||(s[r]=[]),s[r].push(o)}}assignWithoutOverride(e,r){for(let[n,i]of Object.entries(r)){let a=e[n];a===void 0?e[n]=i:Array.isArray(a)&&Array.isArray(i)&&(i.push(...a),e[n]=i)}return e}get definitionErrors(){return this.wrapper.definitionErrors}},oT=class{buildMismatchTokenMessage(e){return Wu.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return Wu.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return Wu.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return Wu.buildEarlyExitMessage(e)}},um=class extends oT{buildMismatchTokenMessage({expected:e,actual:r}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${r.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}},d2=class extends h2{constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();let r=this.lexer.tokenize(e);return this.tokens=r.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,r){let n=this.wrapper.DEFINE_RULE(moe(e.name),this.startImplementation(r).bind(this));return e.entry&&(this.mainRule=n),n}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return r=>{let n=this.keepStackSize();try{e(r)}finally{this.resetStackSize(n)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){let e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,r,n){this.wrapper.wrapConsume(e,r),this.isRecording()||(this.lastElementStack=[...this.elementStack,n],this.nextTokenIndex=this.currIdx+1)}subrule(e,r,n,i){this.before(n),this.wrapper.wrapSubrule(e,r,i),this.after(n)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){let r=this.elementStack.lastIndexOf(e);r>=0&&this.elementStack.splice(r)}}get currIdx(){return this.wrapper.currIdx}},oMe={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new um},uN=class extends n2{constructor(e,r){let n=r&&"maxLookahead"in r;super(e,Object.assign(Object.assign(Object.assign({},oMe),{lookaheadStrategy:n?new Hu({maxLookahead:r.maxLookahead}):new o2}),r))}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,r){return this.RULE(e,r)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,r){return this.consume(e,r)}wrapSubrule(e,r,n){return this.subrule(e,r,{ARGS:[n]})}wrapOr(e,r){this.or(e,r)}wrapOption(e,r){this.option(e,r)}wrapMany(e,r){this.many(e,r)}wrapAtLeastOne(e,r){this.atLeastOne(e,r)}}});function cT(t,e,r){return lMe({parser:e,tokens:r,rules:new Map,ruleNames:new Map},t),e}function lMe(t,e){let r=Oy(e,!1),n=Xr(e.rules).filter(Ra).filter(i=>r.has(i));for(let i of n){let a=Object.assign(Object.assign({},t),{consume:1,optional:1,subrule:1,many:1,or:1});a.rules.set(i.name,t.parser.rule(i,s0(a,i.definition)))}}function s0(t,e,r=!1){let n;if(Uo(e))n=gMe(t,e);else if(Fu(e))n=cMe(t,e);else if(Sl(e))n=s0(t,e.terminal);else if(Gd(e))n=voe(t,e);else if(Cl(e))n=uMe(t,e);else if(rk(e))n=fMe(t,e);else if(ik(e))n=dMe(t,e);else if(ef(e))n=pMe(t,e);else if(yL(e)){let i=t.consume++;n=()=>t.parser.consume(i,no,e)}else throw new $d(e.$cstNode,`Unexpected element type: ${e.$type}`);return yoe(t,r?void 0:lT(e),n,e.cardinality)}function cMe(t,e){let r=Yd(e);return()=>t.parser.action(r,e)}function uMe(t,e){let r=e.rule.ref;if(Ra(r)){let n=t.subrule++,i=e.arguments.length>0?hMe(r,e.arguments):()=>({});return a=>t.parser.subrule(n,xoe(t,r),e,i(a))}else if(Go(r)){let n=t.consume++,i=hN(t,r.name);return()=>t.parser.consume(n,i,e)}else if(r)Jh(r);else throw new $d(e.$cstNode,`Undefined rule type: ${e.$type}`)}function hMe(t,e){let r=e.map(n=>qu(n.value));return n=>{let i={};for(let a=0;ae(n)||r(n)}else if(W9(t)){let e=qu(t.left),r=qu(t.right);return n=>e(n)&&r(n)}else if(Z9(t)){let e=qu(t.value);return r=>!e(r)}else if(tL(t)){let e=t.parameter.ref.name;return r=>r!==void 0&&r[e]===!0}else if(U9(t)){let e=!!t.true;return()=>e}Jh(t)}function fMe(t,e){if(e.elements.length===1)return s0(t,e.elements[0]);{let r=[];for(let i of e.elements){let a={ALT:s0(t,i,!0)},s=lT(i);s&&(a.GATE=qu(s)),r.push(a)}let n=t.or++;return i=>t.parser.alternatives(n,r.map(a=>{let s={ALT:()=>a.ALT(i)},o=a.GATE;return o&&(s.GATE=()=>o(i)),s}))}}function dMe(t,e){if(e.elements.length===1)return s0(t,e.elements[0]);let r=[];for(let o of e.elements){let l={ALT:s0(t,o,!0)},u=lT(o);u&&(l.GATE=qu(u)),r.push(l)}let n=t.or++,i=(o,l)=>{let u=l.getRuleStack().join("-");return`uGroup_${o}_${u}`},a=o=>t.parser.alternatives(n,r.map((l,u)=>{let h={ALT:()=>!0},f=t.parser;h.ALT=()=>{if(l.ALT(o),!f.isRecording()){let p=i(n,f);f.unorderedGroups.get(p)||f.unorderedGroups.set(p,[]);let g=f.unorderedGroups.get(p);typeof g?.[u]>"u"&&(g[u]=!0)}};let d=l.GATE;return d?h.GATE=()=>d(o):h.GATE=()=>{let p=f.unorderedGroups.get(i(n,f));return!p?.[u]},h})),s=yoe(t,lT(e),a,"*");return o=>{s(o),t.parser.isRecording()||t.parser.unorderedGroups.delete(i(n,t.parser))}}function pMe(t,e){let r=e.elements.map(n=>s0(t,n));return n=>r.forEach(i=>i(n))}function lT(t){if(ef(t))return t.guardCondition}function voe(t,e,r=e.terminal){if(r)if(Cl(r)&&Ra(r.rule.ref)){let n=t.subrule++;return i=>t.parser.subrule(n,xoe(t,r.rule.ref),e,i)}else if(Cl(r)&&Go(r.rule.ref)){let n=t.consume++,i=hN(t,r.rule.ref.name);return()=>t.parser.consume(n,i,e)}else if(Uo(r)){let n=t.consume++,i=hN(t,r.value);return()=>t.parser.consume(n,i,e)}else throw new Error("Could not build cross reference parser");else{if(!e.type.ref)throw new Error("Could not resolve reference to type: "+e.type.$refText);let n=hk(e.type.ref),i=n?.terminal;if(!i)throw new Error("Could not find name assignment for type: "+Yd(e.type.ref));return voe(t,e,i)}}function gMe(t,e){let r=t.consume++,n=t.tokens[e.value];if(!n)throw new Error("Could not find token for keyword: "+e.value);return()=>t.parser.consume(r,n,e)}function yoe(t,e,r,n){let i=e&&qu(e);if(!n)if(i){let a=t.or++;return s=>t.parser.alternatives(a,[{ALT:()=>r(s),GATE:()=>i(s)},{ALT:Zk(),GATE:()=>!i(s)}])}else return r;if(n==="*"){let a=t.many++;return s=>t.parser.many(a,{DEF:()=>r(s),GATE:i?()=>i(s):void 0})}else if(n==="+"){let a=t.many++;if(i){let s=t.or++;return o=>t.parser.alternatives(s,[{ALT:()=>t.parser.atLeastOne(a,{DEF:()=>r(o)}),GATE:()=>i(o)},{ALT:Zk(),GATE:()=>!i(o)}])}else return s=>t.parser.atLeastOne(a,{DEF:()=>r(s)})}else if(n==="?"){let a=t.optional++;return s=>t.parser.optional(a,{DEF:()=>r(s),GATE:i?()=>i(s):void 0})}else Jh(n)}function xoe(t,e){let r=mMe(t,e),n=t.rules.get(r);if(!n)throw new Error(`Rule "${r}" not found."`);return n}function mMe(t,e){if(Ra(e))return e.name;if(t.ruleNames.has(e))return t.ruleNames.get(e);{let r=e,n=r.$container,i=e.$type;for(;!Ra(n);)(ef(n)||rk(n)||ik(n))&&(i=n.elements.indexOf(r).toString()+":"+i),r=n,n=n.$container;return i=n.name+":"+i,t.ruleNames.set(e,i),i}}function hN(t,e){let r=t.tokens[e];if(!r)throw new Error(`Token "${e}" not found."`);return r}var fN=F(()=>{t0();Ac();jw();Ls();Al()});function dN(t){let e=t.Grammar,r=t.parser.Lexer,n=new d2(t);return cT(e,n,r.definition),n.finalize(),n}var pN=F(()=>{p2();fN()});function gN(t){let e=boe(t);return e.finalize(),e}function boe(t){let e=t.Grammar,r=t.parser.Lexer,n=new f2(t);return cT(e,n,r.definition)}var mN=F(()=>{p2();fN()});var o0,vN=F(()=>{t0();Ac();Qa();Al();Pg();Ls();o0=class{buildTokens(e,r){let n=Xr(Oy(e,!1)),i=this.buildTerminalTokens(n),a=this.buildKeywordTokens(n,i,r);return i.forEach(s=>{let o=s.PATTERN;typeof o=="object"&&o&&"test"in o&&ck(o)?a.unshift(s):a.push(s)}),a}buildTerminalTokens(e){return e.filter(Go).filter(r=>!r.fragment).map(r=>this.buildTerminalToken(r)).toArray()}buildTerminalToken(e){let r=Bg(e),n=this.requiresCustomPattern(r)?this.regexPatternFunction(r):r,i={name:e.name,PATTERN:n,LINE_BREAKS:!0};return e.hidden&&(i.GROUP=ck(r)?ei.SKIPPED:"hidden"),i}requiresCustomPattern(e){return e.flags.includes("u")?!0:!!(e.source.includes("?<=")||e.source.includes("?(r.lastIndex=i,r.exec(n))}buildKeywordTokens(e,r,n){return e.filter(Ra).flatMap(i=>_c(i).filter(Uo)).distinct(i=>i.value).toArray().sort((i,a)=>a.value.length-i.value.length).map(i=>this.buildKeywordToken(i,r,!!n?.caseInsensitive))}buildKeywordToken(e,r,n){return{name:e.value,PATTERN:this.buildKeywordPattern(e,n),LONGER_ALT:this.findLongerAlt(e,r)}}buildKeywordPattern(e,r){return r?new RegExp(HL(e.value)):e.value}findLongerAlt(e,r){return r.reduce((n,i)=>{let a=i?.PATTERN;return a?.source&&qL("^"+a.source+"$",e.value)&&n.push(i),n},[])}}});var l0,Nc,yN=F(()=>{Ac();Al();l0=class{convert(e,r){let n=r.grammarSource;if(Gd(n)&&(n=jL(n)),Cl(n)){let i=n.rule.ref;if(!i)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(i,e,r)}return e}runConverter(e,r,n){var i;switch(e.name.toUpperCase()){case"INT":return Nc.convertInt(r);case"STRING":return Nc.convertString(r);case"ID":return Nc.convertID(r)}switch((i=nR(e))===null||i===void 0?void 0:i.toLowerCase()){case"number":return Nc.convertNumber(r);case"boolean":return Nc.convertBoolean(r);case"bigint":return Nc.convertBigint(r);case"date":return Nc.convertDate(r);default:return r}}};(function(t){function e(u){let h="";for(let f=1;f{"use strict";Object.defineProperty(wN,"__esModule",{value:!0});var xN;function bN(){if(xN===void 0)throw new Error("No runtime abstraction layer installed");return xN}(function(t){function e(r){if(r===void 0)throw new Error("No runtime abstraction layer provided");xN=r}t.install=e})(bN||(bN={}));wN.default=bN});var Toe=di(Na=>{"use strict";Object.defineProperty(Na,"__esModule",{value:!0});Na.stringArray=Na.array=Na.func=Na.error=Na.number=Na.string=Na.boolean=void 0;function vMe(t){return t===!0||t===!1}Na.boolean=vMe;function woe(t){return typeof t=="string"||t instanceof String}Na.string=woe;function yMe(t){return typeof t=="number"||t instanceof Number}Na.number=yMe;function xMe(t){return t instanceof Error}Na.error=xMe;function bMe(t){return typeof t=="function"}Na.func=bMe;function koe(t){return Array.isArray(t)}Na.array=koe;function wMe(t){return koe(t)&&t.every(e=>woe(e))}Na.stringArray=wMe});var EN=di(hm=>{"use strict";Object.defineProperty(hm,"__esModule",{value:!0});hm.Emitter=hm.Event=void 0;var kMe=kN(),Eoe;(function(t){let e={dispose(){}};t.None=function(){return e}})(Eoe||(hm.Event=Eoe={}));var TN=class{add(e,r=null,n){this._callbacks||(this._callbacks=[],this._contexts=[]),this._callbacks.push(e),this._contexts.push(r),Array.isArray(n)&&n.push({dispose:()=>this.remove(e,r)})}remove(e,r=null){if(!this._callbacks)return;let n=!1;for(let i=0,a=this._callbacks.length;i{this._callbacks||(this._callbacks=new TN),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,r);let i={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,r),i.dispose=t._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(n)&&n.push(i),i}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}};hm.Emitter=uT;uT._noop=function(){}});var Soe=di(fm=>{"use strict";Object.defineProperty(fm,"__esModule",{value:!0});fm.CancellationTokenSource=fm.CancellationToken=void 0;var TMe=kN(),EMe=Toe(),SN=EN(),hT;(function(t){t.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:SN.Event.None}),t.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:SN.Event.None});function e(r){let n=r;return n&&(n===t.None||n===t.Cancelled||EMe.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}t.is=e})(hT||(fm.CancellationToken=hT={}));var SMe=Object.freeze(function(t,e){let r=(0,TMe.default)().timer.setTimeout(t.bind(e),0);return{dispose(){r.dispose()}}}),fT=class{constructor(){this._isCancelled=!1}cancel(){this._isCancelled||(this._isCancelled=!0,this._emitter&&(this._emitter.fire(void 0),this.dispose()))}get isCancellationRequested(){return this._isCancelled}get onCancellationRequested(){return this._isCancelled?SMe:(this._emitter||(this._emitter=new SN.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}},CN=class{get token(){return this._token||(this._token=new fT),this._token}cancel(){this._token?this._token.cancel():this._token=hT.Cancelled}dispose(){this._token?this._token instanceof fT&&this._token.dispose():this._token=hT.None}};fm.CancellationTokenSource=CN});var mr={};var Wo=F(()=>{gr(mr,Gi(Soe(),1))});function _N(){return new Promise(t=>{typeof setImmediate>"u"?setTimeout(t,0):setImmediate(t)})}function Aoe(){return AN=Date.now(),new mr.CancellationTokenSource}function _oe(t){Coe=t}function af(t){return t===Ic}async function Ri(t){if(t===mr.CancellationToken.None)return;let e=Date.now();if(e-AN>=Coe&&(AN=e,await _N()),t.isCancellationRequested)throw Ic}var AN,Coe,Ic,ns,Ho=F(()=>{Wo();AN=0,Coe=10;Ic=Symbol("OperationCancelled");ns=class{constructor(){this.promise=new Promise((e,r)=>{this.resolve=n=>(e(n),this),this.reject=n=>(r(n),this)})}}});function LN(t,e){if(t.length<=1)return t;let r=t.length/2|0,n=t.slice(0,r),i=t.slice(r);LN(n,e),LN(i,e);let a=0,s=0,o=0;for(;ar.line||e.line===r.line&&e.character>r.character?{start:r,end:e}:t}function CMe(t){let e=Noe(t.range);return e!==t.range?{newText:t.newText,range:e}:t}var dT,dm,Ioe=F(()=>{"use strict";dT=class t{constructor(e,r,n,i){this._uri=e,this._languageId=r,this._version=n,this._content=i,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let r=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(r,n)}return this._content}update(e,r){for(let n of e)if(t.isIncremental(n)){let i=Noe(n.range),a=this.offsetAt(i.start),s=this.offsetAt(i.end);this._content=this._content.substring(0,a)+n.text+this._content.substring(s,this._content.length);let o=Math.max(i.start.line,0),l=Math.max(i.end.line,0),u=this._lineOffsets,h=Loe(n.text,!1,a);if(l-o===h.length)for(let d=0,p=h.length;de?i=s:n=s+1}let a=n-1;return e=this.ensureBeforeEOL(e,r[a]),{line:a,character:e-r[a]}}offsetAt(e){let r=this.getLineOffsets();if(e.line>=r.length)return this._content.length;if(e.line<0)return 0;let n=r[e.line];if(e.character<=0)return n;let i=e.line+1r&&Roe(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range!==void 0&&(r.rangeLength===void 0||typeof r.rangeLength=="number")}static isFull(e){let r=e;return r!=null&&typeof r.text=="string"&&r.range===void 0&&r.rangeLength===void 0}};(function(t){function e(i,a,s,o){return new dT(i,a,s,o)}t.create=e;function r(i,a,s){if(i instanceof dT)return i.update(a,s),i;throw new Error("TextDocument.update: document must be created by TextDocument.create")}t.update=r;function n(i,a){let s=i.getText(),o=LN(a.map(CMe),(h,f)=>{let d=h.range.start.line-f.range.start.line;return d===0?h.range.start.character-f.range.start.character:d}),l=0,u=[];for(let h of o){let f=i.offsetAt(h.range.start);if(fl&&u.push(s.substring(l,f)),h.newText.length&&u.push(h.newText),l=i.offsetAt(h.range.end)}return u.push(s.substr(l)),u.join("")}t.applyEdits=n})(dm||(dm={}))});var Moe,Is,pm,RN=F(()=>{(()=>{"use strict";var t={470:i=>{function a(l){if(typeof l!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(l))}function s(l,u){for(var h,f="",d=0,p=-1,g=0,m=0;m<=l.length;++m){if(m2){var y=f.lastIndexOf("/");if(y!==f.length-1){y===-1?(f="",d=0):d=(f=f.slice(0,y)).length-1-f.lastIndexOf("/"),p=m,g=0;continue}}else if(f.length===2||f.length===1){f="",d=0,p=m,g=0;continue}}u&&(f.length>0?f+="/..":f="..",d=2)}else f.length>0?f+="/"+l.slice(p+1,m):f=l.slice(p+1,m),d=m-p-1;p=m,g=0}else h===46&&g!==-1?++g:g=-1}return f}var o={resolve:function(){for(var l,u="",h=!1,f=arguments.length-1;f>=-1&&!h;f--){var d;f>=0?d=arguments[f]:(l===void 0&&(l=process.cwd()),d=l),a(d),d.length!==0&&(u=d+"/"+u,h=d.charCodeAt(0)===47)}return u=s(u,!h),h?u.length>0?"/"+u:"/":u.length>0?u:"."},normalize:function(l){if(a(l),l.length===0)return".";var u=l.charCodeAt(0)===47,h=l.charCodeAt(l.length-1)===47;return(l=s(l,!u)).length!==0||u||(l="."),l.length>0&&h&&(l+="/"),u?"/"+l:l},isAbsolute:function(l){return a(l),l.length>0&&l.charCodeAt(0)===47},join:function(){if(arguments.length===0)return".";for(var l,u=0;u0&&(l===void 0?l=h:l+="/"+h)}return l===void 0?".":o.normalize(l)},relative:function(l,u){if(a(l),a(u),l===u||(l=o.resolve(l))===(u=o.resolve(u)))return"";for(var h=1;hm){if(u.charCodeAt(p+x)===47)return u.slice(p+x+1);if(x===0)return u.slice(p+x)}else d>m&&(l.charCodeAt(h+x)===47?y=x:x===0&&(y=0));break}var b=l.charCodeAt(h+x);if(b!==u.charCodeAt(p+x))break;b===47&&(y=x)}var w="";for(x=h+y+1;x<=f;++x)x!==f&&l.charCodeAt(x)!==47||(w.length===0?w+="..":w+="/..");return w.length>0?w+u.slice(p+y):(p+=y,u.charCodeAt(p)===47&&++p,u.slice(p))},_makeLong:function(l){return l},dirname:function(l){if(a(l),l.length===0)return".";for(var u=l.charCodeAt(0),h=u===47,f=-1,d=!0,p=l.length-1;p>=1;--p)if((u=l.charCodeAt(p))===47){if(!d){f=p;break}}else d=!1;return f===-1?h?"/":".":h&&f===1?"//":l.slice(0,f)},basename:function(l,u){if(u!==void 0&&typeof u!="string")throw new TypeError('"ext" argument must be a string');a(l);var h,f=0,d=-1,p=!0;if(u!==void 0&&u.length>0&&u.length<=l.length){if(u.length===l.length&&u===l)return"";var g=u.length-1,m=-1;for(h=l.length-1;h>=0;--h){var y=l.charCodeAt(h);if(y===47){if(!p){f=h+1;break}}else m===-1&&(p=!1,m=h+1),g>=0&&(y===u.charCodeAt(g)?--g==-1&&(d=h):(g=-1,d=m))}return f===d?d=m:d===-1&&(d=l.length),l.slice(f,d)}for(h=l.length-1;h>=0;--h)if(l.charCodeAt(h)===47){if(!p){f=h+1;break}}else d===-1&&(p=!1,d=h+1);return d===-1?"":l.slice(f,d)},extname:function(l){a(l);for(var u=-1,h=0,f=-1,d=!0,p=0,g=l.length-1;g>=0;--g){var m=l.charCodeAt(g);if(m!==47)f===-1&&(d=!1,f=g+1),m===46?u===-1?u=g:p!==1&&(p=1):u!==-1&&(p=-1);else if(!d){h=g+1;break}}return u===-1||f===-1||p===0||p===1&&u===f-1&&u===h+1?"":l.slice(u,f)},format:function(l){if(l===null||typeof l!="object")throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof l);return function(u,h){var f=h.dir||h.root,d=h.base||(h.name||"")+(h.ext||"");return f?f===h.root?f+d:f+"/"+d:d}(0,l)},parse:function(l){a(l);var u={root:"",dir:"",base:"",ext:"",name:""};if(l.length===0)return u;var h,f=l.charCodeAt(0),d=f===47;d?(u.root="/",h=1):h=0;for(var p=-1,g=0,m=-1,y=!0,x=l.length-1,b=0;x>=h;--x)if((f=l.charCodeAt(x))!==47)m===-1&&(y=!1,m=x+1),f===46?p===-1?p=x:b!==1&&(b=1):p!==-1&&(b=-1);else if(!y){g=x+1;break}return p===-1||m===-1||b===0||b===1&&p===m-1&&p===g+1?m!==-1&&(u.base=u.name=g===0&&d?l.slice(1,m):l.slice(g,m)):(g===0&&d?(u.name=l.slice(1,p),u.base=l.slice(1,m)):(u.name=l.slice(g,p),u.base=l.slice(g,m)),u.ext=l.slice(p,m)),g>0?u.dir=l.slice(0,g-1):d&&(u.dir="/"),u},sep:"/",delimiter:":",win32:null,posix:null};o.posix=o,i.exports=o}},e={};function r(i){var a=e[i];if(a!==void 0)return a.exports;var s=e[i]={exports:{}};return t[i](s,s.exports,r),s.exports}r.d=(i,a)=>{for(var s in a)r.o(a,s)&&!r.o(i,s)&&Object.defineProperty(i,s,{enumerable:!0,get:a[s]})},r.o=(i,a)=>Object.prototype.hasOwnProperty.call(i,a),r.r=i=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})};var n={};(()=>{let i;r.r(n),r.d(n,{URI:()=>d,Utils:()=>M}),typeof process=="object"?i=process.platform==="win32":typeof navigator=="object"&&(i=navigator.userAgent.indexOf("Windows")>=0);let a=/^\w[\w\d+.-]*$/,s=/^\//,o=/^\/\//;function l(R,T){if(!R.scheme&&T)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${R.authority}", path: "${R.path}", query: "${R.query}", fragment: "${R.fragment}"}`);if(R.scheme&&!a.test(R.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(R.path){if(R.authority){if(!s.test(R.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(o.test(R.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}}let u="",h="/",f=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class d{static isUri(T){return T instanceof d||!!T&&typeof T.authority=="string"&&typeof T.fragment=="string"&&typeof T.path=="string"&&typeof T.query=="string"&&typeof T.scheme=="string"&&typeof T.fsPath=="string"&&typeof T.with=="function"&&typeof T.toString=="function"}scheme;authority;path;query;fragment;constructor(T,I,A,D,N,O=!1){typeof T=="object"?(this.scheme=T.scheme||u,this.authority=T.authority||u,this.path=T.path||u,this.query=T.query||u,this.fragment=T.fragment||u):(this.scheme=function(B,P){return B||P?B:"file"}(T,O),this.authority=I||u,this.path=function(B,P){switch(B){case"https":case"http":case"file":P?P[0]!==h&&(P=h+P):P=h}return P}(this.scheme,A||u),this.query=D||u,this.fragment=N||u,l(this,O))}get fsPath(){return b(this,!1)}with(T){if(!T)return this;let{scheme:I,authority:A,path:D,query:N,fragment:O}=T;return I===void 0?I=this.scheme:I===null&&(I=u),A===void 0?A=this.authority:A===null&&(A=u),D===void 0?D=this.path:D===null&&(D=u),N===void 0?N=this.query:N===null&&(N=u),O===void 0?O=this.fragment:O===null&&(O=u),I===this.scheme&&A===this.authority&&D===this.path&&N===this.query&&O===this.fragment?this:new g(I,A,D,N,O)}static parse(T,I=!1){let A=f.exec(T);return A?new g(A[2]||u,E(A[4]||u),E(A[5]||u),E(A[7]||u),E(A[9]||u),I):new g(u,u,u,u,u)}static file(T){let I=u;if(i&&(T=T.replace(/\\/g,h)),T[0]===h&&T[1]===h){let A=T.indexOf(h,2);A===-1?(I=T.substring(2),T=h):(I=T.substring(2,A),T=T.substring(A)||h)}return new g("file",I,T,u,u)}static from(T){let I=new g(T.scheme,T.authority,T.path,T.query,T.fragment);return l(I,!0),I}toString(T=!1){return w(this,T)}toJSON(){return this}static revive(T){if(T){if(T instanceof d)return T;{let I=new g(T);return I._formatted=T.external,I._fsPath=T._sep===p?T.fsPath:null,I}}return T}}let p=i?1:void 0;class g extends d{_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=b(this,!1)),this._fsPath}toString(T=!1){return T?w(this,!0):(this._formatted||(this._formatted=w(this,!1)),this._formatted)}toJSON(){let T={$mid:1};return this._fsPath&&(T.fsPath=this._fsPath,T._sep=p),this._formatted&&(T.external=this._formatted),this.path&&(T.path=this.path),this.scheme&&(T.scheme=this.scheme),this.authority&&(T.authority=this.authority),this.query&&(T.query=this.query),this.fragment&&(T.fragment=this.fragment),T}}let m={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function y(R,T,I){let A,D=-1;for(let N=0;N=97&&O<=122||O>=65&&O<=90||O>=48&&O<=57||O===45||O===46||O===95||O===126||T&&O===47||I&&O===91||I&&O===93||I&&O===58)D!==-1&&(A+=encodeURIComponent(R.substring(D,N)),D=-1),A!==void 0&&(A+=R.charAt(N));else{A===void 0&&(A=R.substr(0,N));let B=m[O];B!==void 0?(D!==-1&&(A+=encodeURIComponent(R.substring(D,N)),D=-1),A+=B):D===-1&&(D=N)}}return D!==-1&&(A+=encodeURIComponent(R.substring(D))),A!==void 0?A:R}function x(R){let T;for(let I=0;I1&&R.scheme==="file"?`//${R.authority}${R.path}`:R.path.charCodeAt(0)===47&&(R.path.charCodeAt(1)>=65&&R.path.charCodeAt(1)<=90||R.path.charCodeAt(1)>=97&&R.path.charCodeAt(1)<=122)&&R.path.charCodeAt(2)===58?T?R.path.substr(1):R.path[1].toLowerCase()+R.path.substr(2):R.path,i&&(I=I.replace(/\//g,"\\")),I}function w(R,T){let I=T?x:y,A="",{scheme:D,authority:N,path:O,query:B,fragment:P}=R;if(D&&(A+=D,A+=":"),(N||D==="file")&&(A+=h,A+=h),N){let $=N.indexOf("@");if($!==-1){let z=N.substr(0,$);N=N.substr($+1),$=z.lastIndexOf(":"),$===-1?A+=I(z,!1,!1):(A+=I(z.substr(0,$),!1,!1),A+=":",A+=I(z.substr($+1),!1,!0)),A+="@"}N=N.toLowerCase(),$=N.lastIndexOf(":"),$===-1?A+=I(N,!1,!0):(A+=I(N.substr(0,$),!1,!0),A+=N.substr($))}if(O){if(O.length>=3&&O.charCodeAt(0)===47&&O.charCodeAt(2)===58){let $=O.charCodeAt(1);$>=65&&$<=90&&(O=`/${String.fromCharCode($+32)}:${O.substr(3)}`)}else if(O.length>=2&&O.charCodeAt(1)===58){let $=O.charCodeAt(0);$>=65&&$<=90&&(O=`${String.fromCharCode($+32)}:${O.substr(2)}`)}A+=I(O,!0,!1)}return B&&(A+="?",A+=I(B,!1,!1)),P&&(A+="#",A+=T?P:y(P,!1,!1)),A}function _(R){try{return decodeURIComponent(R)}catch{return R.length>3?R.substr(0,3)+_(R.substr(3)):R}}let k=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function E(R){return R.match(k)?R.replace(k,T=>_(T)):R}var L=r(470);let S=L.posix||L,C="/";var M;(function(R){R.joinPath=function(T,...I){return T.with({path:S.join(T.path,...I)})},R.resolvePath=function(T,...I){let A=T.path,D=!1;A[0]!==C&&(A=C+A,D=!0);let N=S.resolve(A,...I);return D&&N[0]===C&&!T.authority&&(N=N.substring(1)),T.with({path:N})},R.dirname=function(T){if(T.path.length===0||T.path===C)return T;let I=S.dirname(T.path);return I.length===1&&I.charCodeAt(0)===46&&(I=""),T.with({path:I})},R.basename=function(T){return S.basename(T.path)},R.extname=function(T){return S.extname(T.path)}})(M||(M={}))})(),Moe=n})();({URI:Is,Utils:pm}=Moe)});var is,Mc=F(()=>{RN();(function(t){t.basename=pm.basename,t.dirname=pm.dirname,t.extname=pm.extname,t.joinPath=pm.joinPath,t.resolvePath=pm.resolvePath;function e(n,i){return n?.toString()===i?.toString()}t.equals=e;function r(n,i){let a=typeof n=="string"?n:n.path,s=typeof i=="string"?i:i.path,o=a.split("/").filter(d=>d.length>0),l=s.split("/").filter(d=>d.length>0),u=0;for(;u{Ioe();gm();Wo();Ls();Mc();(function(t){t[t.Changed=0]="Changed",t[t.Parsed=1]="Parsed",t[t.IndexedContent=2]="IndexedContent",t[t.ComputedScopes=3]="ComputedScopes",t[t.Linked=4]="Linked",t[t.IndexedReferences=5]="IndexedReferences",t[t.Validated=6]="Validated"})(mn||(mn={}));g2=class{constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,r=mr.CancellationToken.None){let n=await this.fileSystemProvider.readFile(e);return this.createAsync(e,n,r)}fromTextDocument(e,r,n){return r=r??Is.parse(e.uri),n?this.createAsync(r,e,n):this.create(r,e)}fromString(e,r,n){return n?this.createAsync(r,e,n):this.create(r,e)}fromModel(e,r){return this.create(r,{$model:e})}create(e,r){if(typeof r=="string"){let n=this.parse(e,r);return this.createLangiumDocument(n,e,void 0,r)}else if("$model"in r){let n={value:r.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(n,e)}else{let n=this.parse(e,r.getText());return this.createLangiumDocument(n,e,r)}}async createAsync(e,r,n){if(typeof r=="string"){let i=await this.parseAsync(e,r,n);return this.createLangiumDocument(i,e,void 0,r)}else{let i=await this.parseAsync(e,r.getText(),n);return this.createLangiumDocument(i,e,r)}}createLangiumDocument(e,r,n,i){let a;if(n)a={parseResult:e,uri:r,state:mn.Parsed,references:[],textDocument:n};else{let s=this.createTextDocumentGetter(r,i);a={parseResult:e,uri:r,state:mn.Parsed,references:[],get textDocument(){return s()}}}return e.value.$document=a,a}async update(e,r){var n,i;let a=(n=e.parseResult.value.$cstNode)===null||n===void 0?void 0:n.root.fullText,s=(i=this.textDocuments)===null||i===void 0?void 0:i.get(e.uri.toString()),o=s?s.getText():await this.fileSystemProvider.readFile(e.uri);if(s)Object.defineProperty(e,"textDocument",{value:s});else{let l=this.createTextDocumentGetter(e.uri,o);Object.defineProperty(e,"textDocument",{get:l})}return a!==o&&(e.parseResult=await this.parseAsync(e.uri,o,r),e.parseResult.value.$document=e),e.state=mn.Parsed,e}parse(e,r){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(r)}parseAsync(e,r,n){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(r,n)}createTextDocumentGetter(e,r){let n=this.serviceRegistry,i;return()=>i??(i=dm.create(e.toString(),n.getServices(e).LanguageMetaData.languageId,0,r??""))}},m2=class{constructor(e){this.documentMap=new Map,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory}get all(){return Xr(this.documentMap.values())}addDocument(e){let r=e.uri.toString();if(this.documentMap.has(r))throw new Error(`A document with the URI '${r}' is already present.`);this.documentMap.set(r,e)}getDocument(e){let r=e.toString();return this.documentMap.get(r)}async getOrCreateDocument(e,r){let n=this.getDocument(e);return n||(n=await this.langiumDocumentFactory.fromUri(e,r),this.addDocument(n),n)}createDocument(e,r,n){if(n)return this.langiumDocumentFactory.fromString(r,e,n).then(i=>(this.addDocument(i),i));{let i=this.langiumDocumentFactory.fromString(r,e);return this.addDocument(i),i}}hasDocument(e){return this.documentMap.has(e.toString())}invalidateDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(n.state=mn.Changed,n.precomputedScopes=void 0,n.references=[],n.diagnostics=void 0),n}deleteDocument(e){let r=e.toString(),n=this.documentMap.get(r);return n&&(n.state=mn.Changed,this.documentMap.delete(r)),n}}});var v2,NN=F(()=>{Wo();$o();Qa();Ho();gm();v2=class{constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator}async link(e,r=mr.CancellationToken.None){for(let n of Vo(e.parseResult.value))await Ri(r),Dg(n).forEach(i=>this.doLink(i,e))}doLink(e,r){let n=e.reference;if(n._ref===void 0)try{let i=this.getCandidate(e);if(Bd(i))n._ref=i;else if(n._nodeDescription=i,this.langiumDocuments().hasDocument(i.documentUri)){let a=this.loadAstNode(i);n._ref=a??this.createLinkingError(e,i)}}catch(i){n._ref=Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${n.$refText}': ${i}`})}r.references.push(n)}unlink(e){for(let r of e.references)delete r._ref,delete r._nodeDescription;e.references=[]}getCandidate(e){let n=this.scopeProvider.getScope(e).getElement(e.reference.$refText);return n??this.createLinkingError(e)}buildReference(e,r,n,i){let a=this,s={$refNode:n,$refText:i,get ref(){var o;if(Xn(this._ref))return this._ref;if(R9(this._nodeDescription)){let l=a.loadAstNode(this._nodeDescription);this._ref=l??a.createLinkingError({reference:s,container:e,property:r},this._nodeDescription)}else if(this._ref===void 0){let l=a.getLinkedNode({reference:s,container:e,property:r});if(l.error&&_i(e).state{Al();y2=class{getName(e){if(Doe(e))return e.name}getNameNode(e){return Py(e.$cstNode,"name")}}});var x2,MN=F(()=>{Al();$o();Qa();El();Ls();Mc();x2=class{constructor(e){this.nameProvider=e.references.NameProvider,this.index=e.shared.workspace.IndexManager,this.nodeLocator=e.workspace.AstNodeLocator}findDeclaration(e){if(e){let r=tR(e),n=e.astNode;if(r&&n){let i=n[r.feature];if(pa(i))return i.ref;if(Array.isArray(i)){for(let a of i)if(pa(a)&&a.$refNode&&a.$refNode.offset<=e.offset&&a.$refNode.end>=e.end)return a.ref}}if(n){let i=this.nameProvider.getNameNode(n);if(i&&(i===e||I9(e,i)))return n}}}findDeclarationNode(e){let r=this.findDeclaration(e);if(r?.$cstNode){let n=this.nameProvider.getNameNode(r);return n??r.$cstNode}}findReferences(e,r){let n=[];if(r.includeDeclaration){let a=this.getReferenceToSelf(e);a&&n.push(a)}let i=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return r.documentUri&&(i=i.filter(a=>is.equals(a.sourceUri,r.documentUri))),n.push(...i),Xr(n)}getReferenceToSelf(e){let r=this.nameProvider.getNameNode(e);if(r){let n=_i(e),i=this.nodeLocator.getAstNodePath(e);return{sourceUri:n.uri,sourcePath:i,targetUri:n.uri,targetPath:i,segment:zd(r),local:!0}}}}});var Dc,c0,mm=F(()=>{Ls();Dc=class{constructor(e){if(this.map=new Map,e)for(let[r,n]of e)this.add(r,n)}get size(){return Ng.sum(Xr(this.map.values()).map(e=>e.length))}clear(){this.map.clear()}delete(e,r){if(r===void 0)return this.map.delete(e);{let n=this.map.get(e);if(n){let i=n.indexOf(r);if(i>=0)return n.length===1?this.map.delete(e):n.splice(i,1),!0}return!1}}get(e){var r;return(r=this.map.get(e))!==null&&r!==void 0?r:[]}has(e,r){if(r===void 0)return this.map.has(e);{let n=this.map.get(e);return n?n.indexOf(r)>=0:!1}}add(e,r){return this.map.has(e)?this.map.get(e).push(r):this.map.set(e,[r]),this}addAll(e,r){return this.map.has(e)?this.map.get(e).push(...r):this.map.set(e,Array.from(r)),this}forEach(e){this.map.forEach((r,n)=>r.forEach(i=>e(i,n,this)))}[Symbol.iterator](){return this.entries().iterator()}entries(){return Xr(this.map.entries()).flatMap(([e,r])=>r.map(n=>[e,n]))}keys(){return Xr(this.map.keys())}values(){return Xr(this.map.values()).flat()}entriesGroupedByKey(){return Xr(this.map.entries())}},c0=class{get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(let[r,n]of e)this.set(r,n)}clear(){this.map.clear(),this.inverse.clear()}set(e,r){return this.map.set(e,r),this.inverse.set(r,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){let r=this.map.get(e);return r!==void 0?(this.map.delete(e),this.inverse.delete(r),!0):!1}}});var b2,DN=F(()=>{Wo();Qa();mm();Ho();b2=class{constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async computeExports(e,r=mr.CancellationToken.None){return this.computeExportsForNode(e.parseResult.value,e,void 0,r)}async computeExportsForNode(e,r,n=Ry,i=mr.CancellationToken.None){let a=[];this.exportNode(e,a,r);for(let s of n(e))await Ri(i),this.exportNode(s,a,r);return a}exportNode(e,r,n){let i=this.nameProvider.getName(e);i&&r.push(this.descriptions.createDescription(e,i,n))}async computeLocalScopes(e,r=mr.CancellationToken.None){let n=e.parseResult.value,i=new Dc;for(let a of _c(n))await Ri(r),this.processNode(a,e,i);return i}processNode(e,r,n){let i=e.$container;if(i){let a=this.nameProvider.getName(e);a&&n.add(i,this.descriptions.createDescription(e,a,r))}}}});var vm,w2,AMe,ON=F(()=>{Ls();vm=class{constructor(e,r,n){var i;this.elements=e,this.outerScope=r,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){let r=this.caseInsensitive?this.elements.find(n=>n.name.toLowerCase()===e.toLowerCase()):this.elements.find(n=>n.name===e);if(r)return r;if(this.outerScope)return this.outerScope.getElement(e)}},w2=class{constructor(e,r,n){var i;this.elements=new Map,this.caseInsensitive=(i=n?.caseInsensitive)!==null&&i!==void 0?i:!1;for(let a of e){let s=this.caseInsensitive?a.name.toLowerCase():a.name;this.elements.set(s,a)}this.outerScope=r}getElement(e){let r=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(r);if(n)return n;if(this.outerScope)return this.outerScope.getElement(e)}getAllElements(){let e=Xr(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}},AMe={getElement(){},getAllElements(){return Ey}}});var ym,k2,u0,pT,xm,gT=F(()=>{ym=class{constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach(e=>e.dispose())}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}},k2=class extends ym{constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,r){this.throwIfDisposed(),this.cache.set(e,r)}get(e,r){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(r){let n=r();return this.cache.set(e,n),n}else return}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}},u0=class extends ym{constructor(e){super(),this.cache=new Map,this.converter=e??(r=>r)}has(e,r){return this.throwIfDisposed(),this.cacheForContext(e).has(r)}set(e,r,n){this.throwIfDisposed(),this.cacheForContext(e).set(r,n)}get(e,r,n){this.throwIfDisposed();let i=this.cacheForContext(e);if(i.has(r))return i.get(r);if(n){let a=n();return i.set(r,a),a}else return}delete(e,r){return this.throwIfDisposed(),this.cacheForContext(e).delete(r)}clear(e){if(this.throwIfDisposed(),e){let r=this.converter(e);this.cache.delete(r)}else this.cache.clear()}cacheForContext(e){let r=this.converter(e),n=this.cache.get(r);return n||(n=new Map,this.cache.set(r,n)),n}},pT=class extends u0{constructor(e){super(r=>r.toString()),this.onDispose(e.workspace.DocumentBuilder.onUpdate((r,n)=>{let i=r.concat(n);for(let a of i)this.clear(a)}))}},xm=class extends k2{constructor(e){super(),this.onDispose(e.workspace.DocumentBuilder.onUpdate(()=>{this.clear()}))}}});var T2,PN=F(()=>{ON();Qa();Ls();gT();T2=class{constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new xm(e.shared)}getScope(e){let r=[],n=this.reflection.getReferenceType(e),i=_i(e.container).precomputedScopes;if(i){let s=e.container;do{let o=i.get(s);o.length>0&&r.push(Xr(o).filter(l=>this.reflection.isSubtype(l.type,n))),s=s.$container}while(s)}let a=this.getGlobalScope(n,e);for(let s=r.length-1;s>=0;s--)a=this.createScope(r[s],a);return a}createScope(e,r,n){return new vm(Xr(e),r,n)}createScopeForNodes(e,r,n){let i=Xr(e).map(a=>{let s=this.nameProvider.getName(a);if(s)return this.descriptions.createDescription(a,s)}).nonNullable();return new vm(i,r,n)}getGlobalScope(e,r){return this.globalScopeCache.get(e,()=>new w2(this.indexManager.allElements(e)))}}});function BN(t){return typeof t.$comment=="string"}function Ooe(t){return typeof t=="object"&&!!t&&("$ref"in t||"$error"in t)}var E2,mT=F(()=>{RN();$o();Qa();Al();E2=class{constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,r={}){let n=r?.replacer,i=(s,o)=>this.replacer(s,o,r),a=n?(s,o)=>n(s,o,i):i;try{return this.currentDocument=_i(e),JSON.stringify(e,a,r?.space)}finally{this.currentDocument=void 0}}deserialize(e,r={}){let n=JSON.parse(e);return this.linkNode(n,n,r),n}replacer(e,r,{refText:n,sourceText:i,textRegions:a,comments:s,uriConverter:o}){var l,u,h,f;if(!this.ignoreProperties.has(e))if(pa(r)){let d=r.ref,p=n?r.$refText:void 0;if(d){let g=_i(d),m="";this.currentDocument&&this.currentDocument!==g&&(o?m=o(g.uri,r):m=g.uri.toString());let y=this.astNodeLocator.getAstNodePath(d);return{$ref:`${m}#${y}`,$refText:p}}else return{$error:(u=(l=r.error)===null||l===void 0?void 0:l.message)!==null&&u!==void 0?u:"Could not resolve reference",$refText:p}}else if(Xn(r)){let d;if(a&&(d=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},r)),(!e||r.$document)&&d?.$textRegion&&(d.$textRegion.documentURI=(h=this.currentDocument)===null||h===void 0?void 0:h.uri.toString())),i&&!e&&(d??(d=Object.assign({},r)),d.$sourceText=(f=r.$cstNode)===null||f===void 0?void 0:f.text),s){d??(d=Object.assign({},r));let p=this.commentProvider.getComment(r);p&&(d.$comment=p.replace(/\r/g,""))}return d??r}else return r}addAstNodeRegionWithAssignmentsTo(e){let r=n=>({offset:n.offset,end:n.end,length:n.length,range:n.range});if(e.$cstNode){let n=e.$textRegion=r(e.$cstNode),i=n.assignments={};return Object.keys(e).filter(a=>!a.startsWith("$")).forEach(a=>{let s=ZL(e.$cstNode,a).map(r);s.length!==0&&(i[a]=s)}),e}}linkNode(e,r,n,i,a,s){for(let[l,u]of Object.entries(e))if(Array.isArray(u))for(let h=0;h{Mc();S2=class{register(e){if(!this.singleton&&!this.map){this.singleton=e;return}if(!this.map&&(this.map={},this.singleton)){for(let r of this.singleton.LanguageMetaData.fileExtensions)this.map[r]=this.singleton;this.singleton=void 0}for(let r of e.LanguageMetaData.fileExtensions)this.map[r]!==void 0&&this.map[r]!==e&&console.warn(`The file extension ${r} is used by multiple languages. It is now assigned to '${e.LanguageMetaData.languageId}'.`),this.map[r]=e}getServices(e){if(this.singleton!==void 0)return this.singleton;if(this.map===void 0)throw new Error("The service registry is empty. Use `register` to register the services of a language.");let r=is.extname(e),n=this.map[r];if(!n)throw new Error(`The service registry contains no services for the extension '${r}'.`);return n}get all(){return this.singleton!==void 0?[this.singleton]:this.map!==void 0?Object.values(this.map):[]}}});function vT(t){return{code:t}}var bm,C2,A2=F(()=>{mm();Ho();Ls();(function(t){t.all=["fast","slow","built-in"]})(bm||(bm={}));C2=class{constructor(e){this.entries=new Dc,this.reflection=e.shared.AstReflection}register(e,r=this,n="fast"){if(n==="built-in")throw new Error("The 'built-in' category is reserved for lexer, parser, and linker errors.");for(let[i,a]of Object.entries(e)){let s=a;if(Array.isArray(s))for(let o of s){let l={check:this.wrapValidationException(o,r),category:n};this.addEntry(i,l)}else if(typeof s=="function"){let o={check:this.wrapValidationException(s,r),category:n};this.addEntry(i,o)}}}wrapValidationException(e,r){return async(n,i,a)=>{try{await e.call(r,n,i,a)}catch(s){if(af(s))throw s;console.error("An error occurred during validation:",s);let o=s instanceof Error?s.message:String(s);s instanceof Error&&s.stack&&console.error(s.stack),i("error","An error occurred during validation: "+o,{node:n})}}}addEntry(e,r){if(e==="AstNode"){this.entries.add("AstNode",r);return}for(let n of this.reflection.getAllSubTypes(e))this.entries.add(n,r)}getChecks(e,r){let n=Xr(this.entries.get(e)).concat(this.entries.get("AstNode"));return r&&(n=n.filter(i=>r.includes(i.category))),n.map(i=>i.check)}}});function Poe(t){if(t.range)return t.range;let e;return typeof t.property=="string"?e=Py(t.node.$cstNode,t.property,t.index):typeof t.keyword=="string"&&(e=JL(t.node.$cstNode,t.keyword,t.index)),e??(e=t.node.$cstNode),e?e.range:{start:{line:0,character:0},end:{line:0,character:0}}}function yT(t){switch(t){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+t)}}var _2,Yu,zN=F(()=>{Wo();Al();Qa();El();Ho();A2();_2=class{constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData}async validateDocument(e,r={},n=mr.CancellationToken.None){let i=e.parseResult,a=[];if(await Ri(n),(!r.categories||r.categories.includes("built-in"))&&(this.processLexingErrors(i,a,r),r.stopAfterLexingErrors&&a.some(s=>{var o;return((o=s.data)===null||o===void 0?void 0:o.code)===Yu.LexingError})||(this.processParsingErrors(i,a,r),r.stopAfterParsingErrors&&a.some(s=>{var o;return((o=s.data)===null||o===void 0?void 0:o.code)===Yu.ParsingError}))||(this.processLinkingErrors(e,a,r),r.stopAfterLinkingErrors&&a.some(s=>{var o;return((o=s.data)===null||o===void 0?void 0:o.code)===Yu.LinkingError}))))return a;try{a.push(...await this.validateAst(i.value,r,n))}catch(s){if(af(s))throw s;console.error("An error occurred during validation:",s)}return await Ri(n),a}processLexingErrors(e,r,n){for(let i of e.lexerErrors){let a={severity:yT("error"),range:{start:{line:i.line-1,character:i.column-1},end:{line:i.line-1,character:i.column+i.length-1}},message:i.message,data:vT(Yu.LexingError),source:this.getSource()};r.push(a)}}processParsingErrors(e,r,n){for(let i of e.parserErrors){let a;if(isNaN(i.token.startOffset)){if("previousToken"in i){let s=i.previousToken;if(isNaN(s.startOffset)){let o={line:0,character:0};a={start:o,end:o}}else{let o={line:s.endLine-1,character:s.endColumn};a={start:o,end:o}}}}else a=Ig(i.token);if(a){let s={severity:yT("error"),range:a,message:i.message,data:vT(Yu.ParsingError),source:this.getSource()};r.push(s)}}}processLinkingErrors(e,r,n){for(let i of e.references){let a=i.error;if(a){let s={node:a.container,property:a.property,index:a.index,data:{code:Yu.LinkingError,containerType:a.container.$type,property:a.property,refText:a.reference.$refText}};r.push(this.toDiagnostic("error",a.message,s))}}}async validateAst(e,r,n=mr.CancellationToken.None){let i=[],a=(s,o,l)=>{i.push(this.toDiagnostic(s,o,l))};return await Promise.all(Vo(e).map(async s=>{await Ri(n);let o=this.validationRegistry.getChecks(s.$type,r.categories);for(let l of o)await l(s,a,n)})),i}toDiagnostic(e,r,n){return{message:r,range:Poe(n),severity:yT(e),code:n.code,codeDescription:n.codeDescription,tags:n.tags,relatedInformation:n.relatedInformation,data:n.data,source:this.getSource()}}getSource(){return this.metadata.languageId}};(function(t){t.LexingError="lexing-error",t.ParsingError="parsing-error",t.LinkingError="linking-error"})(Yu||(Yu={}))});var L2,R2,$N=F(()=>{Wo();$o();Qa();El();Ho();Mc();L2=class{constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,r,n=_i(e)){r??(r=this.nameProvider.getName(e));let i=this.astNodeLocator.getAstNodePath(e);if(!r)throw new Error(`Node at path ${i} has no name.`);let a,s=()=>{var o;return a??(a=zd((o=this.nameProvider.getNameNode(e))!==null&&o!==void 0?o:e.$cstNode))};return{node:e,name:r,get nameSegment(){return s()},selectionSegment:zd(e.$cstNode),type:e.$type,documentUri:n.uri,path:i}}},R2=class{constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,r=mr.CancellationToken.None){let n=[],i=e.parseResult.value;for(let a of Vo(i))await Ri(r),Dg(a).filter(s=>!Bd(s)).forEach(s=>{let o=this.createDescription(s);o&&n.push(o)});return n}createDescription(e){let r=e.reference.$nodeDescription,n=e.reference.$refNode;if(!r||!n)return;let i=_i(e.container).uri;return{sourceUri:i,sourcePath:this.nodeLocator.getAstNodePath(e.container),targetUri:r.documentUri,targetPath:r.path,segment:zd(n),local:is.equals(r.documentUri,i)}}}});var N2,GN=F(()=>{N2=class{constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){let r=this.getAstNodePath(e.$container),n=this.getPathSegment(e);return r+this.segmentSeparator+n}return""}getPathSegment({$containerProperty:e,$containerIndex:r}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return r!==void 0?e+this.indexSeparator+r:e}getAstNode(e,r){return r.split(this.segmentSeparator).reduce((i,a)=>{if(!i||a.length===0)return i;let s=a.indexOf(this.indexSeparator);if(s>0){let o=a.substring(0,s),l=parseInt(a.substring(s+1)),u=i[o];return u?.[l]}return i[a]},e)}}});var I2,UN=F(()=>{Ho();I2=class{constructor(e){this._ready=new ns,this.settings={},this.workspaceConfig=!1,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){var r,n;this.workspaceConfig=(n=(r=e.capabilities.workspace)===null||r===void 0?void 0:r.configuration)!==null&&n!==void 0?n:!1}async initialized(e){if(this.workspaceConfig){if(e.register){let r=this.serviceRegistry.all;e.register({section:r.map(n=>this.toSectionName(n.LanguageMetaData.languageId))})}if(e.fetchConfiguration){let r=this.serviceRegistry.all.map(i=>({section:this.toSectionName(i.LanguageMetaData.languageId)})),n=await e.fetchConfiguration(r);r.forEach((i,a)=>{this.updateSectionConfiguration(i.section,n[a])})}}this._ready.resolve()}updateConfiguration(e){e.settings&&Object.keys(e.settings).forEach(r=>{this.updateSectionConfiguration(r,e.settings[r])})}updateSectionConfiguration(e,r){this.settings[e]=r}async getConfiguration(e,r){await this.ready;let n=this.toSectionName(e);if(this.settings[n])return this.settings[n][r]}toSectionName(e){return`${e}`}}});var h0,VN=F(()=>{(function(t){function e(r){return{dispose:async()=>await r()}}t.create=e})(h0||(h0={}))});var M2,WN=F(()=>{Wo();VN();mm();Ho();Ls();A2();gm();M2=class{constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new Dc,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=mn.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.indexManager=e.workspace.IndexManager,this.serviceRegistry=e.ServiceRegistry}async build(e,r={},n=mr.CancellationToken.None){var i,a;for(let s of e){let o=s.uri.toString();if(s.state===mn.Validated){if(typeof r.validation=="boolean"&&r.validation)s.state=mn.IndexedReferences,s.diagnostics=void 0,this.buildState.delete(o);else if(typeof r.validation=="object"){let l=this.buildState.get(o),u=(i=l?.result)===null||i===void 0?void 0:i.validationChecks;if(u){let f=((a=r.validation.categories)!==null&&a!==void 0?a:bm.all).filter(d=>!u.includes(d));f.length>0&&(this.buildState.set(o,{completed:!1,options:{validation:Object.assign(Object.assign({},r.validation),{categories:f})},result:l.result}),s.state=mn.IndexedReferences)}}}else this.buildState.delete(o)}this.currentState=mn.Changed,await this.emitUpdate(e.map(s=>s.uri),[]),await this.buildDocuments(e,r,n)}async update(e,r,n=mr.CancellationToken.None){this.currentState=mn.Changed;for(let s of r)this.langiumDocuments.deleteDocument(s),this.buildState.delete(s.toString()),this.indexManager.remove(s);for(let s of e){if(!this.langiumDocuments.invalidateDocument(s)){let l=this.langiumDocumentFactory.fromModel({$type:"INVALID"},s);l.state=mn.Changed,this.langiumDocuments.addDocument(l)}this.buildState.delete(s.toString())}let i=Xr(e).concat(r).map(s=>s.toString()).toSet();this.langiumDocuments.all.filter(s=>!i.has(s.uri.toString())&&this.shouldRelink(s,i)).forEach(s=>{this.serviceRegistry.getServices(s.uri).references.Linker.unlink(s),s.state=Math.min(s.state,mn.ComputedScopes),s.diagnostics=void 0}),await this.emitUpdate(e,r),await Ri(n);let a=this.langiumDocuments.all.filter(s=>{var o;return s.staten(e,r)))}shouldRelink(e,r){return e.references.some(n=>n.error!==void 0)?!0:this.indexManager.isAffected(e,r)}onUpdate(e){return this.updateListeners.push(e),h0.create(()=>{let r=this.updateListeners.indexOf(e);r>=0&&this.updateListeners.splice(r,1)})}async buildDocuments(e,r,n){this.prepareBuild(e,r),await this.runCancelable(e,mn.Parsed,n,a=>this.langiumDocumentFactory.update(a,n)),await this.runCancelable(e,mn.IndexedContent,n,a=>this.indexManager.updateContent(a,n)),await this.runCancelable(e,mn.ComputedScopes,n,async a=>{let s=this.serviceRegistry.getServices(a.uri).references.ScopeComputation;a.precomputedScopes=await s.computeLocalScopes(a,n)}),await this.runCancelable(e,mn.Linked,n,a=>this.serviceRegistry.getServices(a.uri).references.Linker.link(a,n)),await this.runCancelable(e,mn.IndexedReferences,n,a=>this.indexManager.updateReferences(a,n));let i=e.filter(a=>this.shouldValidate(a));await this.runCancelable(i,mn.Validated,n,a=>this.validate(a,n));for(let a of e){let s=this.buildState.get(a.uri.toString());s&&(s.completed=!0)}}prepareBuild(e,r){for(let n of e){let i=n.uri.toString(),a=this.buildState.get(i);(!a||a.completed)&&this.buildState.set(i,{completed:!1,options:r,result:a?.result})}}async runCancelable(e,r,n,i){let a=e.filter(s=>s.state{this.buildPhaseListeners.delete(e,r)})}waitUntil(e,r,n){let i;if(r&&"path"in r?i=r:n=r,n??(n=mr.CancellationToken.None),i){let a=this.langiumDocuments.getDocument(i);if(a&&a.state>e)return Promise.resolve(i)}return this.currentState>=e?Promise.resolve(void 0):n.isCancellationRequested?Promise.reject(Ic):new Promise((a,s)=>{let o=this.onBuildPhase(e,()=>{if(o.dispose(),l.dispose(),i){let u=this.langiumDocuments.getDocument(i);a(u?.uri)}else a(void 0)}),l=n.onCancellationRequested(()=>{o.dispose(),l.dispose(),s(Ic)})})}async notifyBuildPhase(e,r,n){if(e.length===0)return;let i=this.buildPhaseListeners.get(r);for(let a of i)await Ri(n),await a(e,n)}shouldValidate(e){return!!this.getBuildOptions(e).validation}async validate(e,r){var n,i;let a=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,s=this.getBuildOptions(e).validation,o=typeof s=="object"?s:void 0,l=await a.validateDocument(e,o,r);e.diagnostics?e.diagnostics.push(...l):e.diagnostics=l;let u=this.buildState.get(e.uri.toString());if(u){(n=u.result)!==null&&n!==void 0||(u.result={});let h=(i=o?.categories)!==null&&i!==void 0?i:bm.all;u.result.validationChecks?u.result.validationChecks.push(...h):u.result.validationChecks=[...h]}}getBuildOptions(e){var r,n;return(n=(r=this.buildState.get(e.uri.toString()))===null||r===void 0?void 0:r.options)!==null&&n!==void 0?n:{}}}});var D2,HN=F(()=>{Qa();gT();Wo();Ls();Mc();D2=class{constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new u0,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,r){let n=_i(e).uri,i=[];return this.referenceIndex.forEach(a=>{a.forEach(s=>{is.equals(s.targetUri,n)&&s.targetPath===r&&i.push(s)})}),Xr(i)}allElements(e,r){let n=Xr(this.symbolIndex.keys());return r&&(n=n.filter(i=>!r||r.has(i))),n.map(i=>this.getFileDescriptions(i,e)).flat()}getFileDescriptions(e,r){var n;return r?this.symbolByTypeIndex.get(e,r,()=>{var a;return((a=this.symbolIndex.get(e))!==null&&a!==void 0?a:[]).filter(o=>this.astReflection.isSubtype(o.type,r))}):(n=this.symbolIndex.get(e))!==null&&n!==void 0?n:[]}remove(e){let r=e.toString();this.symbolIndex.delete(r),this.symbolByTypeIndex.clear(r),this.referenceIndex.delete(r)}async updateContent(e,r=mr.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).references.ScopeComputation.computeExports(e,r),a=e.uri.toString();this.symbolIndex.set(a,i),this.symbolByTypeIndex.clear(a)}async updateReferences(e,r=mr.CancellationToken.None){let i=await this.serviceRegistry.getServices(e.uri).workspace.ReferenceDescriptionProvider.createDescriptions(e,r);this.referenceIndex.set(e.uri.toString(),i)}isAffected(e,r){let n=this.referenceIndex.get(e.uri.toString());return n?n.some(i=>!i.local&&r.has(i.targetUri.toString())):!1}}});var O2,qN=F(()=>{Wo();Ho();Mc();O2=class{constructor(e){this.initialBuildOptions={},this._ready=new ns,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}initialize(e){var r;this.folders=(r=e.workspaceFolders)!==null&&r!==void 0?r:void 0}initialized(e){return this.mutex.write(r=>{var n;return this.initializeWorkspace((n=this.folders)!==null&&n!==void 0?n:[],r)})}async initializeWorkspace(e,r=mr.CancellationToken.None){let n=await this.performStartup(e);await Ri(r),await this.documentBuilder.build(n,this.initialBuildOptions,r)}async performStartup(e){let r=this.serviceRegistry.all.flatMap(a=>a.LanguageMetaData.fileExtensions),n=[],i=a=>{n.push(a),this.langiumDocuments.hasDocument(a.uri)||this.langiumDocuments.addDocument(a)};return await this.loadAdditionalDocuments(e,i),await Promise.all(e.map(a=>[a,this.getRootFolder(a)]).map(async a=>this.traverseFolder(...a,r,i))),this._ready.resolve(),n}loadAdditionalDocuments(e,r){return Promise.resolve()}getRootFolder(e){return Is.parse(e.uri)}async traverseFolder(e,r,n,i){let a=await this.fileSystemProvider.readDirectory(r);await Promise.all(a.map(async s=>{if(this.includeEntry(e,s,n)){if(s.isDirectory)await this.traverseFolder(e,s.uri,n,i);else if(s.isFile){let o=await this.langiumDocuments.getOrCreateDocument(s.uri);i(o)}}}))}includeEntry(e,r,n){let i=is.basename(r.uri);if(i.startsWith("."))return!1;if(r.isDirectory)return i!=="node_modules"&&i!=="out";if(r.isFile){let a=is.extname(r.uri);return n.includes(a)}return!1}}});function Boe(t){return Array.isArray(t)&&(t.length===0||"name"in t[0])}function XN(t){return t&&"modes"in t&&"defaultMode"in t}function YN(t){return!Boe(t)&&!XN(t)}var P2,jN=F(()=>{t0();P2=class{constructor(e){let r=e.parser.TokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(r);let n=YN(r)?Object.values(r):r;this.chevrotainLexer=new ei(n,{positionTracking:"full"})}get definition(){return this.tokenTypes}tokenize(e){var r;let n=this.chevrotainLexer.tokenize(e);return{tokens:n.tokens,errors:n.errors,hidden:(r=n.groups.hidden)!==null&&r!==void 0?r:[]}}toTokenTypeDictionary(e){if(YN(e))return e;let r=XN(e)?Object.values(e.modes).flat():e,n={};return r.forEach(i=>n[i.name]=i),n}}});function QN(t,e,r){let n,i;typeof t=="string"?(i=e,n=r):(i=t.range.start,n=e),i||(i=$r.create(0,0));let a=$oe(t),s=eI(n),o=LMe({lines:a,position:i,options:s});return DMe({index:0,tokens:o,position:i})}function JN(t,e){let r=eI(e),n=$oe(t);if(n.length===0)return!1;let i=n[0],a=n[n.length-1],s=r.start,o=r.end;return!!s?.exec(i)&&!!o?.exec(a)}function $oe(t){let e="";return typeof t=="string"?e=t:e=t.text,e.split(VL)}function LMe(t){var e,r,n;let i=[],a=t.position.line,s=t.position.character;for(let o=0;o=h.length){if(i.length>0){let p=$r.create(a,s);i.push({type:"break",content:"",range:wr.create(p,p)})}}else{Foe.lastIndex=f;let p=Foe.exec(h);if(p){let g=p[0],m=p[1],y=$r.create(a,s+f),x=$r.create(a,s+f+g.length);i.push({type:"tag",content:m,range:wr.create(y,x)}),f+=g.length,f=ZN(h,f)}if(f0&&i[i.length-1].type==="break"?i.slice(0,-1):i}function RMe(t,e,r,n){let i=[];if(t.length===0){let a=$r.create(r,n),s=$r.create(r,n+e.length);i.push({type:"text",content:e,range:wr.create(a,s)})}else{let a=0;for(let o of t){let l=o.index,u=e.substring(a,l);u.length>0&&i.push({type:"text",content:e.substring(a,l),range:wr.create($r.create(r,a+n),$r.create(r,l+n))});let h=u.length+1,f=o[1];if(i.push({type:"inline-tag",content:f,range:wr.create($r.create(r,a+h+n),$r.create(r,a+h+f.length+n))}),h+=f.length,o.length===4){h+=o[2].length;let d=o[3];i.push({type:"text",content:d,range:wr.create($r.create(r,a+h+n),$r.create(r,a+h+d.length+n))})}else i.push({type:"text",content:"",range:wr.create($r.create(r,a+h+n),$r.create(r,a+h+n))});a=l+o[0].length}let s=e.substring(a);s.length>0&&i.push({type:"text",content:s,range:wr.create($r.create(r,a+n),$r.create(r,a+n+s.length))})}return i}function ZN(t,e){let r=t.substring(e).match(NMe);return r?e+r.index:t.length}function MMe(t){let e=t.match(IMe);if(e&&typeof e.index=="number")return e.index}function DMe(t){var e,r,n,i;let a=$r.create(t.position.line,t.position.character);if(t.tokens.length===0)return new xT([],wr.create(a,a));let s=[];for(;t.index0){let l=ZN(e,a);s=e.substring(l),e=e.substring(0,a)}return(t==="linkcode"||t==="link"&&r.link==="code")&&(s=`\`${s}\``),(i=(n=r.renderLink)===null||n===void 0?void 0:n.call(r,e,s))!==null&&i!==void 0?i:zMe(e,s)}}function zMe(t,e){try{return Is.parse(t,!0),`[${e}](${t})`}catch{return t}}function zoe(t){return t.endsWith(` `)?` `:` `}var Foe,_Me,NMe,IMe,xT,B2,F2,bT,tI=F(()=>{oN();Pg();Mc();Foe=/\s*(@([\p{L}][\p{L}\p{N}]*)?)/uy,_Me=/\{(@[\p{L}][\p{L}\p{N}]*)(\s*)([^\r\n}]+)?\}/gu;NMe=/\S/,IMe=/\s*$/;xT=class{constructor(e,r){this.elements=e,this.range=r}getTag(e){return this.getAllTags().find(r=>r.name===e)}getTags(e){return this.getAllTags().filter(r=>r.name===e)}getAllTags(){return this.elements.filter(e=>"name"in e)}toString(){let e="";for(let r of this.elements)if(e.length===0)e=r.toString();else{let n=r.toString();e+=zoe(e)+n}return e.trim()}toMarkdown(e){let r="";for(let n of this.elements)if(r.length===0)r=n.toMarkdown(e);else{let i=n.toMarkdown(e);r+=zoe(r)+i}return r.trim()}},B2=class{constructor(e,r,n,i){this.name=e,this.content=r,this.inline=n,this.range=i}toString(){let e=`@${this.name}`,r=this.content.toString();return this.content.inlines.length===1?e=`${e} ${r}`:this.content.inlines.length>1&&(e=`${e} ${r}`),this.inline?`{${e}}`:e}toMarkdown(e){var r,n;return(n=(r=e?.renderTag)===null||r===void 0?void 0:r.call(e,this))!==null&&n!==void 0?n:this.toMarkdownDefault(e)}toMarkdownDefault(e){let r=this.content.toMarkdown(e);if(this.inline){let a=FMe(this.name,r,e??{});if(typeof a=="string")return a}let n="";e?.tag==="italic"||e?.tag===void 0?n="*":e?.tag==="bold"?n="**":e?.tag==="bold-italic"&&(n="***");let i=`${n}@${this.name}${n}`;return this.content.inlines.length===1?i=`${i} \u2014 ${r}`:this.content.inlines.length>1&&(i=`${i} ${r}`),this.inline?`{${i}}`:i}};F2=class{constructor(e,r){this.inlines=e,this.range=r}toString(){let e="";for(let r=0;rn.range.start.line&&(e+=` `)}return e}toMarkdown(e){let r="";for(let n=0;ni.range.start.line&&(r+=` `)}return r}},bT=class{constructor(e,r){this.text=e,this.range=r}toString(){return this.text}toMarkdown(){return this.text}}});var z2,rI=F(()=>{Qa();tI();z2=class{constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let r=this.commentProvider.getComment(e);if(r&&JN(r))return QN(r).toMarkdown({renderLink:(i,a)=>this.documentationLinkRenderer(e,i,a),renderTag:i=>this.documentationTagRenderer(e,i)})}documentationLinkRenderer(e,r,n){var i;let a=(i=this.findNameInPrecomputedScopes(e,r))!==null&&i!==void 0?i:this.findNameInGlobalScope(e,r);if(a&&a.nameSegment){let s=a.nameSegment.range.start.line+1,o=a.nameSegment.range.start.character+1,l=a.documentUri.with({fragment:`L${s},${o}`});return`[${n}](${l.toString()})`}else return}documentationTagRenderer(e,r){}findNameInPrecomputedScopes(e,r){let i=_i(e).precomputedScopes;if(!i)return;let a=e;do{let o=i.get(a).find(l=>l.name===r);if(o)return o;a=a.$container}while(a)}findNameInGlobalScope(e,r){return this.indexManager.allElements().find(i=>i.name===r)}}});var $2,nI=F(()=>{mT();El();$2=class{constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var r;return BN(e)?e.$comment:(r=D9(e.$cstNode,this.grammarConfig().multilineCommentRules))===null||r===void 0?void 0:r.text}}});var ti={};var iI=F(()=>{gr(ti,Gi(EN(),1))});var G2,aI,sI,oI=F(()=>{Ho();iI();G2=class{constructor(e){this.syncParser=e.parser.LangiumParser}parse(e){return Promise.resolve(this.syncParser.parse(e))}},aI=class{constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length{if(this.queue.length>0){let r=this.queue.shift();r&&(e.lock(),r.resolve(e))}}),this.workerPool.push(e)}}async parse(e,r){let n=await this.acquireParserWorker(r),i=new ns,a,s=r.onCancellationRequested(()=>{a=setTimeout(()=>{this.terminateWorker(n)},this.terminationDelay)});return n.parse(e).then(o=>{let l=this.hydrator.hydrate(o);i.resolve(l)}).catch(o=>{i.reject(o)}).finally(()=>{s.dispose(),clearTimeout(a)}),i.promise}terminateWorker(e){e.terminate();let r=this.workerPool.indexOf(e);r>=0&&this.workerPool.splice(r,1)}async acquireParserWorker(e){this.initializeWorkers();for(let n of this.workerPool)if(n.ready)return n.lock(),n;let r=new ns;return e.onCancellationRequested(()=>{let n=this.queue.indexOf(r);n>=0&&this.queue.splice(n,1),r.reject(Ic)}),this.queue.push(r),r.promise}},sI=class{get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,r,n,i){this.onReadyEmitter=new ti.Emitter,this.deferred=new ns,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=i,r(a=>{let s=a;this.deferred.resolve(s),this.unlock()}),n(a=>{this.deferred.reject(a),this.unlock()})}terminate(){this.deferred.reject(Ic),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new ns,this.sendMessage(e),this.deferred.promise}}});var U2,lI=F(()=>{Wo();Ho();U2=class{constructor(){this.previousTokenSource=new mr.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let r=new mr.CancellationTokenSource;return this.previousTokenSource=r,this.enqueue(this.writeQueue,e,r.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,r,n){let i=new ns,a={action:r,deferred:i,cancellationToken:n??mr.CancellationToken.None};return e.push(a),this.performNextOperation(),i.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:r,deferred:n,cancellationToken:i})=>{try{let a=await Promise.resolve().then(()=>r(i));n.resolve(a)}catch(a){af(a)?n.resolve(void 0):n.reject(a)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}}});var V2,cI=F(()=>{aT();Ac();$o();Qa();mm();El();V2=class{constructor(e){this.grammarElementIdMap=new c0,this.tokenTypeIdMap=new c0,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors.map(r=>Object.assign({},r)),parserErrors:e.parserErrors.map(r=>Object.assign({},r)),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}createDehyrationContext(e){let r=new Map,n=new Map;for(let i of Vo(e))r.set(i,{});if(e.$cstNode)for(let i of Fd(e.$cstNode))n.set(i,{});return{astNodes:r,cstNodes:n}}dehydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(n.$cstNode=this.dehydrateCstNode(e.$cstNode,r));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let s=[];n[i]=s;for(let o of a)Xn(o)?s.push(this.dehydrateAstNode(o,r)):pa(o)?s.push(this.dehydrateReference(o,r)):s.push(o)}else Xn(a)?n[i]=this.dehydrateAstNode(a,r):pa(a)?n[i]=this.dehydrateReference(a,r):a!==void 0&&(n[i]=a);return n}dehydrateReference(e,r){let n={};return n.$refText=e.$refText,e.$refNode&&(n.$refNode=r.cstNodes.get(e.$refNode)),n}dehydrateCstNode(e,r){let n=r.cstNodes.get(e);return Ty(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=r.astNodes.get(e.astNode),eo(e)?n.content=e.content.map(i=>this.dehydrateCstNode(i,r)):Qh(e)&&(n.tokenType=e.tokenType.name,n.offset=e.offset,n.length=e.length,n.startLine=e.range.start.line,n.startColumn=e.range.start.character,n.endLine=e.range.end.line,n.endColumn=e.range.end.character),n}hydrate(e){let r=e.value,n=this.createHydrationContext(r);return"$cstNode"in r&&this.hydrateCstNode(r.$cstNode,n),{lexerErrors:e.lexerErrors,parserErrors:e.parserErrors,value:this.hydrateAstNode(r,n)}}createHydrationContext(e){let r=new Map,n=new Map;for(let a of Vo(e))r.set(a,{});let i;if(e.$cstNode)for(let a of Fd(e.$cstNode)){let s;"fullText"in a?(s=new cm(a.fullText),i=s):"content"in a?s=new a0:"tokenType"in a&&(s=this.hydrateCstLeafNode(a)),s&&(n.set(a,s),s.root=i)}return{astNodes:r,cstNodes:n}}hydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode&&(n.$cstNode=r.cstNodes.get(e.$cstNode));for(let[i,a]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(a)){let s=[];n[i]=s;for(let o of a)Xn(o)?s.push(this.setParent(this.hydrateAstNode(o,r),n)):pa(o)?s.push(this.hydrateReference(o,n,i,r)):s.push(o)}else Xn(a)?n[i]=this.setParent(this.hydrateAstNode(a,r),n):pa(a)?n[i]=this.hydrateReference(a,n,i,r):a!==void 0&&(n[i]=a);return n}setParent(e,r){return e.$container=r,e}hydrateReference(e,r,n,i){return this.linker.buildReference(r,n,i.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,r,n=0){let i=r.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(i.grammarSource=this.getGrammarElement(e.grammarSource)),i.astNode=r.astNodes.get(e.astNode),eo(i))for(let a of e.content){let s=this.hydrateCstNode(a,r,n++);i.content.push(s)}return i}hydrateCstLeafNode(e){let r=this.getTokenType(e.tokenType),n=e.offset,i=e.length,a=e.startLine,s=e.startColumn,o=e.endLine,l=e.endColumn,u=e.hidden;return new i0(n,i,{start:{line:a,character:s},end:{line:o,character:l}},r,u)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap();let r=this.grammarElementIdMap.getKey(e);if(r)return r;throw new Error("Invalid grammar element id: "+e)}createGrammarElementIdMap(){let e=0;for(let r of Vo(this.grammar))Ay(r)&&this.grammarElementIdMap.set(r,e++)}}});function io(t){return{documentation:{CommentProvider:e=>new $2(e),DocumentationProvider:e=>new z2(e)},parser:{AsyncParser:e=>new G2(e),GrammarConfig:e=>aR(e),LangiumParser:e=>gN(e),CompletionParser:e=>dN(e),ValueConverter:()=>new l0,TokenBuilder:()=>new o0,Lexer:e=>new P2(e),ParserErrorMessageProvider:()=>new um},workspace:{AstNodeLocator:()=>new N2,AstNodeDescriptionProvider:e=>new L2(e),ReferenceDescriptionProvider:e=>new R2(e)},references:{Linker:e=>new v2(e),NameProvider:()=>new y2,ScopeProvider:e=>new T2(e),ScopeComputation:e=>new b2(e),References:e=>new x2(e)},serializer:{Hydrator:e=>new V2(e),JsonSerializer:e=>new E2(e)},validation:{DocumentValidator:e=>new _2(e),ValidationRegistry:e=>new C2(e)},shared:()=>t.shared}}function ao(t){return{ServiceRegistry:()=>new S2,workspace:{LangiumDocuments:e=>new m2(e),LangiumDocumentFactory:e=>new g2(e),DocumentBuilder:e=>new M2(e),IndexManager:e=>new D2(e),WorkspaceManager:e=>new O2(e),FileSystemProvider:e=>t.fileSystemProvider(e),WorkspaceLock:()=>new U2,ConfigurationProvider:e=>new I2(e)}}}var uI=F(()=>{sR();pN();mN();vN();yN();NN();IN();MN();DN();PN();mT();FN();zN();A2();$N();GN();UN();WN();gm();HN();qN();jN();rI();nI();p2();oI();lI();cI()});function Ni(t,e,r,n,i,a,s,o,l){let u=[t,e,r,n,i,a,s,o,l].reduce(wT,{});return Yoe(u)}function qoe(t){if(t&&t[fI])for(let e of Object.values(t))qoe(e);return t}function Yoe(t,e){let r=new Proxy({},{deleteProperty:()=>!1,get:(n,i)=>Hoe(n,i,t,e||r),getOwnPropertyDescriptor:(n,i)=>(Hoe(n,i,t,e||r),Object.getOwnPropertyDescriptor(n,i)),has:(n,i)=>i in t,ownKeys:()=>[...Reflect.ownKeys(t),fI]});return r[fI]=!0,r}function Hoe(t,e,r,n){if(e in t){if(t[e]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:t[e]});if(t[e]===Woe)throw new Error('Cycle detected. Please make "'+String(e)+'" lazy. See https://langium.org/docs/configuration-services/#resolving-cyclic-dependencies');return t[e]}else if(e in r){let i=r[e];t[e]=Woe;try{t[e]=typeof i=="function"?i(n):Yoe(i,n)}catch(a){throw t[e]=a instanceof Error?a:void 0,a}return t[e]}else return}function wT(t,e){if(e){for(let[r,n]of Object.entries(e))if(n!==void 0){let i=t[r];i!==null&&n!==null&&typeof i=="object"&&typeof n=="object"?t[r]=wT(i,n):t[r]=n}}return t}var hI,fI,Woe,dI=F(()=>{(function(t){t.merge=(e,r)=>wT(wT({},e),r)})(hI||(hI={}));fI=Symbol("isProxy");Woe=Symbol()});var Xoe=F(()=>{});var joe=F(()=>{nI();rI();tI()});var Koe=F(()=>{});var Zoe=F(()=>{sR();Koe()});var Qoe=F(()=>{});var Joe=F(()=>{oI();pN();aT();mN();p2();jN();Qoe();vN();yN()});var ele=F(()=>{NN();IN();MN();ON();DN();PN()});var tle=F(()=>{cI();mT()});var kT,so,pI=F(()=>{kT=class{readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}},so={fileSystemProvider:()=>new kT}});function UMe(){let t=Ni(ao(so),GMe),e=Ni(io({shared:t}),$Me);return t.ServiceRegistry.register(e),e}function sf(t){var e;let r=UMe(),n=r.serializer.JsonSerializer.deserialize(t);return r.shared.workspace.LangiumDocumentFactory.fromModel(n,Is.parse(`memory://${(e=n.name)!==null&&e!==void 0?e:"grammar"}.langium`)),n}var $Me,GMe,rle=F(()=>{uI();dI();Ac();pI();Mc();$Me={Grammar:()=>{},LanguageMetaData:()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"})},GMe={AstReflection:()=>new Mg}});var Ir={};vr(Ir,{AstUtils:()=>sk,BiMap:()=>c0,Cancellation:()=>mr,ContextCache:()=>u0,CstUtils:()=>Xw,DONE_RESULT:()=>Za,Deferred:()=>ns,Disposable:()=>h0,DisposableCache:()=>ym,DocumentCache:()=>pT,EMPTY_STREAM:()=>Ey,ErrorWithLocation:()=>$d,GrammarUtils:()=>fk,MultiMap:()=>Dc,OperationCancelled:()=>Ic,Reduction:()=>Ng,RegExpUtils:()=>uk,SimpleCache:()=>k2,StreamImpl:()=>to,TreeStreamImpl:()=>Cc,URI:()=>Is,UriUtils:()=>is,WorkspaceCache:()=>xm,assertUnreachable:()=>Jh,delayNextTick:()=>_N,interruptAndCheck:()=>Ri,isOperationCancelled:()=>af,loadGrammarFromJson:()=>sf,setInterruptionPeriod:()=>_oe,startCancelableOperation:()=>Aoe,stream:()=>Xr});var nle=F(()=>{gT();iI();gr(Ir,ti);mm();VN();jw();rle();Ho();Ls();Mc();Qa();Wo();El();Al();Pg()});var ile=F(()=>{zN();A2()});var ale=F(()=>{$N();GN();UN();WN();gm();pI();HN();lI();qN()});var ga={};vr(ga,{AbstractAstReflection:()=>Pd,AbstractCstNode:()=>u2,AbstractLangiumParser:()=>h2,AbstractParserErrorMessageProvider:()=>oT,AbstractThreadedAsyncParser:()=>aI,AstUtils:()=>sk,BiMap:()=>c0,Cancellation:()=>mr,CompositeCstNodeImpl:()=>a0,ContextCache:()=>u0,CstNodeBuilder:()=>c2,CstUtils:()=>Xw,DONE_RESULT:()=>Za,DatatypeSymbol:()=>sT,DefaultAstNodeDescriptionProvider:()=>L2,DefaultAstNodeLocator:()=>N2,DefaultAsyncParser:()=>G2,DefaultCommentProvider:()=>$2,DefaultConfigurationProvider:()=>I2,DefaultDocumentBuilder:()=>M2,DefaultDocumentValidator:()=>_2,DefaultHydrator:()=>V2,DefaultIndexManager:()=>D2,DefaultJsonSerializer:()=>E2,DefaultLangiumDocumentFactory:()=>g2,DefaultLangiumDocuments:()=>m2,DefaultLexer:()=>P2,DefaultLinker:()=>v2,DefaultNameProvider:()=>y2,DefaultReferenceDescriptionProvider:()=>R2,DefaultReferences:()=>x2,DefaultScopeComputation:()=>b2,DefaultScopeProvider:()=>T2,DefaultServiceRegistry:()=>S2,DefaultTokenBuilder:()=>o0,DefaultValueConverter:()=>l0,DefaultWorkspaceLock:()=>U2,DefaultWorkspaceManager:()=>O2,Deferred:()=>ns,Disposable:()=>h0,DisposableCache:()=>ym,DocumentCache:()=>pT,DocumentState:()=>mn,DocumentValidator:()=>Yu,EMPTY_SCOPE:()=>AMe,EMPTY_STREAM:()=>Ey,EmptyFileSystem:()=>so,EmptyFileSystemProvider:()=>kT,ErrorWithLocation:()=>$d,GrammarAST:()=>Ly,GrammarUtils:()=>fk,JSDocDocumentationProvider:()=>z2,LangiumCompletionParser:()=>d2,LangiumParser:()=>f2,LangiumParserErrorMessageProvider:()=>um,LeafCstNodeImpl:()=>i0,MapScope:()=>w2,Module:()=>hI,MultiMap:()=>Dc,OperationCancelled:()=>Ic,ParserWorker:()=>sI,Reduction:()=>Ng,RegExpUtils:()=>uk,RootCstNodeImpl:()=>cm,SimpleCache:()=>k2,StreamImpl:()=>to,StreamScope:()=>vm,TextDocument:()=>dm,TreeStreamImpl:()=>Cc,URI:()=>Is,UriUtils:()=>is,ValidationCategory:()=>bm,ValidationRegistry:()=>C2,ValueConverter:()=>Nc,WorkspaceCache:()=>xm,assertUnreachable:()=>Jh,createCompletionParser:()=>dN,createDefaultCoreModule:()=>io,createDefaultSharedCoreModule:()=>ao,createGrammarConfig:()=>aR,createLangiumParser:()=>gN,delayNextTick:()=>_N,diagnosticData:()=>vT,eagerLoad:()=>qoe,getDiagnosticRange:()=>Poe,inject:()=>Ni,interruptAndCheck:()=>Ri,isAstNode:()=>Xn,isAstNodeDescription:()=>R9,isAstNodeWithComment:()=>BN,isCompositeCstNode:()=>eo,isIMultiModeLexerDefinition:()=>XN,isJSDoc:()=>JN,isLeafCstNode:()=>Qh,isLinkingError:()=>Bd,isNamed:()=>Doe,isOperationCancelled:()=>af,isReference:()=>pa,isRootCstNode:()=>Ty,isTokenTypeArray:()=>Boe,isTokenTypeDictionary:()=>YN,loadGrammarFromJson:()=>sf,parseJSDoc:()=>QN,prepareLangiumParser:()=>boe,setInterruptionPeriod:()=>_oe,startCancelableOperation:()=>Aoe,stream:()=>Xr,toDiagnosticSeverity:()=>yT});var Oc=F(()=>{uI();dI();FN();Xoe();$o();joe();Zoe();Joe();ele();tle();nle();gr(ga,Ir);ile();ale();Ac()});function dle(t){return Ll.isInstance(t,fle)}function ple(t){return Ll.isInstance(t,gI)}function gle(t){return Ll.isInstance(t,mI)}function mle(t){return Ll.isInstance(t,qMe)}function vle(t){return Ll.isInstance(t,vI)}function xle(t){return Ll.isInstance(t,yle)}function ble(t){return Ll.isInstance(t,yI)}function kle(t){return Ll.isInstance(t,wle)}function Ele(t){return Ll.isInstance(t,Tle)}function Cle(t){return Ll.isInstance(t,Sle)}function _le(t){return Ll.isInstance(t,Ale)}var VMe,Ct,hle,fle,gI,WMe,HMe,mI,qMe,vI,yle,yI,wle,Tle,Sle,Ale,YMe,Lle,Ll,sle,XMe,ole,jMe,lle,KMe,cle,ZMe,ule,QMe,JMe,eDe,tDe,rDe,nDe,Rl,xI,bI,wI,kI,TI,iDe,aDe,sDe,oDe,wm,f0,qo,lDe,Yo=F(()=>{Oc();Oc();Oc();Oc();VMe=Object.defineProperty,Ct=(t,e)=>VMe(t,"name",{value:e,configurable:!0}),hle="Statement",fle="Architecture";Ct(dle,"isArchitecture");gI="Branch";Ct(ple,"isBranch");WMe="Checkout",HMe="CherryPicking",mI="Commit";Ct(gle,"isCommit");qMe="Common";Ct(mle,"isCommon");vI="GitGraph";Ct(vle,"isGitGraph");yle="Info";Ct(xle,"isInfo");yI="Merge";Ct(ble,"isMerge");wle="Packet";Ct(kle,"isPacket");Tle="PacketBlock";Ct(Ele,"isPacketBlock");Sle="Pie";Ct(Cle,"isPie");Ale="PieSection";Ct(_le,"isPieSection");YMe="Direction",Lle=class extends Pd{static{Ct(this,"MermaidAstReflection")}getAllTypes(){return["Architecture","Branch","Checkout","CherryPicking","Commit","Common","Direction","Edge","GitGraph","Group","Info","Junction","Merge","Packet","PacketBlock","Pie","PieSection","Service","Statement"]}computeIsSubtype(t,e){switch(t){case gI:case WMe:case HMe:case mI:case yI:return this.isSubtype(hle,e);case YMe:return this.isSubtype(vI,e);default:return!1}}getReferenceType(t){let e=`${t.container.$type}:${t.property}`;switch(e){default:throw new Error(`${e} is not a valid reference id.`)}}getTypeMetaData(t){switch(t){case"Architecture":return{name:"Architecture",properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case"Branch":return{name:"Branch",properties:[{name:"name"},{name:"order"}]};case"Checkout":return{name:"Checkout",properties:[{name:"branch"}]};case"CherryPicking":return{name:"CherryPicking",properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case"Commit":return{name:"Commit",properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case"Common":return{name:"Common",properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case"Edge":return{name:"Edge",properties:[{name:"lhsDir"},{name:"lhsGroup",defaultValue:!1},{name:"lhsId"},{name:"lhsInto",defaultValue:!1},{name:"rhsDir"},{name:"rhsGroup",defaultValue:!1},{name:"rhsId"},{name:"rhsInto",defaultValue:!1},{name:"title"}]};case"GitGraph":return{name:"GitGraph",properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case"Group":return{name:"Group",properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case"Info":return{name:"Info",properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case"Junction":return{name:"Junction",properties:[{name:"id"},{name:"in"}]};case"Merge":return{name:"Merge",properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case"Packet":return{name:"Packet",properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case"PacketBlock":return{name:"PacketBlock",properties:[{name:"end"},{name:"label"},{name:"start"}]};case"Pie":return{name:"Pie",properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case"PieSection":return{name:"PieSection",properties:[{name:"label"},{name:"value"}]};case"Service":return{name:"Service",properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case"Direction":return{name:"Direction",properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};default:return{name:t,properties:[]}}}},Ll=new Lle,XMe=Ct(()=>sle??(sle=sf('{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","name":"Info","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"TitleAndAccessibilities","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"InfoGrammar"),jMe=Ct(()=>ole??(ole=sf(`{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","name":"Packet","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"packet-beta"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"+"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"?"},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"TitleAndAccessibilities","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}`)),"PacketGrammar"),KMe=Ct(()=>lle??(lle=sf('{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","name":"Pie","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},"cardinality":"+"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"PIE_SECTION_LABEL","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]+\\"/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"PIE_SECTION_VALUE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/(0|[1-9][0-9]*)(\\\\.[0-9]+)?/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"TitleAndAccessibilities","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"PieGrammar"),ZMe=Ct(()=>cle??(cle=sf('{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","name":"Architecture","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","fragment":true,"definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LeftPort","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"RightPort","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Arrow","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_ID","definition":{"$type":"RegexToken","regex":"/[\\\\w]+/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TEXT_ICON","definition":{"$type":"RegexToken","regex":"/\\\\(\\"[^\\"]+\\"\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"TitleAndAccessibilities","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"types":[],"usedGrammars":[]}')),"ArchitectureGrammar"),QMe=Ct(()=>ule??(ule=sf(`{"$type":"Grammar","isDeclared":true,"name":"GitGraph","interfaces":[{"$type":"Interface","name":"Common","attributes":[{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"rules":[{"$type":"ParserRule","name":"TitleAndAccessibilities","fragment":true,"definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"EOL","fragment":true,"dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"ParserRule","name":"GitGraph","entry":true,"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"*"}]}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+(?=\\\\s)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|'[^']*'/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[]}`)),"GitGraphGrammar"),JMe={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},eDe={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},tDe={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},rDe={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},nDe={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1},Rl={AstReflection:Ct(()=>new Lle,"AstReflection")},xI={Grammar:Ct(()=>XMe(),"Grammar"),LanguageMetaData:Ct(()=>JMe,"LanguageMetaData"),parser:{}},bI={Grammar:Ct(()=>jMe(),"Grammar"),LanguageMetaData:Ct(()=>eDe,"LanguageMetaData"),parser:{}},wI={Grammar:Ct(()=>KMe(),"Grammar"),LanguageMetaData:Ct(()=>tDe,"LanguageMetaData"),parser:{}},kI={Grammar:Ct(()=>ZMe(),"Grammar"),LanguageMetaData:Ct(()=>rDe,"LanguageMetaData"),parser:{}},TI={Grammar:Ct(()=>QMe(),"Grammar"),LanguageMetaData:Ct(()=>nDe,"LanguageMetaData"),parser:{}},iDe=/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,aDe=/accTitle[\t ]*:([^\n\r]*)/,sDe=/title([\t ][^\n\r]*|)/,oDe={ACC_DESCR:iDe,ACC_TITLE:aDe,TITLE:sDe},wm=class extends l0{static{Ct(this,"AbstractMermaidValueConverter")}runConverter(t,e,r){let n=this.runCommonConverter(t,e,r);return n===void 0&&(n=this.runCustomConverter(t,e,r)),n===void 0?super.runConverter(t,e,r):n}runCommonConverter(t,e,r){let n=oDe[t.name];if(n===void 0)return;let i=n.exec(e);if(i!==null){if(i[1]!==void 0)return i[1].trim().replace(/[\t ]{2,}/gm," ");if(i[2]!==void 0)return i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,` `)}}},f0=class extends wm{static{Ct(this,"CommonValueConverter")}runCustomConverter(t,e,r){}},qo=class extends o0{static{Ct(this,"AbstractMermaidTokenBuilder")}constructor(t){super(),this.keywords=new Set(t)}buildKeywordTokens(t,e,r){let n=super.buildKeywordTokens(t,e,r);return n.forEach(i=>{this.keywords.has(i.name)&&i.PATTERN!==void 0&&(i.PATTERN=new RegExp(i.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))}),n}},lDe=class extends qo{static{Ct(this,"CommonTokenBuilder")}}});function ET(t=so){let e=Ni(ao(t),Rl),r=Ni(io({shared:e}),TI,TT);return e.ServiceRegistry.register(r),{shared:e,GitGraph:r}}var cDe,TT,EI=F(()=>{Yo();Oc();cDe=class extends qo{static{Ct(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},TT={parser:{TokenBuilder:Ct(()=>new cDe,"TokenBuilder"),ValueConverter:Ct(()=>new f0,"ValueConverter")}};Ct(ET,"createGitGraphServices")});function CT(t=so){let e=Ni(ao(t),Rl),r=Ni(io({shared:e}),xI,ST);return e.ServiceRegistry.register(r),{shared:e,Info:r}}var uDe,ST,SI=F(()=>{Yo();Oc();uDe=class extends qo{static{Ct(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},ST={parser:{TokenBuilder:Ct(()=>new uDe,"TokenBuilder"),ValueConverter:Ct(()=>new f0,"ValueConverter")}};Ct(CT,"createInfoServices")});function _T(t=so){let e=Ni(ao(t),Rl),r=Ni(io({shared:e}),bI,AT);return e.ServiceRegistry.register(r),{shared:e,Packet:r}}var hDe,AT,CI=F(()=>{Yo();Oc();hDe=class extends qo{static{Ct(this,"PacketTokenBuilder")}constructor(){super(["packet-beta"])}},AT={parser:{TokenBuilder:Ct(()=>new hDe,"TokenBuilder"),ValueConverter:Ct(()=>new f0,"ValueConverter")}};Ct(_T,"createPacketServices")});function RT(t=so){let e=Ni(ao(t),Rl),r=Ni(io({shared:e}),wI,LT);return e.ServiceRegistry.register(r),{shared:e,Pie:r}}var fDe,dDe,LT,AI=F(()=>{Yo();Oc();fDe=class extends qo{static{Ct(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},dDe=class extends wm{static{Ct(this,"PieValueConverter")}runCustomConverter(t,e,r){if(t.name==="PIE_SECTION_LABEL")return e.replace(/"/g,"").trim()}},LT={parser:{TokenBuilder:Ct(()=>new fDe,"TokenBuilder"),ValueConverter:Ct(()=>new dDe,"ValueConverter")}};Ct(RT,"createPieServices")});function IT(t=so){let e=Ni(ao(t),Rl),r=Ni(io({shared:e}),kI,NT);return e.ServiceRegistry.register(r),{shared:e,Architecture:r}}var pDe,gDe,NT,_I=F(()=>{Yo();Oc();pDe=class extends qo{static{Ct(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},gDe=class extends wm{static{Ct(this,"ArchitectureValueConverter")}runCustomConverter(t,e,r){if(t.name==="ARCH_ICON")return e.replace(/[()]/g,"").trim();if(t.name==="ARCH_TEXT_ICON")return e.replace(/["()]/g,"");if(t.name==="ARCH_TITLE")return e.replace(/[[\]]/g,"").trim()}},NT={parser:{TokenBuilder:Ct(()=>new pDe,"TokenBuilder"),ValueConverter:Ct(()=>new gDe,"ValueConverter")}};Ct(IT,"createArchitectureServices")});var Rle={};vr(Rle,{InfoModule:()=>ST,createInfoServices:()=>CT});var Nle=F(()=>{SI();Yo()});var Ile={};vr(Ile,{PacketModule:()=>AT,createPacketServices:()=>_T});var Mle=F(()=>{CI();Yo()});var Dle={};vr(Dle,{PieModule:()=>LT,createPieServices:()=>RT});var Ole=F(()=>{AI();Yo()});var Ple={};vr(Ple,{ArchitectureModule:()=>NT,createArchitectureServices:()=>IT});var Ble=F(()=>{_I();Yo()});var Fle={};vr(Fle,{GitGraphModule:()=>TT,createGitGraphServices:()=>ET});var zle=F(()=>{EI();Yo()});async function Nl(t,e){let r=mDe[t];if(!r)throw new Error(`Unknown diagram type: ${t}`);d0[t]||await r();let i=d0[t].parse(e);if(i.lexerErrors.length>0||i.parserErrors.length>0)throw new vDe(i);return i.value}var d0,mDe,vDe,km=F(()=>{EI();SI();CI();AI();_I();Yo();d0={},mDe={info:Ct(async()=>{let{createInfoServices:t}=await Promise.resolve().then(()=>(Nle(),Rle)),e=t().Info.parser.LangiumParser;d0.info=e},"info"),packet:Ct(async()=>{let{createPacketServices:t}=await Promise.resolve().then(()=>(Mle(),Ile)),e=t().Packet.parser.LangiumParser;d0.packet=e},"packet"),pie:Ct(async()=>{let{createPieServices:t}=await Promise.resolve().then(()=>(Ole(),Dle)),e=t().Pie.parser.LangiumParser;d0.pie=e},"pie"),architecture:Ct(async()=>{let{createArchitectureServices:t}=await Promise.resolve().then(()=>(Ble(),Ple)),e=t().Architecture.parser.LangiumParser;d0.architecture=e},"architecture"),gitGraph:Ct(async()=>{let{createGitGraphServices:t}=await Promise.resolve().then(()=>(zle(),Fle)),e=t().GitGraph.parser.LangiumParser;d0.gitGraph=e},"gitGraph")};Ct(Nl,"parse");vDe=class extends Error{constructor(t){let e=t.lexerErrors.map(n=>n.message).join(` `),r=t.parserErrors.map(n=>n.message).join(` `);super(`Parsing failed: ${e} ${r}`),this.result=t}static{Ct(this,"MermaidParseError")}}});var Yle={};vr(Yle,{diagram:()=>hOe});function OT(){return lA({length:7})}function Gle(t,e){let r=Object.create(null);return t.reduce((n,i)=>{let a=e(i);return r[a]||(r[a]=!0,n.push(i)),n},[])}function LI(t,e,r){let n=t.indexOf(e);n===-1?t.push(r):t.splice(n,1,r)}function RI(t){let e=t.reduce((i,a)=>i.seq>a.seq?i:a,t[0]),r="";t.forEach(function(i){i===e?r+=" *":r+=" |"});let n=[r,e.id,e.seq];for(let i in gt.records.branches)gt.records.branches.get(i)===e.id&&n.push(i);if(re.debug(n.join(" ")),e.parents&&e.parents.length==2&&e.parents[0]&&e.parents[1]){let i=gt.records.commits.get(e.parents[0]);LI(t,e,i),e.parents[1]&&t.push(gt.records.commits.get(e.parents[1]))}else{if(e.parents.length==0)return;if(e.parents[0]){let i=gt.records.commits.get(e.parents[0]);LI(t,e,i)}}t=Gle(t,i=>i.id),RI(t)}var nn,yDe,g0,gt,xDe,bDe,wDe,kDe,TDe,EDe,SDe,Ule,CDe,ADe,_De,LDe,RDe,Vle,NDe,IDe,MDe,Wle,DDe,ODe,PDe,BDe,FDe,zDe,$De,GDe,UDe,Xo,lf,cf,Pc,Xu,p0,Ms,Ds,MT,W2,DT,of,kr,VDe,Hle,qle,WDe,HDe,qDe,YDe,XDe,jDe,KDe,ZDe,QDe,JDe,eOe,tOe,$le,rOe,H2,nOe,iOe,aOe,sOe,oOe,lOe,cOe,uOe,hOe,Xle=F(()=>{ky();Hw();kn();or();km();lr();nn={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},yDe=sr.gitGraph,g0=v(()=>ws({...yDe,...Or().gitGraph}),"getConfig"),gt=new Rg(()=>{let t=g0(),e=t.mainBranchName,r=t.mainBranchOrder;return{mainBranchName:e,commits:new Map,head:null,branchConfig:new Map([[e,{name:e,order:r}]]),branches:new Map([[e,null]]),currBranch:e,direction:"LR",seq:0,options:{}}});v(OT,"getID");v(Gle,"uniqBy");xDe=v(function(t){gt.records.direction=t},"setDirection"),bDe=v(function(t){re.debug("options str",t),t=t?.trim(),t=t||"{}";try{gt.records.options=JSON.parse(t)}catch(e){re.error("error while parsing gitGraph options",e.message)}},"setOptions"),wDe=v(function(){return gt.records.options},"getOptions"),kDe=v(function(t){let e=t.msg,r=t.id,n=t.type,i=t.tags;re.info("commit",e,r,n,i),re.debug("Entering commit:",e,r,n,i);let a=g0();r=Xe.sanitizeText(r,a),e=Xe.sanitizeText(e,a),i=i?.map(o=>Xe.sanitizeText(o,a));let s={id:r||gt.records.seq+"-"+OT(),message:e,seq:gt.records.seq++,type:n??nn.NORMAL,tags:i??[],parents:gt.records.head==null?[]:[gt.records.head.id],branch:gt.records.currBranch};gt.records.head=s,re.info("main branch",a.mainBranchName),gt.records.commits.set(s.id,s),gt.records.branches.set(gt.records.currBranch,s.id),re.debug("in pushCommit "+s.id)},"commit"),TDe=v(function(t){let e=t.name,r=t.order;if(e=Xe.sanitizeText(e,g0()),gt.records.branches.has(e))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${e}")`);gt.records.branches.set(e,gt.records.head!=null?gt.records.head.id:null),gt.records.branchConfig.set(e,{name:e,order:r}),Ule(e),re.debug("in createBranch")},"branch"),EDe=v(t=>{let e=t.branch,r=t.id,n=t.type,i=t.tags,a=g0();e=Xe.sanitizeText(e,a),r&&(r=Xe.sanitizeText(r,a));let s=gt.records.branches.get(gt.records.currBranch),o=gt.records.branches.get(e),l=s?gt.records.commits.get(s):void 0,u=o?gt.records.commits.get(o):void 0;if(l&&u&&l.branch===e)throw new Error(`Cannot merge branch '${e}' into itself.`);if(gt.records.currBranch===e){let d=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw d.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},d}if(l===void 0||!l){let d=new Error(`Incorrect usage of "merge". Current branch (${gt.records.currBranch})has no commits`);throw d.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["commit"]},d}if(!gt.records.branches.has(e)){let d=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") does not exist");throw d.hash={text:`merge ${e}`,token:`merge ${e}`,expected:[`branch ${e}`]},d}if(u===void 0||!u){let d=new Error('Incorrect usage of "merge". Branch to be merged ('+e+") has no commits");throw d.hash={text:`merge ${e}`,token:`merge ${e}`,expected:['"commit"']},d}if(l===u){let d=new Error('Incorrect usage of "merge". Both branches have same head');throw d.hash={text:`merge ${e}`,token:`merge ${e}`,expected:["branch abc"]},d}if(r&>.records.commits.has(r)){let d=new Error('Incorrect usage of "merge". Commit with id:'+r+" already exists, use different custom Id");throw d.hash={text:`merge ${e} ${r} ${n} ${i?.join(" ")}`,token:`merge ${e} ${r} ${n} ${i?.join(" ")}`,expected:[`merge ${e} ${r}_UNIQUE ${n} ${i?.join(" ")}`]},d}let h=o||"",f={id:r||`${gt.records.seq}-${OT()}`,message:`merged branch ${e} into ${gt.records.currBranch}`,seq:gt.records.seq++,parents:gt.records.head==null?[]:[gt.records.head.id,h],branch:gt.records.currBranch,type:nn.MERGE,customType:n,customId:!!r,tags:i??[]};gt.records.head=f,gt.records.commits.set(f.id,f),gt.records.branches.set(gt.records.currBranch,f.id),re.debug(gt.records.branches),re.debug("in mergeBranch")},"merge"),SDe=v(function(t){let e=t.id,r=t.targetId,n=t.tags,i=t.parent;re.debug("Entering cherryPick:",e,r,n);let a=g0();if(e=Xe.sanitizeText(e,a),r=Xe.sanitizeText(r,a),n=n?.map(l=>Xe.sanitizeText(l,a)),i=Xe.sanitizeText(i,a),!e||!gt.records.commits.has(e)){let l=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw l.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},l}let s=gt.records.commits.get(e);if(s===void 0||!s)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(i&&!(Array.isArray(s.parents)&&s.parents.includes(i)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");let o=s.branch;if(s.type===nn.MERGE&&!i)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!r||!gt.records.commits.has(r)){if(o===gt.records.currBranch){let f=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw f.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},f}let l=gt.records.branches.get(gt.records.currBranch);if(l===void 0||!l){let f=new Error(`Incorrect usage of "cherry-pick". Current branch (${gt.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},f}let u=gt.records.commits.get(l);if(u===void 0||!u){let f=new Error(`Incorrect usage of "cherry-pick". Current branch (${gt.records.currBranch})has no commits`);throw f.hash={text:`cherryPick ${e} ${r}`,token:`cherryPick ${e} ${r}`,expected:["cherry-pick abc"]},f}let h={id:gt.records.seq+"-"+OT(),message:`cherry-picked ${s?.message} into ${gt.records.currBranch}`,seq:gt.records.seq++,parents:gt.records.head==null?[]:[gt.records.head.id,s.id],branch:gt.records.currBranch,type:nn.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${s.id}${s.type===nn.MERGE?`|parent:${i}`:""}`]};gt.records.head=h,gt.records.commits.set(h.id,h),gt.records.branches.set(gt.records.currBranch,h.id),re.debug(gt.records.branches),re.debug("in cherryPick")}},"cherryPick"),Ule=v(function(t){if(t=Xe.sanitizeText(t,g0()),gt.records.branches.has(t)){gt.records.currBranch=t;let e=gt.records.branches.get(gt.records.currBranch);e===void 0||!e?gt.records.head=null:gt.records.head=gt.records.commits.get(e)??null}else{let e=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`);throw e.hash={text:`checkout ${t}`,token:`checkout ${t}`,expected:[`branch ${t}`]},e}},"checkout");v(LI,"upsert");v(RI,"prettyPrintCommitHistory");CDe=v(function(){re.debug(gt.records.commits);let t=Vle()[0];RI([t])},"prettyPrint"),ADe=v(function(){gt.reset(),xr()},"clear"),_De=v(function(){return[...gt.records.branchConfig.values()].map((e,r)=>e.order!==null&&e.order!==void 0?e:{...e,order:parseFloat(`0.${r}`)}).sort((e,r)=>(e.order??0)-(r.order??0)).map(({name:e})=>({name:e}))},"getBranchesAsObjArray"),LDe=v(function(){return gt.records.branches},"getBranches"),RDe=v(function(){return gt.records.commits},"getCommits"),Vle=v(function(){let t=[...gt.records.commits.values()];return t.forEach(function(e){re.debug(e.id)}),t.sort((e,r)=>e.seq-r.seq),t},"getCommitsArray"),NDe=v(function(){return gt.records.currBranch},"getCurrentBranch"),IDe=v(function(){return gt.records.direction},"getDirection"),MDe=v(function(){return gt.records.head},"getHead"),Wle={commitType:nn,getConfig:g0,setDirection:xDe,setOptions:bDe,getOptions:wDe,commit:kDe,branch:TDe,merge:EDe,cherryPick:SDe,checkout:Ule,prettyPrint:CDe,clear:ADe,getBranchesAsObjArray:_De,getBranches:LDe,getCommits:RDe,getCommitsArray:Vle,getCurrentBranch:NDe,getDirection:IDe,getHead:MDe,setAccTitle:Tr,getAccTitle:_r,getAccDescription:Rr,setAccDescription:Lr,setDiagramTitle:tn,getDiagramTitle:qr},DDe=v((t,e)=>{Pu(t,e),t.dir&&e.setDirection(t.dir);for(let r of t.statements)ODe(r,e)},"populate"),ODe=v((t,e)=>{let n={Commit:v(i=>e.commit(PDe(i)),"Commit"),Branch:v(i=>e.branch(BDe(i)),"Branch"),Merge:v(i=>e.merge(FDe(i)),"Merge"),Checkout:v(i=>e.checkout(zDe(i)),"Checkout"),CherryPicking:v(i=>e.cherryPick($De(i)),"CherryPicking")}[t.$type];n?n(t):re.error(`Unknown statement type: ${t.$type}`)},"parseStatement"),PDe=v(t=>({id:t.id,msg:t.message??"",type:t.type!==void 0?nn[t.type]:nn.NORMAL,tags:t.tags??void 0}),"parseCommit"),BDe=v(t=>({name:t.name,order:t.order??0}),"parseBranch"),FDe=v(t=>({branch:t.branch,id:t.id??"",type:t.type!==void 0?nn[t.type]:void 0,tags:t.tags??void 0}),"parseMerge"),zDe=v(t=>t.branch,"parseCheckout"),$De=v(t=>({id:t.id,targetId:"",tags:t.tags?.length===0?void 0:t.tags,parent:t.parent}),"parseCherryPicking"),GDe={parse:v(async t=>{let e=await Nl("gitGraph",t);re.debug(e),DDe(e,Wle)},"parse")},UDe=pe(),Xo=UDe?.gitGraph,lf=10,cf=40,Pc=4,Xu=2,p0=8,Ms=new Map,Ds=new Map,MT=30,W2=new Map,DT=[],of=0,kr="LR",VDe=v(()=>{Ms.clear(),Ds.clear(),W2.clear(),of=0,DT=[],kr="LR"},"clear"),Hle=v(t=>{let e=document.createElementNS("http://www.w3.org/2000/svg","text");return(typeof t=="string"?t.split(/\\n|\n|/gi):t).forEach(n=>{let i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),i.setAttribute("class","row"),i.textContent=n.trim(),e.appendChild(i)}),e},"drawText"),qle=v(t=>{let e,r,n;return kr==="BT"?(r=v((i,a)=>i<=a,"comparisonFunc"),n=1/0):(r=v((i,a)=>i>=a,"comparisonFunc"),n=0),t.forEach(i=>{let a=kr==="TB"||kr=="BT"?Ds.get(i)?.y:Ds.get(i)?.x;a!==void 0&&r(a,n)&&(e=i,n=a)}),e},"findClosestParent"),WDe=v(t=>{let e="",r=1/0;return t.forEach(n=>{let i=Ds.get(n).y;i<=r&&(e=n,r=i)}),e||void 0},"findClosestParentBT"),HDe=v((t,e,r)=>{let n=r,i=r,a=[];t.forEach(s=>{let o=e.get(s);if(!o)throw new Error(`Commit not found for key ${s}`);o.parents.length?(n=YDe(o),i=Math.max(n,i)):a.push(o),XDe(o,n)}),n=i,a.forEach(s=>{jDe(s,n,r)}),t.forEach(s=>{let o=e.get(s);if(o?.parents.length){let l=WDe(o.parents);n=Ds.get(l).y-cf,n<=i&&(i=n);let u=Ms.get(o.branch).pos,h=n-lf;Ds.set(o.id,{x:u,y:h})}})},"setParallelBTPos"),qDe=v(t=>{let e=qle(t.parents.filter(n=>n!==null));if(!e)throw new Error(`Closest parent not found for commit ${t.id}`);let r=Ds.get(e)?.y;if(r===void 0)throw new Error(`Closest parent position not found for commit ${t.id}`);return r},"findClosestParentPos"),YDe=v(t=>qDe(t)+cf,"calculateCommitPosition"),XDe=v((t,e)=>{let r=Ms.get(t.branch);if(!r)throw new Error(`Branch not found for commit ${t.id}`);let n=r.pos,i=e+lf;return Ds.set(t.id,{x:n,y:i}),{x:n,y:i}},"setCommitPosition"),jDe=v((t,e,r)=>{let n=Ms.get(t.branch);if(!n)throw new Error(`Branch not found for commit ${t.id}`);let i=e+r,a=n.pos;Ds.set(t.id,{x:a,y:i})},"setRootPosition"),KDe=v((t,e,r,n,i,a)=>{if(a===nn.HIGHLIGHT)t.append("rect").attr("x",r.x-10).attr("y",r.y-10).attr("width",20).attr("height",20).attr("class",`commit ${e.id} commit-highlight${i%p0} ${n}-outer`),t.append("rect").attr("x",r.x-6).attr("y",r.y-6).attr("width",12).attr("height",12).attr("class",`commit ${e.id} commit${i%p0} ${n}-inner`);else if(a===nn.CHERRY_PICK)t.append("circle").attr("cx",r.x).attr("cy",r.y).attr("r",10).attr("class",`commit ${e.id} ${n}`),t.append("circle").attr("cx",r.x-3).attr("cy",r.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${n}`),t.append("circle").attr("cx",r.x+3).attr("cy",r.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${e.id} ${n}`),t.append("line").attr("x1",r.x+3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${n}`),t.append("line").attr("x1",r.x-3).attr("y1",r.y+1).attr("x2",r.x).attr("y2",r.y-5).attr("stroke","#fff").attr("class",`commit ${e.id} ${n}`);else{let s=t.append("circle");if(s.attr("cx",r.x),s.attr("cy",r.y),s.attr("r",e.type===nn.MERGE?9:10),s.attr("class",`commit ${e.id} commit${i%p0}`),a===nn.MERGE){let o=t.append("circle");o.attr("cx",r.x),o.attr("cy",r.y),o.attr("r",6),o.attr("class",`commit ${n} ${e.id} commit${i%p0}`)}a===nn.REVERSE&&t.append("path").attr("d",`M ${r.x-5},${r.y-5}L${r.x+5},${r.y+5}M${r.x-5},${r.y+5}L${r.x+5},${r.y-5}`).attr("class",`commit ${n} ${e.id} commit${i%p0}`)}},"drawCommitBullet"),ZDe=v((t,e,r,n)=>{if(e.type!==nn.CHERRY_PICK&&(e.customId&&e.type===nn.MERGE||e.type!==nn.MERGE)&&Xo?.showCommitLabel){let i=t.append("g"),a=i.insert("rect").attr("class","commit-label-bkg"),s=i.append("text").attr("x",n).attr("y",r.y+25).attr("class","commit-label").text(e.id),o=s.node()?.getBBox();if(o&&(a.attr("x",r.posWithOffset-o.width/2-Xu).attr("y",r.y+13.5).attr("width",o.width+2*Xu).attr("height",o.height+2*Xu),kr==="TB"||kr==="BT"?(a.attr("x",r.x-(o.width+4*Pc+5)).attr("y",r.y-12),s.attr("x",r.x-(o.width+4*Pc)).attr("y",r.y+o.height-12)):s.attr("x",r.posWithOffset-o.width/2),Xo.rotateCommitLabel))if(kr==="TB"||kr==="BT")s.attr("transform","rotate(-45, "+r.x+", "+r.y+")"),a.attr("transform","rotate(-45, "+r.x+", "+r.y+")");else{let l=-7.5-(o.width+10)/25*9.5,u=10+o.width/25*8.5;i.attr("transform","translate("+l+", "+u+") rotate(-45, "+n+", "+r.y+")")}}},"drawCommitLabel"),QDe=v((t,e,r,n)=>{if(e.tags.length>0){let i=0,a=0,s=0,o=[];for(let l of e.tags.reverse()){let u=t.insert("polygon"),h=t.append("circle"),f=t.append("text").attr("y",r.y-16-i).attr("class","tag-label").text(l),d=f.node()?.getBBox();if(!d)throw new Error("Tag bbox not found");a=Math.max(a,d.width),s=Math.max(s,d.height),f.attr("x",r.posWithOffset-d.width/2),o.push({tag:f,hole:h,rect:u,yOffset:i}),i+=20}for(let{tag:l,hole:u,rect:h,yOffset:f}of o){let d=s/2,p=r.y-19.2-f;if(h.attr("class","tag-label-bkg").attr("points",` ${n-a/2-Pc/2},${p+Xu} ${n-a/2-Pc/2},${p-Xu} ${r.posWithOffset-a/2-Pc},${p-d-Xu} ${r.posWithOffset+a/2+Pc},${p-d-Xu} ${r.posWithOffset+a/2+Pc},${p+d+Xu} ${r.posWithOffset-a/2-Pc},${p+d+Xu}`),u.attr("cy",p).attr("cx",n-a/2+Pc/2).attr("r",1.5).attr("class","tag-hole"),kr==="TB"||kr==="BT"){let g=n+f;h.attr("class","tag-label-bkg").attr("points",` ${r.x},${g+2} ${r.x},${g-2} ${r.x+lf},${g-d-2} ${r.x+lf+a+4},${g-d-2} ${r.x+lf+a+4},${g+d+2} ${r.x+lf},${g+d+2}`).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),u.attr("cx",r.x+Pc/2).attr("cy",g).attr("transform","translate(12,12) rotate(45, "+r.x+","+n+")"),l.attr("x",r.x+5).attr("y",g+3).attr("transform","translate(14,14) rotate(45, "+r.x+","+n+")")}}}},"drawCommitTags"),JDe=v(t=>{switch(t.customType??t.type){case nn.NORMAL:return"commit-normal";case nn.REVERSE:return"commit-reverse";case nn.HIGHLIGHT:return"commit-highlight";case nn.MERGE:return"commit-merge";case nn.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}},"getCommitClassType"),eOe=v((t,e,r,n)=>{let i={x:0,y:0};if(t.parents.length>0){let a=qle(t.parents);if(a){let s=n.get(a)??i;return e==="TB"?s.y+cf:e==="BT"?(n.get(t.id)??i).y-cf:s.x+cf}}else return e==="TB"?MT:e==="BT"?(n.get(t.id)??i).y-cf:0;return 0},"calculatePosition"),tOe=v((t,e,r)=>{let n=kr==="BT"&&r?e:e+lf,i=kr==="TB"||kr==="BT"?n:Ms.get(t.branch)?.pos,a=kr==="TB"||kr==="BT"?Ms.get(t.branch)?.pos:n;if(a===void 0||i===void 0)throw new Error(`Position were undefined for commit ${t.id}`);return{x:a,y:i,posWithOffset:n}},"getCommitPosition"),$le=v((t,e,r)=>{if(!Xo)throw new Error("GitGraph config not found");let n=t.append("g").attr("class","commit-bullets"),i=t.append("g").attr("class","commit-labels"),a=kr==="TB"||kr==="BT"?MT:0,s=[...e.keys()],o=Xo?.parallelCommits??!1,l=v((h,f)=>{let d=e.get(h)?.seq,p=e.get(f)?.seq;return d!==void 0&&p!==void 0?d-p:0},"sortKeys"),u=s.sort(l);kr==="BT"&&(o&&HDe(u,e,a),u=u.reverse()),u.forEach(h=>{let f=e.get(h);if(!f)throw new Error(`Commit not found for key ${h}`);o&&(a=eOe(f,kr,a,Ds));let d=tOe(f,a,o);if(r){let p=JDe(f),g=f.customType??f.type,m=Ms.get(f.branch)?.index??0;KDe(n,f,d,p,m,g),ZDe(i,f,d,a),QDe(i,f,d,a)}kr==="TB"||kr==="BT"?Ds.set(f.id,{x:d.x,y:d.posWithOffset}):Ds.set(f.id,{x:d.posWithOffset,y:d.y}),a=kr==="BT"&&o?a+cf:a+cf+lf,a>of&&(of=a)})},"drawCommits"),rOe=v((t,e,r,n,i)=>{let s=(kr==="TB"||kr==="BT"?r.xu.branch===s,"isOnBranchToGetCurve"),l=v(u=>u.seq>t.seq&&u.seql(u)&&o(u))},"shouldRerouteArrow"),H2=v((t,e,r=0)=>{let n=t+Math.abs(t-e)/2;if(r>5)return n;if(DT.every(s=>Math.abs(s-n)>=10))return DT.push(n),n;let a=Math.abs(t-e);return H2(t,e-a/5,r+1)},"findLane"),nOe=v((t,e,r,n)=>{let i=Ds.get(e.id),a=Ds.get(r.id);if(i===void 0||a===void 0)throw new Error(`Commit positions not found for commits ${e.id} and ${r.id}`);let s=rOe(e,r,i,a,n),o="",l="",u=0,h=0,f=Ms.get(r.branch)?.index;r.type===nn.MERGE&&e.id!==r.parents[0]&&(f=Ms.get(e.branch)?.index);let d;if(s){o="A 10 10, 0, 0, 0,",l="A 10 10, 0, 0, 1,",u=10,h=10;let p=i.ya.x&&(o="A 20 20, 0, 0, 0,",l="A 20 20, 0, 0, 1,",u=20,h=20,r.type===nn.MERGE&&e.id!==r.parents[0]?d=`M ${i.x} ${i.y} L ${i.x} ${a.y-u} ${l} ${i.x-h} ${a.y} L ${a.x} ${a.y}`:d=`M ${i.x} ${i.y} L ${a.x+u} ${i.y} ${o} ${a.x} ${i.y+h} L ${a.x} ${a.y}`),i.x===a.x&&(d=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):kr==="BT"?(i.xa.x&&(o="A 20 20, 0, 0, 0,",l="A 20 20, 0, 0, 1,",u=20,h=20,r.type===nn.MERGE&&e.id!==r.parents[0]?d=`M ${i.x} ${i.y} L ${i.x} ${a.y+u} ${o} ${i.x-h} ${a.y} L ${a.x} ${a.y}`:d=`M ${i.x} ${i.y} L ${a.x-u} ${i.y} ${o} ${a.x} ${i.y-h} L ${a.x} ${a.y}`),i.x===a.x&&(d=`M ${i.x} ${i.y} L ${a.x} ${a.y}`)):(i.ya.y&&(r.type===nn.MERGE&&e.id!==r.parents[0]?d=`M ${i.x} ${i.y} L ${a.x-u} ${i.y} ${o} ${a.x} ${i.y-h} L ${a.x} ${a.y}`:d=`M ${i.x} ${i.y} L ${i.x} ${a.y+u} ${l} ${i.x+h} ${a.y} L ${a.x} ${a.y}`),i.y===a.y&&(d=`M ${i.x} ${i.y} L ${a.x} ${a.y}`));if(d===void 0)throw new Error("Line definition not found");t.append("path").attr("d",d).attr("class","arrow arrow"+f%p0)},"drawArrow"),iOe=v((t,e)=>{let r=t.append("g").attr("class","commit-arrows");[...e.keys()].forEach(n=>{let i=e.get(n);i.parents&&i.parents.length>0&&i.parents.forEach(a=>{nOe(r,e.get(a),i,e)})})},"drawArrows"),aOe=v((t,e)=>{let r=t.append("g");e.forEach((n,i)=>{let a=i%p0,s=Ms.get(n.name)?.pos;if(s===void 0)throw new Error(`Position not found for branch ${n.name}`);let o=r.append("line");o.attr("x1",0),o.attr("y1",s),o.attr("x2",of),o.attr("y2",s),o.attr("class","branch branch"+a),kr==="TB"?(o.attr("y1",MT),o.attr("x1",s),o.attr("y2",of),o.attr("x2",s)):kr==="BT"&&(o.attr("y1",of),o.attr("x1",s),o.attr("y2",MT),o.attr("x2",s)),DT.push(s);let l=n.name,u=Hle(l),h=r.insert("rect"),d=r.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+a);d.node().appendChild(u);let p=u.getBBox();h.attr("class","branchLabelBkg label"+a).attr("rx",4).attr("ry",4).attr("x",-p.width-4-(Xo?.rotateCommitLabel===!0?30:0)).attr("y",-p.height/2+8).attr("width",p.width+18).attr("height",p.height+4),d.attr("transform","translate("+(-p.width-14-(Xo?.rotateCommitLabel===!0?30:0))+", "+(s-p.height/2-1)+")"),kr==="TB"?(h.attr("x",s-p.width/2-10).attr("y",0),d.attr("transform","translate("+(s-p.width/2-5)+", 0)")):kr==="BT"?(h.attr("x",s-p.width/2-10).attr("y",of),d.attr("transform","translate("+(s-p.width/2-5)+", "+of+")")):h.attr("transform","translate(-19, "+(s-p.height/2)+")")})},"drawBranches"),sOe=v(function(t,e,r,n,i){return Ms.set(t,{pos:e,index:r}),e+=50+(i?40:0)+(kr==="TB"||kr==="BT"?n.width/2:0),e},"setBranchPosition"),oOe=v(function(t,e,r,n){if(VDe(),re.debug("in gitgraph renderer",t+` `,"id:",e,r),!Xo)throw new Error("GitGraph config not found");let i=Xo.rotateCommitLabel??!1,a=n.db;W2=a.getCommits();let s=a.getBranchesAsObjArray();kr=a.getDirection();let o=Ve(`[id="${e}"]`),l=0;s.forEach((u,h)=>{let f=Hle(u.name),d=o.append("g"),p=d.insert("g").attr("class","branchLabel"),g=p.insert("g").attr("class","label branch-label");g.node()?.appendChild(f);let m=f.getBBox();l=sOe(u.name,l,h,m,i),g.remove(),p.remove(),d.remove()}),$le(o,W2,!1),Xo.showBranches&&aOe(o,s),iOe(o,W2),$le(o,W2,!0),Ut.insertTitle(o,"gitTitleText",Xo.titleTopMargin??0,a.getDiagramTitle()),HS(void 0,o,Xo.diagramPadding,Xo.useMaxWidth)},"draw"),lOe={draw:oOe},cOe=v(t=>` .commit-id, .commit-msg, .branch-label { fill: lightgrey; color: lightgrey; font-family: 'trebuchet ms', verdana, arial, sans-serif; font-family: var(--mermaid-font-family); } ${[0,1,2,3,4,5,6,7].map(e=>` .branch-label${e} { fill: ${t["gitBranchLabel"+e]}; } .commit${e} { stroke: ${t["git"+e]}; fill: ${t["git"+e]}; } .commit-highlight${e} { stroke: ${t["gitInv"+e]}; fill: ${t["gitInv"+e]}; } .label${e} { fill: ${t["git"+e]}; } .arrow${e} { stroke: ${t["git"+e]}; } `).join(` `)} .branch { stroke-width: 1; stroke: ${t.lineColor}; stroke-dasharray: 2; } .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};} .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; } .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};} .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; } .tag-hole { fill: ${t.textColor}; } .commit-merge { stroke: ${t.primaryColor}; fill: ${t.primaryColor}; } .commit-reverse { stroke: ${t.primaryColor}; fill: ${t.primaryColor}; stroke-width: 3; } .commit-highlight-outer { } .commit-highlight-inner { stroke: ${t.primaryColor}; fill: ${t.primaryColor}; } .arrow { stroke-width: 8; stroke-linecap: round; fill: none} .gitTitleText { text-anchor: middle; font-size: 18px; fill: ${t.textColor}; } `,"getStyles"),uOe=cOe,hOe={parser:GDe,db:Wle,renderer:lOe,styles:uOe}});var jle=di((NI,II)=>{(function(t,e){typeof NI=="object"&&typeof II<"u"?II.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_isoWeek=e()})(NI,function(){"use strict";var t="day";return function(e,r,n){var i=function(o){return o.add(4-o.isoWeekday(),t)},a=r.prototype;a.isoWeekYear=function(){return i(this).year()},a.isoWeek=function(o){if(!this.$utils().u(o))return this.add(7*(o-this.isoWeek()),t);var l,u,h,f,d=i(this),p=(l=this.isoWeekYear(),u=this.$u,h=(u?n.utc:n)().year(l).startOf("year"),f=4-h.isoWeekday(),h.isoWeekday()>4&&(f+=7),h.add(f,t));return d.diff(p,"week")+1},a.isoWeekday=function(o){return this.$utils().u(o)?this.day()||7:this.day(this.day()%7?o:o-7)};var s=a.startOf;a.startOf=function(o,l){var u=this.$utils(),h=!!u.u(l)||l;return u.p(o)==="isoweek"?h?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):s.bind(this)(o,l)}}})});var Kle=di((MI,DI)=>{(function(t,e){typeof MI=="object"&&typeof DI<"u"?DI.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_customParseFormat=e()})(MI,function(){"use strict";var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,r=/\d/,n=/\d\d/,i=/\d\d?/,a=/\d*[^-_:/,()\s\d]+/,s={},o=function(g){return(g=+g)+(g>68?1900:2e3)},l=function(g){return function(m){this[g]=+m}},u=[/[+-]\d\d:?(\d\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=function(m){if(!m||m==="Z")return 0;var y=m.match(/([+-]|\d\d)/g),x=60*y[1]+(+y[2]||0);return x===0?0:y[0]==="+"?-x:x}(g)}],h=function(g){var m=s[g];return m&&(m.indexOf?m:m.s.concat(m.f))},f=function(g,m){var y,x=s.meridiem;if(x){for(var b=1;b<=24;b+=1)if(g.indexOf(x(b,0,m))>-1){y=b>12;break}}else y=g===(m?"pm":"PM");return y},d={A:[a,function(g){this.afternoon=f(g,!1)}],a:[a,function(g){this.afternoon=f(g,!0)}],Q:[r,function(g){this.month=3*(g-1)+1}],S:[r,function(g){this.milliseconds=100*+g}],SS:[n,function(g){this.milliseconds=10*+g}],SSS:[/\d{3}/,function(g){this.milliseconds=+g}],s:[i,l("seconds")],ss:[i,l("seconds")],m:[i,l("minutes")],mm:[i,l("minutes")],H:[i,l("hours")],h:[i,l("hours")],HH:[i,l("hours")],hh:[i,l("hours")],D:[i,l("day")],DD:[n,l("day")],Do:[a,function(g){var m=s.ordinal,y=g.match(/\d+/);if(this.day=y[0],m)for(var x=1;x<=31;x+=1)m(x).replace(/\[|\]/g,"")===g&&(this.day=x)}],w:[i,l("week")],ww:[n,l("week")],M:[i,l("month")],MM:[n,l("month")],MMM:[a,function(g){var m=h("months"),y=(h("monthsShort")||m.map(function(x){return x.slice(0,3)})).indexOf(g)+1;if(y<1)throw new Error;this.month=y%12||y}],MMMM:[a,function(g){var m=h("months").indexOf(g)+1;if(m<1)throw new Error;this.month=m%12||m}],Y:[/[+-]?\d+/,l("year")],YY:[n,function(g){this.year=o(g)}],YYYY:[/\d{4}/,l("year")],Z:u,ZZ:u};function p(g){var m,y;m=g,y=s&&s.formats;for(var x=(g=m.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(S,C,M){var R=M&&M.toUpperCase();return C||y[M]||t[M]||y[R].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(T,I,A){return I||A.slice(1)})})).match(e),b=x.length,w=0;w-1)return new Date((N==="X"?1e3:1)*D);var P=p(N)(D),$=P.year,z=P.month,H=P.day,J=P.hours,X=P.minutes,oe=P.seconds,K=P.milliseconds,ee=P.zone,Q=P.week,W=new Date,Y=H||($||z?1:W.getDate()),Z=$||W.getFullYear(),se=0;$&&!z||(se=z>0?z-1:W.getMonth());var ce,ue=J||0,te=X||0,Ne=oe||0,ae=K||0;return ee?new Date(Date.UTC(Z,se,Y,ue,te,Ne,ae+60*ee.offset*1e3)):O?new Date(Date.UTC(Z,se,Y,ue,te,Ne,ae)):(ce=new Date(Z,se,Y,ue,te,Ne,ae),Q&&(ce=B(ce).week(Q).toDate()),ce)}catch{return new Date("")}}(_,L,k,y),this.init(),R&&R!==!0&&(this.$L=this.locale(R).$L),M&&_!=this.format(L)&&(this.$d=new Date("")),s={}}else if(L instanceof Array)for(var T=L.length,I=1;I<=T;I+=1){E[1]=L[I-1];var A=y.apply(this,E);if(A.isValid()){this.$d=A.$d,this.$L=A.$L,this.init();break}I===T&&(this.$d=new Date(""))}else b.call(this,w)}}})});var Zle=di((OI,PI)=>{(function(t,e){typeof OI=="object"&&typeof PI<"u"?PI.exports=e():typeof define=="function"&&define.amd?define(e):(t=typeof globalThis<"u"?globalThis:t||self).dayjs_plugin_advancedFormat=e()})(OI,function(){"use strict";return function(t,e){var r=e.prototype,n=r.format;r.format=function(i){var a=this,s=this.$locale();if(!this.isValid())return n.bind(this)(i);var o=this.$utils(),l=(i||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(u){switch(u){case"Q":return Math.ceil((a.$M+1)/3);case"Do":return s.ordinal(a.$D);case"gggg":return a.weekYear();case"GGGG":return a.isoWeekYear();case"wo":return s.ordinal(a.week(),"W");case"w":case"ww":return o.s(a.week(),u==="w"?1:2,"0");case"W":case"WW":return o.s(a.isoWeek(),u==="W"?1:2,"0");case"k":case"kk":return o.s(String(a.$H===0?24:a.$H),u==="k"?1:2,"0");case"X":return Math.floor(a.$d.getTime()/1e3);case"x":return a.$d.getTime();case"z":return"["+a.offsetName()+"]";case"zzz":return"["+a.offsetName("long")+"]";default:return u}});return n.bind(this)(l)}}})});var dce={};vr(dce,{diagram:()=>tPe});function KI(t,e,r){let n=!0;for(;n;)n=!1,r.forEach(function(i){let a="^\\s*"+i+"\\s*$",s=new RegExp(a);t[0].match(s)&&(e[i]=!0,t.shift(1),n=!0)})}var tce,oo,rce,nce,ice,FT,BI,fOe,Qle,Bc,GI,UI,VI,q2,Y2,WI,HI,zT,Em,qI,ace,YI,X2,XI,jI,$T,FI,dOe,pOe,gOe,mOe,vOe,yOe,xOe,bOe,wOe,kOe,TOe,EOe,SOe,COe,AOe,_Oe,LOe,ROe,NOe,IOe,MOe,DOe,OOe,sce,POe,BOe,FOe,oce,zOe,zI,lce,cce,PT,Tm,$Oe,GOe,$I,BT,Ii,uce,UOe,m0,VOe,Jle,WOe,hce,HOe,fce,qOe,YOe,XOe,jOe,ece,KOe,ju,ZOe,QOe,JOe,ePe,tPe,pce=F(()=>{kn();or();tce=Gi(hp(),1),oo=Gi(nb(),1),rce=Gi(jle(),1),nce=Gi(Kle(),1),ice=Gi(Zle(),1),FT=Gi(nb(),1);lr();BI=function(){var t=v(function(I,A,D,N){for(D=D||{},N=I.length;N--;D[I[N]]=A);return D},"o"),e=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],r=[1,26],n=[1,27],i=[1,28],a=[1,29],s=[1,30],o=[1,31],l=[1,32],u=[1,33],h=[1,34],f=[1,9],d=[1,10],p=[1,11],g=[1,12],m=[1,13],y=[1,14],x=[1,15],b=[1,16],w=[1,19],_=[1,20],k=[1,21],E=[1,22],L=[1,23],S=[1,25],C=[1,35],M={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:v(function(A,D,N,O,B,P,$){var z=P.length-1;switch(B){case 1:return P[z-1];case 2:this.$=[];break;case 3:P[z-1].push(P[z]),this.$=P[z-1];break;case 4:case 5:this.$=P[z];break;case 6:case 7:this.$=[];break;case 8:O.setWeekday("monday");break;case 9:O.setWeekday("tuesday");break;case 10:O.setWeekday("wednesday");break;case 11:O.setWeekday("thursday");break;case 12:O.setWeekday("friday");break;case 13:O.setWeekday("saturday");break;case 14:O.setWeekday("sunday");break;case 15:O.setWeekend("friday");break;case 16:O.setWeekend("saturday");break;case 17:O.setDateFormat(P[z].substr(11)),this.$=P[z].substr(11);break;case 18:O.enableInclusiveEndDates(),this.$=P[z].substr(18);break;case 19:O.TopAxis(),this.$=P[z].substr(8);break;case 20:O.setAxisFormat(P[z].substr(11)),this.$=P[z].substr(11);break;case 21:O.setTickInterval(P[z].substr(13)),this.$=P[z].substr(13);break;case 22:O.setExcludes(P[z].substr(9)),this.$=P[z].substr(9);break;case 23:O.setIncludes(P[z].substr(9)),this.$=P[z].substr(9);break;case 24:O.setTodayMarker(P[z].substr(12)),this.$=P[z].substr(12);break;case 27:O.setDiagramTitle(P[z].substr(6)),this.$=P[z].substr(6);break;case 28:this.$=P[z].trim(),O.setAccTitle(this.$);break;case 29:case 30:this.$=P[z].trim(),O.setAccDescription(this.$);break;case 31:O.addSection(P[z].substr(8)),this.$=P[z].substr(8);break;case 33:O.addTask(P[z-1],P[z]),this.$="task";break;case 34:this.$=P[z-1],O.setClickEvent(P[z-1],P[z],null);break;case 35:this.$=P[z-2],O.setClickEvent(P[z-2],P[z-1],P[z]);break;case 36:this.$=P[z-2],O.setClickEvent(P[z-2],P[z-1],null),O.setLink(P[z-2],P[z]);break;case 37:this.$=P[z-3],O.setClickEvent(P[z-3],P[z-2],P[z-1]),O.setLink(P[z-3],P[z]);break;case 38:this.$=P[z-2],O.setClickEvent(P[z-2],P[z],null),O.setLink(P[z-2],P[z-1]);break;case 39:this.$=P[z-3],O.setClickEvent(P[z-3],P[z-1],P[z]),O.setLink(P[z-3],P[z-2]);break;case 40:this.$=P[z-1],O.setLink(P[z-1],P[z]);break;case 41:case 47:this.$=P[z-1]+" "+P[z];break;case 42:case 43:case 45:this.$=P[z-2]+" "+P[z-1]+" "+P[z];break;case 44:case 46:this.$=P[z-3]+" "+P[z-2]+" "+P[z-1]+" "+P[z];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:r,13:n,14:i,15:a,16:s,17:o,18:l,19:18,20:u,21:h,22:f,23:d,24:p,25:g,26:m,27:y,28:x,29:b,30:w,31:_,33:k,35:E,36:L,37:24,38:S,40:C},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:36,11:17,12:r,13:n,14:i,15:a,16:s,17:o,18:l,19:18,20:u,21:h,22:f,23:d,24:p,25:g,26:m,27:y,28:x,29:b,30:w,31:_,33:k,35:E,36:L,37:24,38:S,40:C},t(e,[2,5]),t(e,[2,6]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),t(e,[2,27]),{32:[1,37]},{34:[1,38]},t(e,[2,30]),t(e,[2,31]),t(e,[2,32]),{39:[1,39]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),{41:[1,40],43:[1,41]},t(e,[2,4]),t(e,[2,28]),t(e,[2,29]),t(e,[2,33]),t(e,[2,34],{42:[1,42],43:[1,43]}),t(e,[2,40],{41:[1,44]}),t(e,[2,35],{43:[1,45]}),t(e,[2,36]),t(e,[2,38],{42:[1,46]}),t(e,[2,37]),t(e,[2,39])],defaultActions:{},parseError:v(function(A,D){if(D.recoverable)this.trace(A);else{var N=new Error(A);throw N.hash=D,N}},"parseError"),parse:v(function(A){var D=this,N=[0],O=[],B=[null],P=[],$=this.table,z="",H=0,J=0,X=0,oe=2,K=1,ee=P.slice.call(arguments,1),Q=Object.create(this.lexer),W={yy:{}};for(var Y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Y)&&(W.yy[Y]=this.yy[Y]);Q.setInput(A,W.yy),W.yy.lexer=Q,W.yy.parser=this,typeof Q.yylloc>"u"&&(Q.yylloc={});var Z=Q.yylloc;P.push(Z);var se=Q.options&&Q.options.ranges;typeof W.yy.parseError=="function"?this.parseError=W.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ce(q){N.length=N.length-2*q,B.length=B.length-q,P.length=P.length-q}v(ce,"popStack");function ue(){var q;return q=O.pop()||Q.lex()||K,typeof q!="number"&&(q instanceof Array&&(O=q,q=O.pop()),q=D.symbols_[q]||q),q}v(ue,"lex");for(var te,Ne,ae,we,Ie,Ee,Oe={},De,We,Re,Pe;;){if(ae=N[N.length-1],this.defaultActions[ae]?we=this.defaultActions[ae]:((te===null||typeof te>"u")&&(te=ue()),we=$[ae]&&$[ae][te]),typeof we>"u"||!we.length||!we[0]){var xe="";Pe=[];for(De in $[ae])this.terminals_[De]&&De>oe&&Pe.push("'"+this.terminals_[De]+"'");Q.showPosition?xe="Parse error on line "+(H+1)+`: `+Q.showPosition()+` Expecting `+Pe.join(", ")+", got '"+(this.terminals_[te]||te)+"'":xe="Parse error on line "+(H+1)+": Unexpected "+(te==K?"end of input":"'"+(this.terminals_[te]||te)+"'"),this.parseError(xe,{text:Q.match,token:this.terminals_[te]||te,line:Q.yylineno,loc:Z,expected:Pe})}if(we[0]instanceof Array&&we.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ae+", token: "+te);switch(we[0]){case 1:N.push(te),B.push(Q.yytext),P.push(Q.yylloc),N.push(we[1]),te=null,Ne?(te=Ne,Ne=null):(J=Q.yyleng,z=Q.yytext,H=Q.yylineno,Z=Q.yylloc,X>0&&X--);break;case 2:if(We=this.productions_[we[1]][1],Oe.$=B[B.length-We],Oe._$={first_line:P[P.length-(We||1)].first_line,last_line:P[P.length-1].last_line,first_column:P[P.length-(We||1)].first_column,last_column:P[P.length-1].last_column},se&&(Oe._$.range=[P[P.length-(We||1)].range[0],P[P.length-1].range[1]]),Ee=this.performAction.apply(Oe,[z,J,H,W.yy,we[1],B,P].concat(ee)),typeof Ee<"u")return Ee;We&&(N=N.slice(0,-1*We*2),B=B.slice(0,-1*We),P=P.slice(0,-1*We)),N.push(this.productions_[we[1]][0]),B.push(Oe.$),P.push(Oe._$),Re=$[N[N.length-2]][N[N.length-1]],N.push(Re);break;case 3:return!0}}return!0},"parse")},R=function(){var I={EOF:1,parseError:v(function(D,N){if(this.yy.parser)this.yy.parser.parseError(D,N);else throw new Error(D)},"parseError"),setInput:v(function(A,D){return this.yy=D||this.yy||{},this._input=A,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var A=this._input[0];this.yytext+=A,this.yyleng++,this.offset++,this.match+=A,this.matched+=A;var D=A.match(/(?:\r\n?|\n).*/g);return D?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),A},"input"),unput:v(function(A){var D=A.length,N=A.split(/(?:\r\n?|\n)/g);this._input=A+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-D),this.offset-=D;var O=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),N.length-1&&(this.yylineno-=N.length-1);var B=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:N?(N.length===O.length?this.yylloc.first_column:0)+O[O.length-N.length].length-N[0].length:this.yylloc.first_column-D},this.options.ranges&&(this.yylloc.range=[B[0],B[0]+this.yyleng-D]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(A){this.unput(this.match.slice(A))},"less"),pastInput:v(function(){var A=this.matched.substr(0,this.matched.length-this.match.length);return(A.length>20?"...":"")+A.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var A=this.match;return A.length<20&&(A+=this._input.substr(0,20-A.length)),(A.substr(0,20)+(A.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var A=this.pastInput(),D=new Array(A.length+1).join("-");return A+this.upcomingInput()+` `+D+"^"},"showPosition"),test_match:v(function(A,D){var N,O,B;if(this.options.backtrack_lexer&&(B={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(B.yylloc.range=this.yylloc.range.slice(0))),O=A[0].match(/(?:\r\n?|\n).*/g),O&&(this.yylineno+=O.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:O?O[O.length-1].length-O[O.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+A[0].length},this.yytext+=A[0],this.match+=A[0],this.matches=A,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(A[0].length),this.matched+=A[0],N=this.performAction.call(this,this.yy,this,D,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),N)return N;if(this._backtrack){for(var P in B)this[P]=B[P];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var A,D,N,O;this._more||(this.yytext="",this.match="");for(var B=this._currentRules(),P=0;PD[0].length)){if(D=N,O=P,this.options.backtrack_lexer){if(A=this.test_match(N,B[P]),A!==!1)return A;if(this._backtrack){D=!1;continue}else return!1}else if(!this.options.flex)break}return D?(A=this.test_match(D,B[O]),A!==!1?A:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var D=this.next();return D||this.lex()},"lex"),begin:v(function(D){this.conditionStack.push(D)},"begin"),popState:v(function(){var D=this.conditionStack.length-1;return D>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(D){return D=this.conditionStack.length-1-Math.abs(D||0),D>=0?this.conditionStack[D]:"INITIAL"},"topState"),pushState:v(function(D){this.begin(D)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:v(function(D,N,O,B){var P=B;switch(O){case 0:return this.begin("open_directive"),"open_directive";break;case 1:return this.begin("acc_title"),31;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),33;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 43;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 21:this.popState();break;case 22:return 42;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}},"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}};return I}();M.lexer=R;function T(){this.yy={}}return v(T,"Parser"),T.prototype=M,M.Parser=T,new T}();BI.parser=BI;fOe=BI;oo.default.extend(rce.default);oo.default.extend(nce.default);oo.default.extend(ice.default);Qle={friday:5,saturday:6},Bc="",GI="",UI=void 0,VI="",q2=[],Y2=[],WI=new Map,HI=[],zT=[],Em="",qI="",ace=["active","done","crit","milestone"],YI=[],X2=!1,XI=!1,jI="sunday",$T="saturday",FI=0,dOe=v(function(){HI=[],zT=[],Em="",YI=[],PT=0,$I=void 0,BT=void 0,Ii=[],Bc="",GI="",qI="",UI=void 0,VI="",q2=[],Y2=[],X2=!1,XI=!1,FI=0,WI=new Map,xr(),jI="sunday",$T="saturday"},"clear"),pOe=v(function(t){GI=t},"setAxisFormat"),gOe=v(function(){return GI},"getAxisFormat"),mOe=v(function(t){UI=t},"setTickInterval"),vOe=v(function(){return UI},"getTickInterval"),yOe=v(function(t){VI=t},"setTodayMarker"),xOe=v(function(){return VI},"getTodayMarker"),bOe=v(function(t){Bc=t},"setDateFormat"),wOe=v(function(){X2=!0},"enableInclusiveEndDates"),kOe=v(function(){return X2},"endDatesAreInclusive"),TOe=v(function(){XI=!0},"enableTopAxis"),EOe=v(function(){return XI},"topAxisEnabled"),SOe=v(function(t){qI=t},"setDisplayMode"),COe=v(function(){return qI},"getDisplayMode"),AOe=v(function(){return Bc},"getDateFormat"),_Oe=v(function(t){q2=t.toLowerCase().split(/[\s,]+/)},"setIncludes"),LOe=v(function(){return q2},"getIncludes"),ROe=v(function(t){Y2=t.toLowerCase().split(/[\s,]+/)},"setExcludes"),NOe=v(function(){return Y2},"getExcludes"),IOe=v(function(){return WI},"getLinks"),MOe=v(function(t){Em=t,HI.push(t)},"addSection"),DOe=v(function(){return HI},"getSections"),OOe=v(function(){let t=Jle(),e=10,r=0;for(;!t&&r[\d\w- ]+)/.exec(r);if(i!==null){let s=null;for(let l of i.groups.ids.split(" ")){let u=m0(l);u!==void 0&&(!s||u.endTime>s.endTime)&&(s=u)}if(s)return s.endTime;let o=new Date;return o.setHours(0,0,0,0),o}let a=(0,oo.default)(r,e.trim(),!0);if(a.isValid())return a.toDate();{re.debug("Invalid date:"+r),re.debug("With date format:"+e.trim());let s=new Date(r);if(s===void 0||isNaN(s.getTime())||s.getFullYear()<-1e4||s.getFullYear()>1e4)throw new Error("Invalid date:"+r);return s}},"getStartDate"),lce=v(function(t){let e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return e!==null?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]},"parseDuration"),cce=v(function(t,e,r,n=!1){r=r.trim();let a=/^until\s+(?[\d\w- ]+)/.exec(r);if(a!==null){let h=null;for(let d of a.groups.ids.split(" ")){let p=m0(d);p!==void 0&&(!h||p.startTime{window.open(r,"_self")}),WI.set(n,r))}),hce(t,"clickable")},"setLink"),hce=v(function(t,e){t.split(",").forEach(function(r){let n=m0(r);n!==void 0&&n.classes.push(e)})},"setClass"),HOe=v(function(t,e,r){if(pe().securityLevel!=="loose"||e===void 0)return;let n=[];if(typeof r=="string"){n=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let a=0;a{Ut.runFunc(e,...n)})},"setClickFun"),fce=v(function(t,e){YI.push(function(){let r=document.querySelector(`[id="${t}"]`);r!==null&&r.addEventListener("click",function(){e()})},function(){let r=document.querySelector(`[id="${t}-text"]`);r!==null&&r.addEventListener("click",function(){e()})})},"pushFun"),qOe=v(function(t,e,r){t.split(",").forEach(function(n){HOe(n,e,r)}),hce(t,"clickable")},"setClickEvent"),YOe=v(function(t){YI.forEach(function(e){e(t)})},"bindFunctions"),XOe={getConfig:v(()=>pe().gantt,"getConfig"),clear:dOe,setDateFormat:bOe,getDateFormat:AOe,enableInclusiveEndDates:wOe,endDatesAreInclusive:kOe,enableTopAxis:TOe,topAxisEnabled:EOe,setAxisFormat:pOe,getAxisFormat:gOe,setTickInterval:mOe,getTickInterval:vOe,setTodayMarker:yOe,getTodayMarker:xOe,setAccTitle:Tr,getAccTitle:_r,setDiagramTitle:tn,getDiagramTitle:qr,setDisplayMode:SOe,getDisplayMode:COe,setAccDescription:Lr,getAccDescription:Rr,addSection:MOe,getSections:DOe,getTasks:OOe,addTask:UOe,findTaskById:m0,addTaskOrg:VOe,setIncludes:_Oe,getIncludes:LOe,setExcludes:ROe,getExcludes:NOe,setClickEvent:qOe,setLink:WOe,getLinks:IOe,bindFunctions:YOe,parseDuration:lce,isInvalidDate:sce,setWeekday:POe,getWeekday:BOe,setWeekend:FOe};v(KI,"getTaskTags");jOe=v(function(){re.debug("Something is calling, setConf, remove the call")},"setConf"),ece={monday:wh,tuesday:t3,wednesday:r3,thursday:oc,friday:n3,saturday:i3,sunday:fl},KOe=v((t,e)=>{let r=[...t].map(()=>-1/0),n=[...t].sort((a,s)=>a.startTime-s.startTime||a.order-s.order),i=0;for(let a of n)for(let s=0;s=r[s]){r[s]=a.endTime,a.order=s+e,s>i&&(i=s);break}return i},"getMaxIntersections"),ZOe=v(function(t,e,r,n){let i=pe().gantt,a=pe().securityLevel,s;a==="sandbox"&&(s=Ve("#i"+e));let o=a==="sandbox"?Ve(s.nodes()[0].contentDocument.body):Ve("body"),l=a==="sandbox"?s.nodes()[0].contentDocument:document,u=l.getElementById(e);ju=u.parentElement.offsetWidth,ju===void 0&&(ju=1200),i.useWidth!==void 0&&(ju=i.useWidth);let h=n.db.getTasks(),f=[];for(let S of h)f.push(S.type);f=L(f);let d={},p=2*i.topPadding;if(n.db.getDisplayMode()==="compact"||i.displayMode==="compact"){let S={};for(let M of h)S[M.section]===void 0?S[M.section]=[M]:S[M.section].push(M);let C=0;for(let M of Object.keys(S)){let R=KOe(S[M],C)+1;C+=R,p+=R*(i.barHeight+i.barGap),d[M]=R}}else{p+=h.length*(i.barHeight+i.barGap);for(let S of f)d[S]=h.filter(C=>C.type===S).length}u.setAttribute("viewBox","0 0 "+ju+" "+p);let g=o.select(`[id="${e}"]`),m=o3().domain([d4(h,function(S){return S.startTime}),f4(h,function(S){return S.endTime})]).rangeRound([0,ju-i.leftPadding-i.rightPadding]);function y(S,C){let M=S.startTime,R=C.startTime,T=0;return M>R?T=1:M$.order))].map($=>S.find(z=>z.order===$));g.append("g").selectAll("rect").data(N).enter().append("rect").attr("x",0).attr("y",function($,z){return z=$.order,z*C+M-2}).attr("width",function(){return A-i.rightPadding/2}).attr("height",C).attr("class",function($){for(let[z,H]of f.entries())if($.type===H)return"section section"+z%i.numberSectionStyles;return"section section0"});let O=g.append("g").selectAll("rect").data(S).enter(),B=n.db.getLinks();if(O.append("rect").attr("id",function($){return $.id}).attr("rx",3).attr("ry",3).attr("x",function($){return $.milestone?m($.startTime)+R+.5*(m($.endTime)-m($.startTime))-.5*T:m($.startTime)+R}).attr("y",function($,z){return z=$.order,z*C+M}).attr("width",function($){return $.milestone?T:m($.renderEndTime||$.endTime)-m($.startTime)}).attr("height",T).attr("transform-origin",function($,z){return z=$.order,(m($.startTime)+R+.5*(m($.endTime)-m($.startTime))).toString()+"px "+(z*C+M+.5*T).toString()+"px"}).attr("class",function($){let z="task",H="";$.classes.length>0&&(H=$.classes.join(" "));let J=0;for(let[oe,K]of f.entries())$.type===K&&(J=oe%i.numberSectionStyles);let X="";return $.active?$.crit?X+=" activeCrit":X=" active":$.done?$.crit?X=" doneCrit":X=" done":$.crit&&(X+=" crit"),X.length===0&&(X=" task"),$.milestone&&(X=" milestone "+X),X+=J,X+=" "+H,z+X}),O.append("text").attr("id",function($){return $.id+"-text"}).text(function($){return $.task}).attr("font-size",i.fontSize).attr("x",function($){let z=m($.startTime),H=m($.renderEndTime||$.endTime);$.milestone&&(z+=.5*(m($.endTime)-m($.startTime))-.5*T),$.milestone&&(H=z+T);let J=this.getBBox().width;return J>H-z?H+J+1.5*i.leftPadding>A?z+R-5:H+R+5:(H-z)/2+z+R}).attr("y",function($,z){return z=$.order,z*C+i.barHeight/2+(i.fontSize/2-2)+M}).attr("text-height",T).attr("class",function($){let z=m($.startTime),H=m($.endTime);$.milestone&&(H=z+T);let J=this.getBBox().width,X="";$.classes.length>0&&(X=$.classes.join(" "));let oe=0;for(let[ee,Q]of f.entries())$.type===Q&&(oe=ee%i.numberSectionStyles);let K="";return $.active&&($.crit?K="activeCritText"+oe:K="activeText"+oe),$.done?$.crit?K=K+" doneCritText"+oe:K=K+" doneText"+oe:$.crit&&(K=K+" critText"+oe),$.milestone&&(K+=" milestoneText"),J>H-z?H+J+1.5*i.leftPadding>A?X+" taskTextOutsideLeft taskTextOutside"+oe+" "+K:X+" taskTextOutsideRight taskTextOutside"+oe+" "+K+" width-"+J:X+" taskText taskText"+oe+" "+K+" width-"+J}),pe().securityLevel==="sandbox"){let $;$=Ve("#i"+e);let z=$.nodes()[0].contentDocument;O.filter(function(H){return B.has(H.id)}).each(function(H){var J=z.querySelector("#"+H.id),X=z.querySelector("#"+H.id+"-text");let oe=J.parentNode;var K=z.createElement("a");K.setAttribute("xlink:href",B.get(H.id)),K.setAttribute("target","_top"),oe.appendChild(K),K.appendChild(J),K.appendChild(X)})}}v(b,"drawRects");function w(S,C,M,R,T,I,A,D){if(A.length===0&&D.length===0)return;let N,O;for(let{startTime:J,endTime:X}of I)(N===void 0||JO)&&(O=X);if(!N||!O)return;if((0,FT.default)(O).diff((0,FT.default)(N),"year")>5){re.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}let B=n.db.getDateFormat(),P=[],$=null,z=(0,FT.default)(N);for(;z.valueOf()<=O;)n.db.isInvalidDate(z,B,A,D)?$?$.end=z:$={start:z,end:z}:$&&(P.push($),$=null),z=z.add(1,"d");g.append("g").selectAll("rect").data(P).enter().append("rect").attr("id",function(J){return"exclude-"+J.start.format("YYYY-MM-DD")}).attr("x",function(J){return m(J.start)+M}).attr("y",i.gridLineStartPadding).attr("width",function(J){let X=J.end.add(1,"day");return m(X)-m(J.start)}).attr("height",T-C-i.gridLineStartPadding).attr("transform-origin",function(J,X){return(m(J.start)+M+.5*(m(J.end)-m(J.start))).toString()+"px "+(X*S+.5*T).toString()+"px"}).attr("class","exclude-range")}v(w,"drawExcludeDays");function _(S,C,M,R){let T=MC(m).tickSize(-R+C+i.gridLineStartPadding).tickFormat(cd(n.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d")),A=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(n.db.getTickInterval()||i.tickInterval);if(A!==null){let D=A[1],N=A[2],O=n.db.getWeekday()||i.weekday;switch(N){case"millisecond":T.ticks(ac.every(D));break;case"second":T.ticks(Ws.every(D));break;case"minute":T.ticks(gu.every(D));break;case"hour":T.ticks(mu.every(D));break;case"day":T.ticks(wo.every(D));break;case"week":T.ticks(ece[O].every(D));break;case"month":T.ticks(vu.every(D));break}}if(g.append("g").attr("class","grid").attr("transform","translate("+S+", "+(R-50)+")").call(T).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),n.db.topAxisEnabled()||i.topAxis){let D=IC(m).tickSize(-R+C+i.gridLineStartPadding).tickFormat(cd(n.db.getAxisFormat()||i.axisFormat||"%Y-%m-%d"));if(A!==null){let N=A[1],O=A[2],B=n.db.getWeekday()||i.weekday;switch(O){case"millisecond":D.ticks(ac.every(N));break;case"second":D.ticks(Ws.every(N));break;case"minute":D.ticks(gu.every(N));break;case"hour":D.ticks(mu.every(N));break;case"day":D.ticks(wo.every(N));break;case"week":D.ticks(ece[B].every(N));break;case"month":D.ticks(vu.every(N));break}}g.append("g").attr("class","grid").attr("transform","translate("+S+", "+C+")").call(D).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}v(_,"makeGrid");function k(S,C){let M=0,R=Object.keys(d).map(T=>[T,d[T]]);g.append("g").selectAll("text").data(R).enter().append(function(T){let I=T[0].split(Xe.lineBreakRegex),A=-(I.length-1)/2,D=l.createElementNS("http://www.w3.org/2000/svg","text");D.setAttribute("dy",A+"em");for(let[N,O]of I.entries()){let B=l.createElementNS("http://www.w3.org/2000/svg","tspan");B.setAttribute("alignment-baseline","central"),B.setAttribute("x","10"),N>0&&B.setAttribute("dy","1em"),B.textContent=O,D.appendChild(B)}return D}).attr("x",10).attr("y",function(T,I){if(I>0)for(let A=0;A` .mermaid-main-font { font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); } .exclude-range { fill: ${t.excludeBkgColor}; } .section { stroke: none; opacity: 0.2; } .section0 { fill: ${t.sectionBkgColor}; } .section2 { fill: ${t.sectionBkgColor2}; } .section1, .section3 { fill: ${t.altSectionBkgColor}; opacity: 0.2; } .sectionTitle0 { fill: ${t.titleColor}; } .sectionTitle1 { fill: ${t.titleColor}; } .sectionTitle2 { fill: ${t.titleColor}; } .sectionTitle3 { fill: ${t.titleColor}; } .sectionTitle { text-anchor: start; font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); } /* Grid and axis */ .grid .tick { stroke: ${t.gridColor}; opacity: 0.8; shape-rendering: crispEdges; } .grid .tick text { font-family: ${t.fontFamily}; fill: ${t.textColor}; } .grid path { stroke-width: 0; } /* Today line */ .today { fill: none; stroke: ${t.todayLineColor}; stroke-width: 2px; } /* Task styling */ /* Default task */ .task { stroke-width: 2; } .taskText { text-anchor: middle; font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); } .taskTextOutsideRight { fill: ${t.taskTextDarkColor}; text-anchor: start; font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); } .taskTextOutsideLeft { fill: ${t.taskTextDarkColor}; text-anchor: end; } /* Special case clickable */ .task.clickable { cursor: pointer; } .taskText.clickable { cursor: pointer; fill: ${t.taskTextClickableColor} !important; font-weight: bold; } .taskTextOutsideLeft.clickable { cursor: pointer; fill: ${t.taskTextClickableColor} !important; font-weight: bold; } .taskTextOutsideRight.clickable { cursor: pointer; fill: ${t.taskTextClickableColor} !important; font-weight: bold; } /* Specific task settings for the sections*/ .taskText0, .taskText1, .taskText2, .taskText3 { fill: ${t.taskTextColor}; } .task0, .task1, .task2, .task3 { fill: ${t.taskBkgColor}; stroke: ${t.taskBorderColor}; } .taskTextOutside0, .taskTextOutside2 { fill: ${t.taskTextOutsideColor}; } .taskTextOutside1, .taskTextOutside3 { fill: ${t.taskTextOutsideColor}; } /* Active task */ .active0, .active1, .active2, .active3 { fill: ${t.activeTaskBkgColor}; stroke: ${t.activeTaskBorderColor}; } .activeText0, .activeText1, .activeText2, .activeText3 { fill: ${t.taskTextDarkColor} !important; } /* Completed task */ .done0, .done1, .done2, .done3 { stroke: ${t.doneTaskBorderColor}; fill: ${t.doneTaskBkgColor}; stroke-width: 2; } .doneText0, .doneText1, .doneText2, .doneText3 { fill: ${t.taskTextDarkColor} !important; } /* Tasks on the critical line */ .crit0, .crit1, .crit2, .crit3 { stroke: ${t.critBorderColor}; fill: ${t.critBkgColor}; stroke-width: 2; } .activeCrit0, .activeCrit1, .activeCrit2, .activeCrit3 { stroke: ${t.critBorderColor}; fill: ${t.activeTaskBkgColor}; stroke-width: 2; } .doneCrit0, .doneCrit1, .doneCrit2, .doneCrit3 { stroke: ${t.critBorderColor}; fill: ${t.doneTaskBkgColor}; stroke-width: 2; cursor: pointer; shape-rendering: crispEdges; } .milestone { transform: rotate(45deg) scale(0.8,0.8); } .milestoneText { font-style: italic; } .doneCritText0, .doneCritText1, .doneCritText2, .doneCritText3 { fill: ${t.taskTextDarkColor} !important; } .activeCritText0, .activeCritText1, .activeCritText2, .activeCritText3 { fill: ${t.taskTextDarkColor} !important; } .titleText { text-anchor: middle; font-size: 18px; fill: ${t.titleColor||t.textColor}; font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); } `,"getStyles"),ePe=JOe,tPe={parser:fOe,db:XOe,renderer:QOe,styles:ePe}});var gce={};vr(gce,{diagram:()=>lPe});var rPe,nPe,iPe,aPe,sPe,oPe,lPe,mce=F(()=>{o9();Iu();or();km();rPe={parse:v(async t=>{let e=await Nl("info",t);re.debug(e)},"parse")},nPe={version:dy},iPe=v(()=>nPe.version,"getVersion"),aPe={getVersion:iPe},sPe=v((t,e,r)=>{re.debug(`rendering info diagram `+t);let n=La(e);Hr(n,100,400,!0),n.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${r}`)},"draw"),oPe={draw:sPe},lPe={parser:rPe,db:aPe,renderer:oPe}});var xce={};vr(xce,{diagram:()=>TPe});var vce,ZI,GT,QI,cPe,uPe,hPe,fPe,dPe,pPe,gPe,yce,mPe,vPe,yPe,xPe,bPe,wPe,kPe,TPe,bce=F(()=>{ky();kn();Iu();or();km();lr();vce=sr.pie,ZI={sections:new Map,showData:!1,config:vce},GT=ZI.sections,QI=ZI.showData,cPe=structuredClone(vce),uPe=v(()=>structuredClone(cPe),"getConfig"),hPe=v(()=>{GT=new Map,QI=ZI.showData,xr()},"clear"),fPe=v(({label:t,value:e})=>{GT.has(t)||(GT.set(t,e),re.debug(`added new section: ${t}, with value: ${e}`))},"addSection"),dPe=v(()=>GT,"getSections"),pPe=v(t=>{QI=t},"setShowData"),gPe=v(()=>QI,"getShowData"),yce={getConfig:uPe,clear:hPe,setDiagramTitle:tn,getDiagramTitle:qr,setAccTitle:Tr,getAccTitle:_r,setAccDescription:Lr,getAccDescription:Rr,addSection:fPe,getSections:dPe,setShowData:pPe,getShowData:gPe},mPe=v((t,e)=>{Pu(t,e),e.setShowData(t.showData),t.sections.map(e.addSection)},"populateDb"),vPe={parse:v(async t=>{let e=await Nl("pie",t);re.debug(e),mPe(e,yce)},"parse")},yPe=v(t=>` .pieCircle{ stroke: ${t.pieStrokeColor}; stroke-width : ${t.pieStrokeWidth}; opacity : ${t.pieOpacity}; } .pieOuterCircle{ stroke: ${t.pieOuterStrokeColor}; stroke-width: ${t.pieOuterStrokeWidth}; fill: none; } .pieTitleText { text-anchor: middle; font-size: ${t.pieTitleTextSize}; fill: ${t.pieTitleTextColor}; font-family: ${t.fontFamily}; } .slice { font-family: ${t.fontFamily}; fill: ${t.pieSectionTextColor}; font-size:${t.pieSectionTextSize}; // fill: white; } .legend text { fill: ${t.pieLegendTextColor}; font-family: ${t.fontFamily}; font-size: ${t.pieLegendTextSize}; } `,"getStyles"),xPe=yPe,bPe=v(t=>{let e=[...t.entries()].map(n=>({label:n[0],value:n[1]})).sort((n,i)=>i.value-n.value);return h8().value(n=>n.value)(e)},"createPieArcs"),wPe=v((t,e,r,n)=>{re.debug(`rendering pie chart `+t);let i=n.db,a=pe(),s=ws(i.getConfig(),a.pie),o=40,l=18,u=4,h=450,f=h,d=La(e),p=d.append("g");p.attr("transform","translate("+f/2+","+h/2+")");let{themeVariables:g}=a,[m]=Ro(g.pieOuterStrokeWidth);m??=2;let y=s.textPosition,x=Math.min(f,h)/2-o,b=lc().innerRadius(0).outerRadius(x),w=lc().innerRadius(x*y).outerRadius(x*y);p.append("circle").attr("cx",0).attr("cy",0).attr("r",x+m/2).attr("class","pieOuterCircle");let _=i.getSections(),k=bPe(_),E=[g.pie1,g.pie2,g.pie3,g.pie4,g.pie5,g.pie6,g.pie7,g.pie8,g.pie9,g.pie10,g.pie11,g.pie12],L=du(E);p.selectAll("mySlices").data(k).enter().append("path").attr("d",b).attr("fill",T=>L(T.data.label)).attr("class","pieCircle");let S=0;_.forEach(T=>{S+=T}),p.selectAll("mySlices").data(k).enter().append("text").text(T=>(T.data.value/S*100).toFixed(0)+"%").attr("transform",T=>"translate("+w.centroid(T)+")").style("text-anchor","middle").attr("class","slice"),p.append("text").text(i.getDiagramTitle()).attr("x",0).attr("y",-(h-50)/2).attr("class","pieTitleText");let C=p.selectAll(".legend").data(L.domain()).enter().append("g").attr("class","legend").attr("transform",(T,I)=>{let A=l+u,D=A*L.domain().length/2,N=12*l,O=I*A-D;return"translate("+N+","+O+")"});C.append("rect").attr("width",l).attr("height",l).style("fill",L).style("stroke",L),C.data(k).append("text").attr("x",l+u).attr("y",l-u).text(T=>{let{label:I,value:A}=T.data;return i.getShowData()?`${I} [${A}]`:I});let M=Math.max(...C.selectAll("text").nodes().map(T=>T?.getBoundingClientRect().width??0)),R=f+o+l+u+M;d.attr("viewBox",`0 0 ${R} ${h}`),Hr(d,h,R,s.useMaxWidth)},"draw"),kPe={draw:wPe},TPe={parser:vPe,db:yce,renderer:kPe,styles:xPe}});var Pce={};vr(Pce,{diagram:()=>NPe});function eM(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function wce(t){return!/^\d+$/.test(t)}function kce(t){return!/^\d+px$/.test(t)}function Fc(t){return yr(t.trim(),CPe)}function Tce(t){ma.setData({quadrant1Text:Fc(t.text)})}function Ece(t){ma.setData({quadrant2Text:Fc(t.text)})}function Sce(t){ma.setData({quadrant3Text:Fc(t.text)})}function Cce(t){ma.setData({quadrant4Text:Fc(t.text)})}function Ace(t){ma.setData({xAxisLeftText:Fc(t.text)})}function _ce(t){ma.setData({xAxisRightText:Fc(t.text)})}function Lce(t){ma.setData({yAxisTopText:Fc(t.text)})}function Rce(t){ma.setData({yAxisBottomText:Fc(t.text)})}function VT(t){let e={};for(let r of t){let[n,i]=r.trim().split(/\s*:\s*/);if(n==="radius"){if(wce(i))throw new UT(n,i,"number");e.radius=parseInt(i)}else if(n==="color"){if(eM(i))throw new UT(n,i,"hex code");e.color=i}else if(n==="stroke-color"){if(eM(i))throw new UT(n,i,"hex code");e.strokeColor=i}else if(n==="stroke-width"){if(kce(i))throw new UT(n,i,"number of pixels (eg. 10px)");e.strokeWidth=i}else throw new Error(`style named ${n} is not supported.`)}return e}function Nce(t,e,r,n,i){let a=VT(i);ma.addPoints([{x:r,y:n,text:Fc(t.text),className:e,...a}])}function Ice(t,e){ma.addClass(t,VT(e))}function Mce(t){ma.setConfig({chartWidth:t})}function Dce(t){ma.setConfig({chartHeight:t})}function Oce(){let t=pe(),{themeVariables:e,quadrantChart:r}=t;return r&&ma.setConfig(r),ma.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),ma.setData({titleText:qr()}),ma.build()}var JI,EPe,as,SPe,UT,CPe,ma,APe,_Pe,LPe,RPe,NPe,Bce=F(()=>{or();lr();lr();JI=function(){var t=v(function(ke,j,ye,Ae){for(ye=ye||{},Ae=ke.length;Ae--;ye[ke[Ae]]=j);return ye},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[1,7],s=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],o=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[55,56,57],u=[2,36],h=[1,37],f=[1,36],d=[1,38],p=[1,35],g=[1,43],m=[1,41],y=[1,14],x=[1,23],b=[1,18],w=[1,19],_=[1,20],k=[1,21],E=[1,22],L=[1,24],S=[1,25],C=[1,26],M=[1,27],R=[1,28],T=[1,29],I=[1,32],A=[1,33],D=[1,34],N=[1,39],O=[1,40],B=[1,42],P=[1,44],$=[1,62],z=[1,61],H=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],J=[1,65],X=[1,66],oe=[1,67],K=[1,68],ee=[1,69],Q=[1,70],W=[1,71],Y=[1,72],Z=[1,73],se=[1,74],ce=[1,75],ue=[1,76],te=[4,5,6,7,8,9,10,11,12,13,14,15,18],Ne=[1,90],ae=[1,91],we=[1,92],Ie=[1,99],Ee=[1,93],Oe=[1,96],De=[1,94],We=[1,95],Re=[1,97],Pe=[1,98],xe=[1,102],q=[10,55,56,57],de=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],ie={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:v(function(j,ye,Ae,Ge,Fe,ge,$e){var Ce=ge.length-1;switch(Fe){case 23:this.$=ge[Ce];break;case 24:this.$=ge[Ce-1]+""+ge[Ce];break;case 26:this.$=ge[Ce-1]+ge[Ce];break;case 27:this.$=[ge[Ce].trim()];break;case 28:ge[Ce-2].push(ge[Ce].trim()),this.$=ge[Ce-2];break;case 29:this.$=ge[Ce-4],Ge.addClass(ge[Ce-2],ge[Ce]);break;case 37:this.$=[];break;case 42:this.$=ge[Ce].trim(),Ge.setDiagramTitle(this.$);break;case 43:this.$=ge[Ce].trim(),Ge.setAccTitle(this.$);break;case 44:case 45:this.$=ge[Ce].trim(),Ge.setAccDescription(this.$);break;case 46:Ge.addSection(ge[Ce].substr(8)),this.$=ge[Ce].substr(8);break;case 47:Ge.addPoint(ge[Ce-3],"",ge[Ce-1],ge[Ce],[]);break;case 48:Ge.addPoint(ge[Ce-4],ge[Ce-3],ge[Ce-1],ge[Ce],[]);break;case 49:Ge.addPoint(ge[Ce-4],"",ge[Ce-2],ge[Ce-1],ge[Ce]);break;case 50:Ge.addPoint(ge[Ce-5],ge[Ce-4],ge[Ce-2],ge[Ce-1],ge[Ce]);break;case 51:Ge.setXAxisLeftText(ge[Ce-2]),Ge.setXAxisRightText(ge[Ce]);break;case 52:ge[Ce-1].text+=" \u27F6 ",Ge.setXAxisLeftText(ge[Ce-1]);break;case 53:Ge.setXAxisLeftText(ge[Ce]);break;case 54:Ge.setYAxisBottomText(ge[Ce-2]),Ge.setYAxisTopText(ge[Ce]);break;case 55:ge[Ce-1].text+=" \u27F6 ",Ge.setYAxisBottomText(ge[Ce-1]);break;case 56:Ge.setYAxisBottomText(ge[Ce]);break;case 57:Ge.setQuadrant1Text(ge[Ce]);break;case 58:Ge.setQuadrant2Text(ge[Ce]);break;case 59:Ge.setQuadrant3Text(ge[Ce]);break;case 60:Ge.setQuadrant4Text(ge[Ce]);break;case 64:this.$={text:ge[Ce],type:"text"};break;case 65:this.$={text:ge[Ce-1].text+""+ge[Ce],type:ge[Ce-1].type};break;case 66:this.$={text:ge[Ce],type:"text"};break;case 67:this.$={text:ge[Ce],type:"markdown"};break;case 68:this.$=ge[Ce];break;case 69:this.$=ge[Ce-1]+""+ge[Ce];break}},"anonymous"),table:[{18:e,26:1,27:2,28:r,55:n,56:i,57:a},{1:[3]},{18:e,26:8,27:2,28:r,55:n,56:i,57:a},{18:e,26:9,27:2,28:r,55:n,56:i,57:a},t(s,[2,33],{29:10}),t(o,[2,61]),t(o,[2,62]),t(o,[2,63]),{1:[2,30]},{1:[2,31]},t(l,u,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:h,5:f,10:d,12:p,13:g,14:m,18:y,25:x,35:b,37:w,39:_,41:k,42:E,48:L,50:S,51:C,52:M,53:R,54:T,60:I,61:A,63:D,64:N,65:O,66:B,67:P}),t(s,[2,34]),{27:45,55:n,56:i,57:a},t(l,[2,37]),t(l,u,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:h,5:f,10:d,12:p,13:g,14:m,18:y,25:x,35:b,37:w,39:_,41:k,42:E,48:L,50:S,51:C,52:M,53:R,54:T,60:I,61:A,63:D,64:N,65:O,66:B,67:P}),t(l,[2,39]),t(l,[2,40]),t(l,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(l,[2,45]),t(l,[2,46]),{18:[1,50]},{4:h,5:f,10:d,12:p,13:g,14:m,43:51,58:31,60:I,61:A,63:D,64:N,65:O,66:B,67:P},{4:h,5:f,10:d,12:p,13:g,14:m,43:52,58:31,60:I,61:A,63:D,64:N,65:O,66:B,67:P},{4:h,5:f,10:d,12:p,13:g,14:m,43:53,58:31,60:I,61:A,63:D,64:N,65:O,66:B,67:P},{4:h,5:f,10:d,12:p,13:g,14:m,43:54,58:31,60:I,61:A,63:D,64:N,65:O,66:B,67:P},{4:h,5:f,10:d,12:p,13:g,14:m,43:55,58:31,60:I,61:A,63:D,64:N,65:O,66:B,67:P},{4:h,5:f,10:d,12:p,13:g,14:m,43:56,58:31,60:I,61:A,63:D,64:N,65:O,66:B,67:P},{4:h,5:f,8:$,10:d,12:p,13:g,14:m,18:z,44:[1,57],47:[1,58],58:60,59:59,63:D,64:N,65:O,66:B,67:P},t(H,[2,64]),t(H,[2,66]),t(H,[2,67]),t(H,[2,70]),t(H,[2,71]),t(H,[2,72]),t(H,[2,73]),t(H,[2,74]),t(H,[2,75]),t(H,[2,76]),t(H,[2,77]),t(H,[2,78]),t(H,[2,79]),t(H,[2,80]),t(s,[2,35]),t(l,[2,38]),t(l,[2,42]),t(l,[2,43]),t(l,[2,44]),{3:64,4:J,5:X,6:oe,7:K,8:ee,9:Q,10:W,11:Y,12:Z,13:se,14:ce,15:ue,21:63},t(l,[2,53],{59:59,58:60,4:h,5:f,8:$,10:d,12:p,13:g,14:m,18:z,49:[1,77],63:D,64:N,65:O,66:B,67:P}),t(l,[2,56],{59:59,58:60,4:h,5:f,8:$,10:d,12:p,13:g,14:m,18:z,49:[1,78],63:D,64:N,65:O,66:B,67:P}),t(l,[2,57],{59:59,58:60,4:h,5:f,8:$,10:d,12:p,13:g,14:m,18:z,63:D,64:N,65:O,66:B,67:P}),t(l,[2,58],{59:59,58:60,4:h,5:f,8:$,10:d,12:p,13:g,14:m,18:z,63:D,64:N,65:O,66:B,67:P}),t(l,[2,59],{59:59,58:60,4:h,5:f,8:$,10:d,12:p,13:g,14:m,18:z,63:D,64:N,65:O,66:B,67:P}),t(l,[2,60],{59:59,58:60,4:h,5:f,8:$,10:d,12:p,13:g,14:m,18:z,63:D,64:N,65:O,66:B,67:P}),{45:[1,79]},{44:[1,80]},t(H,[2,65]),t(H,[2,81]),t(H,[2,82]),t(H,[2,83]),{3:82,4:J,5:X,6:oe,7:K,8:ee,9:Q,10:W,11:Y,12:Z,13:se,14:ce,15:ue,18:[1,81]},t(te,[2,23]),t(te,[2,1]),t(te,[2,2]),t(te,[2,3]),t(te,[2,4]),t(te,[2,5]),t(te,[2,6]),t(te,[2,7]),t(te,[2,8]),t(te,[2,9]),t(te,[2,10]),t(te,[2,11]),t(te,[2,12]),t(l,[2,52],{58:31,43:83,4:h,5:f,10:d,12:p,13:g,14:m,60:I,61:A,63:D,64:N,65:O,66:B,67:P}),t(l,[2,55],{58:31,43:84,4:h,5:f,10:d,12:p,13:g,14:m,60:I,61:A,63:D,64:N,65:O,66:B,67:P}),{46:[1,85]},{45:[1,86]},{4:Ne,5:ae,6:we,8:Ie,11:Ee,13:Oe,16:89,17:De,18:We,19:Re,20:Pe,22:88,23:87},t(te,[2,24]),t(l,[2,51],{59:59,58:60,4:h,5:f,8:$,10:d,12:p,13:g,14:m,18:z,63:D,64:N,65:O,66:B,67:P}),t(l,[2,54],{59:59,58:60,4:h,5:f,8:$,10:d,12:p,13:g,14:m,18:z,63:D,64:N,65:O,66:B,67:P}),t(l,[2,47],{22:88,16:89,23:100,4:Ne,5:ae,6:we,8:Ie,11:Ee,13:Oe,17:De,18:We,19:Re,20:Pe}),{46:[1,101]},t(l,[2,29],{10:xe}),t(q,[2,27],{16:103,4:Ne,5:ae,6:we,8:Ie,11:Ee,13:Oe,17:De,18:We,19:Re,20:Pe}),t(de,[2,25]),t(de,[2,13]),t(de,[2,14]),t(de,[2,15]),t(de,[2,16]),t(de,[2,17]),t(de,[2,18]),t(de,[2,19]),t(de,[2,20]),t(de,[2,21]),t(de,[2,22]),t(l,[2,49],{10:xe}),t(l,[2,48],{22:88,16:89,23:104,4:Ne,5:ae,6:we,8:Ie,11:Ee,13:Oe,17:De,18:We,19:Re,20:Pe}),{4:Ne,5:ae,6:we,8:Ie,11:Ee,13:Oe,16:89,17:De,18:We,19:Re,20:Pe,22:105},t(de,[2,26]),t(l,[2,50],{10:xe}),t(q,[2,28],{16:103,4:Ne,5:ae,6:we,8:Ie,11:Ee,13:Oe,17:De,18:We,19:Re,20:Pe})],defaultActions:{8:[2,30],9:[2,31]},parseError:v(function(j,ye){if(ye.recoverable)this.trace(j);else{var Ae=new Error(j);throw Ae.hash=ye,Ae}},"parseError"),parse:v(function(j){var ye=this,Ae=[0],Ge=[],Fe=[null],ge=[],$e=this.table,Ce="",qe=0,lt=0,xt=0,ft=2,Ze=1,st=ge.slice.call(arguments,1),Ue=Object.create(this.lexer),Ke={yy:{}};for(var it in this.yy)Object.prototype.hasOwnProperty.call(this.yy,it)&&(Ke.yy[it]=this.yy[it]);Ue.setInput(j,Ke.yy),Ke.yy.lexer=Ue,Ke.yy.parser=this,typeof Ue.yylloc>"u"&&(Ue.yylloc={});var mt=Ue.yylloc;ge.push(mt);var Ht=Ue.options&&Ue.options.ranges;typeof Ke.yy.parseError=="function"?this.parseError=Ke.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ot(Vr){Ae.length=Ae.length-2*Vr,Fe.length=Fe.length-Vr,ge.length=ge.length-Vr}v(ot,"popStack");function et(){var Vr;return Vr=Ge.pop()||Ue.lex()||Ze,typeof Vr!="number"&&(Vr instanceof Array&&(Ge=Vr,Vr=Ge.pop()),Vr=ye.symbols_[Vr]||Vr),Vr}v(et,"lex");for(var ht,bt,tt,_t,ur,Qt,Jt={},en,Cr,Kn,cn;;){if(tt=Ae[Ae.length-1],this.defaultActions[tt]?_t=this.defaultActions[tt]:((ht===null||typeof ht>"u")&&(ht=et()),_t=$e[tt]&&$e[tt][ht]),typeof _t>"u"||!_t.length||!_t[0]){var Rn="";cn=[];for(en in $e[tt])this.terminals_[en]&&en>ft&&cn.push("'"+this.terminals_[en]+"'");Ue.showPosition?Rn="Parse error on line "+(qe+1)+`: `+Ue.showPosition()+` Expecting `+cn.join(", ")+", got '"+(this.terminals_[ht]||ht)+"'":Rn="Parse error on line "+(qe+1)+": Unexpected "+(ht==Ze?"end of input":"'"+(this.terminals_[ht]||ht)+"'"),this.parseError(Rn,{text:Ue.match,token:this.terminals_[ht]||ht,line:Ue.yylineno,loc:mt,expected:cn})}if(_t[0]instanceof Array&&_t.length>1)throw new Error("Parse Error: multiple actions possible at state: "+tt+", token: "+ht);switch(_t[0]){case 1:Ae.push(ht),Fe.push(Ue.yytext),ge.push(Ue.yylloc),Ae.push(_t[1]),ht=null,bt?(ht=bt,bt=null):(lt=Ue.yyleng,Ce=Ue.yytext,qe=Ue.yylineno,mt=Ue.yylloc,xt>0&&xt--);break;case 2:if(Cr=this.productions_[_t[1]][1],Jt.$=Fe[Fe.length-Cr],Jt._$={first_line:ge[ge.length-(Cr||1)].first_line,last_line:ge[ge.length-1].last_line,first_column:ge[ge.length-(Cr||1)].first_column,last_column:ge[ge.length-1].last_column},Ht&&(Jt._$.range=[ge[ge.length-(Cr||1)].range[0],ge[ge.length-1].range[1]]),Qt=this.performAction.apply(Jt,[Ce,lt,qe,Ke.yy,_t[1],Fe,ge].concat(st)),typeof Qt<"u")return Qt;Cr&&(Ae=Ae.slice(0,-1*Cr*2),Fe=Fe.slice(0,-1*Cr),ge=ge.slice(0,-1*Cr)),Ae.push(this.productions_[_t[1]][0]),Fe.push(Jt.$),ge.push(Jt._$),Kn=$e[Ae[Ae.length-2]][Ae[Ae.length-1]],Ae.push(Kn);break;case 3:return!0}}return!0},"parse")},he=function(){var ke={EOF:1,parseError:v(function(ye,Ae){if(this.yy.parser)this.yy.parser.parseError(ye,Ae);else throw new Error(ye)},"parseError"),setInput:v(function(j,ye){return this.yy=ye||this.yy||{},this._input=j,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var j=this._input[0];this.yytext+=j,this.yyleng++,this.offset++,this.match+=j,this.matched+=j;var ye=j.match(/(?:\r\n?|\n).*/g);return ye?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),j},"input"),unput:v(function(j){var ye=j.length,Ae=j.split(/(?:\r\n?|\n)/g);this._input=j+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ye),this.offset-=ye;var Ge=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Ae.length-1&&(this.yylineno-=Ae.length-1);var Fe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Ae?(Ae.length===Ge.length?this.yylloc.first_column:0)+Ge[Ge.length-Ae.length].length-Ae[0].length:this.yylloc.first_column-ye},this.options.ranges&&(this.yylloc.range=[Fe[0],Fe[0]+this.yyleng-ye]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(j){this.unput(this.match.slice(j))},"less"),pastInput:v(function(){var j=this.matched.substr(0,this.matched.length-this.match.length);return(j.length>20?"...":"")+j.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var j=this.match;return j.length<20&&(j+=this._input.substr(0,20-j.length)),(j.substr(0,20)+(j.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var j=this.pastInput(),ye=new Array(j.length+1).join("-");return j+this.upcomingInput()+` `+ye+"^"},"showPosition"),test_match:v(function(j,ye){var Ae,Ge,Fe;if(this.options.backtrack_lexer&&(Fe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Fe.yylloc.range=this.yylloc.range.slice(0))),Ge=j[0].match(/(?:\r\n?|\n).*/g),Ge&&(this.yylineno+=Ge.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Ge?Ge[Ge.length-1].length-Ge[Ge.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+j[0].length},this.yytext+=j[0],this.match+=j[0],this.matches=j,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(j[0].length),this.matched+=j[0],Ae=this.performAction.call(this,this.yy,this,ye,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ae)return Ae;if(this._backtrack){for(var ge in Fe)this[ge]=Fe[ge];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var j,ye,Ae,Ge;this._more||(this.yytext="",this.match="");for(var Fe=this._currentRules(),ge=0;geye[0].length)){if(ye=Ae,Ge=ge,this.options.backtrack_lexer){if(j=this.test_match(Ae,Fe[ge]),j!==!1)return j;if(this._backtrack){ye=!1;continue}else return!1}else if(!this.options.flex)break}return ye?(j=this.test_match(ye,Fe[Ge]),j!==!1?j:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var ye=this.next();return ye||this.lex()},"lex"),begin:v(function(ye){this.conditionStack.push(ye)},"begin"),popState:v(function(){var ye=this.conditionStack.length-1;return ye>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(ye){return ye=this.conditionStack.length-1-Math.abs(ye||0),ye>=0?this.conditionStack[ye]:"INITIAL"},"topState"),pushState:v(function(ye){this.begin(ye)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:v(function(ye,Ae,Ge,Fe){var ge=Fe;switch(Ge){case 0:break;case 1:break;case 2:return 55;case 3:break;case 4:return this.begin("title"),35;break;case 5:return this.popState(),"title_value";break;case 6:return this.begin("acc_title"),37;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),39;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 23:this.popState();break;case 24:this.begin("string");break;case 25:this.popState();break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;break;case 29:return this.begin("point_start"),44;break;case 30:return this.begin("point_x"),45;break;case 31:this.popState();break;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;break;case 34:return 28;case 35:return 4;case 36:return 11;case 37:return 64;case 38:return 10;case 39:return 65;case 40:return 65;case 41:return 14;case 42:return 13;case 43:return 67;case 44:return 66;case 45:return 12;case 46:return 8;case 47:return 5;case 48:return 18;case 49:return 56;case 50:return 63;case 51:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}};return ke}();ie.lexer=he;function U(){this.yy={}}return v(U,"Parser"),U.prototype=ie,ie.Parser=U,new U}();JI.parser=JI;EPe=JI,as=z1(),SPe=class{constructor(){this.classes=new Map,this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{v(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:sr.quadrantChart?.chartWidth||500,chartWidth:sr.quadrantChart?.chartHeight||500,titlePadding:sr.quadrantChart?.titlePadding||10,titleFontSize:sr.quadrantChart?.titleFontSize||20,quadrantPadding:sr.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:sr.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:sr.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:sr.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:sr.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:sr.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:sr.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:sr.quadrantChart?.pointTextPadding||5,pointLabelFontSize:sr.quadrantChart?.pointLabelFontSize||12,pointRadius:sr.quadrantChart?.pointRadius||5,xAxisPosition:sr.quadrantChart?.xAxisPosition||"top",yAxisPosition:sr.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:sr.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:sr.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:as.quadrant1Fill,quadrant2Fill:as.quadrant2Fill,quadrant3Fill:as.quadrant3Fill,quadrant4Fill:as.quadrant4Fill,quadrant1TextFill:as.quadrant1TextFill,quadrant2TextFill:as.quadrant2TextFill,quadrant3TextFill:as.quadrant3TextFill,quadrant4TextFill:as.quadrant4TextFill,quadrantPointFill:as.quadrantPointFill,quadrantPointTextFill:as.quadrantPointTextFill,quadrantXAxisTextFill:as.quadrantXAxisTextFill,quadrantYAxisTextFill:as.quadrantYAxisTextFill,quadrantTitleFill:as.quadrantTitleFill,quadrantInternalBorderStrokeFill:as.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:as.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,re.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}addClass(t,e){this.classes.set(t,e)}setConfig(t){re.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){re.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,e,r,n){let i=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,a={top:t==="top"&&e?i:0,bottom:t==="bottom"&&e?i:0},s=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,o={left:this.config.yAxisPosition==="left"&&r?s:0,right:this.config.yAxisPosition==="right"&&r?s:0},l=this.config.titleFontSize+this.config.titlePadding*2,u={top:n?l:0},h=this.config.quadrantPadding+o.left,f=this.config.quadrantPadding+a.top+u.top,d=this.config.chartWidth-this.config.quadrantPadding*2-o.left-o.right,p=this.config.chartHeight-this.config.quadrantPadding*2-a.top-a.bottom-u.top,g=d/2,m=p/2;return{xAxisSpace:a,yAxisSpace:o,titleSpace:u,quadrantSpace:{quadrantLeft:h,quadrantTop:f,quadrantWidth:d,quadrantHalfWidth:g,quadrantHeight:p,quadrantHalfHeight:m}}}getAxisLabels(t,e,r,n){let{quadrantSpace:i,titleSpace:a}=n,{quadrantHalfHeight:s,quadrantHeight:o,quadrantLeft:l,quadrantHalfWidth:u,quadrantTop:h,quadrantWidth:f}=i,d=!!this.data.xAxisRightText,p=!!this.data.yAxisTopText,g=[];return this.data.xAxisLeftText&&e&&g.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:l+(d?u/2:0),y:t==="top"?this.config.xAxisLabelPadding+a.top:this.config.xAxisLabelPadding+h+o+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:d?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&e&&g.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:l+u+(d?u/2:0),y:t==="top"?this.config.xAxisLabelPadding+a.top:this.config.xAxisLabelPadding+h+o+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:d?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&r&&g.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+l+f+this.config.quadrantPadding,y:h+o-(p?s/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:p?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&r&&g.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+l+f+this.config.quadrantPadding,y:h+s-(p?s/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:p?"center":"left",horizontalPos:"top",rotation:-90}),g}getQuadrants(t){let{quadrantSpace:e}=t,{quadrantHalfHeight:r,quadrantLeft:n,quadrantHalfWidth:i,quadrantTop:a}=e,s=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:n+i,y:a,width:i,height:r,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:n,y:a,width:i,height:r,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:n,y:a+r,width:i,height:r,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:n+i,y:a+r,width:i,height:r,fill:this.themeConfig.quadrant4Fill}];for(let o of s)o.text.x=o.x+o.width/2,this.data.points.length===0?(o.text.y=o.y+o.height/2,o.text.horizontalPos="middle"):(o.text.y=o.y+this.config.quadrantTextTopPadding,o.text.horizontalPos="top");return s}getQuadrantPoints(t){let{quadrantSpace:e}=t,{quadrantHeight:r,quadrantLeft:n,quadrantTop:i,quadrantWidth:a}=e,s=hl().domain([0,1]).range([n,a+n]),o=hl().domain([0,1]).range([r+i,i]);return this.data.points.map(u=>{let h=this.classes.get(u.className);return h&&(u={...h,...u}),{x:s(u.x),y:o(u.y),fill:u.color??this.themeConfig.quadrantPointFill,radius:u.radius??this.config.pointRadius,text:{text:u.text,fill:this.themeConfig.quadrantPointTextFill,x:s(u.x),y:o(u.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:u.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:u.strokeWidth??"0px"}})}getBorders(t){let e=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:r}=t,{quadrantHalfHeight:n,quadrantHeight:i,quadrantLeft:a,quadrantHalfWidth:s,quadrantTop:o,quadrantWidth:l}=r;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:a-e,y1:o,x2:a+l+e,y2:o},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:a+l,y1:o+e,x2:a+l,y2:o+i-e},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:a-e,y1:o+i,x2:a+l+e,y2:o+i},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:a,y1:o+e,x2:a,y2:o+i-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:a+s,y1:o+e,x2:a+s,y2:o+i-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:a+e,y1:o+n,x2:a+l-e,y2:o+n}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){let t=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),e=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),r=this.config.showTitle&&!!this.data.titleText,n=this.data.points.length>0?"bottom":this.config.xAxisPosition,i=this.calculateSpace(n,t,e,r);return{points:this.getQuadrantPoints(i),quadrants:this.getQuadrants(i),axisLabels:this.getAxisLabels(n,t,e,i),borderLines:this.getBorders(i),title:this.getTitle(r)}}},UT=class extends Error{static{v(this,"InvalidStyleError")}constructor(t,e,r){super(`value for ${t} ${e} is invalid, please use a valid ${r}`),this.name="InvalidStyleError"}};v(eM,"validateHexCode");v(wce,"validateNumber");v(kce,"validateSizeInPixels");CPe=pe();v(Fc,"textSanitizer");ma=new SPe;v(Tce,"setQuadrant1Text");v(Ece,"setQuadrant2Text");v(Sce,"setQuadrant3Text");v(Cce,"setQuadrant4Text");v(Ace,"setXAxisLeftText");v(_ce,"setXAxisRightText");v(Lce,"setYAxisTopText");v(Rce,"setYAxisBottomText");v(VT,"parseStyles");v(Nce,"addPoint");v(Ice,"addClass");v(Mce,"setWidth");v(Dce,"setHeight");v(Oce,"getQuadrantData");APe=v(function(){ma.clear(),xr()},"clear"),_Pe={setWidth:Mce,setHeight:Dce,setQuadrant1Text:Tce,setQuadrant2Text:Ece,setQuadrant3Text:Sce,setQuadrant4Text:Cce,setXAxisLeftText:Ace,setXAxisRightText:_ce,setYAxisTopText:Lce,setYAxisBottomText:Rce,parseStyles:VT,addPoint:Nce,addClass:Ice,getQuadrantData:Oce,clear:APe,setAccTitle:Tr,getAccTitle:_r,setDiagramTitle:tn,getDiagramTitle:qr,getAccDescription:Rr,setAccDescription:Lr},LPe=v((t,e,r,n)=>{function i(S){return S==="top"?"hanging":"middle"}v(i,"getDominantBaseLine");function a(S){return S==="left"?"start":"middle"}v(a,"getTextAnchor");function s(S){return`translate(${S.x}, ${S.y}) rotate(${S.rotation||0})`}v(s,"getTransformation");let o=pe();re.debug(`Rendering quadrant chart `+t);let l=o.securityLevel,u;l==="sandbox"&&(u=Ve("#i"+e));let f=(l==="sandbox"?Ve(u.nodes()[0].contentDocument.body):Ve("body")).select(`[id="${e}"]`),d=f.append("g").attr("class","main"),p=o.quadrantChart?.chartWidth??500,g=o.quadrantChart?.chartHeight??500;Hr(f,g,p,o.quadrantChart?.useMaxWidth??!0),f.attr("viewBox","0 0 "+p+" "+g),n.db.setHeight(g),n.db.setWidth(p);let m=n.db.getQuadrantData(),y=d.append("g").attr("class","quadrants"),x=d.append("g").attr("class","border"),b=d.append("g").attr("class","data-points"),w=d.append("g").attr("class","labels"),_=d.append("g").attr("class","title");m.title&&_.append("text").attr("x",0).attr("y",0).attr("fill",m.title.fill).attr("font-size",m.title.fontSize).attr("dominant-baseline",i(m.title.horizontalPos)).attr("text-anchor",a(m.title.verticalPos)).attr("transform",s(m.title)).text(m.title.text),m.borderLines&&x.selectAll("line").data(m.borderLines).enter().append("line").attr("x1",S=>S.x1).attr("y1",S=>S.y1).attr("x2",S=>S.x2).attr("y2",S=>S.y2).style("stroke",S=>S.strokeFill).style("stroke-width",S=>S.strokeWidth);let k=y.selectAll("g.quadrant").data(m.quadrants).enter().append("g").attr("class","quadrant");k.append("rect").attr("x",S=>S.x).attr("y",S=>S.y).attr("width",S=>S.width).attr("height",S=>S.height).attr("fill",S=>S.fill),k.append("text").attr("x",0).attr("y",0).attr("fill",S=>S.text.fill).attr("font-size",S=>S.text.fontSize).attr("dominant-baseline",S=>i(S.text.horizontalPos)).attr("text-anchor",S=>a(S.text.verticalPos)).attr("transform",S=>s(S.text)).text(S=>S.text.text),w.selectAll("g.label").data(m.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(S=>S.text).attr("fill",S=>S.fill).attr("font-size",S=>S.fontSize).attr("dominant-baseline",S=>i(S.horizontalPos)).attr("text-anchor",S=>a(S.verticalPos)).attr("transform",S=>s(S));let L=b.selectAll("g.data-point").data(m.points).enter().append("g").attr("class","data-point");L.append("circle").attr("cx",S=>S.x).attr("cy",S=>S.y).attr("r",S=>S.radius).attr("fill",S=>S.fill).attr("stroke",S=>S.strokeColor).attr("stroke-width",S=>S.strokeWidth),L.append("text").attr("x",0).attr("y",0).text(S=>S.text.text).attr("fill",S=>S.text.fill).attr("font-size",S=>S.text.fontSize).attr("dominant-baseline",S=>i(S.text.horizontalPos)).attr("text-anchor",S=>a(S.text.verticalPos)).attr("transform",S=>s(S.text))},"draw"),RPe={draw:LPe},NPe={parser:EPe,db:_Pe,renderer:RPe,styles:v(()=>"","styles")}});var nue={};vr(nue,{diagram:()=>HPe});function rM(t){return t.type==="bar"}function aM(t){return t.type==="band"}function Sm(t){return t.type==="linear"}function nM(t,e,r,n){let i=new $ce(n);return aM(t)?new MPe(e,r,t.categories,t.title,i):new DPe(e,r,[t.min,t.max],t.title,i)}function Uce(t,e,r,n){let i=new $ce(n);return new OPe(i,t,e,r)}function Vce(t,e,r){return new FPe(t,e,r)}function oM(){let t=z1(),e=Or();return ws(t.xyChart,e.themeVariables.xyChart)}function lM(){let t=Or();return ws(sr.xyChart,t.xyChart)}function cM(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function HT(t){let e=Or();return yr(t.trim(),e)}function Hce(t){Wce=t}function qce(t){t==="horizontal"?K2.chartOrientation="horizontal":K2.chartOrientation="vertical"}function Yce(t){an.xAxis.title=HT(t.text)}function uM(t,e){an.xAxis={type:"linear",title:an.xAxis.title,min:t,max:e},WT=!0}function Xce(t){an.xAxis={type:"band",title:an.xAxis.title,categories:t.map(e=>HT(e.text))},WT=!0}function jce(t){an.yAxis.title=HT(t.text)}function Kce(t,e){an.yAxis={type:"linear",title:an.yAxis.title,min:t,max:e},sM=!0}function Zce(t){let e=Math.min(...t),r=Math.max(...t),n=Sm(an.yAxis)?an.yAxis.min:1/0,i=Sm(an.yAxis)?an.yAxis.max:-1/0;an.yAxis={type:"linear",title:an.yAxis.title,min:Math.min(n,e),max:Math.max(i,r)}}function hM(t){let e=[];if(t.length===0)return e;if(!WT){let r=Sm(an.xAxis)?an.xAxis.min:1/0,n=Sm(an.xAxis)?an.xAxis.max:-1/0;uM(Math.min(r,1),Math.max(n,t.length))}if(sM||Zce(t),aM(an.xAxis)&&(e=an.xAxis.categories.map((r,n)=>[r,t[n]])),Sm(an.xAxis)){let r=an.xAxis.min,n=an.xAxis.max,i=(n-r)/(t.length-1),a=[];for(let s=r;s<=n;s+=i)a.push(`${s}`);e=a.map((s,o)=>[s,t[o]])}return e}function fM(t){return iM[t===0?0:t%iM.length]}function Qce(t,e){let r=hM(e);an.plots.push({type:"line",strokeFill:fM(j2),strokeWidth:2,data:r}),j2++}function Jce(t,e){let r=hM(e);an.plots.push({type:"bar",fill:fM(j2),data:r}),j2++}function eue(){if(an.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return an.title=qr(),$Pe.build(K2,an,Z2,Wce)}function tue(){return Z2}function rue(){return K2}var tM,IPe,$ce,Fce,zce,Gce,MPe,DPe,OPe,PPe,BPe,FPe,zPe,$Pe,j2,Wce,K2,Z2,an,iM,WT,sM,GPe,UPe,VPe,WPe,HPe,iue=F(()=>{Ya();kn();Iu();or();lr();lr();lr();tM=function(){var t=v(function(D,N,O,B){for(O=O||{},B=D.length;B--;O[D[B]]=N);return O},"o"),e=[1,10,12,14,16,18,19,21,23],r=[2,6],n=[1,3],i=[1,5],a=[1,6],s=[1,7],o=[1,5,10,12,14,16,18,19,21,23,34,35,36],l=[1,25],u=[1,26],h=[1,28],f=[1,29],d=[1,30],p=[1,31],g=[1,32],m=[1,33],y=[1,34],x=[1,35],b=[1,36],w=[1,37],_=[1,43],k=[1,42],E=[1,47],L=[1,50],S=[1,10,12,14,16,18,19,21,23,34,35,36],C=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],M=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],R=[1,64],T={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:v(function(N,O,B,P,$,z,H){var J=z.length-1;switch($){case 5:P.setOrientation(z[J]);break;case 9:P.setDiagramTitle(z[J].text.trim());break;case 12:P.setLineData({text:"",type:"text"},z[J]);break;case 13:P.setLineData(z[J-1],z[J]);break;case 14:P.setBarData({text:"",type:"text"},z[J]);break;case 15:P.setBarData(z[J-1],z[J]);break;case 16:this.$=z[J].trim(),P.setAccTitle(this.$);break;case 17:case 18:this.$=z[J].trim(),P.setAccDescription(this.$);break;case 19:this.$=z[J-1];break;case 20:this.$=[Number(z[J-2]),...z[J]];break;case 21:this.$=[Number(z[J])];break;case 22:P.setXAxisTitle(z[J]);break;case 23:P.setXAxisTitle(z[J-1]);break;case 24:P.setXAxisTitle({type:"text",text:""});break;case 25:P.setXAxisBand(z[J]);break;case 26:P.setXAxisRangeData(Number(z[J-2]),Number(z[J]));break;case 27:this.$=z[J-1];break;case 28:this.$=[z[J-2],...z[J]];break;case 29:this.$=[z[J]];break;case 30:P.setYAxisTitle(z[J]);break;case 31:P.setYAxisTitle(z[J-1]);break;case 32:P.setYAxisTitle({type:"text",text:""});break;case 33:P.setYAxisRangeData(Number(z[J-2]),Number(z[J]));break;case 37:this.$={text:z[J],type:"text"};break;case 38:this.$={text:z[J],type:"text"};break;case 39:this.$={text:z[J],type:"markdown"};break;case 40:this.$=z[J];break;case 41:this.$=z[J-1]+""+z[J];break}},"anonymous"),table:[t(e,r,{3:1,4:2,7:4,5:n,34:i,35:a,36:s}),{1:[3]},t(e,r,{4:2,7:4,3:8,5:n,34:i,35:a,36:s}),t(e,r,{4:2,7:4,6:9,3:10,5:n,8:[1,11],34:i,35:a,36:s}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},t(o,[2,34]),t(o,[2,35]),t(o,[2,36]),{1:[2,1]},t(e,r,{4:2,7:4,3:21,5:n,34:i,35:a,36:s}),{1:[2,3]},t(o,[2,5]),t(e,[2,7],{4:22,34:i,35:a,36:s}),{11:23,37:24,38:l,39:u,40:27,41:h,42:f,43:d,44:p,45:g,46:m,47:y,48:x,49:b,50:w},{11:39,13:38,24:_,27:k,29:40,30:41,37:24,38:l,39:u,40:27,41:h,42:f,43:d,44:p,45:g,46:m,47:y,48:x,49:b,50:w},{11:45,15:44,27:E,33:46,37:24,38:l,39:u,40:27,41:h,42:f,43:d,44:p,45:g,46:m,47:y,48:x,49:b,50:w},{11:49,17:48,24:L,37:24,38:l,39:u,40:27,41:h,42:f,43:d,44:p,45:g,46:m,47:y,48:x,49:b,50:w},{11:52,17:51,24:L,37:24,38:l,39:u,40:27,41:h,42:f,43:d,44:p,45:g,46:m,47:y,48:x,49:b,50:w},{20:[1,53]},{22:[1,54]},t(S,[2,18]),{1:[2,2]},t(S,[2,8]),t(S,[2,9]),t(C,[2,37],{40:55,41:h,42:f,43:d,44:p,45:g,46:m,47:y,48:x,49:b,50:w}),t(C,[2,38]),t(C,[2,39]),t(M,[2,40]),t(M,[2,42]),t(M,[2,43]),t(M,[2,44]),t(M,[2,45]),t(M,[2,46]),t(M,[2,47]),t(M,[2,48]),t(M,[2,49]),t(M,[2,50]),t(M,[2,51]),t(S,[2,10]),t(S,[2,22],{30:41,29:56,24:_,27:k}),t(S,[2,24]),t(S,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:l,39:u,40:27,41:h,42:f,43:d,44:p,45:g,46:m,47:y,48:x,49:b,50:w},t(S,[2,11]),t(S,[2,30],{33:60,27:E}),t(S,[2,32]),{31:[1,61]},t(S,[2,12]),{17:62,24:L},{25:63,27:R},t(S,[2,14]),{17:65,24:L},t(S,[2,16]),t(S,[2,17]),t(M,[2,41]),t(S,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(S,[2,31]),{27:[1,69]},t(S,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(S,[2,15]),t(S,[2,26]),t(S,[2,27]),{11:59,32:72,37:24,38:l,39:u,40:27,41:h,42:f,43:d,44:p,45:g,46:m,47:y,48:x,49:b,50:w},t(S,[2,33]),t(S,[2,19]),{25:73,27:R},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:v(function(N,O){if(O.recoverable)this.trace(N);else{var B=new Error(N);throw B.hash=O,B}},"parseError"),parse:v(function(N){var O=this,B=[0],P=[],$=[null],z=[],H=this.table,J="",X=0,oe=0,K=0,ee=2,Q=1,W=z.slice.call(arguments,1),Y=Object.create(this.lexer),Z={yy:{}};for(var se in this.yy)Object.prototype.hasOwnProperty.call(this.yy,se)&&(Z.yy[se]=this.yy[se]);Y.setInput(N,Z.yy),Z.yy.lexer=Y,Z.yy.parser=this,typeof Y.yylloc>"u"&&(Y.yylloc={});var ce=Y.yylloc;z.push(ce);var ue=Y.options&&Y.options.ranges;typeof Z.yy.parseError=="function"?this.parseError=Z.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function te(ie){B.length=B.length-2*ie,$.length=$.length-ie,z.length=z.length-ie}v(te,"popStack");function Ne(){var ie;return ie=P.pop()||Y.lex()||Q,typeof ie!="number"&&(ie instanceof Array&&(P=ie,ie=P.pop()),ie=O.symbols_[ie]||ie),ie}v(Ne,"lex");for(var ae,we,Ie,Ee,Oe,De,We={},Re,Pe,xe,q;;){if(Ie=B[B.length-1],this.defaultActions[Ie]?Ee=this.defaultActions[Ie]:((ae===null||typeof ae>"u")&&(ae=Ne()),Ee=H[Ie]&&H[Ie][ae]),typeof Ee>"u"||!Ee.length||!Ee[0]){var de="";q=[];for(Re in H[Ie])this.terminals_[Re]&&Re>ee&&q.push("'"+this.terminals_[Re]+"'");Y.showPosition?de="Parse error on line "+(X+1)+`: `+Y.showPosition()+` Expecting `+q.join(", ")+", got '"+(this.terminals_[ae]||ae)+"'":de="Parse error on line "+(X+1)+": Unexpected "+(ae==Q?"end of input":"'"+(this.terminals_[ae]||ae)+"'"),this.parseError(de,{text:Y.match,token:this.terminals_[ae]||ae,line:Y.yylineno,loc:ce,expected:q})}if(Ee[0]instanceof Array&&Ee.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ie+", token: "+ae);switch(Ee[0]){case 1:B.push(ae),$.push(Y.yytext),z.push(Y.yylloc),B.push(Ee[1]),ae=null,we?(ae=we,we=null):(oe=Y.yyleng,J=Y.yytext,X=Y.yylineno,ce=Y.yylloc,K>0&&K--);break;case 2:if(Pe=this.productions_[Ee[1]][1],We.$=$[$.length-Pe],We._$={first_line:z[z.length-(Pe||1)].first_line,last_line:z[z.length-1].last_line,first_column:z[z.length-(Pe||1)].first_column,last_column:z[z.length-1].last_column},ue&&(We._$.range=[z[z.length-(Pe||1)].range[0],z[z.length-1].range[1]]),De=this.performAction.apply(We,[J,oe,X,Z.yy,Ee[1],$,z].concat(W)),typeof De<"u")return De;Pe&&(B=B.slice(0,-1*Pe*2),$=$.slice(0,-1*Pe),z=z.slice(0,-1*Pe)),B.push(this.productions_[Ee[1]][0]),$.push(We.$),z.push(We._$),xe=H[B[B.length-2]][B[B.length-1]],B.push(xe);break;case 3:return!0}}return!0},"parse")},I=function(){var D={EOF:1,parseError:v(function(O,B){if(this.yy.parser)this.yy.parser.parseError(O,B);else throw new Error(O)},"parseError"),setInput:v(function(N,O){return this.yy=O||this.yy||{},this._input=N,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var N=this._input[0];this.yytext+=N,this.yyleng++,this.offset++,this.match+=N,this.matched+=N;var O=N.match(/(?:\r\n?|\n).*/g);return O?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),N},"input"),unput:v(function(N){var O=N.length,B=N.split(/(?:\r\n?|\n)/g);this._input=N+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-O),this.offset-=O;var P=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),B.length-1&&(this.yylineno-=B.length-1);var $=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:B?(B.length===P.length?this.yylloc.first_column:0)+P[P.length-B.length].length-B[0].length:this.yylloc.first_column-O},this.options.ranges&&(this.yylloc.range=[$[0],$[0]+this.yyleng-O]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(N){this.unput(this.match.slice(N))},"less"),pastInput:v(function(){var N=this.matched.substr(0,this.matched.length-this.match.length);return(N.length>20?"...":"")+N.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var N=this.match;return N.length<20&&(N+=this._input.substr(0,20-N.length)),(N.substr(0,20)+(N.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var N=this.pastInput(),O=new Array(N.length+1).join("-");return N+this.upcomingInput()+` `+O+"^"},"showPosition"),test_match:v(function(N,O){var B,P,$;if(this.options.backtrack_lexer&&($={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&($.yylloc.range=this.yylloc.range.slice(0))),P=N[0].match(/(?:\r\n?|\n).*/g),P&&(this.yylineno+=P.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:P?P[P.length-1].length-P[P.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+N[0].length},this.yytext+=N[0],this.match+=N[0],this.matches=N,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(N[0].length),this.matched+=N[0],B=this.performAction.call(this,this.yy,this,O,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),B)return B;if(this._backtrack){for(var z in $)this[z]=$[z];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var N,O,B,P;this._more||(this.yytext="",this.match="");for(var $=this._currentRules(),z=0;z<$.length;z++)if(B=this._input.match(this.rules[$[z]]),B&&(!O||B[0].length>O[0].length)){if(O=B,P=z,this.options.backtrack_lexer){if(N=this.test_match(B,$[z]),N!==!1)return N;if(this._backtrack){O=!1;continue}else return!1}else if(!this.options.flex)break}return O?(N=this.test_match(O,$[P]),N!==!1?N:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var O=this.next();return O||this.lex()},"lex"),begin:v(function(O){this.conditionStack.push(O)},"begin"),popState:v(function(){var O=this.conditionStack.length-1;return O>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(O){return O=this.conditionStack.length-1-Math.abs(O||0),O>=0?this.conditionStack[O]:"INITIAL"},"topState"),pushState:v(function(O){this.begin(O)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:v(function(O,B,P,$){var z=$;switch(P){case 0:break;case 1:break;case 2:return this.popState(),34;break;case 3:return this.popState(),34;break;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.pushState("acc_descr"),21;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 8;case 16:return this.pushState("axis_data"),"X_AXIS";break;case 17:return this.pushState("axis_data"),"Y_AXIS";break;case 18:return this.pushState("axis_band_data"),24;break;case 19:return 31;case 20:return this.pushState("data"),16;break;case 21:return this.pushState("data"),18;break;case 22:return this.pushState("data_inner"),24;break;case 23:return 27;case 24:return this.popState(),26;break;case 25:this.popState();break;case 26:this.pushState("string");break;case 27:this.popState();break;case 28:return"STR";case 29:return 24;case 30:return 26;case 31:return 43;case 32:return"COLON";case 33:return 44;case 34:return 28;case 35:return 45;case 36:return 46;case 37:return 48;case 38:return 50;case 39:return 47;case 40:return 41;case 41:return 49;case 42:return 42;case 43:break;case 44:return 35;case 45:return 36}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,20,21,22,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,23,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[27,28],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0}}};return D}();T.lexer=I;function A(){this.yy={}}return v(A,"Parser"),A.prototype=T,T.Parser=A,new A}();tM.parser=tM;IPe=tM;v(rM,"isBarPlot");v(aM,"isBandAxisData");v(Sm,"isLinearAxisData");$ce=class{constructor(t){this.parentGroup=t}static{v(this,"TextDimensionCalculatorWithFont")}getMaxDimension(t,e){if(!this.parentGroup)return{width:t.reduce((i,a)=>Math.max(a.length,i),0)*e,height:e};let r={width:0,height:0},n=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",e);for(let i of t){let a=kA(n,1,i),s=a?a.width:i.length*e,o=a?a.height:e;r.width=Math.max(r.width,s),r.height=Math.max(r.height,o)}return n.remove(),r}},Fce=.7,zce=.2,Gce=class{constructor(t,e,r,n){this.axisConfig=t,this.title=e,this.textDimensionCalculator=r,this.axisThemeConfig=n,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{v(this,"BaseAxis")}setRange(t){this.range=t,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){let t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(t=>t.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){Fce*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(Fce*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let e=t.height;if(this.axisConfig.showAxisLine&&e>this.axisConfig.axisLineWidth&&(e-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let r=this.getLabelDimension(),n=zce*t.width;this.outerPadding=Math.min(r.width/2,n);let i=r.height+this.axisConfig.labelPadding*2;this.labelTextHeight=r.height,i<=e&&(e-=i,this.showLabel=!0)}if(this.axisConfig.showTick&&e>=this.axisConfig.tickLength&&(this.showTick=!0,e-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let r=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=r.height+this.axisConfig.titlePadding*2;this.titleTextHeight=r.height,n<=e&&(e-=n,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-e}calculateSpaceIfDrawnVertical(t){let e=t.width;if(this.axisConfig.showAxisLine&&e>this.axisConfig.axisLineWidth&&(e-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){let r=this.getLabelDimension(),n=zce*t.height;this.outerPadding=Math.min(r.height/2,n);let i=r.width+this.axisConfig.labelPadding*2;i<=e&&(e-=i,this.showLabel=!0)}if(this.axisConfig.showTick&&e>=this.axisConfig.tickLength&&(this.showTick=!0,e-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){let r=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),n=r.height+this.axisConfig.titlePadding*2;this.titleTextHeight=r.height,n<=e&&(e-=n,this.showTitle=!0)}this.boundingRect.width=t.width-e,this.boundingRect.height=t.height}calculateSpace(t){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}getDrawableElementsForLeftAxis(){let t=[];if(this.showAxisLine){let e=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${e},${this.boundingRect.y} L ${e},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(e=>({text:e.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(e),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){let e=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(r=>({path:`M ${e},${this.getScaleValue(r)} L ${e-this.axisConfig.tickLength},${this.getScaleValue(r)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){let t=[];if(this.showAxisLine){let e=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${e} L ${this.boundingRect.x+this.boundingRect.width},${e}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(e=>({text:e.toString(),x:this.getScaleValue(e),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let e=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(r=>({path:`M ${this.getScaleValue(r)},${e} L ${this.getScaleValue(r)},${e+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){let t=[];if(this.showAxisLine){let e=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${e} L ${this.boundingRect.x+this.boundingRect.width},${e}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(e=>({text:e.toString(),x:this.getScaleValue(e),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){let e=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(r=>({path:`M ${this.getScaleValue(r)},${e+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(r)},${e+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}},MPe=class extends Gce{static{v(this,"BandAxis")}constructor(t,e,r,n,i){super(t,n,i,e),this.categories=r,this.scale=Tp().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=Tp().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),re.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)??this.getRange()[0]}},DPe=class extends Gce{static{v(this,"LinearAxis")}constructor(t,e,r,n,i){super(t,n,i,e),this.domain=r,this.scale=hl().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){let t=[...this.domain];this.axisPosition==="left"&&t.reverse(),this.scale=hl().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}};v(nM,"getAxis");OPe=class{constructor(t,e,r,n){this.textDimensionCalculator=t,this.chartConfig=e,this.chartData=r,this.chartThemeConfig=n,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{v(this,"ChartTitle")}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){let e=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),r=Math.max(e.width,t.width),n=e.height+2*this.chartConfig.titlePadding;return e.width<=r&&e.height<=n&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=r,this.boundingRect.height=n,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){let t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}};v(Uce,"getChartTitleComponent");PPe=class{constructor(t,e,r,n,i){this.plotData=t,this.xAxis=e,this.yAxis=r,this.orientation=n,this.plotIndex=i}static{v(this,"LinePlot")}getDrawableElement(){let t=this.plotData.data.map(r=>[this.xAxis.getScaleValue(r[0]),this.yAxis.getScaleValue(r[1])]),e;return this.orientation==="horizontal"?e=ms().y(r=>r[0]).x(r=>r[1])(t):e=ms().x(r=>r[0]).y(r=>r[1])(t),e?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:e,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}},BPe=class{constructor(t,e,r,n,i,a){this.barData=t,this.boundingRect=e,this.xAxis=r,this.yAxis=n,this.orientation=i,this.plotIndex=a}static{v(this,"BarPlot")}getDrawableElement(){let t=this.barData.data.map(i=>[this.xAxis.getScaleValue(i[0]),this.yAxis.getScaleValue(i[1])]),r=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-.05),n=r/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(i=>({x:this.boundingRect.x,y:i[0]-n,height:r,width:i[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map(i=>({x:i[0]-n,y:i[1],width:r,height:this.boundingRect.y+this.boundingRect.height-i[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}},FPe=class{constructor(t,e,r){this.chartConfig=t,this.chartData=e,this.chartThemeConfig=r,this.boundingRect={x:0,y:0,width:0,height:0}}static{v(this,"BasePlot")}setAxes(t,e){this.xAxis=t,this.yAxis=e}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");let t=[];for(let[e,r]of this.chartData.plots.entries())switch(r.type){case"line":{let n=new PPe(r,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,e);t.push(...n.getDrawableElement())}break;case"bar":{let n=new BPe(r,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,e);t.push(...n.getDrawableElement())}break}return t}};v(Vce,"getPlotComponent");zPe=class{constructor(t,e,r,n){this.chartConfig=t,this.chartData=e,this.componentStore={title:Uce(t,e,r,n),plot:Vce(t,e,r),xAxis:nM(e.xAxis,t.xAxis,{titleColor:r.xAxisTitleColor,labelColor:r.xAxisLabelColor,tickColor:r.xAxisTickColor,axisLineColor:r.xAxisLineColor},n),yAxis:nM(e.yAxis,t.yAxis,{titleColor:r.yAxisTitleColor,labelColor:r.yAxisLabelColor,tickColor:r.yAxisTickColor,axisLineColor:r.yAxisLineColor},n)}}static{v(this,"Orchestrator")}calculateVerticalSpace(){let t=this.chartConfig.width,e=this.chartConfig.height,r=0,n=0,i=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),a=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),s=this.componentStore.plot.calculateSpace({width:i,height:a});t-=s.width,e-=s.height,s=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:e}),n=s.height,e-=s.height,this.componentStore.xAxis.setAxisPosition("bottom"),s=this.componentStore.xAxis.calculateSpace({width:t,height:e}),e-=s.height,this.componentStore.yAxis.setAxisPosition("left"),s=this.componentStore.yAxis.calculateSpace({width:t,height:e}),r=s.width,t-=s.width,t>0&&(i+=t,t=0),e>0&&(a+=e,e=0),this.componentStore.plot.calculateSpace({width:i,height:a}),this.componentStore.plot.setBoundingBoxXY({x:r,y:n}),this.componentStore.xAxis.setRange([r,r+i]),this.componentStore.xAxis.setBoundingBoxXY({x:r,y:n+a}),this.componentStore.yAxis.setRange([n,n+a]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:n}),this.chartData.plots.some(o=>rM(o))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let t=this.chartConfig.width,e=this.chartConfig.height,r=0,n=0,i=0,a=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),s=Math.floor(e*this.chartConfig.plotReservedSpacePercent/100),o=this.componentStore.plot.calculateSpace({width:a,height:s});t-=o.width,e-=o.height,o=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:e}),r=o.height,e-=o.height,this.componentStore.xAxis.setAxisPosition("left"),o=this.componentStore.xAxis.calculateSpace({width:t,height:e}),t-=o.width,n=o.width,this.componentStore.yAxis.setAxisPosition("top"),o=this.componentStore.yAxis.calculateSpace({width:t,height:e}),e-=o.height,i=r+o.height,t>0&&(a+=t,t=0),e>0&&(s+=e,e=0),this.componentStore.plot.calculateSpace({width:a,height:s}),this.componentStore.plot.setBoundingBoxXY({x:n,y:i}),this.componentStore.yAxis.setRange([n,n+a]),this.componentStore.yAxis.setBoundingBoxXY({x:n,y:r}),this.componentStore.xAxis.setRange([i,i+s]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:i}),this.chartData.plots.some(l=>rM(l))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();let t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(let e of Object.values(this.componentStore))t.push(...e.getDrawableElements());return t}},$Pe=class{static{v(this,"XYChartBuilder")}static build(t,e,r,n){return new zPe(t,e,r,n).getDrawableElement()}},j2=0,K2=lM(),Z2=oM(),an=cM(),iM=Z2.plotColorPalette.split(",").map(t=>t.trim()),WT=!1,sM=!1;v(oM,"getChartDefaultThemeConfig");v(lM,"getChartDefaultConfig");v(cM,"getChartDefaultData");v(HT,"textSanitizer");v(Hce,"setTmpSVGG");v(qce,"setOrientation");v(Yce,"setXAxisTitle");v(uM,"setXAxisRangeData");v(Xce,"setXAxisBand");v(jce,"setYAxisTitle");v(Kce,"setYAxisRangeData");v(Zce,"setYAxisRangeFromPlotData");v(hM,"transformDataWithoutCategory");v(fM,"getPlotColorFromPalette");v(Qce,"setLineData");v(Jce,"setBarData");v(eue,"getDrawableElem");v(tue,"getChartThemeConfig");v(rue,"getChartConfig");GPe=v(function(){xr(),j2=0,K2=lM(),an=cM(),Z2=oM(),iM=Z2.plotColorPalette.split(",").map(t=>t.trim()),WT=!1,sM=!1},"clear"),UPe={getDrawableElem:eue,clear:GPe,setAccTitle:Tr,getAccTitle:_r,setDiagramTitle:tn,getDiagramTitle:qr,getAccDescription:Rr,setAccDescription:Lr,setOrientation:qce,setXAxisTitle:Yce,setXAxisRangeData:uM,setXAxisBand:Xce,setYAxisTitle:jce,setYAxisRangeData:Kce,setLineData:Qce,setBarData:Jce,setTmpSVGG:Hce,getChartThemeConfig:tue,getChartConfig:rue},VPe=v((t,e,r,n)=>{let i=n.db,a=i.getChartThemeConfig(),s=i.getChartConfig();function o(y){return y==="top"?"text-before-edge":"middle"}v(o,"getDominantBaseLine");function l(y){return y==="left"?"start":y==="right"?"end":"middle"}v(l,"getTextAnchor");function u(y){return`translate(${y.x}, ${y.y}) rotate(${y.rotation||0})`}v(u,"getTextTransformation"),re.debug(`Rendering xychart chart `+t);let h=La(e),f=h.append("g").attr("class","main"),d=f.append("rect").attr("width",s.width).attr("height",s.height).attr("class","background");Hr(h,s.height,s.width,!0),h.attr("viewBox",`0 0 ${s.width} ${s.height}`),d.attr("fill",a.backgroundColor),i.setTmpSVGG(h.append("g").attr("class","mermaid-tmp-group"));let p=i.getDrawableElem(),g={};function m(y){let x=f,b="";for(let[w]of y.entries()){let _=f;w>0&&g[b]&&(_=g[b]),b+=y[w],x=g[b],x||(x=g[b]=_.append("g").attr("class",y[w]))}return x}v(m,"getGroup");for(let y of p){if(y.data.length===0)continue;let x=m(y.groupTexts);switch(y.type){case"rect":x.selectAll("rect").data(y.data).enter().append("rect").attr("x",b=>b.x).attr("y",b=>b.y).attr("width",b=>b.width).attr("height",b=>b.height).attr("fill",b=>b.fill).attr("stroke",b=>b.strokeFill).attr("stroke-width",b=>b.strokeWidth);break;case"text":x.selectAll("text").data(y.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",b=>b.fill).attr("font-size",b=>b.fontSize).attr("dominant-baseline",b=>o(b.verticalPos)).attr("text-anchor",b=>l(b.horizontalPos)).attr("transform",b=>u(b)).text(b=>b.text);break;case"path":x.selectAll("path").data(y.data).enter().append("path").attr("d",b=>b.path).attr("fill",b=>b.fill?b.fill:"none").attr("stroke",b=>b.strokeFill).attr("stroke-width",b=>b.strokeWidth);break}}},"draw"),WPe={draw:VPe},HPe={parser:IPe,db:UPe,renderer:WPe}});var uue={};vr(uue,{diagram:()=>kBe});var dM,qPe,gM,Os,Q2,uf,J2,YPe,XPe,jPe,KPe,ZPe,QPe,JPe,eBe,tBe,rBe,nBe,iBe,aBe,sBe,oBe,lBe,cBe,uBe,hBe,fBe,pM,dBe,sue,ri,aue,oue,lue,cue,pBe,gBe,mBe,vBe,yBe,xBe,Cm,bBe,wBe,kBe,hue=F(()=>{or();lr();uy();As();dM=function(){var t=v(function(oe,K,ee,Q){for(ee=ee||{},Q=oe.length;Q--;ee[oe[Q]]=K);return ee},"o"),e=[1,3],r=[1,4],n=[1,5],i=[1,6],a=[5,6,8,9,11,13,31,32,33,34,35,36,44,62,63],s=[1,18],o=[2,7],l=[1,22],u=[1,23],h=[1,24],f=[1,25],d=[1,26],p=[1,27],g=[1,20],m=[1,28],y=[1,29],x=[62,63],b=[5,8,9,11,13,31,32,33,34,35,36,44,51,53,62,63],w=[1,47],_=[1,48],k=[1,49],E=[1,50],L=[1,51],S=[1,52],C=[1,53],M=[53,54],R=[1,64],T=[1,60],I=[1,61],A=[1,62],D=[1,63],N=[1,65],O=[1,69],B=[1,70],P=[1,67],$=[1,68],z=[5,8,9,11,13,31,32,33,34,35,36,44,62,63],H={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,requirementType:17,requirementName:18,STRUCT_START:19,requirementBody:20,ID:21,COLONSEP:22,id:23,TEXT:24,text:25,RISK:26,riskLevel:27,VERIFYMTHD:28,verifyType:29,STRUCT_STOP:30,REQUIREMENT:31,FUNCTIONAL_REQUIREMENT:32,INTERFACE_REQUIREMENT:33,PERFORMANCE_REQUIREMENT:34,PHYSICAL_REQUIREMENT:35,DESIGN_CONSTRAINT:36,LOW_RISK:37,MED_RISK:38,HIGH_RISK:39,VERIFY_ANALYSIS:40,VERIFY_DEMONSTRATION:41,VERIFY_INSPECTION:42,VERIFY_TEST:43,ELEMENT:44,elementName:45,elementBody:46,TYPE:47,type:48,DOCREF:49,ref:50,END_ARROW_L:51,relationship:52,LINE:53,END_ARROW_R:54,CONTAINS:55,COPIES:56,DERIVES:57,SATISFIES:58,VERIFIES:59,REFINES:60,TRACES:61,unqString:62,qString:63,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",19:"STRUCT_START",21:"ID",22:"COLONSEP",24:"TEXT",26:"RISK",28:"VERIFYMTHD",30:"STRUCT_STOP",31:"REQUIREMENT",32:"FUNCTIONAL_REQUIREMENT",33:"INTERFACE_REQUIREMENT",34:"PERFORMANCE_REQUIREMENT",35:"PHYSICAL_REQUIREMENT",36:"DESIGN_CONSTRAINT",37:"LOW_RISK",38:"MED_RISK",39:"HIGH_RISK",40:"VERIFY_ANALYSIS",41:"VERIFY_DEMONSTRATION",42:"VERIFY_INSPECTION",43:"VERIFY_TEST",44:"ELEMENT",47:"TYPE",49:"DOCREF",51:"END_ARROW_L",53:"LINE",54:"END_ARROW_R",55:"CONTAINS",56:"COPIES",57:"DERIVES",58:"SATISFIES",59:"VERIFIES",60:"REFINES",61:"TRACES",62:"unqString",63:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[14,5],[20,5],[20,5],[20,5],[20,5],[20,2],[20,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[27,1],[27,1],[27,1],[29,1],[29,1],[29,1],[29,1],[15,5],[46,5],[46,5],[46,2],[46,1],[16,5],[16,5],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[18,1],[18,1],[23,1],[23,1],[25,1],[25,1],[45,1],[45,1],[48,1],[48,1],[50,1],[50,1]],performAction:v(function(K,ee,Q,W,Y,Z,se){var ce=Z.length-1;switch(Y){case 4:this.$=Z[ce].trim(),W.setAccTitle(this.$);break;case 5:case 6:this.$=Z[ce].trim(),W.setAccDescription(this.$);break;case 7:this.$=[];break;case 13:W.addRequirement(Z[ce-3],Z[ce-4]);break;case 14:W.setNewReqId(Z[ce-2]);break;case 15:W.setNewReqText(Z[ce-2]);break;case 16:W.setNewReqRisk(Z[ce-2]);break;case 17:W.setNewReqVerifyMethod(Z[ce-2]);break;case 20:this.$=W.RequirementType.REQUIREMENT;break;case 21:this.$=W.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 22:this.$=W.RequirementType.INTERFACE_REQUIREMENT;break;case 23:this.$=W.RequirementType.PERFORMANCE_REQUIREMENT;break;case 24:this.$=W.RequirementType.PHYSICAL_REQUIREMENT;break;case 25:this.$=W.RequirementType.DESIGN_CONSTRAINT;break;case 26:this.$=W.RiskLevel.LOW_RISK;break;case 27:this.$=W.RiskLevel.MED_RISK;break;case 28:this.$=W.RiskLevel.HIGH_RISK;break;case 29:this.$=W.VerifyType.VERIFY_ANALYSIS;break;case 30:this.$=W.VerifyType.VERIFY_DEMONSTRATION;break;case 31:this.$=W.VerifyType.VERIFY_INSPECTION;break;case 32:this.$=W.VerifyType.VERIFY_TEST;break;case 33:W.addElement(Z[ce-3]);break;case 34:W.setNewElementType(Z[ce-2]);break;case 35:W.setNewElementDocRef(Z[ce-2]);break;case 38:W.addRelationship(Z[ce-2],Z[ce],Z[ce-4]);break;case 39:W.addRelationship(Z[ce-2],Z[ce-4],Z[ce]);break;case 40:this.$=W.Relationships.CONTAINS;break;case 41:this.$=W.Relationships.COPIES;break;case 42:this.$=W.Relationships.DERIVES;break;case 43:this.$=W.Relationships.SATISFIES;break;case 44:this.$=W.Relationships.VERIFIES;break;case 45:this.$=W.Relationships.REFINES;break;case 46:this.$=W.Relationships.TRACES;break}},"anonymous"),table:[{3:1,4:2,6:e,9:r,11:n,13:i},{1:[3]},{3:8,4:2,5:[1,7],6:e,9:r,11:n,13:i},{5:[1,9]},{10:[1,10]},{12:[1,11]},t(a,[2,6]),{3:12,4:2,6:e,9:r,11:n,13:i},{1:[2,2]},{4:17,5:s,7:13,8:o,9:r,11:n,13:i,14:14,15:15,16:16,17:19,23:21,31:l,32:u,33:h,34:f,35:d,36:p,44:g,62:m,63:y},t(a,[2,4]),t(a,[2,5]),{1:[2,1]},{8:[1,30]},{4:17,5:s,7:31,8:o,9:r,11:n,13:i,14:14,15:15,16:16,17:19,23:21,31:l,32:u,33:h,34:f,35:d,36:p,44:g,62:m,63:y},{4:17,5:s,7:32,8:o,9:r,11:n,13:i,14:14,15:15,16:16,17:19,23:21,31:l,32:u,33:h,34:f,35:d,36:p,44:g,62:m,63:y},{4:17,5:s,7:33,8:o,9:r,11:n,13:i,14:14,15:15,16:16,17:19,23:21,31:l,32:u,33:h,34:f,35:d,36:p,44:g,62:m,63:y},{4:17,5:s,7:34,8:o,9:r,11:n,13:i,14:14,15:15,16:16,17:19,23:21,31:l,32:u,33:h,34:f,35:d,36:p,44:g,62:m,63:y},{4:17,5:s,7:35,8:o,9:r,11:n,13:i,14:14,15:15,16:16,17:19,23:21,31:l,32:u,33:h,34:f,35:d,36:p,44:g,62:m,63:y},{18:36,62:[1,37],63:[1,38]},{45:39,62:[1,40],63:[1,41]},{51:[1,42],53:[1,43]},t(x,[2,20]),t(x,[2,21]),t(x,[2,22]),t(x,[2,23]),t(x,[2,24]),t(x,[2,25]),t(b,[2,49]),t(b,[2,50]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{19:[1,44]},{19:[2,47]},{19:[2,48]},{19:[1,45]},{19:[2,53]},{19:[2,54]},{52:46,55:w,56:_,57:k,58:E,59:L,60:S,61:C},{52:54,55:w,56:_,57:k,58:E,59:L,60:S,61:C},{5:[1,55]},{5:[1,56]},{53:[1,57]},t(M,[2,40]),t(M,[2,41]),t(M,[2,42]),t(M,[2,43]),t(M,[2,44]),t(M,[2,45]),t(M,[2,46]),{54:[1,58]},{5:R,20:59,21:T,24:I,26:A,28:D,30:N},{5:O,30:B,46:66,47:P,49:$},{23:71,62:m,63:y},{23:72,62:m,63:y},t(z,[2,13]),{22:[1,73]},{22:[1,74]},{22:[1,75]},{22:[1,76]},{5:R,20:77,21:T,24:I,26:A,28:D,30:N},t(z,[2,19]),t(z,[2,33]),{22:[1,78]},{22:[1,79]},{5:O,30:B,46:80,47:P,49:$},t(z,[2,37]),t(z,[2,38]),t(z,[2,39]),{23:81,62:m,63:y},{25:82,62:[1,83],63:[1,84]},{27:85,37:[1,86],38:[1,87],39:[1,88]},{29:89,40:[1,90],41:[1,91],42:[1,92],43:[1,93]},t(z,[2,18]),{48:94,62:[1,95],63:[1,96]},{50:97,62:[1,98],63:[1,99]},t(z,[2,36]),{5:[1,100]},{5:[1,101]},{5:[2,51]},{5:[2,52]},{5:[1,102]},{5:[2,26]},{5:[2,27]},{5:[2,28]},{5:[1,103]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[2,32]},{5:[1,104]},{5:[2,55]},{5:[2,56]},{5:[1,105]},{5:[2,57]},{5:[2,58]},{5:R,20:106,21:T,24:I,26:A,28:D,30:N},{5:R,20:107,21:T,24:I,26:A,28:D,30:N},{5:R,20:108,21:T,24:I,26:A,28:D,30:N},{5:R,20:109,21:T,24:I,26:A,28:D,30:N},{5:O,30:B,46:110,47:P,49:$},{5:O,30:B,46:111,47:P,49:$},t(z,[2,14]),t(z,[2,15]),t(z,[2,16]),t(z,[2,17]),t(z,[2,34]),t(z,[2,35])],defaultActions:{8:[2,2],12:[2,1],30:[2,3],31:[2,8],32:[2,9],33:[2,10],34:[2,11],35:[2,12],37:[2,47],38:[2,48],40:[2,53],41:[2,54],83:[2,51],84:[2,52],86:[2,26],87:[2,27],88:[2,28],90:[2,29],91:[2,30],92:[2,31],93:[2,32],95:[2,55],96:[2,56],98:[2,57],99:[2,58]},parseError:v(function(K,ee){if(ee.recoverable)this.trace(K);else{var Q=new Error(K);throw Q.hash=ee,Q}},"parseError"),parse:v(function(K){var ee=this,Q=[0],W=[],Y=[null],Z=[],se=this.table,ce="",ue=0,te=0,Ne=0,ae=2,we=1,Ie=Z.slice.call(arguments,1),Ee=Object.create(this.lexer),Oe={yy:{}};for(var De in this.yy)Object.prototype.hasOwnProperty.call(this.yy,De)&&(Oe.yy[De]=this.yy[De]);Ee.setInput(K,Oe.yy),Oe.yy.lexer=Ee,Oe.yy.parser=this,typeof Ee.yylloc>"u"&&(Ee.yylloc={});var We=Ee.yylloc;Z.push(We);var Re=Ee.options&&Ee.options.ranges;typeof Oe.yy.parseError=="function"?this.parseError=Oe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Pe($e){Q.length=Q.length-2*$e,Y.length=Y.length-$e,Z.length=Z.length-$e}v(Pe,"popStack");function xe(){var $e;return $e=W.pop()||Ee.lex()||we,typeof $e!="number"&&($e instanceof Array&&(W=$e,$e=W.pop()),$e=ee.symbols_[$e]||$e),$e}v(xe,"lex");for(var q,de,ie,he,U,ke,j={},ye,Ae,Ge,Fe;;){if(ie=Q[Q.length-1],this.defaultActions[ie]?he=this.defaultActions[ie]:((q===null||typeof q>"u")&&(q=xe()),he=se[ie]&&se[ie][q]),typeof he>"u"||!he.length||!he[0]){var ge="";Fe=[];for(ye in se[ie])this.terminals_[ye]&&ye>ae&&Fe.push("'"+this.terminals_[ye]+"'");Ee.showPosition?ge="Parse error on line "+(ue+1)+`: `+Ee.showPosition()+` Expecting `+Fe.join(", ")+", got '"+(this.terminals_[q]||q)+"'":ge="Parse error on line "+(ue+1)+": Unexpected "+(q==we?"end of input":"'"+(this.terminals_[q]||q)+"'"),this.parseError(ge,{text:Ee.match,token:this.terminals_[q]||q,line:Ee.yylineno,loc:We,expected:Fe})}if(he[0]instanceof Array&&he.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ie+", token: "+q);switch(he[0]){case 1:Q.push(q),Y.push(Ee.yytext),Z.push(Ee.yylloc),Q.push(he[1]),q=null,de?(q=de,de=null):(te=Ee.yyleng,ce=Ee.yytext,ue=Ee.yylineno,We=Ee.yylloc,Ne>0&&Ne--);break;case 2:if(Ae=this.productions_[he[1]][1],j.$=Y[Y.length-Ae],j._$={first_line:Z[Z.length-(Ae||1)].first_line,last_line:Z[Z.length-1].last_line,first_column:Z[Z.length-(Ae||1)].first_column,last_column:Z[Z.length-1].last_column},Re&&(j._$.range=[Z[Z.length-(Ae||1)].range[0],Z[Z.length-1].range[1]]),ke=this.performAction.apply(j,[ce,te,ue,Oe.yy,he[1],Y,Z].concat(Ie)),typeof ke<"u")return ke;Ae&&(Q=Q.slice(0,-1*Ae*2),Y=Y.slice(0,-1*Ae),Z=Z.slice(0,-1*Ae)),Q.push(this.productions_[he[1]][0]),Y.push(j.$),Z.push(j._$),Ge=se[Q[Q.length-2]][Q[Q.length-1]],Q.push(Ge);break;case 3:return!0}}return!0},"parse")},J=function(){var oe={EOF:1,parseError:v(function(ee,Q){if(this.yy.parser)this.yy.parser.parseError(ee,Q);else throw new Error(ee)},"parseError"),setInput:v(function(K,ee){return this.yy=ee||this.yy||{},this._input=K,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var K=this._input[0];this.yytext+=K,this.yyleng++,this.offset++,this.match+=K,this.matched+=K;var ee=K.match(/(?:\r\n?|\n).*/g);return ee?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),K},"input"),unput:v(function(K){var ee=K.length,Q=K.split(/(?:\r\n?|\n)/g);this._input=K+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ee),this.offset-=ee;var W=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Q.length-1&&(this.yylineno-=Q.length-1);var Y=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Q?(Q.length===W.length?this.yylloc.first_column:0)+W[W.length-Q.length].length-Q[0].length:this.yylloc.first_column-ee},this.options.ranges&&(this.yylloc.range=[Y[0],Y[0]+this.yyleng-ee]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(K){this.unput(this.match.slice(K))},"less"),pastInput:v(function(){var K=this.matched.substr(0,this.matched.length-this.match.length);return(K.length>20?"...":"")+K.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var K=this.match;return K.length<20&&(K+=this._input.substr(0,20-K.length)),(K.substr(0,20)+(K.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var K=this.pastInput(),ee=new Array(K.length+1).join("-");return K+this.upcomingInput()+` `+ee+"^"},"showPosition"),test_match:v(function(K,ee){var Q,W,Y;if(this.options.backtrack_lexer&&(Y={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Y.yylloc.range=this.yylloc.range.slice(0))),W=K[0].match(/(?:\r\n?|\n).*/g),W&&(this.yylineno+=W.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:W?W[W.length-1].length-W[W.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+K[0].length},this.yytext+=K[0],this.match+=K[0],this.matches=K,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(K[0].length),this.matched+=K[0],Q=this.performAction.call(this,this.yy,this,ee,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Q)return Q;if(this._backtrack){for(var Z in Y)this[Z]=Y[Z];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var K,ee,Q,W;this._more||(this.yytext="",this.match="");for(var Y=this._currentRules(),Z=0;Zee[0].length)){if(ee=Q,W=Z,this.options.backtrack_lexer){if(K=this.test_match(Q,Y[Z]),K!==!1)return K;if(this._backtrack){ee=!1;continue}else return!1}else if(!this.options.flex)break}return ee?(K=this.test_match(ee,Y[W]),K!==!1?K:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var ee=this.next();return ee||this.lex()},"lex"),begin:v(function(ee){this.conditionStack.push(ee)},"begin"),popState:v(function(){var ee=this.conditionStack.length-1;return ee>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(ee){return ee=this.conditionStack.length-1-Math.abs(ee||0),ee>=0?this.conditionStack[ee]:"INITIAL"},"topState"),pushState:v(function(ee){this.begin(ee)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:v(function(ee,Q,W,Y){var Z=Y;switch(W){case 0:return"title";case 1:return this.begin("acc_title"),9;break;case 2:return this.popState(),"acc_title_value";break;case 3:return this.begin("acc_descr"),11;break;case 4:return this.popState(),"acc_descr_value";break;case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 5;case 9:break;case 10:break;case 11:break;case 12:return 8;case 13:return 6;case 14:return 19;case 15:return 30;case 16:return 22;case 17:return 21;case 18:return 24;case 19:return 26;case 20:return 28;case 21:return 31;case 22:return 32;case 23:return 33;case 24:return 34;case 25:return 35;case 26:return 36;case 27:return 37;case 28:return 38;case 29:return 39;case 30:return 40;case 31:return 41;case 32:return 42;case 33:return 43;case 34:return 44;case 35:return 55;case 36:return 56;case 37:return 57;case 38:return 58;case 39:return 59;case 40:return 60;case 41:return 61;case 42:return 47;case 43:return 49;case 44:return 51;case 45:return 54;case 46:return 53;case 47:this.begin("string");break;case 48:this.popState();break;case 49:return"qString";case 50:return Q.yytext=Q.yytext.trim(),62;break}},"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[48,49],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,50],inclusive:!0}}};return oe}();H.lexer=J;function X(){this.yy={}}return v(X,"Parser"),X.prototype=H,H.Parser=X,new X}();dM.parser=dM;qPe=dM,gM=[],Os={},Q2=new Map,uf={},J2=new Map,YPe={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},XPe={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},jPe={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},KPe={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},ZPe=v((t,e)=>(Q2.has(t)||Q2.set(t,{name:t,type:e,id:Os.id,text:Os.text,risk:Os.risk,verifyMethod:Os.verifyMethod}),Os={},Q2.get(t)),"addRequirement"),QPe=v(()=>Q2,"getRequirements"),JPe=v(t=>{Os!==void 0&&(Os.id=t)},"setNewReqId"),eBe=v(t=>{Os!==void 0&&(Os.text=t)},"setNewReqText"),tBe=v(t=>{Os!==void 0&&(Os.risk=t)},"setNewReqRisk"),rBe=v(t=>{Os!==void 0&&(Os.verifyMethod=t)},"setNewReqVerifyMethod"),nBe=v(t=>(J2.has(t)||(J2.set(t,{name:t,type:uf.type,docRef:uf.docRef}),re.info("Added new requirement: ",t)),uf={},J2.get(t)),"addElement"),iBe=v(()=>J2,"getElements"),aBe=v(t=>{uf!==void 0&&(uf.type=t)},"setNewElementType"),sBe=v(t=>{uf!==void 0&&(uf.docRef=t)},"setNewElementDocRef"),oBe=v((t,e,r)=>{gM.push({type:t,src:e,dst:r})},"addRelationship"),lBe=v(()=>gM,"getRelationships"),cBe=v(()=>{gM=[],Os={},Q2=new Map,uf={},J2=new Map,xr()},"clear"),uBe={RequirementType:YPe,RiskLevel:XPe,VerifyType:jPe,Relationships:KPe,getConfig:v(()=>pe().req,"getConfig"),addRequirement:ZPe,getRequirements:QPe,setNewReqId:JPe,setNewReqText:eBe,setNewReqRisk:tBe,setNewReqVerifyMethod:rBe,setAccTitle:Tr,getAccTitle:_r,setAccDescription:Lr,getAccDescription:Rr,addElement:nBe,getElements:iBe,setNewElementType:aBe,setNewElementDocRef:sBe,addRelationship:oBe,getRelationships:lBe,clear:cBe},hBe=v(t=>` marker { fill: ${t.relationColor}; stroke: ${t.relationColor}; } marker.cross { stroke: ${t.lineColor}; } svg { font-family: ${t.fontFamily}; font-size: ${t.fontSize}; } .reqBox { fill: ${t.requirementBackground}; fill-opacity: 1.0; stroke: ${t.requirementBorderColor}; stroke-width: ${t.requirementBorderSize}; } .reqTitle, .reqLabel{ fill: ${t.requirementTextColor}; } .reqLabelBox { fill: ${t.relationLabelBackground}; fill-opacity: 1.0; } .req-title-line { stroke: ${t.requirementBorderColor}; stroke-width: ${t.requirementBorderSize}; } .relationshipLine { stroke: ${t.relationColor}; stroke-width: 1; } .relationshipLabel { fill: ${t.relationLabelColor}; } `,"getStyles"),fBe=hBe,pM={CONTAINS:"contains",ARROW:"arrow"},dBe=v((t,e)=>{let r=t.append("defs").append("marker").attr("id",pM.CONTAINS+"_line_ending").attr("refX",0).attr("refY",e.line_height/2).attr("markerWidth",e.line_height).attr("markerHeight",e.line_height).attr("orient","auto").append("g");r.append("circle").attr("cx",e.line_height/2).attr("cy",e.line_height/2).attr("r",e.line_height/2).attr("fill","none"),r.append("line").attr("x1",0).attr("x2",e.line_height).attr("y1",e.line_height/2).attr("y2",e.line_height/2).attr("stroke-width",1),r.append("line").attr("y1",0).attr("y2",e.line_height).attr("x1",e.line_height/2).attr("x2",e.line_height/2).attr("stroke-width",1),t.append("defs").append("marker").attr("id",pM.ARROW+"_line_ending").attr("refX",e.line_height).attr("refY",.5*e.line_height).attr("markerWidth",e.line_height).attr("markerHeight",e.line_height).attr("orient","auto").append("path").attr("d",`M0,0 L${e.line_height},${e.line_height/2} M${e.line_height},${e.line_height/2} L0,${e.line_height}`).attr("stroke-width",1)},"insertLineEndings"),sue={ReqMarkers:pM,insertLineEndings:dBe},ri={},aue=0,oue=v((t,e)=>t.insert("rect","#"+e).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",ri.rect_min_width+"px").attr("height",ri.rect_min_height+"px"),"newRectNode"),lue=v((t,e,r)=>{let n=ri.rect_min_width/2,i=t.append("text").attr("class","req reqLabel reqTitle").attr("id",e).attr("x",n).attr("y",ri.rect_padding).attr("dominant-baseline","hanging"),a=0;r.forEach(u=>{a==0?i.append("tspan").attr("text-anchor","middle").attr("x",ri.rect_min_width/2).attr("dy",0).text(u):i.append("tspan").attr("text-anchor","middle").attr("x",ri.rect_min_width/2).attr("dy",ri.line_height*.75).text(u),a++});let s=1.5*ri.rect_padding,o=a*ri.line_height*.75,l=s+o;return t.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",ri.rect_min_width).attr("y1",l).attr("y2",l),{titleNode:i,y:l}},"newTitleNode"),cue=v((t,e,r,n)=>{let i=t.append("text").attr("class","req reqLabel").attr("id",e).attr("x",ri.rect_padding).attr("y",n).attr("dominant-baseline","hanging"),a=0,s=30,o=[];return r.forEach(l=>{let u=l.length;for(;u>s&&a<3;){let h=l.substring(0,s);l=l.substring(s,l.length),u=l.length,o[o.length]=h,a++}if(a==3){let h=o[o.length-1];o[o.length-1]=h.substring(0,h.length-4)+"..."}else o[o.length]=l;a=0}),o.forEach(l=>{i.append("tspan").attr("x",ri.rect_padding).attr("dy",ri.line_height).text(l)}),i},"newBodyNode"),pBe=v((t,e,r,n)=>{let i=e.node().getTotalLength(),a=e.node().getPointAtLength(i*.5),s="rel"+aue;aue++;let l=t.append("text").attr("class","req relationshipLabel").attr("id",s).attr("x",a.x).attr("y",a.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(n).node().getBBox();t.insert("rect","#"+s).attr("class","req reqLabelBox").attr("x",a.x-l.width/2).attr("y",a.y-l.height/2).attr("width",l.width).attr("height",l.height).attr("fill","white").attr("fill-opacity","85%")},"addEdgeLabel"),gBe=v(function(t,e,r,n,i){let a=r.edge(Cm(e.src),Cm(e.dst)),s=ms().x(function(l){return l.x}).y(function(l){return l.y}),o=t.insert("path","#"+n).attr("class","er relationshipLine").attr("d",s(a.points)).attr("fill","none");e.type==i.db.Relationships.CONTAINS?o.attr("marker-start","url("+Xe.getUrl(ri.arrowMarkerAbsolute)+"#"+e.type+"_line_ending)"):(o.attr("stroke-dasharray","10,7"),o.attr("marker-end","url("+Xe.getUrl(ri.arrowMarkerAbsolute)+"#"+sue.ReqMarkers.ARROW+"_line_ending)")),pBe(t,o,ri,`<<${e.type}>>`)},"drawRelationshipFromLayout"),mBe=v((t,e,r)=>{t.forEach((n,i)=>{i=Cm(i),re.info("Added new requirement: ",i);let a=r.append("g").attr("id",i),s="req-"+i,o=oue(a,s),l=[],u=lue(a,i+"_title",[`<<${n.type}>>`,`${n.name}`]);l.push(u.titleNode);let h=cue(a,i+"_body",[`Id: ${n.id}`,`Text: ${n.text}`,`Risk: ${n.risk}`,`Verification: ${n.verifyMethod}`],u.y);l.push(h);let f=o.node().getBBox();e.setNode(i,{width:f.width,height:f.height,shape:"rect",id:i})})},"drawReqs"),vBe=v((t,e,r)=>{t.forEach((n,i)=>{let a=Cm(i),s=r.append("g").attr("id",a),o="element-"+a,l=oue(s,o),u=[],h=lue(s,o+"_title",["<>",`${i}`]);u.push(h.titleNode);let f=cue(s,o+"_body",[`Type: ${n.type||"Not Specified"}`,`Doc Ref: ${n.docRef||"None"}`],h.y);u.push(f);let d=l.node().getBBox();e.setNode(a,{width:d.width,height:d.height,shape:"rect",id:a})})},"drawElements"),yBe=v((t,e)=>(t.forEach(function(r){let n=Cm(r.src),i=Cm(r.dst);e.setEdge(n,i,{relationship:r})}),t),"addRelationships"),xBe=v(function(t,e){e.nodes().forEach(function(r){r!==void 0&&e.node(r)!==void 0&&(t.select("#"+r),t.select("#"+r).attr("transform","translate("+(e.node(r).x-e.node(r).width/2)+","+(e.node(r).y-e.node(r).height/2)+" )"))})},"adjustEntities"),Cm=v(t=>t.replace(/\s/g,"").replace(/\./g,"_"),"elementString"),bBe=v((t,e,r,n)=>{ri=pe().requirement;let i=ri.securityLevel,a;i==="sandbox"&&(a=Ve("#i"+e));let o=(i==="sandbox"?Ve(a.nodes()[0].contentDocument.body):Ve("body")).select(`[id='${e}']`);sue.insertLineEndings(o,ri);let l=new Sr({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:ri.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}}),u=n.db.getRequirements(),h=n.db.getElements(),f=n.db.getRelationships();mBe(u,l,o),vBe(h,l,o),yBe(f,l),Ru(l),xBe(o,l),f.forEach(function(y){gBe(o,y,l,e,n)});let d=ri.rect_padding,p=o.node().getBBox(),g=p.width+d*2,m=p.height+d*2;Hr(o,m,g,ri.useMaxWidth),o.attr("viewBox",`${p.x-d} ${p.y-d} ${g} ${m}`)},"draw"),wBe={draw:bBe},kBe={parser:qPe,db:uBe,renderer:wBe,styles:fBe}});var Due={};vr(Due,{diagram:()=>kFe});function YT(t,e){if(t.links==null)t.links=e;else for(let r in e)t.links[r]=e[r]}function bM(t,e){if(t.properties==null)t.properties=e;else for(let r in e)t.properties[r]=e[r]}function xue(){Dt.records.currentBox=void 0}async function _ue(t,e){Qe.bumpVerticalPos(10);let{startx:r,stopx:n,message:i}=e,a=Xe.splitBreaks(i).length,s=Ei(i),o=s?await ep(i,pe()):Ut.calculateTextDimensions(i,x0(Le));if(!s){let f=o.height/a;e.height+=f,Qe.bumpVerticalPos(f)}let l,u=o.height-10,h=o.width;if(r===n){l=Qe.getVerticalPos()+u,Le.rightAngles||(u+=Le.boxMargin,l=Qe.getVerticalPos()+u),u+=30;let f=Xe.getMax(h/2,Le.width/2);Qe.insert(r-f,Qe.getVerticalPos()-10+u,n+f,Qe.getVerticalPos()+30+u)}else u+=Le.boxMargin,l=Qe.getVerticalPos()+u,Qe.insert(r,l-10,n,l);return Qe.bumpVerticalPos(u),e.height+=u,e.stopy=e.starty+e.height,Qe.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),l}function Il(t,e,r,n,i){Qe.bumpVerticalPos(r);let a=n;if(e.id&&e.message&&t[e.id]){let s=t[e.id].width,o=x0(Le);e.message=Ut.wrapLabel(`[${e.message}]`,s-2*Le.wrapPadding,o),e.width=s,e.wrap=!0;let l=Ut.calculateTextDimensions(e.message,o),u=Xe.getMax(l.height,Le.labelBoxHeight);a=n+u,re.debug(`${u} - ${e.message}`)}i(e),Qe.bumpVerticalPos(a)}function Nue(t,e,r,n,i,a,s){function o(u,h){u.x{let s=x0(Le),o=a.actorKeys.reduce((h,f)=>h+=t.get(f).width+(t.get(f).margin||0),0);o-=2*Le.boxTextMargin,a.wrap&&(a.name=Ut.wrapLabel(a.name,o-2*Le.wrapPadding,s));let l=Ut.calculateTextDimensions(a.name,s);i=Xe.getMax(l.height,i);let u=Xe.getMax(o,l.width+2*Le.wrapPadding);if(a.margin=Le.boxTextMargin,oa.textMaxHeight=i),Xe.getMax(n,Le.height)}var wM,mM,TBe,Dt,EBe,vM,SBe,CBe,ui,ABe,_Be,LBe,RBe,NBe,IBe,MBe,tx,DBe,OBe,PBe,BBe,FBe,gue,y0,zBe,$Be,GBe,ex,UBe,VBe,mue,vue,WBe,yue,bue,HBe,wue,fue,qBe,YBe,v0,kue,Tue,XBe,due,kM,jBe,KBe,qT,_m,Eue,zc,Sue,ZBe,QBe,JBe,eFe,tFe,rFe,nFe,Cue,iFe,aFe,sFe,oFe,lFe,cFe,uFe,Aue,hFe,TM,fFe,hi,Le,Qe,dFe,x0,Am,yM,pFe,gFe,xM,Lue,Rue,XT,pue,mFe,vFe,yFe,xFe,bFe,wFe,kFe,Oue=F(()=>{Rw();Hw();kn();or();lr();wM=Gi(hp(),1),mM=function(){var t=v(function(W,Y,Z,se){for(Z=Z||{},se=W.length;se--;Z[W[se]]=Y);return Z},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],o=[1,13],l=[1,14],u=[1,16],h=[1,17],f=[1,18],d=[1,24],p=[1,25],g=[1,26],m=[1,27],y=[1,28],x=[1,29],b=[1,30],w=[1,31],_=[1,32],k=[1,33],E=[1,34],L=[1,35],S=[1,36],C=[1,37],M=[1,38],R=[1,39],T=[1,41],I=[1,42],A=[1,43],D=[1,44],N=[1,45],O=[1,46],B=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,54,59,60,61,62,70],P=[4,5,16,50,52,53],$=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],z=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,54,59,60,61,62,70],H=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,54,59,60,61,62,70],J=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,54,59,60,61,62,70],X=[68,69,70],oe=[1,122],K={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,note:54,placement:55,text2:56,over:57,actor_pair:58,links:59,link:60,properties:61,details:62,spaceList:63,",":64,left_of:65,right_of:66,signaltype:67,"+":68,"-":69,ACTOR:70,SOLID_OPEN_ARROW:71,DOTTED_OPEN_ARROW:72,SOLID_ARROW:73,BIDIRECTIONAL_SOLID_ARROW:74,DOTTED_ARROW:75,BIDIRECTIONAL_DOTTED_ARROW:76,SOLID_CROSS:77,DOTTED_CROSS:78,SOLID_POINT:79,DOTTED_POINT:80,TXT:81,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",54:"note",57:"over",59:"links",60:"link",61:"properties",62:"details",64:",",65:"left_of",66:"right_of",68:"+",69:"-",70:"ACTOR",71:"SOLID_OPEN_ARROW",72:"DOTTED_OPEN_ARROW",73:"SOLID_ARROW",74:"BIDIRECTIONAL_SOLID_ARROW",75:"DOTTED_ARROW",76:"BIDIRECTIONAL_DOTTED_ARROW",77:"SOLID_CROSS",78:"DOTTED_CROSS",79:"SOLID_POINT",80:"DOTTED_POINT",81:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[63,2],[63,1],[58,3],[58,1],[55,1],[55,1],[17,5],[17,5],[17,4],[22,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[56,1]],performAction:v(function(Y,Z,se,ce,ue,te,Ne){var ae=te.length-1;switch(ue){case 3:return ce.apply(te[ae]),te[ae];break;case 4:case 9:this.$=[];break;case 5:case 10:te[ae-1].push(te[ae]),this.$=te[ae-1];break;case 6:case 7:case 11:case 12:this.$=te[ae];break;case 8:case 13:this.$=[];break;case 15:te[ae].type="createParticipant",this.$=te[ae];break;case 16:te[ae-1].unshift({type:"boxStart",boxData:ce.parseBoxData(te[ae-2])}),te[ae-1].push({type:"boxEnd",boxText:te[ae-2]}),this.$=te[ae-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(te[ae-2]),sequenceIndexStep:Number(te[ae-1]),sequenceVisible:!0,signalType:ce.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(te[ae-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:ce.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:ce.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:ce.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:ce.LINETYPE.ACTIVE_START,actor:te[ae-1].actor};break;case 23:this.$={type:"activeEnd",signalType:ce.LINETYPE.ACTIVE_END,actor:te[ae-1].actor};break;case 29:ce.setDiagramTitle(te[ae].substring(6)),this.$=te[ae].substring(6);break;case 30:ce.setDiagramTitle(te[ae].substring(7)),this.$=te[ae].substring(7);break;case 31:this.$=te[ae].trim(),ce.setAccTitle(this.$);break;case 32:case 33:this.$=te[ae].trim(),ce.setAccDescription(this.$);break;case 34:te[ae-1].unshift({type:"loopStart",loopText:ce.parseMessage(te[ae-2]),signalType:ce.LINETYPE.LOOP_START}),te[ae-1].push({type:"loopEnd",loopText:te[ae-2],signalType:ce.LINETYPE.LOOP_END}),this.$=te[ae-1];break;case 35:te[ae-1].unshift({type:"rectStart",color:ce.parseMessage(te[ae-2]),signalType:ce.LINETYPE.RECT_START}),te[ae-1].push({type:"rectEnd",color:ce.parseMessage(te[ae-2]),signalType:ce.LINETYPE.RECT_END}),this.$=te[ae-1];break;case 36:te[ae-1].unshift({type:"optStart",optText:ce.parseMessage(te[ae-2]),signalType:ce.LINETYPE.OPT_START}),te[ae-1].push({type:"optEnd",optText:ce.parseMessage(te[ae-2]),signalType:ce.LINETYPE.OPT_END}),this.$=te[ae-1];break;case 37:te[ae-1].unshift({type:"altStart",altText:ce.parseMessage(te[ae-2]),signalType:ce.LINETYPE.ALT_START}),te[ae-1].push({type:"altEnd",signalType:ce.LINETYPE.ALT_END}),this.$=te[ae-1];break;case 38:te[ae-1].unshift({type:"parStart",parText:ce.parseMessage(te[ae-2]),signalType:ce.LINETYPE.PAR_START}),te[ae-1].push({type:"parEnd",signalType:ce.LINETYPE.PAR_END}),this.$=te[ae-1];break;case 39:te[ae-1].unshift({type:"parStart",parText:ce.parseMessage(te[ae-2]),signalType:ce.LINETYPE.PAR_OVER_START}),te[ae-1].push({type:"parEnd",signalType:ce.LINETYPE.PAR_END}),this.$=te[ae-1];break;case 40:te[ae-1].unshift({type:"criticalStart",criticalText:ce.parseMessage(te[ae-2]),signalType:ce.LINETYPE.CRITICAL_START}),te[ae-1].push({type:"criticalEnd",signalType:ce.LINETYPE.CRITICAL_END}),this.$=te[ae-1];break;case 41:te[ae-1].unshift({type:"breakStart",breakText:ce.parseMessage(te[ae-2]),signalType:ce.LINETYPE.BREAK_START}),te[ae-1].push({type:"breakEnd",optText:ce.parseMessage(te[ae-2]),signalType:ce.LINETYPE.BREAK_END}),this.$=te[ae-1];break;case 43:this.$=te[ae-3].concat([{type:"option",optionText:ce.parseMessage(te[ae-1]),signalType:ce.LINETYPE.CRITICAL_OPTION},te[ae]]);break;case 45:this.$=te[ae-3].concat([{type:"and",parText:ce.parseMessage(te[ae-1]),signalType:ce.LINETYPE.PAR_AND},te[ae]]);break;case 47:this.$=te[ae-3].concat([{type:"else",altText:ce.parseMessage(te[ae-1]),signalType:ce.LINETYPE.ALT_ELSE},te[ae]]);break;case 48:te[ae-3].draw="participant",te[ae-3].type="addParticipant",te[ae-3].description=ce.parseMessage(te[ae-1]),this.$=te[ae-3];break;case 49:te[ae-1].draw="participant",te[ae-1].type="addParticipant",this.$=te[ae-1];break;case 50:te[ae-3].draw="actor",te[ae-3].type="addParticipant",te[ae-3].description=ce.parseMessage(te[ae-1]),this.$=te[ae-3];break;case 51:te[ae-1].draw="actor",te[ae-1].type="addParticipant",this.$=te[ae-1];break;case 52:te[ae-1].type="destroyParticipant",this.$=te[ae-1];break;case 53:this.$=[te[ae-1],{type:"addNote",placement:te[ae-2],actor:te[ae-1].actor,text:te[ae]}];break;case 54:te[ae-2]=[].concat(te[ae-1],te[ae-1]).slice(0,2),te[ae-2][0]=te[ae-2][0].actor,te[ae-2][1]=te[ae-2][1].actor,this.$=[te[ae-1],{type:"addNote",placement:ce.PLACEMENT.OVER,actor:te[ae-2].slice(0,2),text:te[ae]}];break;case 55:this.$=[te[ae-1],{type:"addLinks",actor:te[ae-1].actor,text:te[ae]}];break;case 56:this.$=[te[ae-1],{type:"addALink",actor:te[ae-1].actor,text:te[ae]}];break;case 57:this.$=[te[ae-1],{type:"addProperties",actor:te[ae-1].actor,text:te[ae]}];break;case 58:this.$=[te[ae-1],{type:"addDetails",actor:te[ae-1].actor,text:te[ae]}];break;case 61:this.$=[te[ae-2],te[ae]];break;case 62:this.$=te[ae];break;case 63:this.$=ce.PLACEMENT.LEFTOF;break;case 64:this.$=ce.PLACEMENT.RIGHTOF;break;case 65:this.$=[te[ae-4],te[ae-1],{type:"addMessage",from:te[ae-4].actor,to:te[ae-1].actor,signalType:te[ae-3],msg:te[ae],activate:!0},{type:"activeStart",signalType:ce.LINETYPE.ACTIVE_START,actor:te[ae-1].actor}];break;case 66:this.$=[te[ae-4],te[ae-1],{type:"addMessage",from:te[ae-4].actor,to:te[ae-1].actor,signalType:te[ae-3],msg:te[ae]},{type:"activeEnd",signalType:ce.LINETYPE.ACTIVE_END,actor:te[ae-4].actor}];break;case 67:this.$=[te[ae-3],te[ae-1],{type:"addMessage",from:te[ae-3].actor,to:te[ae-1].actor,signalType:te[ae-2],msg:te[ae]}];break;case 68:this.$={type:"addParticipant",actor:te[ae]};break;case 69:this.$=ce.LINETYPE.SOLID_OPEN;break;case 70:this.$=ce.LINETYPE.DOTTED_OPEN;break;case 71:this.$=ce.LINETYPE.SOLID;break;case 72:this.$=ce.LINETYPE.BIDIRECTIONAL_SOLID;break;case 73:this.$=ce.LINETYPE.DOTTED;break;case 74:this.$=ce.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 75:this.$=ce.LINETYPE.SOLID_CROSS;break;case 76:this.$=ce.LINETYPE.DOTTED_CROSS;break;case 77:this.$=ce.LINETYPE.SOLID_POINT;break;case 78:this.$=ce.LINETYPE.DOTTED_POINT;break;case 79:this.$=ce.parseMessage(te[ae].trim().substring(1));break}},"anonymous"),table:[{3:1,4:e,5:r,6:n},{1:[3]},{3:5,4:e,5:r,6:n},{3:6,4:e,5:r,6:n},t([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,12:12,13:o,14:l,17:15,18:u,21:h,22:40,23:f,24:19,25:20,26:21,27:22,28:23,29:d,30:p,31:g,33:m,35:y,36:x,37:b,38:w,39:_,41:k,43:E,44:L,46:S,50:C,52:M,53:R,54:T,59:I,60:A,61:D,62:N,70:O},t(B,[2,5]),{9:47,12:12,13:o,14:l,17:15,18:u,21:h,22:40,23:f,24:19,25:20,26:21,27:22,28:23,29:d,30:p,31:g,33:m,35:y,36:x,37:b,38:w,39:_,41:k,43:E,44:L,46:S,50:C,52:M,53:R,54:T,59:I,60:A,61:D,62:N,70:O},t(B,[2,7]),t(B,[2,8]),t(B,[2,14]),{12:48,50:C,52:M,53:R},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,70:O},{22:55,70:O},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(B,[2,29]),t(B,[2,30]),{32:[1,61]},{34:[1,62]},t(B,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,70:O},{22:72,70:O},{22:73,70:O},{67:74,71:[1,75],72:[1,76],73:[1,77],74:[1,78],75:[1,79],76:[1,80],77:[1,81],78:[1,82],79:[1,83],80:[1,84]},{55:85,57:[1,86],65:[1,87],66:[1,88]},{22:89,70:O},{22:90,70:O},{22:91,70:O},{22:92,70:O},t([5,51,64,71,72,73,74,75,76,77,78,79,80,81],[2,68]),t(B,[2,6]),t(B,[2,15]),t(P,[2,9],{10:93}),t(B,[2,17]),{5:[1,95],19:[1,94]},{5:[1,96]},t(B,[2,21]),{5:[1,97]},{5:[1,98]},t(B,[2,24]),t(B,[2,25]),t(B,[2,26]),t(B,[2,27]),t(B,[2,28]),t(B,[2,31]),t(B,[2,32]),t($,i,{7:99}),t($,i,{7:100}),t($,i,{7:101}),t(z,i,{40:102,7:103}),t(H,i,{42:104,7:105}),t(H,i,{7:105,42:106}),t(J,i,{45:107,7:108}),t($,i,{7:109}),{5:[1,111],51:[1,110]},{5:[1,113],51:[1,112]},{5:[1,114]},{22:117,68:[1,115],69:[1,116],70:O},t(X,[2,69]),t(X,[2,70]),t(X,[2,71]),t(X,[2,72]),t(X,[2,73]),t(X,[2,74]),t(X,[2,75]),t(X,[2,76]),t(X,[2,77]),t(X,[2,78]),{22:118,70:O},{22:120,58:119,70:O},{70:[2,63]},{70:[2,64]},{56:121,81:oe},{56:123,81:oe},{56:124,81:oe},{56:125,81:oe},{4:[1,128],5:[1,130],11:127,12:129,16:[1,126],50:C,52:M,53:R},{5:[1,131]},t(B,[2,19]),t(B,[2,20]),t(B,[2,22]),t(B,[2,23]),{4:a,5:s,8:8,9:10,12:12,13:o,14:l,16:[1,132],17:15,18:u,21:h,22:40,23:f,24:19,25:20,26:21,27:22,28:23,29:d,30:p,31:g,33:m,35:y,36:x,37:b,38:w,39:_,41:k,43:E,44:L,46:S,50:C,52:M,53:R,54:T,59:I,60:A,61:D,62:N,70:O},{4:a,5:s,8:8,9:10,12:12,13:o,14:l,16:[1,133],17:15,18:u,21:h,22:40,23:f,24:19,25:20,26:21,27:22,28:23,29:d,30:p,31:g,33:m,35:y,36:x,37:b,38:w,39:_,41:k,43:E,44:L,46:S,50:C,52:M,53:R,54:T,59:I,60:A,61:D,62:N,70:O},{4:a,5:s,8:8,9:10,12:12,13:o,14:l,16:[1,134],17:15,18:u,21:h,22:40,23:f,24:19,25:20,26:21,27:22,28:23,29:d,30:p,31:g,33:m,35:y,36:x,37:b,38:w,39:_,41:k,43:E,44:L,46:S,50:C,52:M,53:R,54:T,59:I,60:A,61:D,62:N,70:O},{16:[1,135]},{4:a,5:s,8:8,9:10,12:12,13:o,14:l,16:[2,46],17:15,18:u,21:h,22:40,23:f,24:19,25:20,26:21,27:22,28:23,29:d,30:p,31:g,33:m,35:y,36:x,37:b,38:w,39:_,41:k,43:E,44:L,46:S,49:[1,136],50:C,52:M,53:R,54:T,59:I,60:A,61:D,62:N,70:O},{16:[1,137]},{4:a,5:s,8:8,9:10,12:12,13:o,14:l,16:[2,44],17:15,18:u,21:h,22:40,23:f,24:19,25:20,26:21,27:22,28:23,29:d,30:p,31:g,33:m,35:y,36:x,37:b,38:w,39:_,41:k,43:E,44:L,46:S,48:[1,138],50:C,52:M,53:R,54:T,59:I,60:A,61:D,62:N,70:O},{16:[1,139]},{16:[1,140]},{4:a,5:s,8:8,9:10,12:12,13:o,14:l,16:[2,42],17:15,18:u,21:h,22:40,23:f,24:19,25:20,26:21,27:22,28:23,29:d,30:p,31:g,33:m,35:y,36:x,37:b,38:w,39:_,41:k,43:E,44:L,46:S,47:[1,141],50:C,52:M,53:R,54:T,59:I,60:A,61:D,62:N,70:O},{4:a,5:s,8:8,9:10,12:12,13:o,14:l,16:[1,142],17:15,18:u,21:h,22:40,23:f,24:19,25:20,26:21,27:22,28:23,29:d,30:p,31:g,33:m,35:y,36:x,37:b,38:w,39:_,41:k,43:E,44:L,46:S,50:C,52:M,53:R,54:T,59:I,60:A,61:D,62:N,70:O},{15:[1,143]},t(B,[2,49]),{15:[1,144]},t(B,[2,51]),t(B,[2,52]),{22:145,70:O},{22:146,70:O},{56:147,81:oe},{56:148,81:oe},{56:149,81:oe},{64:[1,150],81:[2,62]},{5:[2,55]},{5:[2,79]},{5:[2,56]},{5:[2,57]},{5:[2,58]},t(B,[2,16]),t(P,[2,10]),{12:151,50:C,52:M,53:R},t(P,[2,12]),t(P,[2,13]),t(B,[2,18]),t(B,[2,34]),t(B,[2,35]),t(B,[2,36]),t(B,[2,37]),{15:[1,152]},t(B,[2,38]),{15:[1,153]},t(B,[2,39]),t(B,[2,40]),{15:[1,154]},t(B,[2,41]),{5:[1,155]},{5:[1,156]},{56:157,81:oe},{56:158,81:oe},{5:[2,67]},{5:[2,53]},{5:[2,54]},{22:159,70:O},t(P,[2,11]),t(z,i,{7:103,40:160}),t(H,i,{7:105,42:161}),t(J,i,{7:108,45:162}),t(B,[2,48]),t(B,[2,50]),{5:[2,65]},{5:[2,66]},{81:[2,61]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],87:[2,63],88:[2,64],121:[2,55],122:[2,79],123:[2,56],124:[2,57],125:[2,58],147:[2,67],148:[2,53],149:[2,54],157:[2,65],158:[2,66],159:[2,61],160:[2,47],161:[2,45],162:[2,43]},parseError:v(function(Y,Z){if(Z.recoverable)this.trace(Y);else{var se=new Error(Y);throw se.hash=Z,se}},"parseError"),parse:v(function(Y){var Z=this,se=[0],ce=[],ue=[null],te=[],Ne=this.table,ae="",we=0,Ie=0,Ee=0,Oe=2,De=1,We=te.slice.call(arguments,1),Re=Object.create(this.lexer),Pe={yy:{}};for(var xe in this.yy)Object.prototype.hasOwnProperty.call(this.yy,xe)&&(Pe.yy[xe]=this.yy[xe]);Re.setInput(Y,Pe.yy),Pe.yy.lexer=Re,Pe.yy.parser=this,typeof Re.yylloc>"u"&&(Re.yylloc={});var q=Re.yylloc;te.push(q);var de=Re.options&&Re.options.ranges;typeof Pe.yy.parseError=="function"?this.parseError=Pe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ie(xt){se.length=se.length-2*xt,ue.length=ue.length-xt,te.length=te.length-xt}v(ie,"popStack");function he(){var xt;return xt=ce.pop()||Re.lex()||De,typeof xt!="number"&&(xt instanceof Array&&(ce=xt,xt=ce.pop()),xt=Z.symbols_[xt]||xt),xt}v(he,"lex");for(var U,ke,j,ye,Ae,Ge,Fe={},ge,$e,Ce,qe;;){if(j=se[se.length-1],this.defaultActions[j]?ye=this.defaultActions[j]:((U===null||typeof U>"u")&&(U=he()),ye=Ne[j]&&Ne[j][U]),typeof ye>"u"||!ye.length||!ye[0]){var lt="";qe=[];for(ge in Ne[j])this.terminals_[ge]&&ge>Oe&&qe.push("'"+this.terminals_[ge]+"'");Re.showPosition?lt="Parse error on line "+(we+1)+`: `+Re.showPosition()+` Expecting `+qe.join(", ")+", got '"+(this.terminals_[U]||U)+"'":lt="Parse error on line "+(we+1)+": Unexpected "+(U==De?"end of input":"'"+(this.terminals_[U]||U)+"'"),this.parseError(lt,{text:Re.match,token:this.terminals_[U]||U,line:Re.yylineno,loc:q,expected:qe})}if(ye[0]instanceof Array&&ye.length>1)throw new Error("Parse Error: multiple actions possible at state: "+j+", token: "+U);switch(ye[0]){case 1:se.push(U),ue.push(Re.yytext),te.push(Re.yylloc),se.push(ye[1]),U=null,ke?(U=ke,ke=null):(Ie=Re.yyleng,ae=Re.yytext,we=Re.yylineno,q=Re.yylloc,Ee>0&&Ee--);break;case 2:if($e=this.productions_[ye[1]][1],Fe.$=ue[ue.length-$e],Fe._$={first_line:te[te.length-($e||1)].first_line,last_line:te[te.length-1].last_line,first_column:te[te.length-($e||1)].first_column,last_column:te[te.length-1].last_column},de&&(Fe._$.range=[te[te.length-($e||1)].range[0],te[te.length-1].range[1]]),Ge=this.performAction.apply(Fe,[ae,Ie,we,Pe.yy,ye[1],ue,te].concat(We)),typeof Ge<"u")return Ge;$e&&(se=se.slice(0,-1*$e*2),ue=ue.slice(0,-1*$e),te=te.slice(0,-1*$e)),se.push(this.productions_[ye[1]][0]),ue.push(Fe.$),te.push(Fe._$),Ce=Ne[se[se.length-2]][se[se.length-1]],se.push(Ce);break;case 3:return!0}}return!0},"parse")},ee=function(){var W={EOF:1,parseError:v(function(Z,se){if(this.yy.parser)this.yy.parser.parseError(Z,se);else throw new Error(Z)},"parseError"),setInput:v(function(Y,Z){return this.yy=Z||this.yy||{},this._input=Y,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var Y=this._input[0];this.yytext+=Y,this.yyleng++,this.offset++,this.match+=Y,this.matched+=Y;var Z=Y.match(/(?:\r\n?|\n).*/g);return Z?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Y},"input"),unput:v(function(Y){var Z=Y.length,se=Y.split(/(?:\r\n?|\n)/g);this._input=Y+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Z),this.offset-=Z;var ce=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),se.length-1&&(this.yylineno-=se.length-1);var ue=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:se?(se.length===ce.length?this.yylloc.first_column:0)+ce[ce.length-se.length].length-se[0].length:this.yylloc.first_column-Z},this.options.ranges&&(this.yylloc.range=[ue[0],ue[0]+this.yyleng-Z]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(Y){this.unput(this.match.slice(Y))},"less"),pastInput:v(function(){var Y=this.matched.substr(0,this.matched.length-this.match.length);return(Y.length>20?"...":"")+Y.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var Y=this.match;return Y.length<20&&(Y+=this._input.substr(0,20-Y.length)),(Y.substr(0,20)+(Y.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var Y=this.pastInput(),Z=new Array(Y.length+1).join("-");return Y+this.upcomingInput()+` `+Z+"^"},"showPosition"),test_match:v(function(Y,Z){var se,ce,ue;if(this.options.backtrack_lexer&&(ue={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ue.yylloc.range=this.yylloc.range.slice(0))),ce=Y[0].match(/(?:\r\n?|\n).*/g),ce&&(this.yylineno+=ce.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ce?ce[ce.length-1].length-ce[ce.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Y[0].length},this.yytext+=Y[0],this.match+=Y[0],this.matches=Y,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Y[0].length),this.matched+=Y[0],se=this.performAction.call(this,this.yy,this,Z,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),se)return se;if(this._backtrack){for(var te in ue)this[te]=ue[te];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Y,Z,se,ce;this._more||(this.yytext="",this.match="");for(var ue=this._currentRules(),te=0;teZ[0].length)){if(Z=se,ce=te,this.options.backtrack_lexer){if(Y=this.test_match(se,ue[te]),Y!==!1)return Y;if(this._backtrack){Z=!1;continue}else return!1}else if(!this.options.flex)break}return Z?(Y=this.test_match(Z,ue[ce]),Y!==!1?Y:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var Z=this.next();return Z||this.lex()},"lex"),begin:v(function(Z){this.conditionStack.push(Z)},"begin"),popState:v(function(){var Z=this.conditionStack.length-1;return Z>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(Z){return Z=this.conditionStack.length-1-Math.abs(Z||0),Z>=0?this.conditionStack[Z]:"INITIAL"},"topState"),pushState:v(function(Z){this.begin(Z)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:v(function(Z,se,ce,ue){var te=ue;switch(ce){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 19;case 7:return this.begin("LINE"),14;break;case 8:return this.begin("ID"),50;break;case 9:return this.begin("ID"),52;break;case 10:return 13;case 11:return this.begin("ID"),53;break;case 12:return se.yytext=se.yytext.trim(),this.begin("ALIAS"),70;break;case 13:return this.popState(),this.popState(),this.begin("LINE"),51;break;case 14:return this.popState(),this.popState(),5;break;case 15:return this.begin("LINE"),36;break;case 16:return this.begin("LINE"),37;break;case 17:return this.begin("LINE"),38;break;case 18:return this.begin("LINE"),39;break;case 19:return this.begin("LINE"),49;break;case 20:return this.begin("LINE"),41;break;case 21:return this.begin("LINE"),43;break;case 22:return this.begin("LINE"),48;break;case 23:return this.begin("LINE"),44;break;case 24:return this.begin("LINE"),47;break;case 25:return this.begin("LINE"),46;break;case 26:return this.popState(),15;break;case 27:return 16;case 28:return 65;case 29:return 66;case 30:return 59;case 31:return 60;case 32:return 61;case 33:return 62;case 34:return 57;case 35:return 54;case 36:return this.begin("ID"),21;break;case 37:return this.begin("ID"),23;break;case 38:return 29;case 39:return 30;case 40:return this.begin("acc_title"),31;break;case 41:return this.popState(),"acc_title_value";break;case 42:return this.begin("acc_descr"),33;break;case 43:return this.popState(),"acc_descr_value";break;case 44:this.begin("acc_descr_multiline");break;case 45:this.popState();break;case 46:return"acc_descr_multiline_value";case 47:return 6;case 48:return 18;case 49:return 20;case 50:return 64;case 51:return 5;case 52:return se.yytext=se.yytext.trim(),70;break;case 53:return 73;case 54:return 74;case 55:return 75;case 56:return 76;case 57:return 71;case 58:return 72;case 59:return 77;case 60:return 78;case 61:return 79;case 62:return 80;case 63:return 81;case 64:return 68;case 65:return 69;case 66:return 5;case 67:return"INVALID"}},"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:[^\<->\->:\n,;]+?([\-]*[^\<->\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\<->\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\<->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[45,46],inclusive:!1},acc_descr:{rules:[43],inclusive:!1},acc_title:{rules:[41],inclusive:!1},ID:{rules:[2,3,12],inclusive:!1},ALIAS:{rules:[2,3,13,14],inclusive:!1},LINE:{rules:[2,3,26],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,38,39,40,42,44,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],inclusive:!0}}};return W}();K.lexer=ee;function Q(){this.yy={}}return v(Q,"Parser"),Q.prototype=K,K.Parser=Q,new Q}();mM.parser=mM;TBe=mM,Dt=new Rg(()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0})),EBe=v(function(t){Dt.records.boxes.push({name:t.text,wrap:t.wrap??y0(),fill:t.color,actorKeys:[]}),Dt.records.currentBox=Dt.records.boxes.slice(-1)[0]},"addBox"),vM=v(function(t,e,r,n){let i=Dt.records.currentBox,a=Dt.records.actors.get(t);if(a){if(Dt.records.currentBox&&a.box&&Dt.records.currentBox!==a.box)throw new Error(`A same participant should only be defined in one Box: ${a.name} can't be in '${a.box.name}' and in '${Dt.records.currentBox.name}' at the same time.`);if(i=a.box?a.box:Dt.records.currentBox,a.box=i,a&&e===a.name&&r==null)return}if(r?.text==null&&(r={text:e,type:n}),(n==null||r.text==null)&&(r={text:e,type:n}),Dt.records.actors.set(t,{box:i,name:e,description:r.text,wrap:r.wrap??y0(),prevActor:Dt.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:n??"participant"}),Dt.records.prevActor){let s=Dt.records.actors.get(Dt.records.prevActor);s&&(s.nextActor=t)}Dt.records.currentBox&&Dt.records.currentBox.actorKeys.push(t),Dt.records.prevActor=t},"addActor"),SBe=v(t=>{let e,r=0;if(!t)return 0;for(e=0;e>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},s}return Dt.records.messages.push({from:t,to:e,message:r?.text??"",wrap:r?.wrap??y0(),type:n,activate:i}),!0},"addSignal"),ABe=v(function(){return Dt.records.boxes.length>0},"hasAtLeastOneBox"),_Be=v(function(){return Dt.records.boxes.some(t=>t.name)},"hasAtLeastOneBoxWithTitle"),LBe=v(function(){return Dt.records.messages},"getMessages"),RBe=v(function(){return Dt.records.boxes},"getBoxes"),NBe=v(function(){return Dt.records.actors},"getActors"),IBe=v(function(){return Dt.records.createdActors},"getCreatedActors"),MBe=v(function(){return Dt.records.destroyedActors},"getDestroyedActors"),tx=v(function(t){return Dt.records.actors.get(t)},"getActor"),DBe=v(function(){return[...Dt.records.actors.keys()]},"getActorKeys"),OBe=v(function(){Dt.records.sequenceNumbersEnabled=!0},"enableSequenceNumbers"),PBe=v(function(){Dt.records.sequenceNumbersEnabled=!1},"disableSequenceNumbers"),BBe=v(()=>Dt.records.sequenceNumbersEnabled,"showSequenceNumbers"),FBe=v(function(t){Dt.records.wrapEnabled=t},"setWrap"),gue=v(t=>{if(t===void 0)return{};t=t.trim();let e=/^:?wrap:/.exec(t)!==null?!0:/^:?nowrap:/.exec(t)!==null?!1:void 0;return{cleanedText:(e===void 0?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:e}},"extractWrap"),y0=v(()=>Dt.records.wrapEnabled!==void 0?Dt.records.wrapEnabled:pe().sequence?.wrap??!1,"autoWrap"),zBe=v(function(){Dt.reset(),xr()},"clear"),$Be=v(function(t){let e=t.trim(),{wrap:r,cleanedText:n}=gue(e),i={text:n,wrap:r};return re.debug(`parseMessage: ${JSON.stringify(i)}`),i},"parseMessage"),GBe=v(function(t){let e=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t),r=e?.[1]?e[1].trim():"transparent",n=e?.[2]?e[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",r)||(r="transparent",n=t.trim());else{let s=new Option().style;s.color=r,s.color!==r&&(r="transparent",n=t.trim())}let{wrap:i,cleanedText:a}=gue(n);return{text:a?yr(a,pe()):void 0,color:r,wrap:i}},"parseBoxData"),ex={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34},UBe={FILLED:0,OPEN:1},VBe={LEFTOF:0,RIGHTOF:1,OVER:2},mue=v(function(t,e,r){let n={actor:t,placement:e,message:r.text,wrap:r.wrap??y0()},i=[].concat(t,t);Dt.records.notes.push(n),Dt.records.messages.push({from:i[0],to:i[1],message:r.text,wrap:r.wrap??y0(),type:ex.NOTE,placement:e})},"addNote"),vue=v(function(t,e){let r=tx(t);try{let n=yr(e.text,pe());n=n.replace(/&/g,"&"),n=n.replace(/=/g,"=");let i=JSON.parse(n);YT(r,i)}catch(n){re.error("error while parsing actor link text",n)}},"addLinks"),WBe=v(function(t,e){let r=tx(t);try{let n={},i=yr(e.text,pe()),a=i.indexOf("@");i=i.replace(/&/g,"&"),i=i.replace(/=/g,"=");let s=i.slice(0,a-1).trim(),o=i.slice(a+1).trim();n[s]=o,YT(r,n)}catch(n){re.error("error while parsing actor link text",n)}},"addALink");v(YT,"insertLinks");yue=v(function(t,e){let r=tx(t);try{let n=yr(e.text,pe()),i=JSON.parse(n);bM(r,i)}catch(n){re.error("error while parsing actor properties text",n)}},"addProperties");v(bM,"insertProperties");v(xue,"boxEnd");bue=v(function(t,e){let r=tx(t),n=document.getElementById(e.text);try{let i=n.innerHTML,a=JSON.parse(i);a.properties&&bM(r,a.properties),a.links&&YT(r,a.links)}catch(i){re.error("error while parsing actor details text",i)}},"addDetails"),HBe=v(function(t,e){if(t?.properties!==void 0)return t.properties[e]},"getActorProperty"),wue=v(function(t){if(Array.isArray(t))t.forEach(function(e){wue(e)});else switch(t.type){case"sequenceIndex":Dt.records.messages.push({from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":vM(t.actor,t.actor,t.description,t.draw);break;case"createParticipant":if(Dt.records.actors.has(t.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");Dt.records.lastCreated=t.actor,vM(t.actor,t.actor,t.description,t.draw),Dt.records.createdActors.set(t.actor,Dt.records.messages.length);break;case"destroyParticipant":Dt.records.lastDestroyed=t.actor,Dt.records.destroyedActors.set(t.actor,Dt.records.messages.length);break;case"activeStart":ui(t.actor,void 0,void 0,t.signalType);break;case"activeEnd":ui(t.actor,void 0,void 0,t.signalType);break;case"addNote":mue(t.actor,t.placement,t.text);break;case"addLinks":vue(t.actor,t.text);break;case"addALink":WBe(t.actor,t.text);break;case"addProperties":yue(t.actor,t.text);break;case"addDetails":bue(t.actor,t.text);break;case"addMessage":if(Dt.records.lastCreated){if(t.to!==Dt.records.lastCreated)throw new Error("The created participant "+Dt.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");Dt.records.lastCreated=void 0}else if(Dt.records.lastDestroyed){if(t.to!==Dt.records.lastDestroyed&&t.from!==Dt.records.lastDestroyed)throw new Error("The destroyed participant "+Dt.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");Dt.records.lastDestroyed=void 0}ui(t.from,t.to,t.msg,t.signalType,t.activate);break;case"boxStart":EBe(t.boxData);break;case"boxEnd":xue();break;case"loopStart":ui(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":ui(void 0,void 0,void 0,t.signalType);break;case"rectStart":ui(void 0,void 0,t.color,t.signalType);break;case"rectEnd":ui(void 0,void 0,void 0,t.signalType);break;case"optStart":ui(void 0,void 0,t.optText,t.signalType);break;case"optEnd":ui(void 0,void 0,void 0,t.signalType);break;case"altStart":ui(void 0,void 0,t.altText,t.signalType);break;case"else":ui(void 0,void 0,t.altText,t.signalType);break;case"altEnd":ui(void 0,void 0,void 0,t.signalType);break;case"setAccTitle":Tr(t.text);break;case"parStart":ui(void 0,void 0,t.parText,t.signalType);break;case"and":ui(void 0,void 0,t.parText,t.signalType);break;case"parEnd":ui(void 0,void 0,void 0,t.signalType);break;case"criticalStart":ui(void 0,void 0,t.criticalText,t.signalType);break;case"option":ui(void 0,void 0,t.optionText,t.signalType);break;case"criticalEnd":ui(void 0,void 0,void 0,t.signalType);break;case"breakStart":ui(void 0,void 0,t.breakText,t.signalType);break;case"breakEnd":ui(void 0,void 0,void 0,t.signalType);break}},"apply"),fue={addActor:vM,addMessage:CBe,addSignal:ui,addLinks:vue,addDetails:bue,addProperties:yue,autoWrap:y0,setWrap:FBe,enableSequenceNumbers:OBe,disableSequenceNumbers:PBe,showSequenceNumbers:BBe,getMessages:LBe,getActors:NBe,getCreatedActors:IBe,getDestroyedActors:MBe,getActor:tx,getActorKeys:DBe,getActorProperty:HBe,getAccTitle:_r,getBoxes:RBe,getDiagramTitle:qr,setDiagramTitle:tn,getConfig:v(()=>pe().sequence,"getConfig"),clear:zBe,parseMessage:$Be,parseBoxData:GBe,LINETYPE:ex,ARROWTYPE:UBe,PLACEMENT:VBe,addNote:mue,setAccTitle:Tr,apply:wue,setAccDescription:Lr,getAccDescription:Rr,hasAtLeastOneBox:ABe,hasAtLeastOneBoxWithTitle:_Be},qBe=v(t=>`.actor { stroke: ${t.actorBorder}; fill: ${t.actorBkg}; } text.actor > tspan { fill: ${t.actorTextColor}; stroke: none; } .actor-line { stroke: ${t.actorLineColor}; } .messageLine0 { stroke-width: 1.5; stroke-dasharray: none; stroke: ${t.signalColor}; } .messageLine1 { stroke-width: 1.5; stroke-dasharray: 2, 2; stroke: ${t.signalColor}; } #arrowhead path { fill: ${t.signalColor}; stroke: ${t.signalColor}; } .sequenceNumber { fill: ${t.sequenceNumberColor}; } #sequencenumber { fill: ${t.signalColor}; } #crosshead path { fill: ${t.signalColor}; stroke: ${t.signalColor}; } .messageText { fill: ${t.signalTextColor}; stroke: none; } .labelBox { stroke: ${t.labelBoxBorderColor}; fill: ${t.labelBoxBkgColor}; } .labelText, .labelText > tspan { fill: ${t.labelTextColor}; stroke: none; } .loopText, .loopText > tspan { fill: ${t.loopTextColor}; stroke: none; } .loopLine { stroke-width: 2px; stroke-dasharray: 2, 2; stroke: ${t.labelBoxBorderColor}; fill: ${t.labelBoxBorderColor}; } .note { //stroke: #decc93; stroke: ${t.noteBorderColor}; fill: ${t.noteBkgColor}; } .noteText, .noteText > tspan { fill: ${t.noteTextColor}; stroke: none; } .activation0 { fill: ${t.activationBkgColor}; stroke: ${t.activationBorderColor}; } .activation1 { fill: ${t.activationBkgColor}; stroke: ${t.activationBorderColor}; } .activation2 { fill: ${t.activationBkgColor}; stroke: ${t.activationBorderColor}; } .actorPopupMenu { position: absolute; } .actorPopupMenuPanel { position: absolute; fill: ${t.actorBkg}; box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4)); } .actor-man line { stroke: ${t.actorBorder}; fill: ${t.actorBkg}; } .actor-man circle, line { stroke: ${t.actorBorder}; fill: ${t.actorBkg}; stroke-width: 2px; } `,"getStyles"),YBe=qBe,v0=18*2,kue="actor-top",Tue="actor-bottom",XBe="actor-box",due="actor-man",kM=v(function(t,e){return Dd(t,e)},"drawRect"),jBe=v(function(t,e,r,n,i){if(e.links===void 0||e.links===null||Object.keys(e.links).length===0)return{height:0,width:0};let a=e.links,s=e.actorCnt,o=e.rectData;var l="none";i&&(l="block !important");let u=t.append("g");u.attr("id","actor"+s+"_popup"),u.attr("class","actorPopupMenu"),u.attr("display",l);var h="";o.class!==void 0&&(h=" "+o.class);let f=o.width>r?o.width:r,d=u.append("rect");if(d.attr("class","actorPopupMenuPanel"+h),d.attr("x",o.x),d.attr("y",o.height),d.attr("fill",o.fill),d.attr("stroke",o.stroke),d.attr("width",f),d.attr("height",o.height),d.attr("rx",o.rx),d.attr("ry",o.ry),a!=null){var p=20;for(let y in a){var g=u.append("a"),m=(0,wM.sanitizeUrl)(a[y]);g.attr("xlink:href",m),g.attr("target","_blank"),fFe(n)(y,g,o.x+10,o.height+p,f,20,{class:"actor"},n),p+=30}}return d.attr("height",p),{height:o.height+p,width:f}},"drawPopup"),KBe=v(function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},"popupMenuToggle"),qT=v(async function(t,e,r=null){let n=t.append("foreignObject"),i=await fh(e.text,Or()),s=n.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(i).node().getBoundingClientRect();if(n.attr("height",Math.round(s.height)).attr("width",Math.round(s.width)),e.class==="noteText"){let o=t.node().firstChild;o.setAttribute("height",s.height+2*e.textMargin);let l=o.getBBox();n.attr("x",Math.round(l.x+l.width/2-s.width/2)).attr("y",Math.round(l.y+l.height/2-s.height/2))}else if(r){let{startx:o,stopx:l,starty:u}=r;if(o>l){let h=o;o=l,l=h}n.attr("x",Math.round(o+Math.abs(o-l)/2-s.width/2)),e.class==="loopText"?n.attr("y",Math.round(u)):n.attr("y",Math.round(u-s.height))}return[n]},"drawKatex"),_m=v(function(t,e){let r=0,n=0,i=e.text.split(Xe.lineBreakRegex),[a,s]=Ro(e.fontSize),o=[],l=0,u=v(()=>e.y,"yfunc");if(e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0)switch(e.valign){case"top":case"start":u=v(()=>Math.round(e.y+e.textMargin),"yfunc");break;case"middle":case"center":u=v(()=>Math.round(e.y+(r+n+e.textMargin)/2),"yfunc");break;case"bottom":case"end":u=v(()=>Math.round(e.y+(r+n+2*e.textMargin)-e.textMargin),"yfunc");break}if(e.anchor!==void 0&&e.textMargin!==void 0&&e.width!==void 0)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle";break}for(let[h,f]of i.entries()){e.textMargin!==void 0&&e.textMargin===0&&a!==void 0&&(l=h*a);let d=t.append("text");d.attr("x",e.x),d.attr("y",u()),e.anchor!==void 0&&d.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),e.fontFamily!==void 0&&d.style("font-family",e.fontFamily),s!==void 0&&d.style("font-size",s),e.fontWeight!==void 0&&d.style("font-weight",e.fontWeight),e.fill!==void 0&&d.attr("fill",e.fill),e.class!==void 0&&d.attr("class",e.class),e.dy!==void 0?d.attr("dy",e.dy):l!==0&&d.attr("dy",l);let p=f||iA;if(e.tspan){let g=d.append("tspan");g.attr("x",e.x),e.fill!==void 0&&g.attr("fill",e.fill),g.text(p)}else d.text(p);e.valign!==void 0&&e.textMargin!==void 0&&e.textMargin>0&&(n+=(d._groups||d)[0][0].getBBox().height,r=n),o.push(d)}return o},"drawText"),Eue=v(function(t,e){function r(i,a,s,o,l){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+o-l)+" "+(i+s-l*1.2)+","+(a+o)+" "+i+","+(a+o)}v(r,"genPoints");let n=t.append("polygon");return n.attr("points",r(e.x,e.y,e.width,e.height,7)),n.attr("class","labelBox"),e.y=e.y+e.height/2,_m(t,e),n},"drawLabel"),zc=-1,Sue=v((t,e,r,n)=>{t.select&&r.forEach(i=>{let a=e.get(i),s=t.select("#actor"+a.actorCnt);!n.mirrorActors&&a.stopy?s.attr("y2",a.stopy+a.height/2):n.mirrorActors&&s.attr("y2",a.stopy)})},"fixLifeLineHeights"),ZBe=v(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+e.height,o=t.append("g").lower();var l=o;n||(zc++,Object.keys(e.links||{}).length&&!r.forceMenus&&l.attr("onclick",KBe(`actor${zc}_popup`)).attr("cursor","pointer"),l.append("line").attr("id","actor"+zc).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),l=o.append("g"),e.actorCnt=zc,e.links!=null&&l.attr("id","root-"+zc));let u=Tc();var h="actor";e.properties?.class?h=e.properties.class:u.fill="#eaeaea",n?h+=` ${Tue}`:h+=` ${kue}`,u.x=e.x,u.y=i,u.width=e.width,u.height=e.height,u.class=h,u.rx=3,u.ry=3,u.name=e.name;let f=kM(l,u);if(e.rectData=u,e.properties?.icon){let p=e.properties.icon.trim();p.charAt(0)==="@"?rne(l,u.x+u.width-20,u.y+10,p.substr(1)):tne(l,u.x+u.width-20,u.y+10,p)}TM(r,Ei(e.description))(e.description,l,u.x,u.y,u.width,u.height,{class:`actor ${XBe}`},r);let d=e.height;if(f.node){let p=f.node().getBBox();e.height=p.height,d=p.height}return d},"drawActorTypeParticipant"),QBe=v(function(t,e,r,n){let i=n?e.stopy:e.starty,a=e.x+e.width/2,s=i+80,o=t.append("g").lower();n||(zc++,o.append("line").attr("id","actor"+zc).attr("x1",a).attr("y1",s).attr("x2",a).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=zc);let l=t.append("g"),u=due;n?u+=` ${Tue}`:u+=` ${kue}`,l.attr("class",u),l.attr("name",e.name);let h=Tc();h.x=e.x,h.y=i,h.fill="#eaeaea",h.width=e.width,h.height=e.height,h.class="actor",h.rx=3,h.ry=3,l.append("line").attr("id","actor-man-torso"+zc).attr("x1",a).attr("y1",i+25).attr("x2",a).attr("y2",i+45),l.append("line").attr("id","actor-man-arms"+zc).attr("x1",a-v0/2).attr("y1",i+33).attr("x2",a+v0/2).attr("y2",i+33),l.append("line").attr("x1",a-v0/2).attr("y1",i+60).attr("x2",a).attr("y2",i+45),l.append("line").attr("x1",a).attr("y1",i+45).attr("x2",a+v0/2-2).attr("y2",i+60);let f=l.append("circle");f.attr("cx",e.x+e.width/2),f.attr("cy",i+10),f.attr("r",15),f.attr("width",e.width),f.attr("height",e.height);let d=l.node().getBBox();return e.height=d.height,TM(r,Ei(e.description))(e.description,l,h.x,h.y+35,h.width,h.height,{class:`actor ${due}`},r),e.height},"drawActorTypeActor"),JBe=v(async function(t,e,r,n){switch(e.type){case"actor":return await QBe(t,e,r,n);case"participant":return await ZBe(t,e,r,n)}},"drawActor"),eFe=v(function(t,e,r){let i=t.append("g");Cue(i,e),e.name&&TM(r)(e.name,i,e.x,e.y+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},r),i.lower()},"drawBox"),tFe=v(function(t){return t.append("g")},"anchorElement"),rFe=v(function(t,e,r,n,i){let a=Tc(),s=e.anchored;a.x=e.startx,a.y=e.starty,a.class="activation"+i%3,a.width=e.stopx-e.startx,a.height=r-e.starty,kM(s,a)},"drawActivation"),nFe=v(async function(t,e,r,n){let{boxMargin:i,boxTextMargin:a,labelBoxHeight:s,labelBoxWidth:o,messageFontFamily:l,messageFontSize:u,messageFontWeight:h}=n,f=t.append("g"),d=v(function(m,y,x,b){return f.append("line").attr("x1",m).attr("y1",y).attr("x2",x).attr("y2",b).attr("class","loopLine")},"drawLoopLine");d(e.startx,e.starty,e.stopx,e.starty),d(e.stopx,e.starty,e.stopx,e.stopy),d(e.startx,e.stopy,e.stopx,e.stopy),d(e.startx,e.starty,e.startx,e.stopy),e.sections!==void 0&&e.sections.forEach(function(m){d(e.startx,m.y,e.stopx,m.y).style("stroke-dasharray","3, 3")});let p=Lw();p.text=r,p.x=e.startx,p.y=e.starty,p.fontFamily=l,p.fontSize=u,p.fontWeight=h,p.anchor="middle",p.valign="middle",p.tspan=!1,p.width=o||50,p.height=s||20,p.textMargin=a,p.class="labelText",Eue(f,p),p=Aue(),p.text=e.title,p.x=e.startx+o/2+(e.stopx-e.startx)/2,p.y=e.starty+i+a,p.anchor="middle",p.valign="middle",p.textMargin=a,p.class="loopText",p.fontFamily=l,p.fontSize=u,p.fontWeight=h,p.wrap=!0;let g=Ei(p.text)?await qT(f,p,e):_m(f,p);if(e.sectionTitles!==void 0){for(let[m,y]of Object.entries(e.sectionTitles))if(y.message){p.text=y.message,p.x=e.startx+(e.stopx-e.startx)/2,p.y=e.sections[m].y+i+a,p.class="loopText",p.anchor="middle",p.valign="middle",p.tspan=!1,p.fontFamily=l,p.fontSize=u,p.fontWeight=h,p.wrap=e.wrap,Ei(p.text)?(e.starty=e.sections[m].y,await qT(f,p,e)):_m(f,p);let x=Math.round(g.map(b=>(b._groups||b)[0][0].getBBox().height).reduce((b,w)=>b+w));e.sections[m].height+=x-(i+a)}}return e.height=Math.round(e.stopy-e.starty),f},"drawLoop"),Cue=v(function(t,e){_w(t,e)},"drawBackgroundRect"),iFe=v(function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},"insertDatabaseIcon"),aFe=v(function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},"insertComputerIcon"),sFe=v(function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},"insertClockIcon"),oFe=v(function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")},"insertArrowHead"),lFe=v(function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"insertArrowFilledHead"),cFe=v(function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},"insertSequenceNumber"),uFe=v(function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},"insertArrowCrossHead"),Aue=v(function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},"getTextObj"),hFe=v(function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),TM=function(){function t(a,s,o,l,u,h,f){let d=s.append("text").attr("x",o+u/2).attr("y",l+h/2+5).style("text-anchor","middle").text(a);i(d,f)}v(t,"byText");function e(a,s,o,l,u,h,f,d){let{actorFontSize:p,actorFontFamily:g,actorFontWeight:m}=d,[y,x]=Ro(p),b=a.split(Xe.lineBreakRegex);for(let w=0;wt.height||0))+(this.loops.length===0?0:this.loops.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.messages.length===0?0:this.messages.map(t=>t.height||0).reduce((t,e)=>t+e))+(this.notes.length===0?0:this.notes.map(t=>t.height||0).reduce((t,e)=>t+e))},"getHeight"),clear:v(function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},"clear"),addBox:v(function(t){this.boxes.push(t)},"addBox"),addActor:v(function(t){this.actors.push(t)},"addActor"),addLoop:v(function(t){this.loops.push(t)},"addLoop"),addMessage:v(function(t){this.messages.push(t)},"addMessage"),addNote:v(function(t){this.notes.push(t)},"addNote"),lastActor:v(function(){return this.actors[this.actors.length-1]},"lastActor"),lastLoop:v(function(){return this.loops[this.loops.length-1]},"lastLoop"),lastMessage:v(function(){return this.messages[this.messages.length-1]},"lastMessage"),lastNote:v(function(){return this.notes[this.notes.length-1]},"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:v(function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,Rue(pe())},"init"),updateVal:v(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:v(function(t,e,r,n){let i=this,a=0;function s(o){return v(function(u){a++;let h=i.sequenceItems.length-a+1;i.updateVal(u,"starty",e-h*Le.boxMargin,Math.min),i.updateVal(u,"stopy",n+h*Le.boxMargin,Math.max),i.updateVal(Qe.data,"startx",t-h*Le.boxMargin,Math.min),i.updateVal(Qe.data,"stopx",r+h*Le.boxMargin,Math.max),o!=="activation"&&(i.updateVal(u,"startx",t-h*Le.boxMargin,Math.min),i.updateVal(u,"stopx",r+h*Le.boxMargin,Math.max),i.updateVal(Qe.data,"starty",e-h*Le.boxMargin,Math.min),i.updateVal(Qe.data,"stopy",n+h*Le.boxMargin,Math.max))},"updateItemBounds")}v(s,"updateFn"),this.sequenceItems.forEach(s()),this.activations.forEach(s("activation"))},"updateBounds"),insert:v(function(t,e,r,n){let i=Xe.getMin(t,r),a=Xe.getMax(t,r),s=Xe.getMin(e,n),o=Xe.getMax(e,n);this.updateVal(Qe.data,"startx",i,Math.min),this.updateVal(Qe.data,"starty",s,Math.min),this.updateVal(Qe.data,"stopx",a,Math.max),this.updateVal(Qe.data,"stopy",o,Math.max),this.updateBounds(i,s,a,o)},"insert"),newActivation:v(function(t,e,r){let n=r.get(t.from),i=XT(t.from).length||0,a=n.x+n.width/2+(i-1)*Le.activationWidth/2;this.activations.push({startx:a,starty:this.verticalPos+2,stopx:a+Le.activationWidth,stopy:void 0,actor:t.from,anchored:hi.anchorElement(e)})},"newActivation"),endActivation:v(function(t){let e=this.activations.map(function(r){return r.actor}).lastIndexOf(t.from);return this.activations.splice(e,1)[0]},"endActivation"),createLoop:v(function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}},"createLoop"),newLoop:v(function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))},"newLoop"),endLoop:v(function(){return this.sequenceItems.pop()},"endLoop"),isLoopOverlap:v(function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},"isLoopOverlap"),addSectionToLoop:v(function(t){let e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:Qe.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)},"addSectionToLoop"),saveVerticalPos:v(function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},"saveVerticalPos"),resetVerticalPos:v(function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},"resetVerticalPos"),bumpVerticalPos:v(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=Xe.getMax(this.data.stopy,this.verticalPos)},"bumpVerticalPos"),getVerticalPos:v(function(){return this.verticalPos},"getVerticalPos"),getBounds:v(function(){return{bounds:this.data,models:this.models}},"getBounds")},dFe=v(async function(t,e){Qe.bumpVerticalPos(Le.boxMargin),e.height=Le.boxMargin,e.starty=Qe.getVerticalPos();let r=Tc();r.x=e.startx,r.y=e.starty,r.width=e.width||Le.width,r.class="note";let n=t.append("g"),i=hi.drawRect(n,r),a=Lw();a.x=e.startx,a.y=e.starty,a.width=r.width,a.dy="1em",a.text=e.message,a.class="noteText",a.fontFamily=Le.noteFontFamily,a.fontSize=Le.noteFontSize,a.fontWeight=Le.noteFontWeight,a.anchor=Le.noteAlign,a.textMargin=Le.noteMargin,a.valign="center";let s=Ei(a.text)?await qT(n,a):_m(n,a),o=Math.round(s.map(l=>(l._groups||l)[0][0].getBBox().height).reduce((l,u)=>l+u));i.attr("height",o+2*Le.noteMargin),e.height+=o+2*Le.noteMargin,Qe.bumpVerticalPos(o+2*Le.noteMargin),e.stopy=e.starty+o+2*Le.noteMargin,e.stopx=e.startx+r.width,Qe.insert(e.startx,e.starty,e.stopx,e.stopy),Qe.models.addNote(e)},"drawNote"),x0=v(t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight}),"messageFont"),Am=v(t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight}),"noteFont"),yM=v(t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight}),"actorFont");v(_ue,"boundMessage");pFe=v(async function(t,e,r,n){let{startx:i,stopx:a,starty:s,message:o,type:l,sequenceIndex:u,sequenceVisible:h}=e,f=Ut.calculateTextDimensions(o,x0(Le)),d=Lw();d.x=i,d.y=s+10,d.width=a-i,d.class="messageText",d.dy="1em",d.text=o,d.fontFamily=Le.messageFontFamily,d.fontSize=Le.messageFontSize,d.fontWeight=Le.messageFontWeight,d.anchor=Le.messageAlign,d.valign="center",d.textMargin=Le.wrapPadding,d.tspan=!1,Ei(d.text)?await qT(t,d,{startx:i,stopx:a,starty:r}):_m(t,d);let p=f.width,g;i===a?Le.rightAngles?g=t.append("path").attr("d",`M ${i},${r} H ${i+Xe.getMax(Le.width/2,p/2)} V ${r+25} H ${i}`):g=t.append("path").attr("d","M "+i+","+r+" C "+(i+60)+","+(r-10)+" "+(i+60)+","+(r+30)+" "+i+","+(r+20)):(g=t.append("line"),g.attr("x1",i),g.attr("y1",r),g.attr("x2",a),g.attr("y2",r)),l===n.db.LINETYPE.DOTTED||l===n.db.LINETYPE.DOTTED_CROSS||l===n.db.LINETYPE.DOTTED_POINT||l===n.db.LINETYPE.DOTTED_OPEN||l===n.db.LINETYPE.BIDIRECTIONAL_DOTTED?(g.style("stroke-dasharray","3, 3"),g.attr("class","messageLine1")):g.attr("class","messageLine0");let m="";Le.arrowMarkerAbsolute&&(m=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,m=m.replace(/\(/g,"\\("),m=m.replace(/\)/g,"\\)")),g.attr("stroke-width",2),g.attr("stroke","none"),g.style("fill","none"),(l===n.db.LINETYPE.SOLID||l===n.db.LINETYPE.DOTTED)&&g.attr("marker-end","url("+m+"#arrowhead)"),(l===n.db.LINETYPE.BIDIRECTIONAL_SOLID||l===n.db.LINETYPE.BIDIRECTIONAL_DOTTED)&&(g.attr("marker-start","url("+m+"#arrowhead)"),g.attr("marker-end","url("+m+"#arrowhead)")),(l===n.db.LINETYPE.SOLID_POINT||l===n.db.LINETYPE.DOTTED_POINT)&&g.attr("marker-end","url("+m+"#filled-head)"),(l===n.db.LINETYPE.SOLID_CROSS||l===n.db.LINETYPE.DOTTED_CROSS)&&g.attr("marker-end","url("+m+"#crosshead)"),(h||Le.showSequenceNumbers)&&(g.attr("marker-start","url("+m+"#sequencenumber)"),t.append("text").attr("x",i).attr("y",r+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(u))},"drawMessage"),gFe=v(function(t,e,r,n,i,a,s){let o=0,l=0,u,h=0;for(let f of n){let d=e.get(f),p=d.box;u&&u!=p&&(s||Qe.models.addBox(u),l+=Le.boxMargin+u.margin),p&&p!=u&&(s||(p.x=o+l,p.y=i),l+=p.margin),d.width=d.width||Le.width,d.height=Xe.getMax(d.height||Le.height,Le.height),d.margin=d.margin||Le.actorMargin,h=Xe.getMax(h,d.height),r.get(d.name)&&(l+=d.width/2),d.x=o+l,d.starty=Qe.getVerticalPos(),Qe.insert(d.x,i,d.x+d.width,d.height),o+=d.width+l,d.box&&(d.box.width=o+p.margin-d.box.x),l=d.margin,u=d.box,Qe.models.addActor(d)}u&&!s&&Qe.models.addBox(u),Qe.bumpVerticalPos(h)},"addActorRenderingData"),xM=v(async function(t,e,r,n){if(n){let i=0;Qe.bumpVerticalPos(Le.boxMargin*2);for(let a of r){let s=e.get(a);s.stopy||(s.stopy=Qe.getVerticalPos());let o=await hi.drawActor(t,s,Le,!0);i=Xe.getMax(i,o)}Qe.bumpVerticalPos(i+Le.boxMargin)}else for(let i of r){let a=e.get(i);await hi.drawActor(t,a,Le,!1)}},"drawActors"),Lue=v(function(t,e,r,n){let i=0,a=0;for(let s of r){let o=e.get(s),l=vFe(o),u=hi.drawPopup(t,o,l,Le,Le.forceMenus,n);u.height>i&&(i=u.height),u.width+o.x>a&&(a=u.width+o.x)}return{maxHeight:i,maxWidth:a}},"drawActorsPopup"),Rue=v(function(t){Hn(Le,t),t.fontFamily&&(Le.actorFontFamily=Le.noteFontFamily=Le.messageFontFamily=t.fontFamily),t.fontSize&&(Le.actorFontSize=Le.noteFontSize=Le.messageFontSize=t.fontSize),t.fontWeight&&(Le.actorFontWeight=Le.noteFontWeight=Le.messageFontWeight=t.fontWeight)},"setConf"),XT=v(function(t){return Qe.activations.filter(function(e){return e.actor===t})},"actorActivations"),pue=v(function(t,e){let r=e.get(t),n=XT(t),i=n.reduce(function(s,o){return Xe.getMin(s,o.startx)},r.x+r.width/2-1),a=n.reduce(function(s,o){return Xe.getMax(s,o.stopx)},r.x+r.width/2+1);return[i,a]},"activationBounds");v(Il,"adjustLoopHeightForWrap");v(Nue,"adjustCreatedDestroyedData");mFe=v(async function(t,e,r,n){let{securityLevel:i,sequence:a}=pe();Le=a;let s;i==="sandbox"&&(s=Ve("#i"+e));let o=i==="sandbox"?Ve(s.nodes()[0].contentDocument.body):Ve("body"),l=i==="sandbox"?s.nodes()[0].contentDocument:document;Qe.init(),re.debug(n.db);let u=i==="sandbox"?o.select(`[id="${e}"]`):Ve(`[id="${e}"]`),h=n.db.getActors(),f=n.db.getCreatedActors(),d=n.db.getDestroyedActors(),p=n.db.getBoxes(),g=n.db.getActorKeys(),m=n.db.getMessages(),y=n.db.getDiagramTitle(),x=n.db.hasAtLeastOneBox(),b=n.db.hasAtLeastOneBoxWithTitle(),w=await Iue(h,m,n);if(Le.height=await Mue(h,w,p),hi.insertComputerIcon(u),hi.insertDatabaseIcon(u),hi.insertClockIcon(u),x&&(Qe.bumpVerticalPos(Le.boxMargin),b&&Qe.bumpVerticalPos(p[0].textMaxHeight)),Le.hideUnusedParticipants===!0){let B=new Set;m.forEach(P=>{B.add(P.from),B.add(P.to)}),g=g.filter(P=>B.has(P))}gFe(u,h,f,g,0,m,!1);let _=await bFe(m,h,w,n);hi.insertArrowHead(u),hi.insertArrowCrossHead(u),hi.insertArrowFilledHead(u),hi.insertSequenceNumber(u);function k(B,P){let $=Qe.endActivation(B);$.starty+18>P&&($.starty=P-6,P+=12),hi.drawActivation(u,$,P,Le,XT(B.from).length),Qe.insert($.startx,P-10,$.stopx,P)}v(k,"activeEnd");let E=1,L=1,S=[],C=[],M=0;for(let B of m){let P,$,z;switch(B.type){case n.db.LINETYPE.NOTE:Qe.resetVerticalPos(),$=B.noteModel,await dFe(u,$);break;case n.db.LINETYPE.ACTIVE_START:Qe.newActivation(B,u,h);break;case n.db.LINETYPE.ACTIVE_END:k(B,Qe.getVerticalPos());break;case n.db.LINETYPE.LOOP_START:Il(_,B,Le.boxMargin,Le.boxMargin+Le.boxTextMargin,H=>Qe.newLoop(H));break;case n.db.LINETYPE.LOOP_END:P=Qe.endLoop(),await hi.drawLoop(u,P,"loop",Le),Qe.bumpVerticalPos(P.stopy-Qe.getVerticalPos()),Qe.models.addLoop(P);break;case n.db.LINETYPE.RECT_START:Il(_,B,Le.boxMargin,Le.boxMargin,H=>Qe.newLoop(void 0,H.message));break;case n.db.LINETYPE.RECT_END:P=Qe.endLoop(),C.push(P),Qe.models.addLoop(P),Qe.bumpVerticalPos(P.stopy-Qe.getVerticalPos());break;case n.db.LINETYPE.OPT_START:Il(_,B,Le.boxMargin,Le.boxMargin+Le.boxTextMargin,H=>Qe.newLoop(H));break;case n.db.LINETYPE.OPT_END:P=Qe.endLoop(),await hi.drawLoop(u,P,"opt",Le),Qe.bumpVerticalPos(P.stopy-Qe.getVerticalPos()),Qe.models.addLoop(P);break;case n.db.LINETYPE.ALT_START:Il(_,B,Le.boxMargin,Le.boxMargin+Le.boxTextMargin,H=>Qe.newLoop(H));break;case n.db.LINETYPE.ALT_ELSE:Il(_,B,Le.boxMargin+Le.boxTextMargin,Le.boxMargin,H=>Qe.addSectionToLoop(H));break;case n.db.LINETYPE.ALT_END:P=Qe.endLoop(),await hi.drawLoop(u,P,"alt",Le),Qe.bumpVerticalPos(P.stopy-Qe.getVerticalPos()),Qe.models.addLoop(P);break;case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:Il(_,B,Le.boxMargin,Le.boxMargin+Le.boxTextMargin,H=>Qe.newLoop(H)),Qe.saveVerticalPos();break;case n.db.LINETYPE.PAR_AND:Il(_,B,Le.boxMargin+Le.boxTextMargin,Le.boxMargin,H=>Qe.addSectionToLoop(H));break;case n.db.LINETYPE.PAR_END:P=Qe.endLoop(),await hi.drawLoop(u,P,"par",Le),Qe.bumpVerticalPos(P.stopy-Qe.getVerticalPos()),Qe.models.addLoop(P);break;case n.db.LINETYPE.AUTONUMBER:E=B.message.start||E,L=B.message.step||L,B.message.visible?n.db.enableSequenceNumbers():n.db.disableSequenceNumbers();break;case n.db.LINETYPE.CRITICAL_START:Il(_,B,Le.boxMargin,Le.boxMargin+Le.boxTextMargin,H=>Qe.newLoop(H));break;case n.db.LINETYPE.CRITICAL_OPTION:Il(_,B,Le.boxMargin+Le.boxTextMargin,Le.boxMargin,H=>Qe.addSectionToLoop(H));break;case n.db.LINETYPE.CRITICAL_END:P=Qe.endLoop(),await hi.drawLoop(u,P,"critical",Le),Qe.bumpVerticalPos(P.stopy-Qe.getVerticalPos()),Qe.models.addLoop(P);break;case n.db.LINETYPE.BREAK_START:Il(_,B,Le.boxMargin,Le.boxMargin+Le.boxTextMargin,H=>Qe.newLoop(H));break;case n.db.LINETYPE.BREAK_END:P=Qe.endLoop(),await hi.drawLoop(u,P,"break",Le),Qe.bumpVerticalPos(P.stopy-Qe.getVerticalPos()),Qe.models.addLoop(P);break;default:try{z=B.msgModel,z.starty=Qe.getVerticalPos(),z.sequenceIndex=E,z.sequenceVisible=n.db.showSequenceNumbers();let H=await _ue(u,z);Nue(B,z,H,M,h,f,d),S.push({messageModel:z,lineStartY:H}),Qe.models.addMessage(z)}catch(H){re.error("error while drawing message",H)}}[n.db.LINETYPE.SOLID_OPEN,n.db.LINETYPE.DOTTED_OPEN,n.db.LINETYPE.SOLID,n.db.LINETYPE.DOTTED,n.db.LINETYPE.SOLID_CROSS,n.db.LINETYPE.DOTTED_CROSS,n.db.LINETYPE.SOLID_POINT,n.db.LINETYPE.DOTTED_POINT,n.db.LINETYPE.BIDIRECTIONAL_SOLID,n.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(B.type)&&(E=E+L),M++}re.debug("createdActors",f),re.debug("destroyedActors",d),await xM(u,h,g,!1);for(let B of S)await pFe(u,B.messageModel,B.lineStartY,n);Le.mirrorActors&&await xM(u,h,g,!0),C.forEach(B=>hi.drawBackgroundRect(u,B)),Sue(u,h,g,Le);for(let B of Qe.models.boxes)B.height=Qe.getVerticalPos()-B.y,Qe.insert(B.x,B.y,B.x+B.width,B.height),B.startx=B.x,B.starty=B.y,B.stopx=B.startx+B.width,B.stopy=B.starty+B.height,B.stroke="rgb(0,0,0, 0.5)",hi.drawBox(u,B,Le);x&&Qe.bumpVerticalPos(Le.boxMargin);let R=Lue(u,h,g,l),{bounds:T}=Qe.getBounds();T.startx===void 0&&(T.startx=0),T.starty===void 0&&(T.starty=0),T.stopx===void 0&&(T.stopx=0),T.stopy===void 0&&(T.stopy=0);let I=T.stopy-T.starty;I2,f=v(m=>o?-m:m,"adjustValue");t.from===t.to?u=l:(t.activate&&!h&&(u+=f(Le.activationWidth/2-1)),[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(u+=f(3)),[r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type)&&(l-=f(3)));let d=[n,i,a,s],p=Math.abs(l-u);t.wrap&&t.message&&(t.message=Ut.wrapLabel(t.message,Xe.getMax(p+2*Le.wrapPadding,Le.width),x0(Le)));let g=Ut.calculateTextDimensions(t.message,x0(Le));return{width:Xe.getMax(t.wrap?0:g.width+2*Le.wrapPadding,p+2*Le.wrapPadding,Le.width),height:0,startx:l,stopx:u,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,d),toBounds:Math.max.apply(null,d)}},"buildMessageModel"),bFe=v(async function(t,e,r,n){let i={},a=[],s,o,l;for(let u of t){switch(u.id=Ut.random({length:10}),u.type){case n.db.LINETYPE.LOOP_START:case n.db.LINETYPE.ALT_START:case n.db.LINETYPE.OPT_START:case n.db.LINETYPE.PAR_START:case n.db.LINETYPE.PAR_OVER_START:case n.db.LINETYPE.CRITICAL_START:case n.db.LINETYPE.BREAK_START:a.push({id:u.id,msg:u.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case n.db.LINETYPE.ALT_ELSE:case n.db.LINETYPE.PAR_AND:case n.db.LINETYPE.CRITICAL_OPTION:u.message&&(s=a.pop(),i[s.id]=s,i[u.id]=s,a.push(s));break;case n.db.LINETYPE.LOOP_END:case n.db.LINETYPE.ALT_END:case n.db.LINETYPE.OPT_END:case n.db.LINETYPE.PAR_END:case n.db.LINETYPE.CRITICAL_END:case n.db.LINETYPE.BREAK_END:s=a.pop(),i[s.id]=s;break;case n.db.LINETYPE.ACTIVE_START:{let f=e.get(u.from?u.from:u.to.actor),d=XT(u.from?u.from:u.to.actor).length,p=f.x+f.width/2+(d-1)*Le.activationWidth/2,g={startx:p,stopx:p+Le.activationWidth,actor:u.from,enabled:!0};Qe.activations.push(g)}break;case n.db.LINETYPE.ACTIVE_END:{let f=Qe.activations.map(d=>d.actor).lastIndexOf(u.from);Qe.activations.splice(f,1).splice(0,1)}break}u.placement!==void 0?(o=await yFe(u,e,n),u.noteModel=o,a.forEach(f=>{s=f,s.from=Xe.getMin(s.from,o.startx),s.to=Xe.getMax(s.to,o.startx+o.width),s.width=Xe.getMax(s.width,Math.abs(s.from-s.to))-Le.labelBoxWidth})):(l=xFe(u,e,n),u.msgModel=l,l.startx&&l.stopx&&a.length>0&&a.forEach(f=>{if(s=f,l.startx===l.stopx){let d=e.get(u.from),p=e.get(u.to);s.from=Xe.getMin(d.x-l.width/2,d.x-d.width/2,s.from),s.to=Xe.getMax(p.x+l.width/2,p.x+d.width/2,s.to),s.width=Xe.getMax(s.width,Math.abs(s.to-s.from))-Le.labelBoxWidth}else s.from=Xe.getMin(l.startx,s.from),s.to=Xe.getMax(l.stopx,s.to),s.width=Xe.getMax(s.width,l.width)-Le.labelBoxWidth}))}return Qe.activations=[],re.debug("Loop type widths:",i),i},"calculateLoopBounds"),wFe={bounds:Qe,drawActors:xM,drawActorsPopup:Lue,setConf:Rue,draw:mFe},kFe={parser:TBe,db:fue,renderer:wFe,styles:YBe,init:v(({wrap:t})=>{fue.setWrap(t)},"init")}});function CM(t){let e;switch(t){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;case 4:e="lollipop";break;default:e="none"}return e}var EM,jT,Pue,Bue,KT,ZT,An,Fue,rx,Rm,zue,Ml,SM,nx,b0,w0,TFe,Lm,$ue,Gue,EFe,SFe,CFe,AFe,_Fe,LFe,RFe,Uue,NFe,IFe,MFe,AM,DFe,OFe,PFe,BFe,FFe,zFe,$Fe,GFe,hf,Vue,_M,Wue,UFe,VFe,WFe,HFe,qFe,YFe,XFe,Nm,jFe,QT,KFe,ZFe,QFe,JT,LM=F(()=>{Kh();Nu();kn();or();lr();EM=function(){var t=v(function(Pe,xe,q,de){for(q=q||{},de=Pe.length;de--;q[Pe[de]]=xe);return q},"o"),e=[1,18],r=[1,19],n=[1,20],i=[1,41],a=[1,42],s=[1,26],o=[1,24],l=[1,25],u=[1,32],h=[1,33],f=[1,34],d=[1,45],p=[1,35],g=[1,36],m=[1,37],y=[1,38],x=[1,27],b=[1,28],w=[1,29],_=[1,30],k=[1,31],E=[1,44],L=[1,46],S=[1,43],C=[1,47],M=[1,9],R=[1,8,9],T=[1,58],I=[1,59],A=[1,60],D=[1,61],N=[1,62],O=[1,63],B=[1,64],P=[1,8,9,41],$=[1,76],z=[1,8,9,12,13,22,39,41,44,66,67,68,69,70,71,72,77,79],H=[1,8,9,12,13,17,20,22,39,41,44,48,58,66,67,68,69,70,71,72,77,79,84,99,101,102],J=[13,58,84,99,101,102],X=[13,58,71,72,84,99,101,102],oe=[13,58,66,67,68,69,70,84,99,101,102],K=[1,98],ee=[1,115],Q=[1,107],W=[1,113],Y=[1,108],Z=[1,109],se=[1,110],ce=[1,111],ue=[1,112],te=[1,114],Ne=[22,58,59,80,84,85,86,87,88,89],ae=[1,8,9,39,41,44],we=[1,8,9,22],Ie=[1,143],Ee=[1,8,9,59],Oe=[1,8,9,22,58,59,80,84,85,86,87,88,89],De={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,DOT:17,className:18,classLiteralName:19,GENERICTYPE:20,relationStatement:21,LABEL:22,namespaceStatement:23,classStatement:24,memberStatement:25,annotationStatement:26,clickStatement:27,styleStatement:28,cssClassStatement:29,noteStatement:30,classDefStatement:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,namespaceIdentifier:38,STRUCT_START:39,classStatements:40,STRUCT_STOP:41,NAMESPACE:42,classIdentifier:43,STYLE_SEPARATOR:44,members:45,CLASS:46,ANNOTATION_START:47,ANNOTATION_END:48,MEMBER:49,SEPARATOR:50,relation:51,NOTE_FOR:52,noteText:53,NOTE:54,CLASSDEF:55,classList:56,stylesOpt:57,ALPHA:58,COMMA:59,direction_tb:60,direction_bt:61,direction_rl:62,direction_lr:63,relationType:64,lineType:65,AGGREGATION:66,EXTENSION:67,COMPOSITION:68,DEPENDENCY:69,LOLLIPOP:70,LINE:71,DOTTED_LINE:72,CALLBACK:73,LINK:74,LINK_TARGET:75,CLICK:76,CALLBACK_NAME:77,CALLBACK_ARGS:78,HREF:79,STYLE:80,CSSCLASS:81,style:82,styleComponent:83,NUM:84,COLON:85,UNIT:86,SPACE:87,BRKT:88,PCT:89,commentToken:90,textToken:91,graphCodeTokens:92,textNoTagsToken:93,TAGSTART:94,TAGEND:95,"==":96,"--":97,DEFAULT:98,MINUS:99,keywords:100,UNICODE_TEXT:101,BQUOTE_STR:102,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",17:"DOT",20:"GENERICTYPE",22:"LABEL",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",39:"STRUCT_START",41:"STRUCT_STOP",42:"NAMESPACE",44:"STYLE_SEPARATOR",46:"CLASS",47:"ANNOTATION_START",48:"ANNOTATION_END",49:"MEMBER",50:"SEPARATOR",52:"NOTE_FOR",54:"NOTE",55:"CLASSDEF",58:"ALPHA",59:"COMMA",60:"direction_tb",61:"direction_bt",62:"direction_rl",63:"direction_lr",66:"AGGREGATION",67:"EXTENSION",68:"COMPOSITION",69:"DEPENDENCY",70:"LOLLIPOP",71:"LINE",72:"DOTTED_LINE",73:"CALLBACK",74:"LINK",75:"LINK_TARGET",76:"CLICK",77:"CALLBACK_NAME",78:"CALLBACK_ARGS",79:"HREF",80:"STYLE",81:"CSSCLASS",84:"NUM",85:"COLON",86:"UNIT",87:"SPACE",88:"BRKT",89:"PCT",92:"graphCodeTokens",94:"TAGSTART",95:"TAGEND",96:"==",97:"--",98:"DEFAULT",99:"MINUS",100:"keywords",101:"UNICODE_TEXT",102:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,3],[15,2],[18,1],[18,3],[18,1],[18,2],[18,2],[18,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[23,4],[23,5],[38,2],[40,1],[40,2],[40,3],[24,1],[24,3],[24,4],[24,6],[43,2],[43,3],[26,4],[45,1],[45,2],[25,1],[25,2],[25,1],[25,1],[21,3],[21,4],[21,4],[21,5],[30,3],[30,2],[31,3],[56,1],[56,3],[32,1],[32,1],[32,1],[32,1],[51,3],[51,2],[51,2],[51,1],[64,1],[64,1],[64,1],[64,1],[64,1],[65,1],[65,1],[27,3],[27,4],[27,3],[27,4],[27,4],[27,5],[27,3],[27,4],[27,4],[27,5],[27,4],[27,5],[27,5],[27,6],[28,3],[29,3],[57,1],[57,3],[82,1],[82,2],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[90,1],[90,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[93,1],[93,1],[93,1],[93,1],[16,1],[16,1],[16,1],[16,1],[19,1],[53,1]],performAction:v(function(xe,q,de,ie,he,U,ke){var j=U.length-1;switch(he){case 8:this.$=U[j-1];break;case 9:case 12:case 14:this.$=U[j];break;case 10:case 13:this.$=U[j-2]+"."+U[j];break;case 11:case 15:this.$=U[j-1]+U[j];break;case 16:case 17:this.$=U[j-1]+"~"+U[j]+"~";break;case 18:ie.addRelation(U[j]);break;case 19:U[j-1].title=ie.cleanupLabel(U[j]),ie.addRelation(U[j-1]);break;case 30:this.$=U[j].trim(),ie.setAccTitle(this.$);break;case 31:case 32:this.$=U[j].trim(),ie.setAccDescription(this.$);break;case 33:ie.addClassesToNamespace(U[j-3],U[j-1]);break;case 34:ie.addClassesToNamespace(U[j-4],U[j-1]);break;case 35:this.$=U[j],ie.addNamespace(U[j]);break;case 36:this.$=[U[j]];break;case 37:this.$=[U[j-1]];break;case 38:U[j].unshift(U[j-2]),this.$=U[j];break;case 40:ie.setCssClass(U[j-2],U[j]);break;case 41:ie.addMembers(U[j-3],U[j-1]);break;case 42:ie.setCssClass(U[j-5],U[j-3]),ie.addMembers(U[j-5],U[j-1]);break;case 43:this.$=U[j],ie.addClass(U[j]);break;case 44:this.$=U[j-1],ie.addClass(U[j-1]),ie.setClassLabel(U[j-1],U[j]);break;case 45:ie.addAnnotation(U[j],U[j-2]);break;case 46:case 59:this.$=[U[j]];break;case 47:U[j].push(U[j-1]),this.$=U[j];break;case 48:break;case 49:ie.addMember(U[j-1],ie.cleanupLabel(U[j]));break;case 50:break;case 51:break;case 52:this.$={id1:U[j-2],id2:U[j],relation:U[j-1],relationTitle1:"none",relationTitle2:"none"};break;case 53:this.$={id1:U[j-3],id2:U[j],relation:U[j-1],relationTitle1:U[j-2],relationTitle2:"none"};break;case 54:this.$={id1:U[j-3],id2:U[j],relation:U[j-2],relationTitle1:"none",relationTitle2:U[j-1]};break;case 55:this.$={id1:U[j-4],id2:U[j],relation:U[j-2],relationTitle1:U[j-3],relationTitle2:U[j-1]};break;case 56:ie.addNote(U[j],U[j-1]);break;case 57:ie.addNote(U[j]);break;case 58:this.$=U[j-2],ie.defineClass(U[j-1],U[j]);break;case 60:this.$=U[j-2].concat([U[j]]);break;case 61:ie.setDirection("TB");break;case 62:ie.setDirection("BT");break;case 63:ie.setDirection("RL");break;case 64:ie.setDirection("LR");break;case 65:this.$={type1:U[j-2],type2:U[j],lineType:U[j-1]};break;case 66:this.$={type1:"none",type2:U[j],lineType:U[j-1]};break;case 67:this.$={type1:U[j-1],type2:"none",lineType:U[j]};break;case 68:this.$={type1:"none",type2:"none",lineType:U[j]};break;case 69:this.$=ie.relationType.AGGREGATION;break;case 70:this.$=ie.relationType.EXTENSION;break;case 71:this.$=ie.relationType.COMPOSITION;break;case 72:this.$=ie.relationType.DEPENDENCY;break;case 73:this.$=ie.relationType.LOLLIPOP;break;case 74:this.$=ie.lineType.LINE;break;case 75:this.$=ie.lineType.DOTTED_LINE;break;case 76:case 82:this.$=U[j-2],ie.setClickEvent(U[j-1],U[j]);break;case 77:case 83:this.$=U[j-3],ie.setClickEvent(U[j-2],U[j-1]),ie.setTooltip(U[j-2],U[j]);break;case 78:this.$=U[j-2],ie.setLink(U[j-1],U[j]);break;case 79:this.$=U[j-3],ie.setLink(U[j-2],U[j-1],U[j]);break;case 80:this.$=U[j-3],ie.setLink(U[j-2],U[j-1]),ie.setTooltip(U[j-2],U[j]);break;case 81:this.$=U[j-4],ie.setLink(U[j-3],U[j-2],U[j]),ie.setTooltip(U[j-3],U[j-1]);break;case 84:this.$=U[j-3],ie.setClickEvent(U[j-2],U[j-1],U[j]);break;case 85:this.$=U[j-4],ie.setClickEvent(U[j-3],U[j-2],U[j-1]),ie.setTooltip(U[j-3],U[j]);break;case 86:this.$=U[j-3],ie.setLink(U[j-2],U[j]);break;case 87:this.$=U[j-4],ie.setLink(U[j-3],U[j-1],U[j]);break;case 88:this.$=U[j-4],ie.setLink(U[j-3],U[j-1]),ie.setTooltip(U[j-3],U[j]);break;case 89:this.$=U[j-5],ie.setLink(U[j-4],U[j-2],U[j]),ie.setTooltip(U[j-4],U[j-1]);break;case 90:this.$=U[j-2],ie.setCssStyle(U[j-1],U[j]);break;case 91:ie.setCssClass(U[j-1],U[j]);break;case 92:this.$=[U[j]];break;case 93:U[j-2].push(U[j]),this.$=U[j-2];break;case 95:this.$=U[j-1]+U[j];break}},"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,18:21,19:40,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:r,37:n,38:22,42:i,43:23,46:a,47:s,49:o,50:l,52:u,54:h,55:f,58:d,60:p,61:g,62:m,63:y,73:x,74:b,76:w,80:_,81:k,84:E,99:L,101:S,102:C},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(M,[2,5],{8:[1,48]}),{8:[1,49]},t(R,[2,18],{22:[1,50]}),t(R,[2,20]),t(R,[2,21]),t(R,[2,22]),t(R,[2,23]),t(R,[2,24]),t(R,[2,25]),t(R,[2,26]),t(R,[2,27]),t(R,[2,28]),t(R,[2,29]),{34:[1,51]},{36:[1,52]},t(R,[2,32]),t(R,[2,48],{51:53,64:56,65:57,13:[1,54],22:[1,55],66:T,67:I,68:A,69:D,70:N,71:O,72:B}),{39:[1,65]},t(P,[2,39],{39:[1,67],44:[1,66]}),t(R,[2,50]),t(R,[2,51]),{16:68,58:d,84:E,99:L,101:S},{16:39,18:69,19:40,58:d,84:E,99:L,101:S,102:C},{16:39,18:70,19:40,58:d,84:E,99:L,101:S,102:C},{16:39,18:71,19:40,58:d,84:E,99:L,101:S,102:C},{58:[1,72]},{13:[1,73]},{16:39,18:74,19:40,58:d,84:E,99:L,101:S,102:C},{13:$,53:75},{56:77,58:[1,78]},t(R,[2,61]),t(R,[2,62]),t(R,[2,63]),t(R,[2,64]),t(z,[2,12],{16:39,19:40,18:80,17:[1,79],20:[1,81],58:d,84:E,99:L,101:S,102:C}),t(z,[2,14],{20:[1,82]}),{15:83,16:84,58:d,84:E,99:L,101:S},{16:39,18:85,19:40,58:d,84:E,99:L,101:S,102:C},t(H,[2,118]),t(H,[2,119]),t(H,[2,120]),t(H,[2,121]),t([1,8,9,12,13,20,22,39,41,44,66,67,68,69,70,71,72,77,79],[2,122]),t(M,[2,6],{10:5,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,18:21,38:22,43:23,16:39,19:40,5:86,33:e,35:r,37:n,42:i,46:a,47:s,49:o,50:l,52:u,54:h,55:f,58:d,60:p,61:g,62:m,63:y,73:x,74:b,76:w,80:_,81:k,84:E,99:L,101:S,102:C}),{5:87,10:5,16:39,18:21,19:40,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:r,37:n,38:22,42:i,43:23,46:a,47:s,49:o,50:l,52:u,54:h,55:f,58:d,60:p,61:g,62:m,63:y,73:x,74:b,76:w,80:_,81:k,84:E,99:L,101:S,102:C},t(R,[2,19]),t(R,[2,30]),t(R,[2,31]),{13:[1,89],16:39,18:88,19:40,58:d,84:E,99:L,101:S,102:C},{51:90,64:56,65:57,66:T,67:I,68:A,69:D,70:N,71:O,72:B},t(R,[2,49]),{65:91,71:O,72:B},t(J,[2,68],{64:92,66:T,67:I,68:A,69:D,70:N}),t(X,[2,69]),t(X,[2,70]),t(X,[2,71]),t(X,[2,72]),t(X,[2,73]),t(oe,[2,74]),t(oe,[2,75]),{8:[1,94],24:95,40:93,43:23,46:a},{16:96,58:d,84:E,99:L,101:S},{45:97,49:K},{48:[1,99]},{13:[1,100]},{13:[1,101]},{77:[1,102],79:[1,103]},{22:ee,57:104,58:Q,80:W,82:105,83:106,84:Y,85:Z,86:se,87:ce,88:ue,89:te},{58:[1,116]},{13:$,53:117},t(R,[2,57]),t(R,[2,123]),{22:ee,57:118,58:Q,59:[1,119],80:W,82:105,83:106,84:Y,85:Z,86:se,87:ce,88:ue,89:te},t(Ne,[2,59]),{16:39,18:120,19:40,58:d,84:E,99:L,101:S,102:C},t(z,[2,15]),t(z,[2,16]),t(z,[2,17]),{39:[2,35]},{15:122,16:84,17:[1,121],39:[2,9],58:d,84:E,99:L,101:S},t(ae,[2,43],{11:123,12:[1,124]}),t(M,[2,7]),{9:[1,125]},t(we,[2,52]),{16:39,18:126,19:40,58:d,84:E,99:L,101:S,102:C},{13:[1,128],16:39,18:127,19:40,58:d,84:E,99:L,101:S,102:C},t(J,[2,67],{64:129,66:T,67:I,68:A,69:D,70:N}),t(J,[2,66]),{41:[1,130]},{24:95,40:131,43:23,46:a},{8:[1,132],41:[2,36]},t(P,[2,40],{39:[1,133]}),{41:[1,134]},{41:[2,46],45:135,49:K},{16:39,18:136,19:40,58:d,84:E,99:L,101:S,102:C},t(R,[2,76],{13:[1,137]}),t(R,[2,78],{13:[1,139],75:[1,138]}),t(R,[2,82],{13:[1,140],78:[1,141]}),{13:[1,142]},t(R,[2,90],{59:Ie}),t(Ee,[2,92],{83:144,22:ee,58:Q,80:W,84:Y,85:Z,86:se,87:ce,88:ue,89:te}),t(Oe,[2,94]),t(Oe,[2,96]),t(Oe,[2,97]),t(Oe,[2,98]),t(Oe,[2,99]),t(Oe,[2,100]),t(Oe,[2,101]),t(Oe,[2,102]),t(Oe,[2,103]),t(Oe,[2,104]),t(R,[2,91]),t(R,[2,56]),t(R,[2,58],{59:Ie}),{58:[1,145]},t(z,[2,13]),{15:146,16:84,58:d,84:E,99:L,101:S},{39:[2,11]},t(ae,[2,44]),{13:[1,147]},{1:[2,4]},t(we,[2,54]),t(we,[2,53]),{16:39,18:148,19:40,58:d,84:E,99:L,101:S,102:C},t(J,[2,65]),t(R,[2,33]),{41:[1,149]},{24:95,40:150,41:[2,37],43:23,46:a},{45:151,49:K},t(P,[2,41]),{41:[2,47]},t(R,[2,45]),t(R,[2,77]),t(R,[2,79]),t(R,[2,80],{75:[1,152]}),t(R,[2,83]),t(R,[2,84],{13:[1,153]}),t(R,[2,86],{13:[1,155],75:[1,154]}),{22:ee,58:Q,80:W,82:156,83:106,84:Y,85:Z,86:se,87:ce,88:ue,89:te},t(Oe,[2,95]),t(Ne,[2,60]),{39:[2,10]},{14:[1,157]},t(we,[2,55]),t(R,[2,34]),{41:[2,38]},{41:[1,158]},t(R,[2,81]),t(R,[2,85]),t(R,[2,87]),t(R,[2,88],{75:[1,159]}),t(Ee,[2,93],{83:144,22:ee,58:Q,80:W,84:Y,85:Z,86:se,87:ce,88:ue,89:te}),t(ae,[2,8]),t(P,[2,42]),t(R,[2,89])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],83:[2,35],122:[2,11],125:[2,4],135:[2,47],146:[2,10],150:[2,38]},parseError:v(function(xe,q){if(q.recoverable)this.trace(xe);else{var de=new Error(xe);throw de.hash=q,de}},"parseError"),parse:v(function(xe){var q=this,de=[0],ie=[],he=[null],U=[],ke=this.table,j="",ye=0,Ae=0,Ge=0,Fe=2,ge=1,$e=U.slice.call(arguments,1),Ce=Object.create(this.lexer),qe={yy:{}};for(var lt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,lt)&&(qe.yy[lt]=this.yy[lt]);Ce.setInput(xe,qe.yy),qe.yy.lexer=Ce,qe.yy.parser=this,typeof Ce.yylloc>"u"&&(Ce.yylloc={});var xt=Ce.yylloc;U.push(xt);var ft=Ce.options&&Ce.options.ranges;typeof qe.yy.parseError=="function"?this.parseError=qe.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ze(Qt){de.length=de.length-2*Qt,he.length=he.length-Qt,U.length=U.length-Qt}v(Ze,"popStack");function st(){var Qt;return Qt=ie.pop()||Ce.lex()||ge,typeof Qt!="number"&&(Qt instanceof Array&&(ie=Qt,Qt=ie.pop()),Qt=q.symbols_[Qt]||Qt),Qt}v(st,"lex");for(var Ue,Ke,it,mt,Ht,ot,et={},ht,bt,tt,_t;;){if(it=de[de.length-1],this.defaultActions[it]?mt=this.defaultActions[it]:((Ue===null||typeof Ue>"u")&&(Ue=st()),mt=ke[it]&&ke[it][Ue]),typeof mt>"u"||!mt.length||!mt[0]){var ur="";_t=[];for(ht in ke[it])this.terminals_[ht]&&ht>Fe&&_t.push("'"+this.terminals_[ht]+"'");Ce.showPosition?ur="Parse error on line "+(ye+1)+`: `+Ce.showPosition()+` Expecting `+_t.join(", ")+", got '"+(this.terminals_[Ue]||Ue)+"'":ur="Parse error on line "+(ye+1)+": Unexpected "+(Ue==ge?"end of input":"'"+(this.terminals_[Ue]||Ue)+"'"),this.parseError(ur,{text:Ce.match,token:this.terminals_[Ue]||Ue,line:Ce.yylineno,loc:xt,expected:_t})}if(mt[0]instanceof Array&&mt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+it+", token: "+Ue);switch(mt[0]){case 1:de.push(Ue),he.push(Ce.yytext),U.push(Ce.yylloc),de.push(mt[1]),Ue=null,Ke?(Ue=Ke,Ke=null):(Ae=Ce.yyleng,j=Ce.yytext,ye=Ce.yylineno,xt=Ce.yylloc,Ge>0&&Ge--);break;case 2:if(bt=this.productions_[mt[1]][1],et.$=he[he.length-bt],et._$={first_line:U[U.length-(bt||1)].first_line,last_line:U[U.length-1].last_line,first_column:U[U.length-(bt||1)].first_column,last_column:U[U.length-1].last_column},ft&&(et._$.range=[U[U.length-(bt||1)].range[0],U[U.length-1].range[1]]),ot=this.performAction.apply(et,[j,Ae,ye,qe.yy,mt[1],he,U].concat($e)),typeof ot<"u")return ot;bt&&(de=de.slice(0,-1*bt*2),he=he.slice(0,-1*bt),U=U.slice(0,-1*bt)),de.push(this.productions_[mt[1]][0]),he.push(et.$),U.push(et._$),tt=ke[de[de.length-2]][de[de.length-1]],de.push(tt);break;case 3:return!0}}return!0},"parse")},We=function(){var Pe={EOF:1,parseError:v(function(q,de){if(this.yy.parser)this.yy.parser.parseError(q,de);else throw new Error(q)},"parseError"),setInput:v(function(xe,q){return this.yy=q||this.yy||{},this._input=xe,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var xe=this._input[0];this.yytext+=xe,this.yyleng++,this.offset++,this.match+=xe,this.matched+=xe;var q=xe.match(/(?:\r\n?|\n).*/g);return q?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),xe},"input"),unput:v(function(xe){var q=xe.length,de=xe.split(/(?:\r\n?|\n)/g);this._input=xe+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-q),this.offset-=q;var ie=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),de.length-1&&(this.yylineno-=de.length-1);var he=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:de?(de.length===ie.length?this.yylloc.first_column:0)+ie[ie.length-de.length].length-de[0].length:this.yylloc.first_column-q},this.options.ranges&&(this.yylloc.range=[he[0],he[0]+this.yyleng-q]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(xe){this.unput(this.match.slice(xe))},"less"),pastInput:v(function(){var xe=this.matched.substr(0,this.matched.length-this.match.length);return(xe.length>20?"...":"")+xe.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var xe=this.match;return xe.length<20&&(xe+=this._input.substr(0,20-xe.length)),(xe.substr(0,20)+(xe.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var xe=this.pastInput(),q=new Array(xe.length+1).join("-");return xe+this.upcomingInput()+` `+q+"^"},"showPosition"),test_match:v(function(xe,q){var de,ie,he;if(this.options.backtrack_lexer&&(he={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(he.yylloc.range=this.yylloc.range.slice(0))),ie=xe[0].match(/(?:\r\n?|\n).*/g),ie&&(this.yylineno+=ie.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ie?ie[ie.length-1].length-ie[ie.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+xe[0].length},this.yytext+=xe[0],this.match+=xe[0],this.matches=xe,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(xe[0].length),this.matched+=xe[0],de=this.performAction.call(this,this.yy,this,q,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),de)return de;if(this._backtrack){for(var U in he)this[U]=he[U];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var xe,q,de,ie;this._more||(this.yytext="",this.match="");for(var he=this._currentRules(),U=0;Uq[0].length)){if(q=de,ie=U,this.options.backtrack_lexer){if(xe=this.test_match(de,he[U]),xe!==!1)return xe;if(this._backtrack){q=!1;continue}else return!1}else if(!this.options.flex)break}return q?(xe=this.test_match(q,he[ie]),xe!==!1?xe:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var q=this.next();return q||this.lex()},"lex"),begin:v(function(q){this.conditionStack.push(q)},"begin"),popState:v(function(){var q=this.conditionStack.length-1;return q>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(q){return q=this.conditionStack.length-1-Math.abs(q||0),q>=0?this.conditionStack[q]:"INITIAL"},"topState"),pushState:v(function(q){this.begin(q)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:v(function(q,de,ie,he){var U=he;switch(ie){case 0:return 60;case 1:return 61;case 2:return 62;case 3:return 63;case 4:break;case 5:break;case 6:return this.begin("acc_title"),33;break;case 7:return this.popState(),"acc_title_value";break;case 8:return this.begin("acc_descr"),35;break;case 9:return this.popState(),"acc_descr_value";break;case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 77;case 22:this.popState();break;case 23:return 78;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 80;case 28:return 55;case 29:return this.begin("namespace"),42;break;case 30:return this.popState(),8;break;case 31:break;case 32:return this.begin("namespace-body"),39;break;case 33:return this.popState(),41;break;case 34:return"EOF_IN_STRUCT";case 35:return 8;case 36:break;case 37:return"EDGE_STATE";case 38:return this.begin("class"),46;break;case 39:return this.popState(),8;break;case 40:break;case 41:return this.popState(),this.popState(),41;break;case 42:return this.begin("class-body"),39;break;case 43:return this.popState(),41;break;case 44:return"EOF_IN_STRUCT";case 45:return"EDGE_STATE";case 46:return"OPEN_IN_STRUCT";case 47:break;case 48:return"MEMBER";case 49:return 81;case 50:return 73;case 51:return 74;case 52:return 76;case 53:return 52;case 54:return 54;case 55:return 47;case 56:return 48;case 57:return 79;case 58:this.popState();break;case 59:return"GENERICTYPE";case 60:this.begin("generic");break;case 61:this.popState();break;case 62:return"BQUOTE_STR";case 63:this.begin("bqstring");break;case 64:return 75;case 65:return 75;case 66:return 75;case 67:return 75;case 68:return 67;case 69:return 67;case 70:return 69;case 71:return 69;case 72:return 68;case 73:return 66;case 74:return 70;case 75:return 71;case 76:return 72;case 77:return 22;case 78:return 44;case 79:return 99;case 80:return 17;case 81:return"PLUS";case 82:return 85;case 83:return 59;case 84:return 88;case 85:return 88;case 86:return 89;case 87:return"EQUALS";case 88:return"EQUALS";case 89:return 58;case 90:return 12;case 91:return 14;case 92:return"PUNCTUATION";case 93:return 84;case 94:return 101;case 95:return 87;case 96:return 87;case 97:return 9}},"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,33,34,35,36,37,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},namespace:{rules:[26,29,30,31,32,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},"class-body":{rules:[26,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},class:{rules:[26,39,40,41,42,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr:{rules:[9,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_title:{rules:[7,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_args:{rules:[22,23,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_name:{rules:[19,20,21,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},href:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},struct:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},generic:{rules:[26,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},bqstring:{rules:[26,49,50,51,52,53,54,55,56,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},string:{rules:[24,25,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!0}}};return Pe}();De.lexer=We;function Re(){this.yy={}}return v(Re,"Parser"),Re.prototype=De,De.Parser=Re,new Re}();EM.parser=EM;jT=EM,Pue=["#","+","~","-",""],Bue=class{static{v(this,"ClassMember")}constructor(t,e){this.memberType=e,this.visibility="",this.classifier="",this.text="";let r=yr(t,pe());this.parseMember(r)}getDisplayDetails(){let t=this.visibility+iu(this.id);this.memberType==="method"&&(t+=`(${iu(this.parameters.trim())})`,this.returnType&&(t+=" : "+iu(this.returnType))),t=t.trim();let e=this.parseClassifier();return{displayText:t,cssStyle:e}}parseMember(t){let e="";if(this.memberType==="method"){let i=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(t);if(i){let a=i[1]?i[1].trim():"";if(Pue.includes(a)&&(this.visibility=a),this.id=i[2],this.parameters=i[3]?i[3].trim():"",e=i[4]?i[4].trim():"",this.returnType=i[5]?i[5].trim():"",e===""){let s=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(s)&&(e=s,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{let n=t.length,i=t.substring(0,1),a=t.substring(n-1);Pue.includes(i)&&(this.visibility=i),/[$*]/.exec(a)&&(e=a),this.id=t.substring(this.visibility===""?0:1,e===""?n:n-1)}this.classifier=e,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();let r=`${this.visibility?"\\"+this.visibility:""}${iu(this.id)}${this.memberType==="method"?`(${iu(this.parameters)})${this.returnType?" : "+iu(this.returnType):""}`:""}`;this.text=r.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}},KT="classId-",ZT=[],An=new Map,Fue=new Map,rx=[],Rm=[],zue=0,Ml=new Map,SM=0,nx=[],b0=v(t=>Xe.sanitizeText(t,pe()),"sanitizeText"),w0=v(function(t){let e=Xe.sanitizeText(t,pe()),r="",n=e;if(e.indexOf("~")>0){let i=e.split("~");n=b0(i[0]),r=b0(i[1])}return{className:n,type:r}},"splitClassNameAndType"),TFe=v(function(t,e){let r=Xe.sanitizeText(t,pe());e&&(e=b0(e));let{className:n}=w0(r);An.get(n).label=e,An.get(n).text=`${e}${An.get(n).type?`<${An.get(n).type}>`:""}`},"setClassLabel"),Lm=v(function(t){let e=Xe.sanitizeText(t,pe()),{className:r,type:n}=w0(e);if(An.has(r))return;let i=Xe.sanitizeText(r,pe());An.set(i,{id:i,type:n,label:i,text:`${i}${n?`<${n}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:KT+i+"-"+zue}),zue++},"addClass"),$ue=v(function(t,e){let r={id:`interface${Rm.length}`,label:t,classId:e};Rm.push(r)},"addInterface"),Gue=v(function(t){let e=Xe.sanitizeText(t,pe());if(An.has(e))return An.get(e).domId;throw new Error("Class not found: "+e)},"lookUpDomId"),EFe=v(function(){ZT=[],An=new Map,rx=[],Rm=[],nx=[],nx.push(Vue),Ml=new Map,SM=0,_M="TB",xr()},"clear"),SFe=v(function(t){return An.get(t)},"getClass"),CFe=v(function(){return An},"getClasses"),AFe=v(function(){return ZT},"getRelations"),_Fe=v(function(){return rx},"getNotes"),LFe=v(function(t){re.debug("Adding relation: "+JSON.stringify(t));let e=[hf.LOLLIPOP,hf.AGGREGATION,hf.COMPOSITION,hf.DEPENDENCY,hf.EXTENSION];t.relation.type1===hf.LOLLIPOP&&!e.includes(t.relation.type2)?(Lm(t.id2),$ue(t.id1,t.id2),t.id1=`interface${Rm.length-1}`):t.relation.type2===hf.LOLLIPOP&&!e.includes(t.relation.type1)?(Lm(t.id1),$ue(t.id2,t.id1),t.id2=`interface${Rm.length-1}`):(Lm(t.id1),Lm(t.id2)),t.id1=w0(t.id1).className,t.id2=w0(t.id2).className,t.relationTitle1=Xe.sanitizeText(t.relationTitle1.trim(),pe()),t.relationTitle2=Xe.sanitizeText(t.relationTitle2.trim(),pe()),ZT.push(t)},"addRelation"),RFe=v(function(t,e){let r=w0(t).className;An.get(r).annotations.push(e)},"addAnnotation"),Uue=v(function(t,e){Lm(t);let r=w0(t).className,n=An.get(r);if(typeof e=="string"){let i=e.trim();i.startsWith("<<")&&i.endsWith(">>")?n.annotations.push(b0(i.substring(2,i.length-2))):i.indexOf(")")>0?n.methods.push(new Bue(i,"method")):i&&n.members.push(new Bue(i,"attribute"))}},"addMember"),NFe=v(function(t,e){Array.isArray(e)&&(e.reverse(),e.forEach(r=>Uue(t,r)))},"addMembers"),IFe=v(function(t,e){let r={id:`note${rx.length}`,class:e,text:t};rx.push(r)},"addNote"),MFe=v(function(t){return t.startsWith(":")&&(t=t.substring(1)),b0(t.trim())},"cleanupLabel"),AM=v(function(t,e){t.split(",").forEach(function(r){let n=r;/\d/.exec(r[0])&&(n=KT+n);let i=An.get(n);i&&(i.cssClasses+=" "+e)})},"setCssClass"),DFe=v(function(t,e){for(let r of t){let n=Fue.get(r);n===void 0&&(n={id:r,styles:[],textStyles:[]},Fue.set(r,n)),e&&e.forEach(function(i){if(/color/.exec(i)){let a=i.replace("fill","bgFill");n.textStyles.push(a)}n.styles.push(i)}),An.forEach(i=>{i.cssClasses.includes(r)&&i.styles.push(...e.flatMap(a=>a.split(",")))})}},"defineClass"),OFe=v(function(t,e){t.split(",").forEach(function(r){e!==void 0&&(An.get(r).tooltip=b0(e))})},"setTooltip"),PFe=v(function(t,e){return e&&Ml.has(e)?Ml.get(e).classes.get(t).tooltip:An.get(t).tooltip},"getTooltip"),BFe=v(function(t,e,r){let n=pe();t.split(",").forEach(function(i){let a=i;/\d/.exec(i[0])&&(a=KT+a);let s=An.get(a);s&&(s.link=Ut.formatUrl(e,n),n.securityLevel==="sandbox"?s.linkTarget="_top":typeof r=="string"?s.linkTarget=b0(r):s.linkTarget="_blank")}),AM(t,"clickable")},"setLink"),FFe=v(function(t,e,r){t.split(",").forEach(function(n){zFe(n,e,r),An.get(n).haveCallback=!0}),AM(t,"clickable")},"setClickEvent"),zFe=v(function(t,e,r){let n=Xe.sanitizeText(t,pe());if(pe().securityLevel!=="loose"||e===void 0)return;let a=n;if(An.has(a)){let s=Gue(a),o=[];if(typeof r=="string"){o=r.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let l=0;l")),i.classed("hover",!0)}).on("mouseout",function(){e.transition().duration(500).style("opacity",0),Ve(this).classed("hover",!1)})},"setupToolTips");nx.push(Vue);_M="TB",Wue=v(()=>_M,"getDirection"),UFe=v(t=>{_M=t},"setDirection"),VFe=v(function(t){Ml.has(t)||(Ml.set(t,{id:t,classes:new Map,children:{},domId:KT+t+"-"+SM}),SM++)},"addNamespace"),WFe=v(function(t){return Ml.get(t)},"getNamespace"),HFe=v(function(){return Ml},"getNamespaces"),qFe=v(function(t,e){if(Ml.has(t))for(let r of e){let{className:n}=w0(r);An.get(n).parent=t,Ml.get(t).classes.set(n,An.get(n))}},"addClassesToNamespace"),YFe=v(function(t,e){let r=An.get(t);if(!(!e||!r))for(let n of e)n.includes(",")?r.styles.push(...n.split(",")):r.styles.push(n)},"setCssStyle");v(CM,"getArrowMarker");XFe=v(()=>{let t=[],e=[],r=pe();for(let i of Ml.keys()){let a=Ml.get(i);if(a){let s={id:a.id,label:a.id,isGroup:!0,padding:r.class.padding??16,shape:"rect",cssStyles:["fill: none","stroke: black"],look:r.look};t.push(s)}}for(let i of An.keys()){let a=An.get(i);if(a){let s=a;s.parentId=a.parent,s.look=r.look,t.push(s)}}let n=0;for(let i of rx){n++;let a={id:i.id,label:i.text,isGroup:!1,shape:"note",padding:r.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${r.themeVariables.noteBkgColor}`,`stroke: ${r.themeVariables.noteBorderColor}`],look:r.look};t.push(a);let s=An.get(i.class)?.id??"";if(s){let o={id:`edgeNote${n}`,start:i.id,end:s,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:r.look};e.push(o)}}for(let i of Rm){let a={id:i.id,label:i.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:r.look};t.push(a)}n=0;for(let i of ZT){n++;let a={id:V3(i.id1,i.id2,{prefix:"id",counter:n}),start:i.id1,end:i.id2,type:"normal",label:i.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:CM(i.relation.type1),arrowTypeEnd:CM(i.relation.type2),startLabelRight:i.relationTitle1==="none"?"":i.relationTitle1,endLabelLeft:i.relationTitle2==="none"?"":i.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:i.style||"",pattern:i.relation.lineType==1?"dashed":"solid",look:r.look};e.push(a)}return{nodes:t,edges:e,other:{},config:r,direction:Wue()}},"getData"),Nm={setAccTitle:Tr,getAccTitle:_r,getAccDescription:Rr,setAccDescription:Lr,getConfig:v(()=>pe().class,"getConfig"),addClass:Lm,bindFunctions:$Fe,clear:EFe,getClass:SFe,getClasses:CFe,getNotes:_Fe,addAnnotation:RFe,addNote:IFe,getRelations:AFe,addRelation:LFe,getDirection:Wue,setDirection:UFe,addMember:Uue,addMembers:NFe,cleanupLabel:MFe,lineType:GFe,relationType:hf,setClickEvent:FFe,setCssClass:AM,defineClass:DFe,setLink:BFe,getTooltip:PFe,setTooltip:OFe,lookUpDomId:Gue,setDiagramTitle:tn,getDiagramTitle:qr,setClassLabel:TFe,addNamespace:VFe,addClassesToNamespace:qFe,getNamespace:WFe,getNamespaces:HFe,setCssStyle:YFe,getData:XFe},jFe=v(t=>`g.classGroup text { fill: ${t.nodeBorder||t.classText}; stroke: none; font-family: ${t.fontFamily}; font-size: 10px; .title { font-weight: bolder; } } .nodeLabel, .edgeLabel { color: ${t.classText}; } .edgeLabel .label rect { fill: ${t.mainBkg}; } .label text { fill: ${t.classText}; } .labelBkg { background: ${t.mainBkg}; } .edgeLabel .label span { background: ${t.mainBkg}; } .classTitle { font-weight: bolder; } .node rect, .node circle, .node ellipse, .node polygon, .node path { fill: ${t.mainBkg}; stroke: ${t.nodeBorder}; stroke-width: 1px; } .divider { stroke: ${t.nodeBorder}; stroke-width: 1; } g.clickable { cursor: pointer; } g.classGroup rect { fill: ${t.mainBkg}; stroke: ${t.nodeBorder}; } g.classGroup line { stroke: ${t.nodeBorder}; stroke-width: 1; } .classLabel .box { stroke: none; stroke-width: 0; fill: ${t.mainBkg}; opacity: 0.5; } .classLabel .label { fill: ${t.nodeBorder}; font-size: 10px; } .relation { stroke: ${t.lineColor}; stroke-width: 1; fill: none; } .dashed-line{ stroke-dasharray: 3; } .dotted-line{ stroke-dasharray: 1 2; } #compositionStart, .composition { fill: ${t.lineColor} !important; stroke: ${t.lineColor} !important; stroke-width: 1; } #compositionEnd, .composition { fill: ${t.lineColor} !important; stroke: ${t.lineColor} !important; stroke-width: 1; } #dependencyStart, .dependency { fill: ${t.lineColor} !important; stroke: ${t.lineColor} !important; stroke-width: 1; } #dependencyStart, .dependency { fill: ${t.lineColor} !important; stroke: ${t.lineColor} !important; stroke-width: 1; } #extensionStart, .extension { fill: transparent !important; stroke: ${t.lineColor} !important; stroke-width: 1; } #extensionEnd, .extension { fill: transparent !important; stroke: ${t.lineColor} !important; stroke-width: 1; } #aggregationStart, .aggregation { fill: transparent !important; stroke: ${t.lineColor} !important; stroke-width: 1; } #aggregationEnd, .aggregation { fill: transparent !important; stroke: ${t.lineColor} !important; stroke-width: 1; } #lollipopStart, .lollipop { fill: ${t.mainBkg} !important; stroke: ${t.lineColor} !important; stroke-width: 1; } #lollipopEnd, .lollipop { fill: ${t.mainBkg} !important; stroke: ${t.lineColor} !important; stroke-width: 1; } .edgeTerminals { font-size: 11px; line-height: initial; } .classTitleText { text-anchor: middle; font-size: 18px; fill: ${t.textColor}; } `,"getStyles"),QT=jFe,KFe=v((t,e="TB")=>{if(!t.doc)return e;let r=e;for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),ZFe=v(function(t,e){return e.db.getClasses()},"getClasses"),QFe=v(async function(t,e,r,n){re.info("REF0:"),re.info("Drawing class diagram (v3)",e);let{securityLevel:i,state:a,layout:s}=pe(),o=n.db.getData(),l=Ag(e,i);o.type=n.type,o.layoutAlgorithm=vw(s),o.nodeSpacing=a?.nodeSpacing||50,o.rankSpacing=a?.rankSpacing||50,o.markers=["aggregation","extension","composition","dependency","lollipop"],o.diagramId=e,await kg(o,l);let u=8;Ut.insertTitle(l,"classDiagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),_g(l,u,"classDiagram",a?.useMaxWidth??!0)},"draw"),JT={getClasses:ZFe,draw:QFe,getDir:KFe}});var Hue={};vr(Hue,{diagram:()=>JFe});var JFe,que=F(()=>{LM();Kh();Nu();_u();yl();sl();pc();bo();Ya();kn();or();JFe={parser:jT,db:Nm,renderer:JT,styles:QT,init:v(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Nm.clear()},"init")}});var Yue={};vr(Yue,{diagram:()=>eze});var eze,Xue=F(()=>{LM();Kh();Nu();_u();yl();sl();pc();bo();Ya();kn();or();eze={parser:jT,db:Nm,renderer:JT,styles:QT,init:v(t=>{t.class||(t.class={}),t.class.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Nm.clear()},"init")}});function r6(t="",e=0,r="",n=OM){let i=r!==null&&r.length>0?`${n}${r}`:"";return`${xze}-${t}${i}-${e}`}function ix(t,e,r){if(!e.id||e.id===""||e.id==="")return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach(i=>{if(r.get(i)){let a=r.get(i);e.cssCompiledStyles=[...e.cssCompiledStyles,...a.styles]}}));let n=t.find(i=>i.id===e.id);n?Object.assign(n,e):t.push(e)}function phe(t){return t?.classes?.join(" ")??""}function ghe(t){return t?.styles??[]}function BM(){return new Map}function l6(t=""){let e=t;return t===PM&&(sx++,e=`${mhe}${sx}`),e}function c6(t="",e=ox){return t===PM?mhe:e}function The(t=""){let e=t;return t===vhe&&(sx++,e=`${yhe}${sx}`),e}function Ehe(t="",e=ox){return t===vhe?yhe:e}function She(t,e,r){let n=l6(t.id.trim()),i=c6(t.id.trim(),t.type),a=l6(e.id.trim()),s=c6(e.id.trim(),e.type);df(n,i,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),df(a,s,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),Ps.relations.push({id1:n,id2:a,relationTitle:Xe.sanitizeText(r,pe())})}var IM,u6,tze,rhe,i6,DM,rze,nze,ize,ox,nhe,ihe,ahe,she,ohe,lhe,RM,NM,aze,sze,jue,Kue,oze,lze,lx,cze,uze,che,hze,fze,dze,pze,gze,mze,vze,yze,uhe,hhe,xze,OM,bze,Zue,fhe,wze,kze,dhe,t6,ff,Tze,Que,ax,Eze,PM,mhe,vhe,yhe,Jue,ehe,Sze,Cze,a6,FM,xhe,s6,Im,bhe,o6,Ps,sx,the,Aze,_ze,e6,Lze,Rze,n6,zM,Nze,df,whe,k0,khe,Ize,Mze,Che,MM,Dze,Oze,Ahe,Pze,$M,Bze,Fze,zze,$ze,Gze,Uze,Dl,Vze,h6,GM=F(()=>{Kh();Nu();kn();or();IM=function(){var t=v(function(B,P,$,z){for($=$||{},z=B.length;z--;$[B[z]]=P);return $},"o"),e=[1,2],r=[1,3],n=[1,4],i=[2,4],a=[1,9],s=[1,11],o=[1,16],l=[1,17],u=[1,18],h=[1,19],f=[1,32],d=[1,20],p=[1,21],g=[1,22],m=[1,23],y=[1,24],x=[1,26],b=[1,27],w=[1,28],_=[1,29],k=[1,30],E=[1,31],L=[1,34],S=[1,35],C=[1,36],M=[1,37],R=[1,33],T=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],I=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],A=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],D={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"-->":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,classDef:38,CLASSDEF_ID:39,CLASSDEF_STYLEOPTS:40,DEFAULT:41,style:42,STYLE_IDS:43,STYLEDEF_STYLEOPTS:44,class:45,CLASSENTITY_IDS:46,STYLECLASS:47,direction_tb:48,direction_bt:49,direction_rl:50,direction_lr:51,eol:52,";":53,EDGE_STATE:54,STYLE_SEPARATOR:55,left_of:56,right_of:57,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"-->",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"classDef",39:"CLASSDEF_ID",40:"CLASSDEF_STYLEOPTS",41:"DEFAULT",42:"style",43:"STYLE_IDS",44:"STYLEDEF_STYLEOPTS",45:"class",46:"CLASSENTITY_IDS",47:"STYLECLASS",48:"direction_tb",49:"direction_bt",50:"direction_rl",51:"direction_lr",53:";",54:"EDGE_STATE",55:"STYLE_SEPARATOR",56:"left_of",57:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[52,1],[52,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:v(function(P,$,z,H,J,X,oe){var K=X.length-1;switch(J){case 3:return H.setRootDoc(X[K]),X[K];break;case 4:this.$=[];break;case 5:X[K]!="nl"&&(X[K-1].push(X[K]),this.$=X[K-1]);break;case 6:case 7:this.$=X[K];break;case 8:this.$="nl";break;case 12:this.$=X[K];break;case 13:let Y=X[K-1];Y.description=H.trimColon(X[K]),this.$=Y;break;case 14:this.$={stmt:"relation",state1:X[K-2],state2:X[K]};break;case 15:let Z=H.trimColon(X[K]);this.$={stmt:"relation",state1:X[K-3],state2:X[K-1],description:Z};break;case 19:this.$={stmt:"state",id:X[K-3],type:"default",description:"",doc:X[K-1]};break;case 20:var ee=X[K],Q=X[K-2].trim();if(X[K].match(":")){var W=X[K].split(":");ee=W[0],Q=[Q,W[1]]}this.$={stmt:"state",id:ee,type:"default",description:Q};break;case 21:this.$={stmt:"state",id:X[K-3],type:"default",description:X[K-5],doc:X[K-1]};break;case 22:this.$={stmt:"state",id:X[K],type:"fork"};break;case 23:this.$={stmt:"state",id:X[K],type:"join"};break;case 24:this.$={stmt:"state",id:X[K],type:"choice"};break;case 25:this.$={stmt:"state",id:H.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:X[K-1].trim(),note:{position:X[K-2].trim(),text:X[K].trim()}};break;case 29:this.$=X[K].trim(),H.setAccTitle(this.$);break;case 30:case 31:this.$=X[K].trim(),H.setAccDescription(this.$);break;case 32:case 33:this.$={stmt:"classDef",id:X[K-1].trim(),classes:X[K].trim()};break;case 34:this.$={stmt:"style",id:X[K-1].trim(),styleClass:X[K].trim()};break;case 35:this.$={stmt:"applyClass",id:X[K-1].trim(),styleClass:X[K].trim()};break;case 36:H.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 37:H.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 38:H.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 39:H.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 42:case 43:this.$={stmt:"state",id:X[K].trim(),type:"default",description:""};break;case 44:this.$={stmt:"state",id:X[K-2].trim(),classes:[X[K].trim()],type:"default",description:""};break;case 45:this.$={stmt:"state",id:X[K-2].trim(),classes:[X[K].trim()],type:"default",description:""};break}},"anonymous"),table:[{3:1,4:e,5:r,6:n},{1:[3]},{3:5,4:e,5:r,6:n},{3:6,4:e,5:r,6:n},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,42,45,48,49,50,51,54],i,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:o,17:l,19:u,22:h,24:f,25:d,26:p,27:g,28:m,29:y,32:25,33:x,35:b,37:w,38:_,42:k,45:E,48:L,49:S,50:C,51:M,54:R},t(T,[2,5]),{9:38,10:12,11:13,12:14,13:15,16:o,17:l,19:u,22:h,24:f,25:d,26:p,27:g,28:m,29:y,32:25,33:x,35:b,37:w,38:_,42:k,45:E,48:L,49:S,50:C,51:M,54:R},t(T,[2,7]),t(T,[2,8]),t(T,[2,9]),t(T,[2,10]),t(T,[2,11]),t(T,[2,12],{14:[1,39],15:[1,40]}),t(T,[2,16]),{18:[1,41]},t(T,[2,18],{20:[1,42]}),{23:[1,43]},t(T,[2,22]),t(T,[2,23]),t(T,[2,24]),t(T,[2,25]),{30:44,31:[1,45],56:[1,46],57:[1,47]},t(T,[2,28]),{34:[1,48]},{36:[1,49]},t(T,[2,31]),{39:[1,50],41:[1,51]},{43:[1,52]},{46:[1,53]},t(I,[2,42],{55:[1,54]}),t(I,[2,43],{55:[1,55]}),t(T,[2,36]),t(T,[2,37]),t(T,[2,38]),t(T,[2,39]),t(T,[2,6]),t(T,[2,13]),{13:56,24:f,54:R},t(T,[2,17]),t(A,i,{7:57}),{24:[1,58]},{24:[1,59]},{23:[1,60]},{24:[2,46]},{24:[2,47]},t(T,[2,29]),t(T,[2,30]),{40:[1,61]},{40:[1,62]},{44:[1,63]},{47:[1,64]},{24:[1,65]},{24:[1,66]},t(T,[2,14],{14:[1,67]}),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:o,17:l,19:u,21:[1,68],22:h,24:f,25:d,26:p,27:g,28:m,29:y,32:25,33:x,35:b,37:w,38:_,42:k,45:E,48:L,49:S,50:C,51:M,54:R},t(T,[2,20],{20:[1,69]}),{31:[1,70]},{24:[1,71]},t(T,[2,32]),t(T,[2,33]),t(T,[2,34]),t(T,[2,35]),t(I,[2,44]),t(I,[2,45]),t(T,[2,15]),t(T,[2,19]),t(A,i,{7:72}),t(T,[2,26]),t(T,[2,27]),{4:a,5:s,8:8,9:10,10:12,11:13,12:14,13:15,16:o,17:l,19:u,21:[1,73],22:h,24:f,25:d,26:p,27:g,28:m,29:y,32:25,33:x,35:b,37:w,38:_,42:k,45:E,48:L,49:S,50:C,51:M,54:R},t(T,[2,21])],defaultActions:{5:[2,1],6:[2,2],46:[2,46],47:[2,47]},parseError:v(function(P,$){if($.recoverable)this.trace(P);else{var z=new Error(P);throw z.hash=$,z}},"parseError"),parse:v(function(P){var $=this,z=[0],H=[],J=[null],X=[],oe=this.table,K="",ee=0,Q=0,W=0,Y=2,Z=1,se=X.slice.call(arguments,1),ce=Object.create(this.lexer),ue={yy:{}};for(var te in this.yy)Object.prototype.hasOwnProperty.call(this.yy,te)&&(ue.yy[te]=this.yy[te]);ce.setInput(P,ue.yy),ue.yy.lexer=ce,ue.yy.parser=this,typeof ce.yylloc>"u"&&(ce.yylloc={});var Ne=ce.yylloc;X.push(Ne);var ae=ce.options&&ce.options.ranges;typeof ue.yy.parseError=="function"?this.parseError=ue.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function we(ke){z.length=z.length-2*ke,J.length=J.length-ke,X.length=X.length-ke}v(we,"popStack");function Ie(){var ke;return ke=H.pop()||ce.lex()||Z,typeof ke!="number"&&(ke instanceof Array&&(H=ke,ke=H.pop()),ke=$.symbols_[ke]||ke),ke}v(Ie,"lex");for(var Ee,Oe,De,We,Re,Pe,xe={},q,de,ie,he;;){if(De=z[z.length-1],this.defaultActions[De]?We=this.defaultActions[De]:((Ee===null||typeof Ee>"u")&&(Ee=Ie()),We=oe[De]&&oe[De][Ee]),typeof We>"u"||!We.length||!We[0]){var U="";he=[];for(q in oe[De])this.terminals_[q]&&q>Y&&he.push("'"+this.terminals_[q]+"'");ce.showPosition?U="Parse error on line "+(ee+1)+`: `+ce.showPosition()+` Expecting `+he.join(", ")+", got '"+(this.terminals_[Ee]||Ee)+"'":U="Parse error on line "+(ee+1)+": Unexpected "+(Ee==Z?"end of input":"'"+(this.terminals_[Ee]||Ee)+"'"),this.parseError(U,{text:ce.match,token:this.terminals_[Ee]||Ee,line:ce.yylineno,loc:Ne,expected:he})}if(We[0]instanceof Array&&We.length>1)throw new Error("Parse Error: multiple actions possible at state: "+De+", token: "+Ee);switch(We[0]){case 1:z.push(Ee),J.push(ce.yytext),X.push(ce.yylloc),z.push(We[1]),Ee=null,Oe?(Ee=Oe,Oe=null):(Q=ce.yyleng,K=ce.yytext,ee=ce.yylineno,Ne=ce.yylloc,W>0&&W--);break;case 2:if(de=this.productions_[We[1]][1],xe.$=J[J.length-de],xe._$={first_line:X[X.length-(de||1)].first_line,last_line:X[X.length-1].last_line,first_column:X[X.length-(de||1)].first_column,last_column:X[X.length-1].last_column},ae&&(xe._$.range=[X[X.length-(de||1)].range[0],X[X.length-1].range[1]]),Pe=this.performAction.apply(xe,[K,Q,ee,ue.yy,We[1],J,X].concat(se)),typeof Pe<"u")return Pe;de&&(z=z.slice(0,-1*de*2),J=J.slice(0,-1*de),X=X.slice(0,-1*de)),z.push(this.productions_[We[1]][0]),J.push(xe.$),X.push(xe._$),ie=oe[z[z.length-2]][z[z.length-1]],z.push(ie);break;case 3:return!0}}return!0},"parse")},N=function(){var B={EOF:1,parseError:v(function($,z){if(this.yy.parser)this.yy.parser.parseError($,z);else throw new Error($)},"parseError"),setInput:v(function(P,$){return this.yy=$||this.yy||{},this._input=P,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var P=this._input[0];this.yytext+=P,this.yyleng++,this.offset++,this.match+=P,this.matched+=P;var $=P.match(/(?:\r\n?|\n).*/g);return $?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),P},"input"),unput:v(function(P){var $=P.length,z=P.split(/(?:\r\n?|\n)/g);this._input=P+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-$),this.offset-=$;var H=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),z.length-1&&(this.yylineno-=z.length-1);var J=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:z?(z.length===H.length?this.yylloc.first_column:0)+H[H.length-z.length].length-z[0].length:this.yylloc.first_column-$},this.options.ranges&&(this.yylloc.range=[J[0],J[0]+this.yyleng-$]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(P){this.unput(this.match.slice(P))},"less"),pastInput:v(function(){var P=this.matched.substr(0,this.matched.length-this.match.length);return(P.length>20?"...":"")+P.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var P=this.match;return P.length<20&&(P+=this._input.substr(0,20-P.length)),(P.substr(0,20)+(P.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var P=this.pastInput(),$=new Array(P.length+1).join("-");return P+this.upcomingInput()+` `+$+"^"},"showPosition"),test_match:v(function(P,$){var z,H,J;if(this.options.backtrack_lexer&&(J={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(J.yylloc.range=this.yylloc.range.slice(0))),H=P[0].match(/(?:\r\n?|\n).*/g),H&&(this.yylineno+=H.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:H?H[H.length-1].length-H[H.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+P[0].length},this.yytext+=P[0],this.match+=P[0],this.matches=P,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(P[0].length),this.matched+=P[0],z=this.performAction.call(this,this.yy,this,$,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),z)return z;if(this._backtrack){for(var X in J)this[X]=J[X];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var P,$,z,H;this._more||(this.yytext="",this.match="");for(var J=this._currentRules(),X=0;X$[0].length)){if($=z,H=X,this.options.backtrack_lexer){if(P=this.test_match(z,J[X]),P!==!1)return P;if(this._backtrack){$=!1;continue}else return!1}else if(!this.options.flex)break}return $?(P=this.test_match($,J[H]),P!==!1?P:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var $=this.next();return $||this.lex()},"lex"),begin:v(function($){this.conditionStack.push($)},"begin"),popState:v(function(){var $=this.conditionStack.length-1;return $>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function($){return $=this.conditionStack.length-1-Math.abs($||0),$>=0?this.conditionStack[$]:"INITIAL"},"topState"),pushState:v(function($){this.begin($)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:v(function($,z,H,J){var X=J;switch(H){case 0:return 41;case 1:return 48;case 2:return 49;case 3:return 50;case 4:return 51;case 5:break;case 6:break;case 7:return 5;case 8:break;case 9:break;case 10:break;case 11:break;case 12:return this.pushState("SCALE"),17;break;case 13:return 18;case 14:this.popState();break;case 15:return this.begin("acc_title"),33;break;case 16:return this.popState(),"acc_title_value";break;case 17:return this.begin("acc_descr"),35;break;case 18:return this.popState(),"acc_descr_value";break;case 19:this.begin("acc_descr_multiline");break;case 20:this.popState();break;case 21:return"acc_descr_multiline_value";case 22:return this.pushState("CLASSDEF"),38;break;case 23:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 24:return this.popState(),this.pushState("CLASSDEFID"),39;break;case 25:return this.popState(),40;break;case 26:return this.pushState("CLASS"),45;break;case 27:return this.popState(),this.pushState("CLASS_STYLE"),46;break;case 28:return this.popState(),47;break;case 29:return this.pushState("STYLE"),42;break;case 30:return this.popState(),this.pushState("STYLEDEF_STYLES"),43;break;case 31:return this.popState(),44;break;case 32:return this.pushState("SCALE"),17;break;case 33:return 18;case 34:this.popState();break;case 35:this.pushState("STATE");break;case 36:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),25;break;case 37:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),26;break;case 38:return this.popState(),z.yytext=z.yytext.slice(0,-10).trim(),27;break;case 39:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),25;break;case 40:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),26;break;case 41:return this.popState(),z.yytext=z.yytext.slice(0,-10).trim(),27;break;case 42:return 48;case 43:return 49;case 44:return 50;case 45:return 51;case 46:this.pushState("STATE_STRING");break;case 47:return this.pushState("STATE_ID"),"AS";break;case 48:return this.popState(),"ID";break;case 49:this.popState();break;case 50:return"STATE_DESCR";case 51:return 19;case 52:this.popState();break;case 53:return this.popState(),this.pushState("struct"),20;break;case 54:break;case 55:return this.popState(),21;break;case 56:break;case 57:return this.begin("NOTE"),29;break;case 58:return this.popState(),this.pushState("NOTE_ID"),56;break;case 59:return this.popState(),this.pushState("NOTE_ID"),57;break;case 60:this.popState(),this.pushState("FLOATING_NOTE");break;case 61:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";break;case 62:break;case 63:return"NOTE_TEXT";case 64:return this.popState(),"ID";break;case 65:return this.popState(),this.pushState("NOTE_TEXT"),24;break;case 66:return this.popState(),z.yytext=z.yytext.substr(2).trim(),31;break;case 67:return this.popState(),z.yytext=z.yytext.slice(0,-8).trim(),31;break;case 68:return 6;case 69:return 6;case 70:return 16;case 71:return 54;case 72:return 24;case 73:return z.yytext=z.yytext.trim(),14;break;case 74:return 15;case 75:return 28;case 76:return 55;case 77:return 5;case 78:return"INVALID"}},"anonymous"),rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[9,10],inclusive:!1},struct:{rules:[9,10,22,26,29,35,42,43,44,45,54,55,56,57,71,72,73,74,75],inclusive:!1},FLOATING_NOTE_ID:{rules:[64],inclusive:!1},FLOATING_NOTE:{rules:[61,62,63],inclusive:!1},NOTE_TEXT:{rules:[66,67],inclusive:!1},NOTE_ID:{rules:[65],inclusive:!1},NOTE:{rules:[58,59,60],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[31],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[30],inclusive:!1},CLASS_STYLE:{rules:[28],inclusive:!1},CLASS:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[25],inclusive:!1},CLASSDEF:{rules:[23,24],inclusive:!1},acc_descr_multiline:{rules:[20,21],inclusive:!1},acc_descr:{rules:[18],inclusive:!1},acc_title:{rules:[16],inclusive:!1},SCALE:{rules:[13,14,33,34],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[48],inclusive:!1},STATE_STRING:{rules:[49,50],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,36,37,38,39,40,41,46,47,51,52,53],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,10,11,12,15,17,19,22,26,29,32,35,53,57,68,69,70,71,72,73,74,76,77,78],inclusive:!0}}};return B}();D.lexer=N;function O(){this.yy={}}return v(O,"Parser"),O.prototype=D,D.Parser=O,new O}();IM.parser=IM;u6=IM,tze="LR",rhe="TB",i6="state",DM="relation",rze="classDef",nze="style",ize="applyClass",ox="default",nhe="divider",ihe="fill:none",ahe="fill: #333",she="c",ohe="text",lhe="normal",RM="rect",NM="rectWithTitle",aze="stateStart",sze="stateEnd",jue="divider",Kue="roundedWithTitle",oze="note",lze="noteGroup",lx="statediagram",cze="state",uze=`${lx}-${cze}`,che="transition",hze="note",fze="note-edge",dze=`${che} ${fze}`,pze=`${lx}-${hze}`,gze="cluster",mze=`${lx}-${gze}`,vze="cluster-alt",yze=`${lx}-${vze}`,uhe="parent",hhe="note",xze="state",OM="----",bze=`${OM}${hhe}`,Zue=`${OM}${uhe}`,fhe=v((t,e=rhe)=>{if(!t.doc)return e;let r=e;for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir"),wze=v(function(t,e){return e.db.extract(e.db.getRootDocV2()),e.db.getClasses()},"getClasses"),kze=v(async function(t,e,r,n){re.info("REF0:"),re.info("Drawing state diagram (v2)",e);let{securityLevel:i,state:a,layout:s}=pe();n.db.extract(n.db.getRootDocV2());let o=n.db.getData(),l=Ag(e,i);o.type=n.type,o.layoutAlgorithm=s,o.nodeSpacing=a?.nodeSpacing||50,o.rankSpacing=a?.rankSpacing||50,o.markers=["barb"],o.diagramId=e,await kg(o,l);let u=8;Ut.insertTitle(l,"statediagramTitleText",a?.titleTopMargin??25,n.db.getDiagramTitle()),_g(l,u,lx,a?.useMaxWidth??!0)},"draw"),dhe={getClasses:wze,draw:kze,getDir:fhe},t6=new Map,ff=0;v(r6,"stateDomId");Tze=v((t,e,r,n,i,a,s,o)=>{re.trace("items",e),e.forEach(l=>{switch(l.stmt){case i6:ax(t,l,r,n,i,a,s,o);break;case ox:ax(t,l,r,n,i,a,s,o);break;case DM:{ax(t,l.state1,r,n,i,a,s,o),ax(t,l.state2,r,n,i,a,s,o);let u={id:"edge"+ff,start:l.state1.id,end:l.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:ihe,labelStyle:"",label:Xe.sanitizeText(l.description,pe()),arrowheadStyle:ahe,labelpos:she,labelType:ohe,thickness:lhe,classes:che,look:s};i.push(u),ff++}break}})},"setupDoc"),Que=v((t,e=rhe)=>{let r=e;if(t.doc)for(let n of t.doc)n.stmt==="dir"&&(r=n.value);return r},"getDir");v(ix,"insertOrUpdateNode");v(phe,"getClassesFromDbInfo");v(ghe,"getStylesFromDbInfo");ax=v((t,e,r,n,i,a,s,o)=>{let l=e.id,u=r.get(l),h=phe(u),f=ghe(u);if(re.info("dataFetcher parsedItem",e,u,f),l!=="root"){let d=RM;e.start===!0?d=aze:e.start===!1&&(d=sze),e.type!==ox&&(d=e.type),t6.get(l)||t6.set(l,{id:l,shape:d,description:Xe.sanitizeText(l,pe()),cssClasses:`${h} ${uze}`,cssStyles:f});let p=t6.get(l);e.description&&(Array.isArray(p.description)?(p.shape=NM,p.description.push(e.description)):p.description?.length>0?(p.shape=NM,p.description===l?p.description=[e.description]:p.description=[p.description,e.description]):(p.shape=RM,p.description=e.description),p.description=Xe.sanitizeTextOrArray(p.description,pe())),p.description?.length===1&&p.shape===NM&&(p.type==="group"?p.shape=Kue:p.shape=RM),!p.type&&e.doc&&(re.info("Setting cluster for XCX",l,Que(e)),p.type="group",p.isGroup=!0,p.dir=Que(e),p.shape=e.type===nhe?jue:Kue,p.cssClasses=`${p.cssClasses} ${mze} ${a?yze:""}`);let g={labelStyle:"",shape:p.shape,label:p.description,cssClasses:p.cssClasses,cssCompiledStyles:[],cssStyles:p.cssStyles,id:l,dir:p.dir,domId:r6(l,ff),type:p.type,isGroup:p.type==="group",padding:8,rx:10,ry:10,look:s};if(g.shape===jue&&(g.label=""),t&&t.id!=="root"&&(re.trace("Setting node ",l," to be child of its parent ",t.id),g.parentId=t.id),g.centerLabel=!0,e.note){let m={labelStyle:"",shape:oze,label:e.note.text,cssClasses:pze,cssStyles:[],cssCompilesStyles:[],id:l+bze+"-"+ff,domId:r6(l,ff,hhe),type:p.type,isGroup:p.type==="group",padding:pe().flowchart.padding,look:s,position:e.note.position},y=l+Zue,x={labelStyle:"",shape:lze,label:e.note.text,cssClasses:p.cssClasses,cssStyles:[],id:l+Zue,domId:r6(l,ff,uhe),type:"group",isGroup:!0,padding:16,look:s,position:e.note.position};ff++,x.id=y,m.parentId=y,ix(n,x,o),ix(n,m,o),ix(n,g,o);let b=l,w=m.id;e.note.position==="left of"&&(b=m.id,w=l),i.push({id:b+"-"+w,start:b,end:w,arrowhead:"none",arrowTypeEnd:"",style:ihe,labelStyle:"",classes:dze,arrowheadStyle:ahe,labelpos:she,labelType:ohe,thickness:lhe,look:s})}else ix(n,g,o)}e.doc&&(re.trace("Adding nodes children "),Tze(e,e.doc,r,n,i,!a,s,o))},"dataFetcher"),Eze=v(()=>{t6.clear(),ff=0},"reset"),PM="[*]",mhe="start",vhe=PM,yhe="end",Jue="color",ehe="fill",Sze="bgFill",Cze=",";v(BM,"newClassesList");a6=[],FM=[],xhe=tze,s6=[],Im=BM(),bhe=v(()=>({relations:[],states:new Map,documents:{}}),"newDoc"),o6={root:bhe()},Ps=o6.root,sx=0,the=0,Aze={LINE:0,DOTTED_LINE:1},_ze={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},e6=v(t=>JSON.parse(JSON.stringify(t)),"clone"),Lze=v(t=>{re.info("Setting root doc",t),s6=t},"setRootDoc"),Rze=v(()=>s6,"getRootDoc"),n6=v((t,e,r)=>{if(e.stmt===DM)n6(t,e.state1,!0),n6(t,e.state2,!1);else if(e.stmt===i6&&(e.id==="[*]"?(e.id=r?t.id+"_start":t.id+"_end",e.start=r):e.id=e.id.trim()),e.doc){let n=[],i=[],a;for(a=0;a0&&i.length>0){let s={stmt:i6,id:oA(),type:"divider",doc:e6(i)};n.push(e6(s)),e.doc=n}e.doc.forEach(s=>n6(e,s,!0))}},"docTranslator"),zM=v(()=>(n6({id:"root"},{id:"root",doc:s6},!0),{id:"root",doc:s6}),"getRootDocV2"),Nze=v(t=>{let e;t.doc?e=t.doc:e=t,re.info(e),whe(!0),re.info("Extract initial document:",e),e.forEach(a=>{switch(re.warn("Statement",a.stmt),a.stmt){case i6:df(a.id.trim(),a.type,a.doc,a.description,a.note,a.classes,a.styles,a.textStyles);break;case DM:Che(a.state1,a.state2,a.description);break;case rze:Ahe(a.id.trim(),a.classes);break;case nze:{let s=a.id.trim().split(","),o=a.styleClass.split(",");s.forEach(l=>{let u=k0(l);if(u===void 0){let h=l.trim();df(h),u=k0(h)}u.styles=o.map(h=>h.replace(/;/g,"")?.trim())})}break;case ize:$M(a.id.trim(),a.styleClass);break}});let r=khe(),i=pe().look;Eze(),ax(void 0,zM(),r,a6,FM,!0,i,Im),a6.forEach(a=>{if(Array.isArray(a.label)){if(a.description=a.label.slice(1),a.isGroup&&a.description.length>0)throw new Error("Group nodes can only have label. Remove the additional description for node ["+a.id+"]");a.label=a.label[0]}})},"extract"),df=v(function(t,e=ox,r=null,n=null,i=null,a=null,s=null,o=null){let l=t?.trim();if(Ps.states.has(l)?(Ps.states.get(l).doc||(Ps.states.get(l).doc=r),Ps.states.get(l).type||(Ps.states.get(l).type=e)):(re.info("Adding state ",l,n),Ps.states.set(l,{id:l,descriptions:[],type:e,doc:r,note:i,classes:[],styles:[],textStyles:[]})),n&&(re.info("Setting state description",l,n),typeof n=="string"&&MM(l,n.trim()),typeof n=="object"&&n.forEach(u=>MM(l,u.trim()))),i){let u=Ps.states.get(l);u.note=i,u.note.text=Xe.sanitizeText(u.note.text,pe())}a&&(re.info("Setting state classes",l,a),(typeof a=="string"?[a]:a).forEach(h=>$M(l,h.trim()))),s&&(re.info("Setting state styles",l,s),(typeof s=="string"?[s]:s).forEach(h=>Bze(l,h.trim()))),o&&(re.info("Setting state styles",l,s),(typeof o=="string"?[o]:o).forEach(h=>Fze(l,h.trim())))},"addState"),whe=v(function(t){a6=[],FM=[],o6={root:bhe()},Ps=o6.root,sx=0,Im=BM(),t||xr()},"clear"),k0=v(function(t){return Ps.states.get(t)},"getState"),khe=v(function(){return Ps.states},"getStates"),Ize=v(function(){re.info("Documents = ",o6)},"logDocuments"),Mze=v(function(){return Ps.relations},"getRelations");v(l6,"startIdIfNeeded");v(c6,"startTypeIfNeeded");v(The,"endIdIfNeeded");v(Ehe,"endTypeIfNeeded");v(She,"addRelationObjs");Che=v(function(t,e,r){if(typeof t=="object")She(t,e,r);else{let n=l6(t.trim()),i=c6(t),a=The(e.trim()),s=Ehe(e);df(n,i),df(a,s),Ps.relations.push({id1:n,id2:a,title:Xe.sanitizeText(r,pe())})}},"addRelation"),MM=v(function(t,e){let r=Ps.states.get(t),n=e.startsWith(":")?e.replace(":","").trim():e;r.descriptions.push(Xe.sanitizeText(n,pe()))},"addDescription"),Dze=v(function(t){return t.substring(0,1)===":"?t.substr(2).trim():t.trim()},"cleanupLabel"),Oze=v(()=>(the++,"divider-id-"+the),"getDividerId"),Ahe=v(function(t,e=""){Im.has(t)||Im.set(t,{id:t,styles:[],textStyles:[]});let r=Im.get(t);e?.split(Cze).forEach(n=>{let i=n.replace(/([^;]*);/,"$1").trim();if(RegExp(Jue).exec(n)){let s=i.replace(ehe,Sze).replace(Jue,ehe);r.textStyles.push(s)}r.styles.push(i)})},"addStyleClass"),Pze=v(function(){return Im},"getClasses"),$M=v(function(t,e){t.split(",").forEach(function(r){let n=k0(r);if(n===void 0){let i=r.trim();df(i),n=k0(i)}n.classes.push(e)})},"setCssClass"),Bze=v(function(t,e){let r=k0(t);r!==void 0&&r.styles.push(e)},"setStyle"),Fze=v(function(t,e){let r=k0(t);r!==void 0&&r.textStyles.push(e)},"setTextStyle"),zze=v(()=>xhe,"getDirection"),$ze=v(t=>{xhe=t},"setDirection"),Gze=v(t=>t&&t[0]===":"?t.substr(1).trim():t.trim(),"trimColon"),Uze=v(()=>{let t=pe();return{nodes:a6,edges:FM,other:{},config:t,direction:fhe(zM())}},"getData"),Dl={getConfig:v(()=>pe().state,"getConfig"),getData:Uze,addState:df,clear:whe,getState:k0,getStates:khe,getRelations:Mze,getClasses:Pze,getDirection:zze,addRelation:Che,getDividerId:Oze,setDirection:$ze,cleanupLabel:Dze,lineType:Aze,relationType:_ze,logDocuments:Ize,getRootDoc:Rze,setRootDoc:Lze,getRootDocV2:zM,extract:Nze,trimColon:Gze,getAccTitle:_r,setAccTitle:Tr,getAccDescription:Rr,setAccDescription:Lr,addStyleClass:Ahe,setCssClass:$M,addDescription:MM,setDiagramTitle:tn,getDiagramTitle:qr},Vze=v(t=>` defs #statediagram-barbEnd { fill: ${t.transitionColor}; stroke: ${t.transitionColor}; } g.stateGroup text { fill: ${t.nodeBorder}; stroke: none; font-size: 10px; } g.stateGroup text { fill: ${t.textColor}; stroke: none; font-size: 10px; } g.stateGroup .state-title { font-weight: bolder; fill: ${t.stateLabelColor}; } g.stateGroup rect { fill: ${t.mainBkg}; stroke: ${t.nodeBorder}; } g.stateGroup line { stroke: ${t.lineColor}; stroke-width: 1; } .transition { stroke: ${t.transitionColor}; stroke-width: 1; fill: none; } .stateGroup .composit { fill: ${t.background}; border-bottom: 1px } .stateGroup .alt-composit { fill: #e0e0e0; border-bottom: 1px } .state-note { stroke: ${t.noteBorderColor}; fill: ${t.noteBkgColor}; text { fill: ${t.noteTextColor}; stroke: none; font-size: 10px; } } .stateLabel .box { stroke: none; stroke-width: 0; fill: ${t.mainBkg}; opacity: 0.5; } .edgeLabel .label rect { fill: ${t.labelBackgroundColor}; opacity: 0.5; } .edgeLabel { background-color: ${t.edgeLabelBackground}; p { background-color: ${t.edgeLabelBackground}; } rect { opacity: 0.5; background-color: ${t.edgeLabelBackground}; fill: ${t.edgeLabelBackground}; } text-align: center; } .edgeLabel .label text { fill: ${t.transitionLabelColor||t.tertiaryTextColor}; } .label div .edgeLabel { color: ${t.transitionLabelColor||t.tertiaryTextColor}; } .stateLabel text { fill: ${t.stateLabelColor}; font-size: 10px; font-weight: bold; } .node circle.state-start { fill: ${t.specialStateColor}; stroke: ${t.specialStateColor}; } .node .fork-join { fill: ${t.specialStateColor}; stroke: ${t.specialStateColor}; } .node circle.state-end { fill: ${t.innerEndBackground}; stroke: ${t.background}; stroke-width: 1.5 } .end-state-inner { fill: ${t.compositeBackground||t.background}; // stroke: ${t.background}; stroke-width: 1.5 } .node rect { fill: ${t.stateBkg||t.mainBkg}; stroke: ${t.stateBorder||t.nodeBorder}; stroke-width: 1px; } .node polygon { fill: ${t.mainBkg}; stroke: ${t.stateBorder||t.nodeBorder};; stroke-width: 1px; } #statediagram-barbEnd { fill: ${t.lineColor}; } .statediagram-cluster rect { fill: ${t.compositeTitleBackground}; stroke: ${t.stateBorder||t.nodeBorder}; stroke-width: 1px; } .cluster-label, .nodeLabel { color: ${t.stateLabelColor}; // line-height: 1; } .statediagram-cluster rect.outer { rx: 5px; ry: 5px; } .statediagram-state .divider { stroke: ${t.stateBorder||t.nodeBorder}; } .statediagram-state .title-state { rx: 5px; ry: 5px; } .statediagram-cluster.statediagram-cluster .inner { fill: ${t.compositeBackground||t.background}; } .statediagram-cluster.statediagram-cluster-alt .inner { fill: ${t.altBackground?t.altBackground:"#efefef"}; } .statediagram-cluster .inner { rx:0; ry:0; } .statediagram-state rect.basic { rx: 5px; ry: 5px; } .statediagram-state rect.divider { stroke-dasharray: 10,10; fill: ${t.altBackground?t.altBackground:"#efefef"}; } .note-edge { stroke-dasharray: 5; } .statediagram-note rect { fill: ${t.noteBkgColor}; stroke: ${t.noteBorderColor}; stroke-width: 1px; rx: 0; ry: 0; } .statediagram-note rect { fill: ${t.noteBkgColor}; stroke: ${t.noteBorderColor}; stroke-width: 1px; rx: 0; ry: 0; } .statediagram-note text { fill: ${t.noteTextColor}; } .statediagram-note .nodeLabel { color: ${t.noteTextColor}; } .statediagram .edgeLabel { color: red; // ${t.noteTextColor}; } #dependencyStart, #dependencyEnd { fill: ${t.lineColor}; stroke: ${t.lineColor}; stroke-width: 1; } .statediagramTitleText { text-anchor: middle; font-size: 18px; fill: ${t.textColor}; } `,"getStyles"),h6=Vze});var Ihe={};vr(Ihe,{diagram:()=>c$e});var VM,Wze,Hze,Rhe,qze,Yze,Xze,jze,Kze,Zze,Qze,Jze,e$e,t$e,r$e,_he,Lhe,n$e,lo,UM,i$e,a$e,s$e,o$e,Nhe,l$e,c$e,Mhe=F(()=>{GM();Kh();Nu();_u();yl();sl();pc();bo();Ya();kn();or();lr();uy();As();lr();VM={},Wze=v((t,e)=>{VM[t]=e},"set"),Hze=v(t=>VM[t],"get"),Rhe=v(()=>Object.keys(VM),"keys"),qze=v(()=>Rhe().length,"size"),Yze={get:Hze,set:Wze,keys:Rhe,size:qze},Xze=v(t=>t.append("circle").attr("class","start-state").attr("r",pe().state.sizeUnit).attr("cx",pe().state.padding+pe().state.sizeUnit).attr("cy",pe().state.padding+pe().state.sizeUnit),"drawStartState"),jze=v(t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",pe().state.textHeight).attr("class","divider").attr("x2",pe().state.textHeight*2).attr("y1",0).attr("y2",0),"drawDivider"),Kze=v((t,e)=>{let r=t.append("text").attr("x",2*pe().state.padding).attr("y",pe().state.textHeight+2*pe().state.padding).attr("font-size",pe().state.fontSize).attr("class","state-title").text(e.id),n=r.node().getBBox();return t.insert("rect",":first-child").attr("x",pe().state.padding).attr("y",pe().state.padding).attr("width",n.width+2*pe().state.padding).attr("height",n.height+2*pe().state.padding).attr("rx",pe().state.radius),r},"drawSimpleState"),Zze=v((t,e)=>{let r=v(function(d,p,g){let m=d.append("tspan").attr("x",2*pe().state.padding).text(p);g||m.attr("dy",pe().state.textHeight)},"addTspan"),i=t.append("text").attr("x",2*pe().state.padding).attr("y",pe().state.textHeight+1.3*pe().state.padding).attr("font-size",pe().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),a=i.height,s=t.append("text").attr("x",pe().state.padding).attr("y",a+pe().state.padding*.4+pe().state.dividerMargin+pe().state.textHeight).attr("class","state-description"),o=!0,l=!0;e.descriptions.forEach(function(d){o||(r(s,d,l),l=!1),o=!1});let u=t.append("line").attr("x1",pe().state.padding).attr("y1",pe().state.padding+a+pe().state.dividerMargin/2).attr("y2",pe().state.padding+a+pe().state.dividerMargin/2).attr("class","descr-divider"),h=s.node().getBBox(),f=Math.max(h.width,i.width);return u.attr("x2",f+3*pe().state.padding),t.insert("rect",":first-child").attr("x",pe().state.padding).attr("y",pe().state.padding).attr("width",f+2*pe().state.padding).attr("height",h.height+a+2*pe().state.padding).attr("rx",pe().state.radius),t},"drawDescrState"),Qze=v((t,e,r)=>{let n=pe().state.padding,i=2*pe().state.padding,a=t.node().getBBox(),s=a.width,o=a.x,l=t.append("text").attr("x",0).attr("y",pe().state.titleShift).attr("font-size",pe().state.fontSize).attr("class","state-title").text(e.id),h=l.node().getBBox().width+i,f=Math.max(h,s);f===s&&(f=f+i);let d,p=t.node().getBBox();e.doc,d=o-n,h>s&&(d=(s-f)/2+n),Math.abs(o-p.x)s&&(d=o-(h-s)/2);let g=1-pe().state.textHeight;return t.insert("rect",":first-child").attr("x",d).attr("y",g).attr("class",r?"alt-composit":"composit").attr("width",f).attr("height",p.height+pe().state.textHeight+pe().state.titleShift+1).attr("rx","0"),l.attr("x",d+n),h<=s&&l.attr("x",o+(f-i)/2-h/2+n),t.insert("rect",":first-child").attr("x",d).attr("y",pe().state.titleShift-pe().state.textHeight-pe().state.padding).attr("width",f).attr("height",pe().state.textHeight*3).attr("rx",pe().state.radius),t.insert("rect",":first-child").attr("x",d).attr("y",pe().state.titleShift-pe().state.textHeight-pe().state.padding).attr("width",f).attr("height",p.height+3+2*pe().state.textHeight).attr("rx",pe().state.radius),t},"addTitleAndBox"),Jze=v(t=>(t.append("circle").attr("class","end-state-outer").attr("r",pe().state.sizeUnit+pe().state.miniPadding).attr("cx",pe().state.padding+pe().state.sizeUnit+pe().state.miniPadding).attr("cy",pe().state.padding+pe().state.sizeUnit+pe().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",pe().state.sizeUnit).attr("cx",pe().state.padding+pe().state.sizeUnit+2).attr("cy",pe().state.padding+pe().state.sizeUnit+2)),"drawEndState"),e$e=v((t,e)=>{let r=pe().state.forkWidth,n=pe().state.forkHeight;if(e.parentId){let i=r;r=n,n=i}return t.append("rect").style("stroke","black").style("fill","black").attr("width",r).attr("height",n).attr("x",pe().state.padding).attr("y",pe().state.padding)},"drawForkJoinState"),t$e=v((t,e,r,n)=>{let i=0,a=n.append("text");a.style("text-anchor","start"),a.attr("class","noteText");let s=t.replace(/\r\n/g,"
    ");s=s.replace(/\n/g,"
    ");let o=s.split(Xe.lineBreakRegex),l=1.25*pe().state.noteMargin;for(let u of o){let h=u.trim();if(h.length>0){let f=a.append("tspan");if(f.text(h),l===0){let d=f.node().getBBox();l+=d.height}i+=l,f.attr("x",e+pe().state.noteMargin),f.attr("y",r+i+1.25*pe().state.noteMargin)}}return{textWidth:a.node().getBBox().width,textHeight:i}},"_drawLongText"),r$e=v((t,e)=>{e.attr("class","state-note");let r=e.append("rect").attr("x",0).attr("y",pe().state.padding),n=e.append("g"),{textWidth:i,textHeight:a}=t$e(t,0,0,n);return r.attr("height",a+2*pe().state.noteMargin),r.attr("width",i+pe().state.noteMargin*2),r},"drawNote"),_he=v(function(t,e){let r=e.id,n={id:r,label:e.id,width:0,height:0},i=t.append("g").attr("id",r).attr("class","stateGroup");e.type==="start"&&Xze(i),e.type==="end"&&Jze(i),(e.type==="fork"||e.type==="join")&&e$e(i,e),e.type==="note"&&r$e(e.note.text,i),e.type==="divider"&&jze(i),e.type==="default"&&e.descriptions.length===0&&Kze(i,e),e.type==="default"&&e.descriptions.length>0&&Zze(i,e);let a=i.node().getBBox();return n.width=a.width+2*pe().state.padding,n.height=a.height+2*pe().state.padding,Yze.set(r,n),n},"drawState"),Lhe=0,n$e=v(function(t,e,r){let n=v(function(l){switch(l){case Dl.relationType.AGGREGATION:return"aggregation";case Dl.relationType.EXTENSION:return"extension";case Dl.relationType.COMPOSITION:return"composition";case Dl.relationType.DEPENDENCY:return"dependency"}},"getRelationType");e.points=e.points.filter(l=>!Number.isNaN(l.y));let i=e.points,a=ms().x(function(l){return l.x}).y(function(l){return l.y}).curve(gl),s=t.append("path").attr("d",a(i)).attr("id","edge"+Lhe).attr("class","transition"),o="";if(pe().state.arrowMarkerAbsolute&&(o=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,o=o.replace(/\(/g,"\\("),o=o.replace(/\)/g,"\\)")),s.attr("marker-end","url("+o+"#"+n(Dl.relationType.DEPENDENCY)+"End)"),r.title!==void 0){let l=t.append("g").attr("class","stateLabel"),{x:u,y:h}=Ut.calcLabelPosition(e.points),f=Xe.getRows(r.title),d=0,p=[],g=0,m=0;for(let b=0;b<=f.length;b++){let w=l.append("text").attr("text-anchor","middle").text(f[b]).attr("x",u).attr("y",h+d),_=w.node().getBBox();g=Math.max(g,_.width),m=Math.min(m,_.x),re.info(_.x,u,h+d),d===0&&(d=w.node().getBBox().height,re.info("Title height",d,h)),p.push(w)}let y=d*f.length;if(f.length>1){let b=(f.length-1)*d*.5;p.forEach((w,_)=>w.attr("y",h+_*d-b)),y=d*f.length}let x=l.node().getBBox();l.insert("rect",":first-child").attr("class","box").attr("x",u-g/2-pe().state.padding/2).attr("y",h-y/2-pe().state.padding/2-3.5).attr("width",g+pe().state.padding).attr("height",y+pe().state.padding),re.info(x)}Lhe++},"drawEdge"),UM={},i$e=v(function(){},"setConf"),a$e=v(function(t){t.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"insertMarkers"),s$e=v(function(t,e,r,n){lo=pe().state;let i=pe().securityLevel,a;i==="sandbox"&&(a=Ve("#i"+e));let s=i==="sandbox"?Ve(a.nodes()[0].contentDocument.body):Ve("body"),o=i==="sandbox"?a.nodes()[0].contentDocument:document;re.debug("Rendering diagram "+t);let l=s.select(`[id='${e}']`);a$e(l);let u=n.db.getRootDoc();Nhe(u,l,void 0,!1,s,o,n);let h=lo.padding,f=l.node().getBBox(),d=f.width+h*2,p=f.height+h*2,g=d*1.75;Hr(l,p,g,lo.useMaxWidth),l.attr("viewBox",`${f.x-lo.padding} ${f.y-lo.padding} `+d+" "+p)},"draw"),o$e=v(t=>t?t.length*lo.fontSizeFactor:1,"getLabelWidth"),Nhe=v((t,e,r,n,i,a,s)=>{let o=new Sr({compound:!0,multigraph:!0}),l,u=!0;for(l=0;l{let k=_.parentElement,E=0,L=0;k&&(k.parentElement&&(E=k.parentElement.getBBox().width),L=parseInt(k.getAttribute("data-x-shift"),10),Number.isNaN(L)&&(L=0)),_.setAttribute("x1",0-L+8),_.setAttribute("x2",E-L-8)})):re.debug("No Node "+b+": "+JSON.stringify(o.node(b)))});let y=m.getBBox();o.edges().forEach(function(b){b!==void 0&&o.edge(b)!==void 0&&(re.debug("Edge "+b.v+" -> "+b.w+": "+JSON.stringify(o.edge(b))),n$e(e,o.edge(b),o.edge(b).relation))}),y=m.getBBox();let x={id:r||"root",label:r||"root",width:0,height:0};return x.width=y.width+2*lo.padding,x.height=y.height+2*lo.padding,re.debug("Doc rendered",x,o),x},"renderDoc"),l$e={setConf:i$e,draw:s$e},c$e={parser:u6,db:Dl,renderer:l$e,styles:h6,init:v(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Dl.clear()},"init")}});var Dhe={};vr(Dhe,{diagram:()=>u$e});var u$e,Ohe=F(()=>{GM();Kh();Nu();_u();yl();sl();pc();bo();Ya();kn();or();u$e={parser:u6,db:Dl,renderer:dhe,styles:h6,init:v(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute,Dl.clear()},"init")}});var Hhe={};vr(Hhe,{diagram:()=>N$e});function Whe(t){let e=pe().journey,r=60;Object.keys(Ku).forEach(n=>{let i=Ku[n].color,a={cx:20,cy:r,r:7,fill:i,stroke:"#000",pos:Ku[n].position};hx.drawCircle(t,a);let s={x:40,y:r+7,fill:"#666",text:n,textMargin:e.boxTextMargin|5};hx.drawText(t,s),r+=20})}var HM,h$e,Mm,qM,cx,ux,f$e,d$e,p$e,g$e,m$e,v$e,y$e,Phe,x$e,Bhe,b$e,w$e,YM,k$e,Ghe,Uhe,T$e,E$e,Fhe,S$e,C$e,Vhe,A$e,hx,_$e,Ku,f6,T0,L$e,jo,WM,zhe,R$e,$he,N$e,qhe=F(()=>{Rw();or();lr();lr();HM=function(){var t=v(function(f,d,p,g){for(p=p||{},g=f.length;g--;p[f[g]]=d);return p},"o"),e=[6,8,10,11,12,14,16,17,18],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],o=[1,14],l={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:v(function(d,p,g,m,y,x,b){var w=x.length-1;switch(y){case 1:return x[w-1];case 2:this.$=[];break;case 3:x[w-1].push(x[w]),this.$=x[w-1];break;case 4:case 5:this.$=x[w];break;case 6:case 7:this.$=[];break;case 8:m.setDiagramTitle(x[w].substr(6)),this.$=x[w].substr(6);break;case 9:this.$=x[w].trim(),m.setAccTitle(this.$);break;case 10:case 11:this.$=x[w].trim(),m.setAccDescription(this.$);break;case 12:m.addSection(x[w].substr(8)),this.$=x[w].substr(8);break;case 13:m.addTask(x[w-1],x[w]),this.$="task";break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:o},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:r,12:n,14:i,16:a,17:s,18:o},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:v(function(d,p){if(p.recoverable)this.trace(d);else{var g=new Error(d);throw g.hash=p,g}},"parseError"),parse:v(function(d){var p=this,g=[0],m=[],y=[null],x=[],b=this.table,w="",_=0,k=0,E=0,L=2,S=1,C=x.slice.call(arguments,1),M=Object.create(this.lexer),R={yy:{}};for(var T in this.yy)Object.prototype.hasOwnProperty.call(this.yy,T)&&(R.yy[T]=this.yy[T]);M.setInput(d,R.yy),R.yy.lexer=M,R.yy.parser=this,typeof M.yylloc>"u"&&(M.yylloc={});var I=M.yylloc;x.push(I);var A=M.options&&M.options.ranges;typeof R.yy.parseError=="function"?this.parseError=R.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function D(W){g.length=g.length-2*W,y.length=y.length-W,x.length=x.length-W}v(D,"popStack");function N(){var W;return W=m.pop()||M.lex()||S,typeof W!="number"&&(W instanceof Array&&(m=W,W=m.pop()),W=p.symbols_[W]||W),W}v(N,"lex");for(var O,B,P,$,z,H,J={},X,oe,K,ee;;){if(P=g[g.length-1],this.defaultActions[P]?$=this.defaultActions[P]:((O===null||typeof O>"u")&&(O=N()),$=b[P]&&b[P][O]),typeof $>"u"||!$.length||!$[0]){var Q="";ee=[];for(X in b[P])this.terminals_[X]&&X>L&&ee.push("'"+this.terminals_[X]+"'");M.showPosition?Q="Parse error on line "+(_+1)+`: `+M.showPosition()+` Expecting `+ee.join(", ")+", got '"+(this.terminals_[O]||O)+"'":Q="Parse error on line "+(_+1)+": Unexpected "+(O==S?"end of input":"'"+(this.terminals_[O]||O)+"'"),this.parseError(Q,{text:M.match,token:this.terminals_[O]||O,line:M.yylineno,loc:I,expected:ee})}if($[0]instanceof Array&&$.length>1)throw new Error("Parse Error: multiple actions possible at state: "+P+", token: "+O);switch($[0]){case 1:g.push(O),y.push(M.yytext),x.push(M.yylloc),g.push($[1]),O=null,B?(O=B,B=null):(k=M.yyleng,w=M.yytext,_=M.yylineno,I=M.yylloc,E>0&&E--);break;case 2:if(oe=this.productions_[$[1]][1],J.$=y[y.length-oe],J._$={first_line:x[x.length-(oe||1)].first_line,last_line:x[x.length-1].last_line,first_column:x[x.length-(oe||1)].first_column,last_column:x[x.length-1].last_column},A&&(J._$.range=[x[x.length-(oe||1)].range[0],x[x.length-1].range[1]]),H=this.performAction.apply(J,[w,k,_,R.yy,$[1],y,x].concat(C)),typeof H<"u")return H;oe&&(g=g.slice(0,-1*oe*2),y=y.slice(0,-1*oe),x=x.slice(0,-1*oe)),g.push(this.productions_[$[1]][0]),y.push(J.$),x.push(J._$),K=b[g[g.length-2]][g[g.length-1]],g.push(K);break;case 3:return!0}}return!0},"parse")},u=function(){var f={EOF:1,parseError:v(function(p,g){if(this.yy.parser)this.yy.parser.parseError(p,g);else throw new Error(p)},"parseError"),setInput:v(function(d,p){return this.yy=p||this.yy||{},this._input=d,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var d=this._input[0];this.yytext+=d,this.yyleng++,this.offset++,this.match+=d,this.matched+=d;var p=d.match(/(?:\r\n?|\n).*/g);return p?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),d},"input"),unput:v(function(d){var p=d.length,g=d.split(/(?:\r\n?|\n)/g);this._input=d+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-p),this.offset-=p;var m=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var y=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===m.length?this.yylloc.first_column:0)+m[m.length-g.length].length-g[0].length:this.yylloc.first_column-p},this.options.ranges&&(this.yylloc.range=[y[0],y[0]+this.yyleng-p]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(d){this.unput(this.match.slice(d))},"less"),pastInput:v(function(){var d=this.matched.substr(0,this.matched.length-this.match.length);return(d.length>20?"...":"")+d.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var d=this.match;return d.length<20&&(d+=this._input.substr(0,20-d.length)),(d.substr(0,20)+(d.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var d=this.pastInput(),p=new Array(d.length+1).join("-");return d+this.upcomingInput()+` `+p+"^"},"showPosition"),test_match:v(function(d,p){var g,m,y;if(this.options.backtrack_lexer&&(y={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(y.yylloc.range=this.yylloc.range.slice(0))),m=d[0].match(/(?:\r\n?|\n).*/g),m&&(this.yylineno+=m.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:m?m[m.length-1].length-m[m.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+d[0].length},this.yytext+=d[0],this.match+=d[0],this.matches=d,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(d[0].length),this.matched+=d[0],g=this.performAction.call(this,this.yy,this,p,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),g)return g;if(this._backtrack){for(var x in y)this[x]=y[x];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var d,p,g,m;this._more||(this.yytext="",this.match="");for(var y=this._currentRules(),x=0;xp[0].length)){if(p=g,m=x,this.options.backtrack_lexer){if(d=this.test_match(g,y[x]),d!==!1)return d;if(this._backtrack){p=!1;continue}else return!1}else if(!this.options.flex)break}return p?(d=this.test_match(p,y[m]),d!==!1?d:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var p=this.next();return p||this.lex()},"lex"),begin:v(function(p){this.conditionStack.push(p)},"begin"),popState:v(function(){var p=this.conditionStack.length-1;return p>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(p){return p=this.conditionStack.length-1-Math.abs(p||0),p>=0?this.conditionStack[p]:"INITIAL"},"topState"),pushState:v(function(p){this.begin(p)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:v(function(p,g,m,y){var x=y;switch(m){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return f}();l.lexer=u;function h(){this.yy={}}return v(h,"Parser"),h.prototype=l,l.Parser=h,new h}();HM.parser=HM;h$e=HM,Mm="",qM=[],cx=[],ux=[],f$e=v(function(){qM.length=0,cx.length=0,Mm="",ux.length=0,xr()},"clear"),d$e=v(function(t){Mm=t,qM.push(t)},"addSection"),p$e=v(function(){return qM},"getSections"),g$e=v(function(){let t=Phe(),e=100,r=0;for(;!t&&r{r.people&&t.push(...r.people)}),[...new Set(t)].sort()},"updateActors"),v$e=v(function(t,e){let r=e.substr(1).split(":"),n=0,i=[];r.length===1?(n=Number(r[0]),i=[]):(n=Number(r[0]),i=r[1].split(","));let a=i.map(o=>o.trim()),s={section:Mm,type:Mm,people:a,task:t,score:n};ux.push(s)},"addTask"),y$e=v(function(t){let e={section:Mm,type:Mm,description:t,task:t,classes:[]};cx.push(e)},"addTaskOrg"),Phe=v(function(){let t=v(function(r){return ux[r].processed},"compileTask"),e=!0;for(let[r,n]of ux.entries())t(r),e=e&&n.processed;return e},"compileTasks"),x$e=v(function(){return m$e()},"getActors"),Bhe={getConfig:v(()=>pe().journey,"getConfig"),clear:f$e,setDiagramTitle:tn,getDiagramTitle:qr,setAccTitle:Tr,getAccTitle:_r,setAccDescription:Lr,getAccDescription:Rr,addSection:d$e,getSections:p$e,getTasks:g$e,addTask:v$e,addTaskOrg:y$e,getActors:x$e},b$e=v(t=>`.label { font-family: 'trebuchet ms', verdana, arial, sans-serif; font-family: var(--mermaid-font-family); color: ${t.textColor}; } .mouth { stroke: #666; } line { stroke: ${t.textColor} } .legend { fill: ${t.textColor}; } .label text { fill: #333; } .label { color: ${t.textColor} } .face { ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"}; stroke: #999; } .node rect, .node circle, .node ellipse, .node polygon, .node path { fill: ${t.mainBkg}; stroke: ${t.nodeBorder}; stroke-width: 1px; } .node .label { text-align: center; } .node.clickable { cursor: pointer; } .arrowheadPath { fill: ${t.arrowheadColor}; } .edgePath .path { stroke: ${t.lineColor}; stroke-width: 1.5px; } .flowchart-link { stroke: ${t.lineColor}; fill: none; } .edgeLabel { background-color: ${t.edgeLabelBackground}; rect { opacity: 0.5; } text-align: center; } .cluster rect { } .cluster text { fill: ${t.titleColor}; } div.mermaidTooltip { position: absolute; text-align: center; max-width: 200px; padding: 2px; font-family: 'trebuchet ms', verdana, arial, sans-serif; font-family: var(--mermaid-font-family); font-size: 12px; background: ${t.tertiaryColor}; border: 1px solid ${t.border2}; border-radius: 2px; pointer-events: none; z-index: 100; } .task-type-0, .section-type-0 { ${t.fillType0?`fill: ${t.fillType0}`:""}; } .task-type-1, .section-type-1 { ${t.fillType0?`fill: ${t.fillType1}`:""}; } .task-type-2, .section-type-2 { ${t.fillType0?`fill: ${t.fillType2}`:""}; } .task-type-3, .section-type-3 { ${t.fillType0?`fill: ${t.fillType3}`:""}; } .task-type-4, .section-type-4 { ${t.fillType0?`fill: ${t.fillType4}`:""}; } .task-type-5, .section-type-5 { ${t.fillType0?`fill: ${t.fillType5}`:""}; } .task-type-6, .section-type-6 { ${t.fillType0?`fill: ${t.fillType6}`:""}; } .task-type-7, .section-type-7 { ${t.fillType0?`fill: ${t.fillType7}`:""}; } .actor-0 { ${t.actor0?`fill: ${t.actor0}`:""}; } .actor-1 { ${t.actor1?`fill: ${t.actor1}`:""}; } .actor-2 { ${t.actor2?`fill: ${t.actor2}`:""}; } .actor-3 { ${t.actor3?`fill: ${t.actor3}`:""}; } .actor-4 { ${t.actor4?`fill: ${t.actor4}`:""}; } .actor-5 { ${t.actor5?`fill: ${t.actor5}`:""}; } `,"getStyles"),w$e=b$e,YM=v(function(t,e){return Dd(t,e)},"drawRect"),k$e=v(function(t,e){let n=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(l){let u=lc().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);l.append("path").attr("class","mouth").attr("d",u).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}v(a,"smile");function s(l){let u=lc().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);l.append("path").attr("class","mouth").attr("d",u).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}v(s,"sad");function o(l){l.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return v(o,"ambivalent"),e.score>3?a(i):e.score<3?s(i):o(i),n},"drawFace"),Ghe=v(function(t,e){let r=t.append("circle");return r.attr("cx",e.cx),r.attr("cy",e.cy),r.attr("class","actor-"+e.pos),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("r",e.r),r.class!==void 0&&r.attr("class",r.class),e.title!==void 0&&r.append("title").text(e.title),r},"drawCircle"),Uhe=v(function(t,e){return ene(t,e)},"drawText"),T$e=v(function(t,e){function r(i,a,s,o,l){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+o-l)+" "+(i+s-l*1.2)+","+(a+o)+" "+i+","+(a+o)}v(r,"genPoints");let n=t.append("polygon");n.attr("points",r(e.x,e.y,50,20,7)),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,Uhe(t,e)},"drawLabel"),E$e=v(function(t,e,r){let n=t.append("g"),i=Tc();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width*e.taskCount+r.diagramMarginX*(e.taskCount-1),i.height=r.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,YM(n,i),Vhe(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),Fhe=-1,S$e=v(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");Fhe++;let a=300+5*30;i.append("line").attr("id","task"+Fhe).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",a).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),k$e(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=Tc();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=r.width,s.height=r.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,YM(i,s);let o=e.x+14;e.people.forEach(l=>{let u=e.actors[l].color,h={cx:o,cy:e.y,r:7,fill:u,stroke:"#000",title:l,pos:e.actors[l].position};Ghe(i,h),o+=10}),Vhe(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),C$e=v(function(t,e){_w(t,e)},"drawBackgroundRect"),Vhe=function(){function t(i,a,s,o,l,u,h,f){let d=a.append("text").attr("x",s+l/2).attr("y",o+u/2+5).style("font-color",f).style("text-anchor","middle").text(i);n(d,h)}v(t,"byText");function e(i,a,s,o,l,u,h,f,d){let{taskFontSize:p,taskFontFamily:g}=f,m=i.split(//gi);for(let y=0;y{Ku[x]={color:i.actorColours[d%i.actorColours.length],position:d},d++}),Whe(l),jo.insert(0,0,T0,Object.keys(Ku).length*50),R$e(l,u,0);let p=jo.getBounds();h&&l.append("text").text(h).attr("x",T0).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);let g=p.stopy-p.starty+2*i.diagramMarginY,m=T0+p.stopx+2*i.diagramMarginX;Hr(l,g,m,i.useMaxWidth),l.append("line").attr("x1",T0).attr("y1",i.height*4).attr("x2",m-T0-4).attr("y2",i.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");let y=h?70:0;l.attr("viewBox",`${p.startx} -25 ${m} ${g+y}`),l.attr("preserveAspectRatio","xMinYMin meet"),l.attr("height",g+y+25)},"draw"),jo={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:v(function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},"init"),updateVal:v(function(t,e,r,n){t[e]===void 0?t[e]=r:t[e]=n(r,t[e])},"updateVal"),updateBounds:v(function(t,e,r,n){let i=pe().journey,a=this,s=0;function o(l){return v(function(h){s++;let f=a.sequenceItems.length-s+1;a.updateVal(h,"starty",e-f*i.boxMargin,Math.min),a.updateVal(h,"stopy",n+f*i.boxMargin,Math.max),a.updateVal(jo.data,"startx",t-f*i.boxMargin,Math.min),a.updateVal(jo.data,"stopx",r+f*i.boxMargin,Math.max),l!=="activation"&&(a.updateVal(h,"startx",t-f*i.boxMargin,Math.min),a.updateVal(h,"stopx",r+f*i.boxMargin,Math.max),a.updateVal(jo.data,"starty",e-f*i.boxMargin,Math.min),a.updateVal(jo.data,"stopy",n+f*i.boxMargin,Math.max))},"updateItemBounds")}v(o,"updateFn"),this.sequenceItems.forEach(o())},"updateBounds"),insert:v(function(t,e,r,n){let i=Math.min(t,r),a=Math.max(t,r),s=Math.min(e,n),o=Math.max(e,n);this.updateVal(jo.data,"startx",i,Math.min),this.updateVal(jo.data,"starty",s,Math.min),this.updateVal(jo.data,"stopx",a,Math.max),this.updateVal(jo.data,"stopy",o,Math.max),this.updateBounds(i,s,a,o)},"insert"),bumpVerticalPos:v(function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos},"bumpVerticalPos"),getVerticalPos:v(function(){return this.verticalPos},"getVerticalPos"),getBounds:v(function(){return this.data},"getBounds")},WM=f6.sectionFills,zhe=f6.sectionColours,R$e=v(function(t,e,r){let n=pe().journey,i="",a=n.height*2+n.diagramMarginY,s=r+a,o=0,l="#CCC",u="black",h=0;for(let[f,d]of e.entries()){if(i!==d.section){l=WM[o%WM.length],h=o%WM.length,u=zhe[o%zhe.length];let g=0,m=d.section;for(let x=f;x(Ku[m]&&(g[m]=Ku[m]),g),{});d.x=f*n.taskMargin+f*n.width+T0,d.y=s,d.width=n.diagramMarginX,d.height=n.diagramMarginY,d.colour=u,d.fill=l,d.num=h,d.actors=p,hx.drawTask(t,d,n),jo.insert(d.x,d.y,d.x+d.width+n.taskMargin,300+5*30)}},"drawTasks"),$he={setConf:_$e,draw:L$e},N$e={parser:h$e,db:Bhe,renderer:$he,styles:w$e,init:v(t=>{$he.setConf(t.journey),Bhe.clear()},"init")}});var lfe={};vr(lfe,{diagram:()=>Q$e});function ZM(t,e){t.each(function(){var r=Ve(this),n=r.text().split(/(\s+|
    )/).reverse(),i,a=[],s=1.1,o=r.attr("y"),l=parseFloat(r.attr("dy")),u=r.text(null).append("tspan").attr("x",0).attr("y",o).attr("dy",l+"em");for(let h=0;he||i==="
    ")&&(a.pop(),u.text(a.join(" ").trim()),i==="
    "?a=[""]:a=[i],u=r.append("tspan").attr("x",0).attr("y",o).attr("dy",s+"em").text(i))})}var XM,I$e,Khe,Dm,Zhe,jM,d6,Om,Qhe,Jhe,efe,tfe,rfe,nfe,ife,afe,Yhe,M$e,D$e,p6,O$e,P$e,sfe,B$e,F$e,Xhe,z$e,$$e,G$e,KM,ofe,U$e,V$e,W$e,H$e,E0,q$e,jhe,Y$e,X$e,j$e,K$e,Z$e,Q$e,cfe=F(()=>{or();lr();lr();go();XM=function(){var t=v(function(d,p,g,m){for(g=g||{},m=d.length;m--;g[d[m]]=p);return g},"o"),e=[6,8,10,11,12,14,16,17,20,21],r=[1,9],n=[1,10],i=[1,11],a=[1,12],s=[1,13],o=[1,16],l=[1,17],u={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:v(function(p,g,m,y,x,b,w){var _=b.length-1;switch(x){case 1:return b[_-1];case 2:this.$=[];break;case 3:b[_-1].push(b[_]),this.$=b[_-1];break;case 4:case 5:this.$=b[_];break;case 6:case 7:this.$=[];break;case 8:y.getCommonDb().setDiagramTitle(b[_].substr(6)),this.$=b[_].substr(6);break;case 9:this.$=b[_].trim(),y.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=b[_].trim(),y.getCommonDb().setAccDescription(this.$);break;case 12:y.addSection(b[_].substr(8)),this.$=b[_].substr(8);break;case 15:y.addTask(b[_],0,""),this.$=b[_];break;case 16:y.addEvent(b[_].substr(2)),this.$=b[_];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:r,12:n,14:i,16:a,17:s,18:14,19:15,20:o,21:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:18,11:r,12:n,14:i,16:a,17:s,18:14,19:15,20:o,21:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,19]},{15:[1,20]},t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),t(e,[2,4]),t(e,[2,9]),t(e,[2,10])],defaultActions:{},parseError:v(function(p,g){if(g.recoverable)this.trace(p);else{var m=new Error(p);throw m.hash=g,m}},"parseError"),parse:v(function(p){var g=this,m=[0],y=[],x=[null],b=[],w=this.table,_="",k=0,E=0,L=0,S=2,C=1,M=b.slice.call(arguments,1),R=Object.create(this.lexer),T={yy:{}};for(var I in this.yy)Object.prototype.hasOwnProperty.call(this.yy,I)&&(T.yy[I]=this.yy[I]);R.setInput(p,T.yy),T.yy.lexer=R,T.yy.parser=this,typeof R.yylloc>"u"&&(R.yylloc={});var A=R.yylloc;b.push(A);var D=R.options&&R.options.ranges;typeof T.yy.parseError=="function"?this.parseError=T.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function N(Y){m.length=m.length-2*Y,x.length=x.length-Y,b.length=b.length-Y}v(N,"popStack");function O(){var Y;return Y=y.pop()||R.lex()||C,typeof Y!="number"&&(Y instanceof Array&&(y=Y,Y=y.pop()),Y=g.symbols_[Y]||Y),Y}v(O,"lex");for(var B,P,$,z,H,J,X={},oe,K,ee,Q;;){if($=m[m.length-1],this.defaultActions[$]?z=this.defaultActions[$]:((B===null||typeof B>"u")&&(B=O()),z=w[$]&&w[$][B]),typeof z>"u"||!z.length||!z[0]){var W="";Q=[];for(oe in w[$])this.terminals_[oe]&&oe>S&&Q.push("'"+this.terminals_[oe]+"'");R.showPosition?W="Parse error on line "+(k+1)+`: `+R.showPosition()+` Expecting `+Q.join(", ")+", got '"+(this.terminals_[B]||B)+"'":W="Parse error on line "+(k+1)+": Unexpected "+(B==C?"end of input":"'"+(this.terminals_[B]||B)+"'"),this.parseError(W,{text:R.match,token:this.terminals_[B]||B,line:R.yylineno,loc:A,expected:Q})}if(z[0]instanceof Array&&z.length>1)throw new Error("Parse Error: multiple actions possible at state: "+$+", token: "+B);switch(z[0]){case 1:m.push(B),x.push(R.yytext),b.push(R.yylloc),m.push(z[1]),B=null,P?(B=P,P=null):(E=R.yyleng,_=R.yytext,k=R.yylineno,A=R.yylloc,L>0&&L--);break;case 2:if(K=this.productions_[z[1]][1],X.$=x[x.length-K],X._$={first_line:b[b.length-(K||1)].first_line,last_line:b[b.length-1].last_line,first_column:b[b.length-(K||1)].first_column,last_column:b[b.length-1].last_column},D&&(X._$.range=[b[b.length-(K||1)].range[0],b[b.length-1].range[1]]),J=this.performAction.apply(X,[_,E,k,T.yy,z[1],x,b].concat(M)),typeof J<"u")return J;K&&(m=m.slice(0,-1*K*2),x=x.slice(0,-1*K),b=b.slice(0,-1*K)),m.push(this.productions_[z[1]][0]),x.push(X.$),b.push(X._$),ee=w[m[m.length-2]][m[m.length-1]],m.push(ee);break;case 3:return!0}}return!0},"parse")},h=function(){var d={EOF:1,parseError:v(function(g,m){if(this.yy.parser)this.yy.parser.parseError(g,m);else throw new Error(g)},"parseError"),setInput:v(function(p,g){return this.yy=g||this.yy||{},this._input=p,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var p=this._input[0];this.yytext+=p,this.yyleng++,this.offset++,this.match+=p,this.matched+=p;var g=p.match(/(?:\r\n?|\n).*/g);return g?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),p},"input"),unput:v(function(p){var g=p.length,m=p.split(/(?:\r\n?|\n)/g);this._input=p+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-g),this.offset-=g;var y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),m.length-1&&(this.yylineno-=m.length-1);var x=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:m?(m.length===y.length?this.yylloc.first_column:0)+y[y.length-m.length].length-m[0].length:this.yylloc.first_column-g},this.options.ranges&&(this.yylloc.range=[x[0],x[0]+this.yyleng-g]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(p){this.unput(this.match.slice(p))},"less"),pastInput:v(function(){var p=this.matched.substr(0,this.matched.length-this.match.length);return(p.length>20?"...":"")+p.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var p=this.match;return p.length<20&&(p+=this._input.substr(0,20-p.length)),(p.substr(0,20)+(p.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var p=this.pastInput(),g=new Array(p.length+1).join("-");return p+this.upcomingInput()+` `+g+"^"},"showPosition"),test_match:v(function(p,g){var m,y,x;if(this.options.backtrack_lexer&&(x={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(x.yylloc.range=this.yylloc.range.slice(0))),y=p[0].match(/(?:\r\n?|\n).*/g),y&&(this.yylineno+=y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:y?y[y.length-1].length-y[y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+p[0].length},this.yytext+=p[0],this.match+=p[0],this.matches=p,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(p[0].length),this.matched+=p[0],m=this.performAction.call(this,this.yy,this,g,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),m)return m;if(this._backtrack){for(var b in x)this[b]=x[b];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var p,g,m,y;this._more||(this.yytext="",this.match="");for(var x=this._currentRules(),b=0;bg[0].length)){if(g=m,y=b,this.options.backtrack_lexer){if(p=this.test_match(m,x[b]),p!==!1)return p;if(this._backtrack){g=!1;continue}else return!1}else if(!this.options.flex)break}return g?(p=this.test_match(g,x[y]),p!==!1?p:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var g=this.next();return g||this.lex()},"lex"),begin:v(function(g){this.conditionStack.push(g)},"begin"),popState:v(function(){var g=this.conditionStack.length-1;return g>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(g){return g=this.conditionStack.length-1-Math.abs(g||0),g>=0?this.conditionStack[g]:"INITIAL"},"topState"),pushState:v(function(g){this.begin(g)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:v(function(g,m,y,x){var b=x;switch(y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;break;case 8:return this.popState(),"acc_title_value";break;case 9:return this.begin("acc_descr"),14;break;case 10:return this.popState(),"acc_descr_value";break;case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s[^:\n]+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}};return d}();u.lexer=h;function f(){this.yy={}}return v(f,"Parser"),f.prototype=u,u.Parser=f,new f}();XM.parser=XM;I$e=XM,Khe={};MS(Khe,{addEvent:()=>ife,addSection:()=>efe,addTask:()=>nfe,addTaskOrg:()=>afe,clear:()=>Jhe,default:()=>M$e,getCommonDb:()=>Qhe,getSections:()=>tfe,getTasks:()=>rfe});Dm="",Zhe=0,jM=[],d6=[],Om=[],Qhe=v(()=>Ub,"getCommonDb"),Jhe=v(function(){jM.length=0,d6.length=0,Dm="",Om.length=0,xr()},"clear"),efe=v(function(t){Dm=t,jM.push(t)},"addSection"),tfe=v(function(){return jM},"getSections"),rfe=v(function(){let t=Yhe(),e=100,r=0;for(;!t&&rr.id===Zhe-1).events.push(t)},"addEvent"),afe=v(function(t){let e={section:Dm,type:Dm,description:t,task:t,classes:[]};d6.push(e)},"addTaskOrg"),Yhe=v(function(){let t=v(function(r){return Om[r].processed},"compileTask"),e=!0;for(let[r,n]of Om.entries())t(r),e=e&&n.processed;return e},"compileTasks"),M$e={clear:Jhe,getCommonDb:Qhe,addSection:efe,getSections:tfe,getTasks:rfe,addTask:nfe,addTaskOrg:afe,addEvent:ife},D$e=12,p6=v(function(t,e){let r=t.append("rect");return r.attr("x",e.x),r.attr("y",e.y),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("width",e.width),r.attr("height",e.height),r.attr("rx",e.rx),r.attr("ry",e.ry),e.class!==void 0&&r.attr("class",e.class),r},"drawRect"),O$e=v(function(t,e){let n=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),i=t.append("g");i.append("circle").attr("cx",e.cx-15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),i.append("circle").attr("cx",e.cx+15/3).attr("cy",e.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function a(l){let u=lc().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);l.append("path").attr("class","mouth").attr("d",u).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}v(a,"smile");function s(l){let u=lc().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);l.append("path").attr("class","mouth").attr("d",u).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}v(s,"sad");function o(l){l.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return v(o,"ambivalent"),e.score>3?a(i):e.score<3?s(i):o(i),n},"drawFace"),P$e=v(function(t,e){let r=t.append("circle");return r.attr("cx",e.cx),r.attr("cy",e.cy),r.attr("class","actor-"+e.pos),r.attr("fill",e.fill),r.attr("stroke",e.stroke),r.attr("r",e.r),r.class!==void 0&&r.attr("class",r.class),e.title!==void 0&&r.append("title").text(e.title),r},"drawCircle"),sfe=v(function(t,e){let r=e.text.replace(//gi," "),n=t.append("text");n.attr("x",e.x),n.attr("y",e.y),n.attr("class","legend"),n.style("text-anchor",e.anchor),e.class!==void 0&&n.attr("class",e.class);let i=n.append("tspan");return i.attr("x",e.x+e.textMargin*2),i.text(r),n},"drawText"),B$e=v(function(t,e){function r(i,a,s,o,l){return i+","+a+" "+(i+s)+","+a+" "+(i+s)+","+(a+o-l)+" "+(i+s-l*1.2)+","+(a+o)+" "+i+","+(a+o)}v(r,"genPoints");let n=t.append("polygon");n.attr("points",r(e.x,e.y,50,20,7)),n.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,sfe(t,e)},"drawLabel"),F$e=v(function(t,e,r){let n=t.append("g"),i=KM();i.x=e.x,i.y=e.y,i.fill=e.fill,i.width=r.width,i.height=r.height,i.class="journey-section section-type-"+e.num,i.rx=3,i.ry=3,p6(n,i),ofe(r)(e.text,n,i.x,i.y,i.width,i.height,{class:"journey-section section-type-"+e.num},r,e.colour)},"drawSection"),Xhe=-1,z$e=v(function(t,e,r){let n=e.x+r.width/2,i=t.append("g");Xhe++;let a=300+5*30;i.append("line").attr("id","task"+Xhe).attr("x1",n).attr("y1",e.y).attr("x2",n).attr("y2",a).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),O$e(i,{cx:n,cy:300+(5-e.score)*30,score:e.score});let s=KM();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=r.width,s.height=r.height,s.class="task task-type-"+e.num,s.rx=3,s.ry=3,p6(i,s),ofe(r)(e.task,i,s.x,s.y,s.width,s.height,{class:"task"},r,e.colour)},"drawTask"),$$e=v(function(t,e){p6(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()},"drawBackgroundRect"),G$e=v(function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},"getTextObj"),KM=v(function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},"getNoteRect"),ofe=function(){function t(i,a,s,o,l,u,h,f){let d=a.append("text").attr("x",s+l/2).attr("y",o+u/2+5).style("font-color",f).style("text-anchor","middle").text(i);n(d,h)}v(t,"byText");function e(i,a,s,o,l,u,h,f,d){let{taskFontSize:p,taskFontFamily:g}=f,m=i.split(//gi);for(let y=0;y0?d.forEach(C=>{let M=h.filter(A=>A.section===C),R={number:w,descr:C,section:w,width:200*Math.max(M.length,1)-50,padding:20,maxHeight:p};re.debug("sectionNode",R);let T=u.append("g"),I=E0.drawNode(T,R,w,i);re.debug("sectionNode output",I),T.attr("transform",`translate(${x}, ${y})`),b+=p+50,M.length>0&&jhe(u,M,w,x,b,g,i,k,E,p,!1),x+=200*Math.max(M.length,1),b=y,w++}):(_=!1,jhe(u,h,w,x,b,g,i,k,E,p,!0));let L=u.node().getBBox();re.debug("bounds",L),f&&u.append("text").text(f).attr("x",L.width/2-a).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),m=_?p+g+150:g+100,u.append("g").attr("class","lineWrapper").append("line").attr("x1",a).attr("y1",m).attr("x2",L.width+3*a).attr("y2",m).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),il(void 0,u,i.timeline?.padding??50,i.timeline?.useMaxWidth??!1)},"draw"),jhe=v(function(t,e,r,n,i,a,s,o,l,u,h){for(let f of e){let d={descr:f.task,section:r,number:r,width:150,padding:20,maxHeight:a};re.debug("taskNode",d);let p=t.append("g").attr("class","taskWrapper"),m=E0.drawNode(p,d,r,s).height;if(re.debug("taskHeight after draw",m),p.attr("transform",`translate(${n}, ${i})`),a=Math.max(a,m),f.events){let y=t.append("g").attr("class","lineWrapper"),x=a;i+=100,x=x+Y$e(t,f.events,r,n,i,s),i-=100,y.append("line").attr("x1",n+190/2).attr("y1",i+a).attr("x2",n+190/2).attr("y2",i+a+(h?a:u)+l+120).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}n=n+200,h&&!s.timeline?.disableMulticolor&&r++}i=i-10},"drawTasks"),Y$e=v(function(t,e,r,n,i,a){let s=0,o=i;i=i+100;for(let l of e){let u={descr:l,section:r,number:r,width:150,padding:20,maxHeight:50};re.debug("eventNode",u);let h=t.append("g").attr("class","eventWrapper"),d=E0.drawNode(h,u,r,a).height;s=s+d,h.attr("transform",`translate(${n}, ${i})`),i=i+10+d}return i=o,s},"drawEvents"),X$e={setConf:v(()=>{},"setConf"),draw:q$e},j$e=v(t=>{let e="";for(let r=0;r` .edge { stroke-width: 3; } ${j$e(t)} .section-root rect, .section-root path, .section-root circle { fill: ${t.git0}; } .section-root text { fill: ${t.gitBranchLabel0}; } .icon-container { height:100%; display: flex; justify-content: center; align-items: center; } .edge { fill: none; } .eventWrapper { filter: brightness(120%); } `,"getStyles"),Z$e=K$e,Q$e={db:Khe,renderer:X$e,parser:I$e,styles:Z$e}});function Oi(t){"@babel/helpers - typeof";return Oi=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Oi(t)}function AD(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function ufe(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(l){throw l},f:i}}throw new TypeError(`Invalid attempt to iterate non-iterable instance. In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var a=!0,s=!1,o;return{s:function(){r=r.call(t)},n:function(){var l=r.next();return a=l.done,l},e:function(l){s=!0,o=l},f:function(){try{!a&&r.return!=null&&r.return()}finally{if(s)throw o}}}}function SGe(t){var e=typeof t;return t!=null&&(e=="object"||e=="function")}function CGe(t,e){return e={exports:{}},t(e,e.exports),e.exports}function MGe(t){for(var e=t.length;e--&&IGe.test(t.charAt(e)););return e}function PGe(t){return t&&t.slice(0,DGe(t)+1).replace(OGe,"")}function GGe(t){var e=zGe.call(t,fx),r=t[fx];try{t[fx]=void 0;var n=!0}catch{}var i=$Ge.call(t);return n&&(e?t[fx]=r:delete t[fx]),i}function HGe(t){return WGe.call(t)}function jGe(t){return t==null?t===void 0?XGe:YGe:pfe&&pfe in Object(t)?UGe(t):qGe(t)}function KGe(t){return t!=null&&typeof t=="object"}function JGe(t){return typeof t=="symbol"||ZGe(t)&&Pde(t)==QGe}function iUe(t){if(typeof t=="number")return t;if(Bx(t))return gfe;if(I0(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=I0(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=BGe(t);var r=tUe.test(t);return r||rUe.test(t)?nUe(t.slice(2),r?2:8):eUe.test(t)?gfe:+t}function lUe(t,e,r){var n,i,a,s,o,l,u=0,h=!1,f=!1,d=!0;if(typeof t!="function")throw new TypeError(aUe);e=mfe(e)||0,I0(r)&&(h=!!r.leading,f="maxWait"in r,a=f?sUe(mfe(r.maxWait)||0,e):a,d="trailing"in r?!!r.trailing:d);function p(E){var L=n,S=i;return n=i=void 0,u=E,s=t.apply(S,L),s}function g(E){return u=E,o=setTimeout(x,e),h?p(E):s}function m(E){var L=E-l,S=E-u,C=e-L;return f?oUe(C,a-S):C}function y(E){var L=E-l,S=E-u;return l===void 0||L>=e||L<0||f&&S>=a}function x(){var E=QM();if(y(E))return b(E);o=setTimeout(x,m(E))}function b(E){return o=void 0,d&&n?p(E):(n=i=void 0,s)}function w(){o!==void 0&&clearTimeout(o),u=0,n=l=i=o=void 0}function _(){return o===void 0?s:b(QM())}function k(){var E=QM(),L=y(E);if(n=arguments,i=this,l=E,L){if(o===void 0)return g(l);if(f)return clearTimeout(o),o=setTimeout(x,e),p(l)}return o===void 0&&(o=setTimeout(x,e)),s}return k.cancel=w,k.flush=_,k}function Q6(t,e,r,n,i,a){var s;return jn(t)?s=t:s=Km[t]||Km.euclidean,e===0&&jn(t)?s(i,a):s(e,r,n,i,a)}function eWe(t,e){if(J6(t))return!1;var r=typeof t;return r=="number"||r=="symbol"||r=="boolean"||t==null||Bx(t)?!0:JVe.test(t)||!QVe.test(t)||e!=null&&t in Object(e)}function sWe(t){if(!I0(t))return!1;var e=Pde(t);return e==nWe||e==iWe||e==rWe||e==aWe}function cWe(t){return!!Pfe&&Pfe in t}function dWe(t){if(t!=null){try{return fWe.call(t)}catch{}try{return t+""}catch{}}return""}function kWe(t){if(!I0(t)||uWe(t))return!1;var e=oWe(t)?wWe:mWe;return e.test(pWe(t))}function EWe(t,e){return t?.[e]}function CWe(t,e){var r=SWe(t,e);return TWe(r)?r:void 0}function _We(){this.__data__=Rx?Rx(null):{},this.size=0}function RWe(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e}function OWe(t){var e=this.__data__;if(Rx){var r=e[t];return r===IWe?void 0:r}return DWe.call(e,t)?e[t]:void 0}function zWe(t){var e=this.__data__;return Rx?e[t]!==void 0:FWe.call(e,t)}function UWe(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=Rx&&e===void 0?GWe:e,this}function e1(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1}function rHe(t,e){var r=this.__data__,n=eE(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this}function t1(t){var e=-1,r=t==null?0:t.length;for(this.clear();++e-1&&t%1==0&&t0;){var h=i.shift();e(h),a.add(h.id()),o&&n(i,a,h)}return t}function g0e(t,e,r){if(r.isParent())for(var n=r._private.children,i=0;i0&&arguments[0]!==void 0?arguments[0]:$qe,e=arguments.length>1?arguments[1]:void 0,r=0;r0?T=A:R=A;while(Math.abs(I)>s&&++D=a?b(M,D):N===0?D:_(M,R,R+u)}var E=!1;function L(){E=!0,(t!==e||r!==n)&&w()}var S=function(R){return E||L(),t===e&&r===n?R:R===0?0:R===1?1:y(k(R),e,n)};S.getControlPoints=function(){return[{x:t,y:e},{x:r,y:n}]};var C="generateBezier("+[t,e,r,n]+")";return S.toString=function(){return C},S}function tde(t,e,r,n,i){if(n===1||e===r)return r;var a=i(e,r,n);return t==null||((t.roundValue||t.color)&&(a=Math.round(a)),t.min!==void 0&&(a=Math.max(a,t.min)),t.max!==void 0&&(a=Math.min(a,t.max))),a}function rde(t,e){return t.pfValue!=null||t.value!=null?t.pfValue!=null&&(e==null||e.type.units!=="%")?t.pfValue:t.value:t}function Fm(t,e,r,n,i){var a=i!=null?i.type:null;r<0?r=0:r>1&&(r=1);var s=rde(t,i),o=rde(e,i);if(dt(s)&&dt(o))return tde(a,s,o,r,n);if(vn(s)&&vn(o)){for(var l=[],u=0;u0?(p==="spring"&&g.push(s.duration),s.easingImpl=N6[p].apply(null,g)):s.easingImpl=N6[p]}var m=s.easingImpl,y;if(s.duration===0?y=1:y=(r-l)/s.duration,s.applying&&(y=s.progress),y<0?y=0:y>1&&(y=1),s.delay==null){var x=s.startPosition,b=s.position;if(b&&i&&!t.locked()){var w={};mx(x.x,b.x)&&(w.x=Fm(x.x,b.x,y,m)),mx(x.y,b.y)&&(w.y=Fm(x.y,b.y,y,m)),t.position(w)}var _=s.startPan,k=s.pan,E=a.pan,L=k!=null&&n;L&&(mx(_.x,k.x)&&(E.x=Fm(_.x,k.x,y,m)),mx(_.y,k.y)&&(E.y=Fm(_.y,k.y,y,m)),t.emit("pan"));var S=s.startZoom,C=s.zoom,M=C!=null&&n;M&&(mx(S,C)&&(a.zoom=_x(a.minZoom,Fm(S,C,y,m),a.maxZoom)),t.emit("zoom")),(L||M)&&t.emit("viewport");var R=s.style;if(R&&R.length>0&&i){for(var T=0;T=0;L--){var S=E[L];S()}E.splice(0,E.length)},b=p.length-1;b>=0;b--){var w=p[b],_=w._private;if(_.stopped){p.splice(b,1),_.hooked=!1,_.playing=!1,_.started=!1,x(_.frames);continue}!_.playing&&!_.applying||(_.playing&&_.applying&&(_.applying=!1),_.started||eYe(h,w,t),Jqe(h,w,t,f),_.applying&&(_.applying=!1),x(_.frames),_.step!=null&&_.step(t),w.completed()&&(p.splice(b,1),_.hooked=!1,_.playing=!1,_.started=!1,x(_.completes)),m=!0)}return!f&&p.length===0&&g.length===0&&n.push(h),m}for(var a=!1,s=0;s0?e.notify("draw",r):e.notify("draw")),r.unmerge(n),e.emit("step")}function I0e(t){this.options=Kt({},lYe,cYe,t)}function M0e(t){this.options=Kt({},uYe,t)}function D0e(t){this.options=Kt({},hYe,t)}function lE(t){this.options=Kt({},fYe,t),this.options.layout=this;var e=this.options.eles.nodes(),r=this.options.eles.edges(),n=r.filter(function(i){var a=i.source().data("id"),s=i.target().data("id"),o=e.some(function(u){return u.data("id")===a}),l=e.some(function(u){return u.data("id")===s});return!o||!l});this.options.eles=this.options.eles.not(n)}function P0e(t){this.options=Kt({},LYe,t)}function qD(t){this.options=Kt({},RYe,t)}function B0e(t){this.options=Kt({},NYe,t)}function F0e(t){this.options=Kt({},IYe,t)}function z0e(t){this.options=t,this.notifications=0}function U0e(t,e){e.radius===0?t.lineTo(e.cx,e.cy):t.arc(e.cx,e.cy,e.radius,e.startAngle,e.endAngle,e.counterClockwise)}function XD(t,e,r,n){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0;return n===0||e.radius===0?{cx:e.x,cy:e.y,radius:0,startX:e.x,startY:e.y,stopX:e.x,stopY:e.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(OYe(t,e,r,n,i),{cx:xD,cy:bD,radius:L0,startX:$0e,startY:G0e,stopX:wD,stopY:kD,startAngle:Gc.ang+Math.PI/2*R0,endAngle:Ko.ang-Math.PI/2*R0,counterClockwise:D6})}function V0e(t){var e=[];if(t!=null){for(var r=0;r5&&arguments[5]!==void 0?arguments[5]:5,s=arguments.length>6?arguments[6]:void 0;t.beginPath(),t.moveTo(e+a,r),t.lineTo(e+n-a,r),t.quadraticCurveTo(e+n,r,e+n,r+a),t.lineTo(e+n,r+i-a),t.quadraticCurveTo(e+n,r+i,e+n-a,r+i),t.lineTo(e+a,r+i),t.quadraticCurveTo(e,r+i,e,r+i-a),t.lineTo(e,r+a),t.quadraticCurveTo(e,r,e+a,r),t.closePath(),s?t.stroke():t.fill()}function TXe(t,e){for(var r=atob(t),n=new ArrayBuffer(r.length),i=new Uint8Array(n),a=0;a{Mi=typeof window>"u"?null:window,ffe=Mi?Mi.navigator:null;Mi&&Mi.document;rGe=Oi(""),_de=Oi({}),nGe=Oi(function(){}),iGe=typeof HTMLElement>"u"?"undefined":Oi(HTMLElement),Ox=function(e){return e&&e.instanceString&&jn(e.instanceString)?e.instanceString():null},Wt=function(e){return e!=null&&Oi(e)==rGe},jn=function(e){return e!=null&&Oi(e)===nGe},vn=function(e){return!co(e)&&(Array.isArray?Array.isArray(e):e!=null&&e instanceof Array)},Dr=function(e){return e!=null&&Oi(e)===_de&&!vn(e)&&e.constructor===Object},aGe=function(e){return e!=null&&Oi(e)===_de},dt=function(e){return e!=null&&Oi(e)===Oi(1)&&!isNaN(e)},sGe=function(e){return dt(e)&&Math.floor(e)===e},P6=function(e){if(iGe!=="undefined")return e!=null&&e instanceof HTMLElement},co=function(e){return Px(e)||Lde(e)},Px=function(e){return Ox(e)==="collection"&&e._private.single},Lde=function(e){return Ox(e)==="collection"&&!e._private.single},LD=function(e){return Ox(e)==="core"},Rde=function(e){return Ox(e)==="stylesheet"},oGe=function(e){return Ox(e)==="event"},bf=function(e){return e==null?!0:!!(e===""||e.match(/^\s+$/))},lGe=function(e){return typeof HTMLElement>"u"?!1:e instanceof HTMLElement},cGe=function(e){return Dr(e)&&dt(e.x1)&&dt(e.x2)&&dt(e.y1)&&dt(e.y2)},uGe=function(e){return aGe(e)&&jn(e.then)},hGe=function(){return ffe&&ffe.userAgent.match(/msie|trident|edge/i)},Ex=function(e,r){r||(r=function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var a=[],s=0;sr?1:0},yGe=function(e,r){return-1*Ide(e,r)},Kt=Object.assign!=null?Object.assign.bind(Object):function(t){for(var e=arguments,r=1;r1&&(y-=1),y<1/6?g+(m-g)*6*y:y<1/2?m:y<2/3?g+(m-g)*(2/3-y)*6:g}var f=new RegExp("^"+pGe+"$").exec(e);if(f){if(n=parseInt(f[1]),n<0?n=(360- -1*n%360)%360:n>360&&(n=n%360),n/=360,i=parseFloat(f[2]),i<0||i>100||(i=i/100,a=parseFloat(f[3]),a<0||a>100)||(a=a/100,s=f[4],s!==void 0&&(s=parseFloat(s),s<0||s>1)))return;if(i===0)o=l=u=Math.round(a*255);else{var d=a<.5?a*(1+i):a+i-a*i,p=2*a-d;o=Math.round(255*h(p,d,n+1/3)),l=Math.round(255*h(p,d,n)),u=Math.round(255*h(p,d,n-1/3))}r=[o,l,u,s]}return r},wGe=function(e){var r,n=new RegExp("^"+fGe+"$").exec(e);if(n){r=[];for(var i=[],a=1;a<=3;a++){var s=n[a];if(s[s.length-1]==="%"&&(i[a]=!0),s=parseFloat(s),i[a]&&(s=s/100*255),s<0||s>255)return;r.push(Math.floor(s))}var o=i[1]||i[2]||i[3],l=i[1]&&i[2]&&i[3];if(o&&!l)return;var u=n[4];if(u!==void 0){if(u=parseFloat(u),u<0||u>1)return;r.push(u)}}return r},kGe=function(e){return EGe[e.toLowerCase()]},TGe=function(e){return(vn(e)?e:null)||kGe(e)||xGe(e)||wGe(e)||bGe(e)},EGe={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Mde=function(e){for(var r=e.map,n=e.keys,i=n.length,a=0;a1&&arguments[1]!==void 0?arguments[1]:Gm,n=r,i;i=e.next(),!i.done;)n=n*Fde+i.value|0;return n},Sx=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Gm;return r*Fde+e|0},Cx=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:yx;return(r<<5)+r+e|0},uUe=function(e,r){return e*2097152+r},pf=function(e){return e[0]*2097152+e[1]},g6=function(e,r){return[Sx(e[0],r[0]),Cx(e[1],r[1])]},hUe=function(e,r){var n={value:0,done:!1},i=0,a=e.length,s={next:function(){return i=0&&!(e[i]===r&&(e.splice(i,1),n));i--);},MD=function(e){e.splice(0,e.length)},yUe=function(e,r){for(var n=0;n"u"?"undefined":Oi(Set))!==bUe?Set:wUe,K6=function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(e===void 0||r===void 0||!LD(e)){ni("An element must have a core reference and parameters set");return}var i=r.group;if(i==null&&(r.data&&r.data.source!=null&&r.data.target!=null?i="edges":i="nodes"),i!=="nodes"&&i!=="edges"){ni("An element must be of type `nodes` or `edges`; you specified `"+i+"`");return}this.length=1,this[0]=this;var a=this._private={cy:e,single:!0,data:r.data||{},position:r.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:i,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!r.selected,selectable:r.selectable===void 0?!0:!!r.selectable,locked:!!r.locked,grabbed:!1,grabbable:r.grabbable===void 0?!0:!!r.grabbable,pannable:r.pannable===void 0?i==="edges":!!r.pannable,active:!1,classes:new Qm,animation:{current:[],queue:[]},rscratch:{},scratch:r.scratch||{},edges:[],children:[],parent:r.parent&&r.parent.isNode()?r.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(a.position.x==null&&(a.position.x=0),a.position.y==null&&(a.position.y=0),r.renderedPosition){var s=r.renderedPosition,o=e.pan(),l=e.zoom();a.position={x:(s.x-o.x)/l,y:(s.y-o.y)/l}}var u=[];vn(r.classes)?u=r.classes:Wt(r.classes)&&(u=r.classes.split(/\s+/));for(var h=0,f=u.length;hb?1:0},h=function(x,b,w,_,k){var E;if(w==null&&(w=0),k==null&&(k=n),w<0)throw new Error("lo must be non-negative");for(_==null&&(_=x.length);w<_;)E=i((w+_)/2),k(b,x[E])<0?_=E:w=E+1;return[].splice.apply(x,[w,w-w].concat(b)),b},o=function(x,b,w){return w==null&&(w=n),x.push(b),m(x,0,x.length-1,w)},s=function(x,b){var w,_;return b==null&&(b=n),w=x.pop(),x.length?(_=x[0],x[0]=w,y(x,0,b)):_=w,_},u=function(x,b,w){var _;return w==null&&(w=n),_=x[0],x[0]=b,y(x,0,w),_},l=function(x,b,w){var _;return w==null&&(w=n),x.length&&w(x[0],b)<0&&(_=[x[0],b],b=_[0],x[0]=_[1],y(x,0,w)),b},a=function(x,b){var w,_,k,E,L,S;for(b==null&&(b=n),E=function(){S=[];for(var C=0,M=i(x.length/2);0<=M?CM;0<=M?C++:C--)S.push(C);return S}.apply(this).reverse(),L=[],_=0,k=E.length;_R;0<=R?++S:--S)T.push(s(x,w));return T},m=function(x,b,w,_){var k,E,L;for(_==null&&(_=n),k=x[w];w>b;){if(L=w-1>>1,E=x[L],_(k,E)<0){x[w]=E,w=L;continue}break}return x[w]=k},y=function(x,b,w){var _,k,E,L,S;for(w==null&&(w=n),k=x.length,S=b,E=x[b],_=2*b+1;_0;){var E=b.pop(),L=y(E),S=E.id();if(d[S]=L,L!==1/0)for(var C=E.neighborhood().intersect(g),M=0;M0)for(B.unshift(O);f[$];){var z=f[$];B.unshift(z.edge),B.unshift(z.node),P=z.node,$=P.id()}return o.spawn(B)}}}},SUe={kruskal:function(e){e=e||function(w){return 1};for(var r=this.byGroup(),n=r.nodes,i=r.edges,a=n.length,s=new Array(a),o=n,l=function(_){for(var k=0;k0;){if(k(),L++,_===h){for(var S=[],C=a,M=h,R=x[M];S.unshift(C),R!=null&&S.unshift(R),C=y[M],C!=null;)M=C.id(),R=x[M];return{found:!0,distance:f[_],path:this.spawn(S),steps:L}}p[_]=!0;for(var T=w._private.edges,I=0;IR&&(g[M]=R,b[M]=C,w[M]=k),!a){var T=C*h+S;!a&&g[T]>R&&(g[T]=R,b[T]=S,w[T]=k)}}}for(var I=0;I1&&arguments[1]!==void 0?arguments[1]:s,Ee=w(we),Oe=[],De=Ee;;){if(De==null)return r.spawn();var We=b(De),Re=We.edge,Pe=We.pred;if(Oe.unshift(De[0]),De.same(Ie)&&Oe.length>0)break;Re!=null&&Oe.unshift(Re),De=Pe}return l.spawn(Oe)},E=0;E=0;h--){var f=u[h],d=f[1],p=f[2];(r[d]===o&&r[p]===l||r[d]===l&&r[p]===o)&&u.splice(h,1)}for(var g=0;gi;){var a=Math.floor(Math.random()*r.length);r=MUe(a,e,r),n--}return r},DUe={kargerStein:function(){var e=this,r=this.byGroup(),n=r.nodes,i=r.edges;i.unmergeBy(function(B){return B.isLoop()});var a=n.length,s=i.length,o=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),l=Math.floor(a/IUe);if(a<2){ni("At least 2 nodes are required for Karger-Stein algorithm");return}for(var u=[],h=0;h1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=-1/0,a=r;a1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=0,a=0,s=r;s1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:e.length,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,s=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;i?e=e.slice(r,n):(n0&&e.splice(0,r));for(var o=0,l=e.length-1;l>=0;l--){var u=e[l];s?isFinite(u)||(e[l]=-1/0,o++):e.splice(l,1)}a&&e.sort(function(d,p){return d-p});var h=e.length,f=Math.floor(h/2);return h%2!==0?e[f+1+o]:(e[f-1+o]+e[f+o])/2},$Ue=function(e){return Math.PI*e/180},m6=function(e,r){return Math.atan2(r,e)-Math.PI/2},DD=Math.log2||function(t){return Math.log(t)/Math.log(2)},qde=function(e){return e>0?1:e<0?-1:0},D0=function(e,r){return Math.sqrt(A0(e,r))},A0=function(e,r){var n=r.x-e.x,i=r.y-e.y;return n*n+i*i},GUe=function(e){for(var r=e.length,n=0,i=0;i=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(e.w!=null&&e.h!=null&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},VUe=function(e){return{x1:e.x1,x2:e.x2,w:e.w,y1:e.y1,y2:e.y2,h:e.h}},WUe=function(e){e.x1=1/0,e.y1=1/0,e.x2=-1/0,e.y2=-1/0,e.w=0,e.h=0},HUe=function(e,r,n){return{x1:e.x1+r,x2:e.x2+r,y1:e.y1+n,y2:e.y2+n,w:e.w,h:e.h}},Yde=function(e,r){e.x1=Math.min(e.x1,r.x1),e.x2=Math.max(e.x2,r.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,r.y1),e.y2=Math.max(e.y2,r.y2),e.h=e.y2-e.y1},qUe=function(e,r,n){e.x1=Math.min(e.x1,r),e.x2=Math.max(e.x2,r),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},A6=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.x1-=r,e.x2+=r,e.y1-=r,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},_6=function(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],n,i,a,s;if(r.length===1)n=i=a=s=r[0];else if(r.length===2)n=a=r[0],s=i=r[1];else if(r.length===4){var o=Ol(r,4);n=o[0],i=o[1],a=o[2],s=o[3]}return e.x1-=s,e.x2+=i,e.y1-=n,e.y2+=a,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},bfe=function(e,r){e.x1=r.x1,e.y1=r.y1,e.x2=r.x2,e.y2=r.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},OD=function(e,r){return!(e.x1>r.x2||r.x1>e.x2||e.x2r.y2||r.y1>e.y2)},jm=function(e,r,n){return e.x1<=r&&r<=e.x2&&e.y1<=n&&n<=e.y2},YUe=function(e,r){return jm(e,r.x,r.y)},Xde=function(e,r){return jm(e,r.x1,r.y1)&&jm(e,r.x2,r.y2)},jde=function(e,r,n,i,a,s,o){var l=arguments.length>7&&arguments[7]!==void 0?arguments[7]:"auto",u=l==="auto"?O0(a,s):l,h=a/2,f=s/2;u=Math.min(u,h,f);var d=u!==h,p=u!==f,g;if(d){var m=n-h+u-o,y=i-f-o,x=n+h-u+o,b=y;if(g=vf(e,r,n,i,m,y,x,b,!1),g.length>0)return g}if(p){var w=n+h+o,_=i-f+u-o,k=w,E=i+f-u+o;if(g=vf(e,r,n,i,w,_,k,E,!1),g.length>0)return g}if(d){var L=n-h+u-o,S=i+f+o,C=n+h-u+o,M=S;if(g=vf(e,r,n,i,L,S,C,M,!1),g.length>0)return g}if(p){var R=n-h-o,T=i-f+u-o,I=R,A=i+f-u+o;if(g=vf(e,r,n,i,R,T,I,A,!1),g.length>0)return g}var D;{var N=n-h+u,O=i-f+u;if(D=xx(e,r,n,i,N,O,u+o),D.length>0&&D[0]<=N&&D[1]<=O)return[D[0],D[1]]}{var B=n+h-u,P=i-f+u;if(D=xx(e,r,n,i,B,P,u+o),D.length>0&&D[0]>=B&&D[1]<=P)return[D[0],D[1]]}{var $=n+h-u,z=i+f-u;if(D=xx(e,r,n,i,$,z,u+o),D.length>0&&D[0]>=$&&D[1]>=z)return[D[0],D[1]]}{var H=n-h+u,J=i+f-u;if(D=xx(e,r,n,i,H,J,u+o),D.length>0&&D[0]<=H&&D[1]>=J)return[D[0],D[1]]}return[]},XUe=function(e,r,n,i,a,s,o){var l=o,u=Math.min(n,a),h=Math.max(n,a),f=Math.min(i,s),d=Math.max(i,s);return u-l<=e&&e<=h+l&&f-l<=r&&r<=d+l},jUe=function(e,r,n,i,a,s,o,l,u){var h={x1:Math.min(n,o,a)-u,x2:Math.max(n,o,a)+u,y1:Math.min(i,l,s)-u,y2:Math.max(i,l,s)+u};return!(eh.x2||rh.y2)},KUe=function(e,r,n,i){n-=i;var a=r*r-4*e*n;if(a<0)return[];var s=Math.sqrt(a),o=2*e,l=(-r+s)/o,u=(-r-s)/o;return[l,u]},ZUe=function(e,r,n,i,a){var s=1e-5;e===0&&(e=s),r/=e,n/=e,i/=e;var o,l,u,h,f,d,p,g;if(l=(3*n-r*r)/9,u=-(27*i)+r*(9*n-2*(r*r)),u/=54,o=l*l*l+u*u,a[1]=0,p=r/3,o>0){f=u+Math.sqrt(o),f=f<0?-Math.pow(-f,1/3):Math.pow(f,1/3),d=u-Math.sqrt(o),d=d<0?-Math.pow(-d,1/3):Math.pow(d,1/3),a[0]=-p+f+d,p+=(f+d)/2,a[4]=a[2]=-p,p=Math.sqrt(3)*(-d+f)/2,a[3]=p,a[5]=-p;return}if(a[5]=a[3]=0,o===0){g=u<0?-Math.pow(-u,1/3):Math.pow(u,1/3),a[0]=-p+2*g,a[4]=a[2]=-(g+p);return}l=-l,h=l*l*l,h=Math.acos(u/Math.sqrt(h)),g=2*Math.sqrt(l),a[0]=-p+g*Math.cos(h/3),a[2]=-p+g*Math.cos((h+2*Math.PI)/3),a[4]=-p+g*Math.cos((h+4*Math.PI)/3)},QUe=function(e,r,n,i,a,s,o,l){var u=1*n*n-4*n*a+2*n*o+4*a*a-4*a*o+o*o+i*i-4*i*s+2*i*l+4*s*s-4*s*l+l*l,h=1*9*n*a-3*n*n-3*n*o-6*a*a+3*a*o+9*i*s-3*i*i-3*i*l-6*s*s+3*s*l,f=1*3*n*n-6*n*a+n*o-n*e+2*a*a+2*a*e-o*e+3*i*i-6*i*s+i*l-i*r+2*s*s+2*s*r-l*r,d=1*n*a-n*n+n*e-a*e+i*s-i*i+i*r-s*r,p=[];ZUe(u,h,f,d,p);for(var g=1e-7,m=[],y=0;y<6;y+=2)Math.abs(p[y+1])=0&&p[y]<=1&&m.push(p[y]);m.push(1),m.push(0);for(var x=-1,b,w,_,k=0;k=0?_u?(e-a)*(e-a)+(r-s)*(r-s):h-d},Bs=function(e,r,n){for(var i,a,s,o,l,u=0,h=0;h=e&&e>=s||i<=e&&e<=s)l=(e-i)/(s-i)*(o-a)+a,l>r&&u++;else continue;return u%2!==0},Ju=function(e,r,n,i,a,s,o,l,u){var h=new Array(n.length),f;l[0]!=null?(f=Math.atan(l[1]/l[0]),l[0]<0?f=f+Math.PI/2:f=-f-Math.PI/2):f=l;for(var d=Math.cos(-f),p=Math.sin(-f),g=0;g0){var y=$6(h,-u);m=z6(y)}else m=h;return Bs(e,r,m)},eVe=function(e,r,n,i,a,s,o,l){for(var u=new Array(n.length*2),h=0;h=0&&y<=1&&b.push(y),x>=0&&x<=1&&b.push(x),b.length===0)return[];var w=b[0]*l[0]+e,_=b[0]*l[1]+r;if(b.length>1){if(b[0]==b[1])return[w,_];var k=b[1]*l[0]+e,E=b[1]*l[1]+r;return[w,_,k,E]}else return[w,_]},tD=function(e,r,n){return r<=e&&e<=n||n<=e&&e<=r?e:e<=r&&r<=n||n<=r&&r<=e?r:n},vf=function(e,r,n,i,a,s,o,l,u){var h=e-a,f=n-e,d=o-a,p=r-s,g=i-r,m=l-s,y=d*p-m*h,x=f*p-g*h,b=m*f-d*g;if(b!==0){var w=y/b,_=x/b,k=.001,E=0-k,L=1+k;return E<=w&&w<=L&&E<=_&&_<=L?[e+w*f,r+w*g]:u?[e+w*f,r+w*g]:[]}else return y===0||x===0?tD(e,n,o)===o?[o,l]:tD(e,n,a)===a?[a,s]:tD(a,o,n)===n?[n,i]:[]:[]},Lx=function(e,r,n,i,a,s,o,l){var u=[],h,f=new Array(n.length),d=!0;s==null&&(d=!1);var p;if(d){for(var g=0;g0){var m=$6(f,-l);p=z6(m)}else p=f}else p=n;for(var y,x,b,w,_=0;_2){for(var g=[h[0],h[1]],m=Math.pow(g[0]-e,2)+Math.pow(g[1]-r,2),y=1;yh&&(h=_)},get:function(w){return u[w]}},d=0;d0?N=D.edgesTo(A)[0]:N=A.edgesTo(D)[0];var O=i(N);A=A.id(),S[A]>S[T]+O&&(S[A]=S[T]+O,C.nodes.indexOf(A)<0?C.push(A):C.updateItem(A),L[A]=0,E[A]=[]),S[A]==S[T]+O&&(L[A]=L[A]+L[T],E[A].push(T))}else for(var B=0;B0;){for(var H=k.pop(),J=0;J0&&o.push(n[l]);o.length!==0&&a.push(i.collection(o))}return a},mVe=function(e,r){for(var n=0;n5&&arguments[5]!==void 0?arguments[5]:xVe,o=i,l,u,h=0;h=2?dx(e,r,n,0,Sfe,bVe):dx(e,r,n,0,Efe)},squaredEuclidean:function(e,r,n){return dx(e,r,n,0,Sfe)},manhattan:function(e,r,n){return dx(e,r,n,0,Efe)},max:function(e,r,n){return dx(e,r,n,-1/0,wVe)}};Km["squared-euclidean"]=Km.squaredEuclidean;Km.squaredeuclidean=Km.squaredEuclidean;kVe=ba({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),BD=function(e){return kVe(e)},G6=function(e,r,n,i,a){var s=a!=="kMedoids",o=s?function(f){return n[f]}:function(f){return i[f](n)},l=function(d){return i[d](r)},u=n,h=r;return Q6(e,i.length,o,l,u,h)},rD=function(e,r,n){for(var i=n.length,a=new Array(i),s=new Array(i),o=new Array(r),l=null,u=0;un)return!1}return!0},SVe=function(e,r,n){for(var i=0;io&&(o=r[u][h],l=h);a[l].push(e[u])}for(var f=0;f=a.threshold||a.mode==="dendrogram"&&e.length===1)return!1;var g=r[s],m=r[i[s]],y;a.mode==="dendrogram"?y={left:g,right:m,key:g.key}:y={value:g.value.concat(m.value),key:g.key},e[g.index]=y,e.splice(m.index,1),r[g.key]=y;for(var x=0;xn[m.key][b.key]&&(l=n[m.key][b.key])):a.linkage==="max"?(l=n[g.key][b.key],n[g.key][b.key]0&&i.push(a);return i},Nfe=function(e,r,n){for(var i=[],a=0;ao&&(s=u,o=r[a*e+u])}s>0&&i.push(s)}for(var h=0;hu&&(l=h,u=f)}n[a]=s[l]}return i=Nfe(e,r,n),i},Ife=function(e){for(var r=this.cy(),n=this.nodes(),i=zVe(e),a={},s=0;s=R?(T=R,R=A,I=D):A>T&&(T=A);for(var N=0;N0?1:0;L[C%i.minIterations*o+H]=J,z+=J}if(z>0&&(C>=i.minIterations-1||C==i.maxIterations-1)){for(var X=0,oe=0;oe1||E>1)&&(o=!0),f[w]=[],b.outgoers().forEach(function(S){S.isEdge()&&f[w].push(S.id())})}else d[w]=[void 0,b.target().id()]}):s.forEach(function(b){var w=b.id();if(b.isNode()){var _=b.degree(!0);_%2&&(l?u?o=!0:u=w:l=w),f[w]=[],b.connectedEdges().forEach(function(k){return f[w].push(k.id())})}else d[w]=[b.source().id(),b.target().id()]});var p={found:!1,trail:void 0};if(o)return p;if(u&&l)if(a){if(h&&u!=h)return p;h=u}else{if(h&&u!=h&&l!=h)return p;h||(h=u)}else h||(h=s[0].id());var g=function(w){for(var _=w,k=[w],E,L,S;f[_].length;)E=f[_].shift(),L=d[E][0],S=d[E][1],_!=S?(f[S]=f[S].filter(function(C){return C!=E}),_=S):!a&&_!=L&&(f[L]=f[L].filter(function(C){return C!=E}),_=L),k.unshift(E),k.unshift(_);return k},m=[],y=[];for(y=g(h);y.length!=1;)f[y[0]].length==0?(m.unshift(s.getElementById(y.shift())),m.unshift(s.getElementById(y.shift()))):y=g(y.shift()).concat(y);m.unshift(s.getElementById(y.shift()));for(var x in f)if(f[x].length)return p;return p.found=!0,p.trail=this.spawn(m,!0),p}},x6=function(){var e=this,r={},n=0,i=0,a=[],s=[],o={},l=function(d,p){for(var g=s.length-1,m=[],y=e.spawn();s[g].x!=d||s[g].y!=p;)m.push(s.pop().edge),g--;m.push(s.pop().edge),m.forEach(function(x){var b=x.connectedNodes().intersection(e);y.merge(x),b.forEach(function(w){var _=w.id(),k=w.connectedEdges().intersection(e);y.merge(w),r[_].cutVertex?y.merge(k.filter(function(E){return E.isLoop()})):y.merge(k)})}),a.push(y)},u=function f(d,p,g){d===g&&(i+=1),r[p]={id:n,low:n++,cutVertex:!1};var m=e.getElementById(p).connectedEdges().intersection(e);if(m.size()===0)a.push(e.spawn(e.getElementById(p)));else{var y,x,b,w;m.forEach(function(_){y=_.source().id(),x=_.target().id(),b=y===p?x:y,b!==g&&(w=_.id(),o[w]||(o[w]=!0,s.push({x:p,y:b,edge:_})),b in r?r[p].low=Math.min(r[p].low,r[b].id):(f(d,b,p),r[p].low=Math.min(r[p].low,r[b].low),r[p].id<=r[b].low&&(r[p].cutVertex=!0,l(p,b))))})}};e.forEach(function(f){if(f.isNode()){var d=f.id();d in r||(i=0,u(d,d),r[d].cutVertex=i>1)}});var h=Object.keys(r).filter(function(f){return r[f].cutVertex}).map(function(f){return e.getElementById(f)});return{cut:e.spawn(h),components:a}},YVe={hopcroftTarjanBiconnected:x6,htbc:x6,htb:x6,hopcroftTarjanBiconnectedComponents:x6},b6=function(){var e=this,r={},n=0,i=[],a=[],s=e.spawn(e),o=function l(u){a.push(u),r[u]={index:n,low:n++,explored:!1};var h=e.getElementById(u).connectedEdges().intersection(e);if(h.forEach(function(m){var y=m.target().id();y!==u&&(y in r||l(y),r[y].explored||(r[u].low=Math.min(r[u].low,r[y].low)))}),r[u].index===r[u].low){for(var f=e.spawn();;){var d=a.pop();if(f.merge(e.getElementById(d)),r[d].low=r[u].index,r[d].explored=!0,d===u)break}var p=f.edgesWith(f),g=f.merge(p);i.push(g),s=s.difference(g)}};return e.forEach(function(l){if(l.isNode()){var u=l.id();u in r||o(u)}}),{cut:s,components:i}},XVe={tarjanStronglyConnected:b6,tsc:b6,tscc:b6,tarjanStronglyConnectedComponents:b6},r0e={};[Ax,EUe,SUe,AUe,LUe,NUe,DUe,aVe,Hm,qm,dD,yVe,NVe,BVe,WVe,qVe,YVe,XVe].forEach(function(t){Kt(r0e,t)});n0e=0,i0e=1,a0e=2,eh=function t(e){if(!(this instanceof t))return new t(e);this.id="Thenable/1.0.7",this.state=n0e,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof e=="function"&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};eh.prototype={fulfill:function(e){return Mfe(this,i0e,"fulfillValue",e)},reject:function(e){return Mfe(this,a0e,"rejectReason",e)},then:function(e,r){var n=this,i=new eh;return n.onFulfilled.push(Ofe(e,i,"fulfill")),n.onRejected.push(Ofe(r,i,"reject")),s0e(n),i.proxy}};Mfe=function(e,r,n,i){return e.state===n0e&&(e.state=r,e[n]=i,s0e(e)),e},s0e=function(e){e.state===i0e?Dfe(e,"onFulfilled",e.fulfillValue):e.state===a0e&&Dfe(e,"onRejected",e.rejectReason)},Dfe=function(e,r,n){if(e[r].length!==0){var i=e[r];e[r]=[];var a=function(){for(var o=0;o0}},clearQueue:function(){return function(){var r=this,n=r.length!==void 0,i=n?r:[r],a=this._private.cy||this;if(!a.styleEnabled())return this;for(var s=0;s0&&this.spawn(i).updateStyle().emit("class"),r},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var r=this[0];return r!=null&&r._private.classes.has(e)},toggleClass:function(e,r){vn(e)||(e=e.match(/\S+/g)||[]);for(var n=this,i=r===void 0,a=[],s=0,o=n.length;s0&&this.spawn(a).updateStyle().emit("class"),n},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,r){var n=this;if(r==null)r=250;else if(r===0)return n;return n.addClass(e),setTimeout(function(){n.removeClass(e)},r),n}};L6.className=L6.classNames=L6.classes;Mr={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:Di,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};Mr.variable="(?:[\\w-.]|(?:\\\\"+Mr.metaChar+"))+";Mr.className="(?:[\\w-]|(?:\\\\"+Mr.metaChar+"))+";Mr.value=Mr.string+"|"+Mr.number;Mr.id=Mr.variable;(function(){var t,e,r;for(t=Mr.comparatorOp.split("|"),r=0;r=0)&&e!=="="&&(Mr.comparatorOp+="|\\!"+e)})();ln=function(){return{checks:[]}},At={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},gD=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort(function(t,e){return yGe(t.selector,e.selector)}),oqe=function(){for(var t={},e,r=0;r0&&h.edgeCount>0)return Jr("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(h.edgeCount>1)return Jr("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;h.edgeCount===1&&Jr("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},dqe=function(){if(this.toStringCache!=null)return this.toStringCache;for(var e=function(h){return h??""},r=function(h){return Wt(h)?'"'+h+'"':e(h)},n=function(h){return" "+h+" "},i=function(h,f){var d=h.type,p=h.value;switch(d){case At.GROUP:{var g=e(p);return g.substring(0,g.length-1)}case At.DATA_COMPARE:{var m=h.field,y=h.operator;return"["+m+n(e(y))+r(p)+"]"}case At.DATA_BOOL:{var x=h.operator,b=h.field;return"["+e(x)+b+"]"}case At.DATA_EXIST:{var w=h.field;return"["+w+"]"}case At.META_COMPARE:{var _=h.operator,k=h.field;return"[["+k+n(e(_))+r(p)+"]]"}case At.STATE:return p;case At.ID:return"#"+p;case At.CLASS:return"."+p;case At.PARENT:case At.CHILD:return a(h.parent,f)+n(">")+a(h.child,f);case At.ANCESTOR:case At.DESCENDANT:return a(h.ancestor,f)+" "+a(h.descendant,f);case At.COMPOUND_SPLIT:{var E=a(h.left,f),L=a(h.subject,f),S=a(h.right,f);return E+(E.length>0?" ":"")+L+S}case At.TRUE:return""}},a=function(h,f){return h.checks.reduce(function(d,p,g){return d+(f===h&&g===0?"$":"")+i(p,f)},"")},s="",o=0;o1&&o=0&&(r=r.replace("!",""),f=!0),r.indexOf("@")>=0&&(r=r.replace("@",""),h=!0),(a||o||h)&&(l=!a&&!s?"":""+e,u=""+n),h&&(e=l=l.toLowerCase(),n=u=u.toLowerCase()),r){case"*=":i=l.indexOf(u)>=0;break;case"$=":i=l.indexOf(u,l.length-u.length)>=0;break;case"^=":i=l.indexOf(u)===0;break;case"=":i=e===n;break;case">":d=!0,i=e>n;break;case">=":d=!0,i=e>=n;break;case"<":d=!0,i=e1&&arguments[1]!==void 0?arguments[1]:!0;return UD(this,t,e,g0e)};Zm.forEachUp=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return UD(this,t,e,m0e)};Zm.forEachUpAndDown=function(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return UD(this,t,e,wqe)};Zm.ancestors=Zm.parents;Nx=v0e={data:Qr.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:Qr.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Qr.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Qr.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:Qr.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Qr.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}};Nx.attr=Nx.data;Nx.removeAttr=Nx.removeData;kqe=v0e,rE={};Kt(rE,{degree:iD(function(t,e){return e.source().same(e.target())?2:1}),indegree:iD(function(t,e){return e.target().same(t)?1:0}),outdegree:iD(function(t,e){return e.source().same(t)?1:0})});Kt(rE,{minDegree:Bm("degree",function(t,e){return te}),minIndegree:Bm("indegree",function(t,e){return te}),minOutdegree:Bm("outdegree",function(t,e){return te})});Kt(rE,{totalDegree:function(e){for(var r=0,n=this.nodes(),i=0;i0,d=f;f&&(h=h[0]);var p=d?h.position():{x:0,y:0};r!==void 0?u.position(e,r+p[e]):a!==void 0&&u.position({x:a.x+p.x,y:a.y+p.y})}else{var g=n.position(),m=o?n.parent():null,y=m&&m.length>0,x=y;y&&(m=m[0]);var b=x?m.position():{x:0,y:0};return a={x:g.x-b.x,y:g.y-b.y},e===void 0?a:a[e]}else if(!s)return;return this}};Fl.modelPosition=Fl.point=Fl.position;Fl.modelPositions=Fl.points=Fl.positions;Fl.renderedPoint=Fl.renderedPosition;Fl.relativePoint=Fl.relativePosition;Tqe=y0e;Ym=Sf={};Sf.renderedBoundingBox=function(t){var e=this.boundingBox(t),r=this.cy(),n=r.zoom(),i=r.pan(),a=e.x1*n+i.x,s=e.x2*n+i.x,o=e.y1*n+i.y,l=e.y2*n+i.y;return{x1:a,x2:s,y1:o,y2:l,w:s-a,h:l-o}};Sf.dirtyCompoundBoundsCache=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();return!e.styleEnabled()||!e.hasCompoundNodes()?this:(this.forEachUp(function(r){if(r.isParent()){var n=r._private;n.compoundBoundsClean=!1,n.bbCache=null,t||r.emitAndNotify("bounds")}}),this)};Sf.updateCompoundBounds=function(){var t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,e=this.cy();if(!e.styleEnabled()||!e.hasCompoundNodes())return this;if(!t&&e.batching())return this;function r(s){if(!s.isParent())return;var o=s._private,l=s.children(),u=s.pstyle("compound-sizing-wrt-labels").value==="include",h={width:{val:s.pstyle("min-width").pfValue,left:s.pstyle("min-width-bias-left"),right:s.pstyle("min-width-bias-right")},height:{val:s.pstyle("min-height").pfValue,top:s.pstyle("min-height-bias-top"),bottom:s.pstyle("min-height-bias-bottom")}},f=l.boundingBox({includeLabels:u,includeOverlays:!1,useCache:!1}),d=o.position;(f.w===0||f.h===0)&&(f={w:s.pstyle("width").pfValue,h:s.pstyle("height").pfValue},f.x1=d.x-f.w/2,f.x2=d.x+f.w/2,f.y1=d.y-f.h/2,f.y2=d.y+f.h/2);function p(C,M,R){var T=0,I=0,A=M+R;return C>0&&A>0&&(T=M/A*C,I=R/A*C),{biasDiff:T,biasComplementDiff:I}}function g(C,M,R,T){if(R.units==="%")switch(T){case"width":return C>0?R.pfValue*C:0;case"height":return M>0?R.pfValue*M:0;case"average":return C>0&&M>0?R.pfValue*(C+M)/2:0;case"min":return C>0&&M>0?C>M?R.pfValue*M:R.pfValue*C:0;case"max":return C>0&&M>0?C>M?R.pfValue*C:R.pfValue*M:0;default:return 0}else return R.units==="px"?R.pfValue:0}var m=h.width.left.value;h.width.left.units==="px"&&h.width.val>0&&(m=m*100/h.width.val);var y=h.width.right.value;h.width.right.units==="px"&&h.width.val>0&&(y=y*100/h.width.val);var x=h.height.top.value;h.height.top.units==="px"&&h.height.val>0&&(x=x*100/h.height.val);var b=h.height.bottom.value;h.height.bottom.units==="px"&&h.height.val>0&&(b=b*100/h.height.val);var w=p(h.width.val-f.w,m,y),_=w.biasDiff,k=w.biasComplementDiff,E=p(h.height.val-f.h,x,b),L=E.biasDiff,S=E.biasComplementDiff;o.autoPadding=g(f.w,f.h,s.pstyle("padding"),s.pstyle("padding-relative-to").value),o.autoWidth=Math.max(f.w,h.width.val),d.x=(-_+f.x1+f.x2+k)/2,o.autoHeight=Math.max(f.h,h.height.val),d.y=(-L+f.y1+f.y2+S)/2}for(var n=0;ne.x2?i:e.x2,e.y1=ne.y2?a:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},_0=function(e,r){return r==null?e:Pl(e,r.x1,r.y1,r.x2,r.y2)},px=function(e,r,n){return Bl(e,r,n)},w6=function(e,r,n){if(!r.cy().headless()){var i=r._private,a=i.rstyle,s=a.arrowWidth/2,o=r.pstyle(n+"-arrow-shape").value,l,u;if(o!=="none"){n==="source"?(l=a.srcX,u=a.srcY):n==="target"?(l=a.tgtX,u=a.tgtY):(l=a.midX,u=a.midY);var h=i.arrowBounds=i.arrowBounds||{},f=h[n]=h[n]||{};f.x1=l-s,f.y1=u-s,f.x2=l+s,f.y2=u+s,f.w=f.x2-f.x1,f.h=f.y2-f.y1,A6(f,1),Pl(e,f.x1,f.y1,f.x2,f.y2)}}},aD=function(e,r,n){if(!r.cy().headless()){var i;n?i=n+"-":i="";var a=r._private,s=a.rstyle,o=r.pstyle(i+"label").strValue;if(o){var l=r.pstyle("text-halign"),u=r.pstyle("text-valign"),h=px(s,"labelWidth",n),f=px(s,"labelHeight",n),d=px(s,"labelX",n),p=px(s,"labelY",n),g=r.pstyle(i+"text-margin-x").pfValue,m=r.pstyle(i+"text-margin-y").pfValue,y=r.isEdge(),x=r.pstyle(i+"text-rotation"),b=r.pstyle("text-outline-width").pfValue,w=r.pstyle("text-border-width").pfValue,_=w/2,k=r.pstyle("text-background-padding").pfValue,E=2,L=f,S=h,C=S/2,M=L/2,R,T,I,A;if(y)R=d-C,T=d+C,I=p-M,A=p+M;else{switch(l.value){case"left":R=d-S,T=d;break;case"center":R=d-C,T=d+C;break;case"right":R=d,T=d+S;break}switch(u.value){case"top":I=p-L,A=p;break;case"center":I=p-M,A=p+M;break;case"bottom":I=p,A=p+L;break}}var D=g-Math.max(b,_)-k-E,N=g+Math.max(b,_)+k+E,O=m-Math.max(b,_)-k-E,B=m+Math.max(b,_)+k+E;R+=D,T+=N,I+=O,A+=B;var P=n||"main",$=a.labelBounds,z=$[P]=$[P]||{};z.x1=R,z.y1=I,z.x2=T,z.y2=A,z.w=T-R,z.h=A-I,z.leftPad=D,z.rightPad=N,z.topPad=O,z.botPad=B;var H=y&&x.strValue==="autorotate",J=x.pfValue!=null&&x.pfValue!==0;if(H||J){var X=H?px(a.rstyle,"labelAngle",n):x.pfValue,oe=Math.cos(X),K=Math.sin(X),ee=(R+T)/2,Q=(I+A)/2;if(!y){switch(l.value){case"left":ee=T;break;case"right":ee=R;break}switch(u.value){case"top":Q=A;break;case"bottom":Q=I;break}}var W=function(ae,we){return ae=ae-ee,we=we-Q,{x:ae*oe-we*K+ee,y:ae*K+we*oe+Q}},Y=W(R,I),Z=W(R,A),se=W(T,I),ce=W(T,A);R=Math.min(Y.x,Z.x,se.x,ce.x),T=Math.max(Y.x,Z.x,se.x,ce.x),I=Math.min(Y.y,Z.y,se.y,ce.y),A=Math.max(Y.y,Z.y,se.y,ce.y)}var ue=P+"Rot",te=$[ue]=$[ue]||{};te.x1=R,te.y1=I,te.x2=T,te.y2=A,te.w=T-R,te.h=A-I,Pl(e,R,I,T,A),Pl(a.labelBounds.all,R,I,T,A)}return e}},Eqe=function(e,r){if(!r.cy().headless()){var n=r.pstyle("outline-opacity").value,i=r.pstyle("outline-width").value;if(n>0&&i>0){var a=r.pstyle("outline-offset").value,s=r.pstyle("shape").value,o=i+a,l=(e.w+o*2)/e.w,u=(e.h+o*2)/e.h,h=0,f=0;["diamond","pentagon","round-triangle"].includes(s)?(l=(e.w+o*2.4)/e.w,f=-o/3.6):["concave-hexagon","rhomboid","right-rhomboid"].includes(s)?l=(e.w+o*2.4)/e.w:s==="star"?(l=(e.w+o*2.8)/e.w,u=(e.h+o*2.6)/e.h,f=-o/3.8):s==="triangle"?(l=(e.w+o*2.8)/e.w,u=(e.h+o*2.4)/e.h,f=-o/1.4):s==="vee"&&(l=(e.w+o*4.4)/e.w,u=(e.h+o*3.8)/e.h,f=-o*.5);var d=e.h*u-e.h,p=e.w*l-e.w;if(_6(e,[Math.ceil(d/2),Math.ceil(p/2)]),h!=0||f!==0){var g=HUe(e,h,f);Yde(e,g)}}}},Sqe=function(e,r){var n=e._private.cy,i=n.styleEnabled(),a=n.headless(),s=Fs(),o=e._private,l=e.isNode(),u=e.isEdge(),h,f,d,p,g,m,y=o.rstyle,x=l&&i?e.pstyle("bounds-expansion").pfValue:[0],b=function(Ne){return Ne.pstyle("display").value!=="none"},w=!i||b(e)&&(!u||b(e.source())&&b(e.target()));if(w){var _=0,k=0;i&&r.includeOverlays&&(_=e.pstyle("overlay-opacity").value,_!==0&&(k=e.pstyle("overlay-padding").value));var E=0,L=0;i&&r.includeUnderlays&&(E=e.pstyle("underlay-opacity").value,E!==0&&(L=e.pstyle("underlay-padding").value));var S=Math.max(k,L),C=0,M=0;if(i&&(C=e.pstyle("width").pfValue,M=C/2),l&&r.includeNodes){var R=e.position();g=R.x,m=R.y;var T=e.outerWidth(),I=T/2,A=e.outerHeight(),D=A/2;h=g-I,f=g+I,d=m-D,p=m+D,Pl(s,h,d,f,p),i&&r.includeOutlines&&Eqe(s,e)}else if(u&&r.includeEdges)if(i&&!a){var N=e.pstyle("curve-style").strValue;if(h=Math.min(y.srcX,y.midX,y.tgtX),f=Math.max(y.srcX,y.midX,y.tgtX),d=Math.min(y.srcY,y.midY,y.tgtY),p=Math.max(y.srcY,y.midY,y.tgtY),h-=M,f+=M,d-=M,p+=M,Pl(s,h,d,f,p),N==="haystack"){var O=y.haystackPts;if(O&&O.length===2){if(h=O[0].x,d=O[0].y,f=O[1].x,p=O[1].y,h>f){var B=h;h=f,f=B}if(d>p){var P=d;d=p,p=P}Pl(s,h-M,d-M,f+M,p+M)}}else if(N==="bezier"||N==="unbundled-bezier"||N.endsWith("segments")||N.endsWith("taxi")){var $;switch(N){case"bezier":case"unbundled-bezier":$=y.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":$=y.linePts;break}if($!=null)for(var z=0;z<$.length;z++){var H=$[z];h=H.x-M,f=H.x+M,d=H.y-M,p=H.y+M,Pl(s,h,d,f,p)}}}else{var J=e.source(),X=J.position(),oe=e.target(),K=oe.position();if(h=X.x,f=K.x,d=X.y,p=K.y,h>f){var ee=h;h=f,f=ee}if(d>p){var Q=d;d=p,p=Q}h-=M,f+=M,d-=M,p+=M,Pl(s,h,d,f,p)}if(i&&r.includeEdges&&u&&(w6(s,e,"mid-source"),w6(s,e,"mid-target"),w6(s,e,"source"),w6(s,e,"target")),i){var W=e.pstyle("ghost").value==="yes";if(W){var Y=e.pstyle("ghost-offset-x").pfValue,Z=e.pstyle("ghost-offset-y").pfValue;Pl(s,s.x1+Y,s.y1+Z,s.x2+Y,s.y2+Z)}}var se=o.bodyBounds=o.bodyBounds||{};bfe(se,s),_6(se,x),A6(se,1),i&&(h=s.x1,f=s.x2,d=s.y1,p=s.y2,Pl(s,h-S,d-S,f+S,p+S));var ce=o.overlayBounds=o.overlayBounds||{};bfe(ce,s),_6(ce,x),A6(ce,1);var ue=o.labelBounds=o.labelBounds||{};ue.all!=null?WUe(ue.all):ue.all=Fs(),i&&r.includeLabels&&(r.includeMainLabels&&aD(s,e,null),u&&(r.includeSourceLabels&&aD(s,e,"source"),r.includeTargetLabels&&aD(s,e,"target")))}return s.x1=Zo(s.x1),s.y1=Zo(s.y1),s.x2=Zo(s.x2),s.y2=Zo(s.y2),s.w=Zo(s.x2-s.x1),s.h=Zo(s.y2-s.y1),s.w>0&&s.h>0&&w&&(_6(s,x),A6(s,1)),s},b0e=function(e){var r=0,n=function(s){return(s?1:0)<=0;o--)s(o);return this};Ef.removeAllListeners=function(){return this.removeListener("*")};Ef.emit=Ef.trigger=function(t,e,r){var n=this.listeners,i=n.length;return this.emitting++,vn(e)||(e=[e]),Gqe(this,function(a,s){r!=null&&(n=[{event:s.event,type:s.type,namespace:s.namespace,callback:r}],i=n.length);for(var o=function(h){var f=n[h];if(f.type===s.type&&(!f.namespace||f.namespace===s.namespace||f.namespace===zqe)&&a.eventMatches(a.context,f,s)){var d=[s];e!=null&&yUe(d,e),a.beforeEmit(a.context,f,s),f.conf&&f.conf.one&&(a.listeners=a.listeners.filter(function(m){return m!==f}));var p=a.callbackContext(a.context,f,s),g=f.callback.apply(p,d);a.afterEmit(a.context,f,s),g===!1&&(s.stopPropagation(),s.preventDefault())}},l=0;l1&&!s){var o=this.length-1,l=this[o],u=l._private.data.id;this[o]=void 0,this[e]=l,a.set(u,{ele:l,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var r=this._private,n=e._private.data.id,i=r.map,a=i.get(n);if(!a)return this;var s=a.index;return this.unmergeAt(s),this},unmerge:function(e){var r=this._private.cy;if(!e)return this;if(e&&Wt(e)){var n=e;e=r.mutableElements().filter(n)}for(var i=0;i=0;r--){var n=this[r];e(n)&&this.unmergeAt(r)}return this},map:function(e,r){for(var n=[],i=this,a=0;an&&(n=l,i=o)}return{value:n,ele:i}},min:function(e,r){for(var n=1/0,i,a=this,s=0;s=0&&a"u"?"undefined":Oi(Symbol))!=e&&Oi(Symbol.iterator)!=e;r&&(U6[Symbol.iterator]=function(){var n=this,i={value:void 0,done:!1},a=0,s=this.length;return Sde({next:function(){return a1&&arguments[1]!==void 0?arguments[1]:!0,n=this[0],i=n.cy();if(i.styleEnabled()&&n){this.cleanStyle();var a=n._private.style[e];return a??(r?i.style().getDefaultProperty(e):null)}},numericStyle:function(e){var r=this[0];if(r.cy().styleEnabled()&&r){var n=r.pstyle(e);return n.pfValue!==void 0?n.pfValue:n.value}},numericStyleUnits:function(e){var r=this[0];if(r.cy().styleEnabled()&&r)return r.pstyle(e).units},renderedStyle:function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=this[0];if(n)return r.style().getRenderedStyle(n,e)},style:function(e,r){var n=this.cy();if(!n.styleEnabled())return this;var i=!1,a=n.style();if(Dr(e)){var s=e;a.applyBypass(this,s,i),this.emitAndNotify("style")}else if(Wt(e))if(r===void 0){var o=this[0];return o?a.getStylePropertyValue(o,e):void 0}else a.applyBypass(this,e,r,i),this.emitAndNotify("style");else if(e===void 0){var l=this[0];return l?a.getRawStyle(l):void 0}return this},removeStyle:function(e){var r=this.cy();if(!r.styleEnabled())return this;var n=!1,i=r.style(),a=this;if(e===void 0)for(var s=0;s0&&e.push(h[0]),e.push(o[0])}return this.spawn(e,!0).filter(t)},"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}});Ma.neighbourhood=Ma.neighborhood;Ma.closedNeighbourhood=Ma.closedNeighborhood;Ma.openNeighbourhood=Ma.openNeighborhood;Kt(Ma,{source:Qo(function(e){var r=this[0],n;return r&&(n=r._private.source||r.cy().collection()),n&&e?n.filter(e):n},"source"),target:Qo(function(e){var r=this[0],n;return r&&(n=r._private.target||r.cy().collection()),n&&e?n.filter(e):n},"target"),sources:Qfe({attr:"source"}),targets:Qfe({attr:"target"})});Kt(Ma,{edgesWith:Qo(Jfe(),"edgesWith"),edgesTo:Qo(Jfe({thisIsSrc:!0}),"edgesTo")});Kt(Ma,{connectedEdges:Qo(function(t){for(var e=[],r=this,n=0;n0);return s},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}});Ma.componentsOf=Ma.components;xa=function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e===void 0){ni("A collection must have a reference to the core");return}var a=new Vc,s=!1;if(!r)r=[];else if(r.length>0&&Dr(r[0])&&!Px(r[0])){s=!0;for(var o=[],l=new Qm,u=0,h=r.length;u0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=r.cy(),i=n._private,a=[],s=[],o,l=0,u=r.length;l0){for(var P=o.length===r.length?r:new xa(n,o),$=0;$0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,r=this,n=[],i={},a=r._private.cy;function s(A){for(var D=A._private.edges,N=0;N0&&(t?R.emitAndNotify("remove"):e&&R.emit("remove"));for(var T=0;Th&&Math.abs(g.v)>h;);return d?function(m){return l[m*(l.length-1)|0]}:u}}(),_n=function(e,r,n,i){var a=Zqe(e,r,n,i);return function(s,o,l){return s+(o-s)*a(l)}},N6={linear:function(e,r,n){return e+(r-e)*n},ease:_n(.25,.1,.25,1),"ease-in":_n(.42,0,1,1),"ease-out":_n(0,0,.58,1),"ease-in-out":_n(.42,0,.58,1),"ease-in-sine":_n(.47,0,.745,.715),"ease-out-sine":_n(.39,.575,.565,1),"ease-in-out-sine":_n(.445,.05,.55,.95),"ease-in-quad":_n(.55,.085,.68,.53),"ease-out-quad":_n(.25,.46,.45,.94),"ease-in-out-quad":_n(.455,.03,.515,.955),"ease-in-cubic":_n(.55,.055,.675,.19),"ease-out-cubic":_n(.215,.61,.355,1),"ease-in-out-cubic":_n(.645,.045,.355,1),"ease-in-quart":_n(.895,.03,.685,.22),"ease-out-quart":_n(.165,.84,.44,1),"ease-in-out-quart":_n(.77,0,.175,1),"ease-in-quint":_n(.755,.05,.855,.06),"ease-out-quint":_n(.23,1,.32,1),"ease-in-out-quint":_n(.86,0,.07,1),"ease-in-expo":_n(.95,.05,.795,.035),"ease-out-expo":_n(.19,1,.22,1),"ease-in-out-expo":_n(1,0,0,1),"ease-in-circ":_n(.6,.04,.98,.335),"ease-out-circ":_n(.075,.82,.165,1),"ease-in-out-circ":_n(.785,.135,.15,.86),spring:function(e,r,n){if(n===0)return N6.linear;var i=Qqe(e,r,n);return function(a,s,o){return a+(s-a)*i(o)}},"cubic-bezier":_n};tYe={animate:Qr.animate(),animation:Qr.animation(),animated:Qr.animated(),clearQueue:Qr.clearQueue(),delay:Qr.delay(),delayAnimation:Qr.delayAnimation(),stop:Qr.stop(),addToAnimationPool:function(e){var r=this;r.styleEnabled()&&r._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,!e.styleEnabled())return;function r(){e._private.animationsRunning&&B6(function(a){nde(a,e),r()})}var n=e.renderer();n&&n.beforeRender?n.beforeRender(function(a,s){nde(s,e)},n.beforeRenderPriorities.animations):r()}},rYe={qualifierCompare:function(e,r){return e==null||r==null?e==null&&r==null:e.sameText(r)},eventMatches:function(e,r,n){var i=r.qualifier;return i!=null?e!==n.target&&Px(n.target)&&i.matches(n.target):!0},addEventFields:function(e,r){r.cy=e,r.target=e},callbackContext:function(e,r,n){return r.qualifier!=null?n.target:e}},E6=function(e){return Wt(e)?new kf(e):e},N0e={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new nE(rYe,this)),this},emitter:function(){return this._private.emitter},on:function(e,r,n){return this.emitter().on(e,E6(r),n),this},removeListener:function(e,r,n){return this.emitter().removeListener(e,E6(r),n),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,r,n){return this.emitter().one(e,E6(r),n),this},once:function(e,r,n){return this.emitter().one(e,E6(r),n),this},emit:function(e,r){return this.emitter().emit(e,r),this},emitAndNotify:function(e,r){return this.emit(e),this.notify(e,r),this}};Qr.eventAliasesOn(N0e);vD={png:function(e){var r=this._private.renderer;return e=e||{},r.png(e)},jpg:function(e){var r=this._private.renderer;return e=e||{},e.bg=e.bg||"#fff",r.jpg(e)}};vD.jpeg=vD.jpg;I6={layout:function(e){var r=this;if(e==null){ni("Layout options must be specified to make a layout");return}if(e.name==null){ni("A `name` must be specified to make a layout");return}var n=e.name,i=r.extension("layout",n);if(i==null){ni("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var a;Wt(e.eles)?a=r.$(e.eles):a=e.eles!=null?e.eles:r.$();var s=new i(Kt({},e,{cy:r,eles:a}));return s}};I6.createLayout=I6.makeLayout=I6.layout;nYe={notify:function(e,r){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var i=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();r!=null&&i.merge(r);return}if(n.notificationsEnabled){var a=this.renderer();this.destroyed()||!a||a.notify(e,r)}},notifications:function(e){var r=this._private;return e===void 0?r.notificationsEnabled:(r.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return e.batchCount==null&&(e.batchCount=0),e.batchCount===0&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(e.batchCount===0)return this;if(e.batchCount--,e.batchCount===0){e.batchStyleEles.updateStyle();var r=this.renderer();Object.keys(e.batchNotifications).forEach(function(n){var i=e.batchNotifications[n];i.empty()?r.notify(n):r.notify(n,i)})}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var r=this;return this.batch(function(){for(var n=Object.keys(e),i=0;i0;)r.removeChild(r.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach(function(n){var i=n._private;i.rscratch={},i.rstyle={},i.animation.current=[],i.animation.queue=[]})},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};yD.invalidateDimensions=yD.resize;M6={collection:function(e,r){return Wt(e)?this.$(e):co(e)?e.collection():vn(e)?(r||(r={}),new xa(this,e,r.unique,r.removed)):new xa(this)},nodes:function(e){var r=this.$(function(n){return n.isNode()});return e?r.filter(e):r},edges:function(e){var r=this.$(function(n){return n.isEdge()});return e?r.filter(e):r},$:function(e){var r=this._private.elements;return e?r.filter(e):r.spawnSelf()},mutableElements:function(){return this._private.elements}};M6.elements=M6.filter=M6.$;Oa={},kx="t",aYe="f";Oa.apply=function(t){for(var e=this,r=e._private,n=r.cy,i=n.collection(),a=0;a0;if(d||f&&p){var g=void 0;d&&p||d?g=u.properties:p&&(g=u.mappedProperties);for(var m=0;m1&&(_=1),o.color){var E=n.valueMin[0],L=n.valueMax[0],S=n.valueMin[1],C=n.valueMax[1],M=n.valueMin[2],R=n.valueMax[2],T=n.valueMin[3]==null?1:n.valueMin[3],I=n.valueMax[3]==null?1:n.valueMax[3],A=[Math.round(E+(L-E)*_),Math.round(S+(C-S)*_),Math.round(M+(R-M)*_),Math.round(T+(I-T)*_)];a={bypass:n.bypass,name:n.name,value:A,strValue:"rgb("+A[0]+", "+A[1]+", "+A[2]+")"}}else if(o.number){var D=n.valueMin+(n.valueMax-n.valueMin)*_;a=this.parse(n.name,D,n.bypass,d)}else return!1;if(!a)return m(),!1;a.mapping=n,n=a;break}case s.data:{for(var N=n.field.split("."),O=f.data,B=0;B0&&a>0){for(var o={},l=!1,u=0;u0?t.delayAnimation(s).play().promise().then(w):w()}).then(function(){return t.animation({style:o,duration:a,easing:t.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){r.removeBypasses(t,i),t.emitAndNotify("style"),n.transitioning=!1})}else n.transitioning&&(this.removeBypasses(t,i),t.emitAndNotify("style"),n.transitioning=!1)};Oa.checkTrigger=function(t,e,r,n,i,a){var s=this.properties[e],o=i(s);o!=null&&o(r,n)&&a(s)};Oa.checkZOrderTrigger=function(t,e,r,n){var i=this;this.checkTrigger(t,e,r,n,function(a){return a.triggersZOrder},function(){i._private.cy.notify("zorder",t)})};Oa.checkBoundsTrigger=function(t,e,r,n){this.checkTrigger(t,e,r,n,function(i){return i.triggersBounds},function(i){t.dirtyCompoundBoundsCache(),t.dirtyBoundingBoxCache(),i.triggersBoundsOfParallelBeziers&&e==="curve-style"&&(r==="bezier"||n==="bezier")&&t.parallelEdges().forEach(function(a){a.isBundledBezier()&&a.dirtyBoundingBoxCache()}),i.triggersBoundsOfConnectedEdges&&e==="display"&&(r==="none"||n==="none")&&t.connectedEdges().forEach(function(a){a.dirtyBoundingBoxCache()})})};Oa.checkTriggers=function(t,e,r,n){t.dirtyStyleCache(),this.checkZOrderTrigger(t,e,r,n),this.checkBoundsTrigger(t,e,r,n)};$x={};$x.applyBypass=function(t,e,r,n){var i=this,a=[],s=!0;if(e==="*"||e==="**"){if(r!==void 0)for(var o=0;oi.length?n=n.substr(i.length):n=""}function l(){a.length>s.length?a=a.substr(s.length):a=""}for(;;){var u=n.match(/^\s*$/);if(u)break;var h=n.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!h){Jr("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+n);break}i=h[0];var f=h[1];if(f!=="core"){var d=new kf(f);if(d.invalid){Jr("Skipping parsing of block: Invalid selector found in string stylesheet: "+f),o();continue}}var p=h[2],g=!1;a=p;for(var m=[];;){var y=a.match(/^\s*$/);if(y)break;var x=a.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!x){Jr("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+p),g=!0;break}s=x[0];var b=x[1],w=x[2],_=e.properties[b];if(!_){Jr("Skipping property: Invalid property name in: "+s),l();continue}var k=r.parse(b,w);if(!k){Jr("Skipping property: Invalid property definition in: "+s),l();continue}m.push({name:b,val:w}),l()}if(g){o();break}r.selector(f);for(var E=0;E=7&&e[0]==="d"&&(h=new RegExp(o.data.regex).exec(e))){if(r)return!1;var d=o.data;return{name:t,value:h,strValue:""+e,mapped:d,field:h[1],bypass:r}}else if(e.length>=10&&e[0]==="m"&&(f=new RegExp(o.mapData.regex).exec(e))){if(r||u.multiple)return!1;var p=o.mapData;if(!(u.color||u.number))return!1;var g=this.parse(t,f[4]);if(!g||g.mapped)return!1;var m=this.parse(t,f[5]);if(!m||m.mapped)return!1;if(g.pfValue===m.pfValue||g.strValue===m.strValue)return Jr("`"+t+": "+e+"` is not a valid mapper because the output range is zero; converting to `"+t+": "+g.strValue+"`"),this.parse(t,g.strValue);if(u.color){var y=g.value,x=m.value,b=y[0]===x[0]&&y[1]===x[1]&&y[2]===x[2]&&(y[3]===x[3]||(y[3]==null||y[3]===1)&&(x[3]==null||x[3]===1));if(b)return!1}return{name:t,value:f,strValue:""+e,mapped:p,field:f[1],fieldMin:parseFloat(f[2]),fieldMax:parseFloat(f[3]),valueMin:g.value,valueMax:m.value,bypass:r}}}if(u.multiple&&n!=="multiple"){var w;if(l?w=e.split(/\s+/):vn(e)?w=e:w=[e],u.evenMultiple&&w.length%2!==0)return null;for(var _=[],k=[],E=[],L="",S=!1,C=0;C0?" ":"")+M.strValue}return u.validate&&!u.validate(_,k)?null:u.singleEnum&&S?_.length===1&&Wt(_[0])?{name:t,value:_[0],strValue:_[0],bypass:r}:null:{name:t,value:_,pfValue:E,strValue:L,bypass:r,units:k}}var R=function(){for(var W=0;Wu.max||u.strictMax&&e===u.max))return null;var N={name:t,value:e,strValue:""+e+(T||""),units:T,bypass:r};return u.unitless||T!=="px"&&T!=="em"?N.pfValue=e:N.pfValue=T==="px"||!T?e:this.getEmSizeInPixels()*e,(T==="ms"||T==="s")&&(N.pfValue=T==="ms"?e:1e3*e),(T==="deg"||T==="rad")&&(N.pfValue=T==="rad"?e:$Ue(e)),T==="%"&&(N.pfValue=e/100),N}else if(u.propList){var O=[],B=""+e;if(B!=="none"){for(var P=B.split(/\s*,\s*|\s+/),$=0;$0&&o>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0){l=Math.min((s-2*r)/n.w,(o-2*r)/n.h),l=l>this._private.maxZoom?this._private.maxZoom:l,l=l=n.minZoom&&(n.maxZoom=r),this},minZoom:function(e){return e===void 0?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return e===void 0?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var r=this._private,n=r.pan,i=r.zoom,a,s,o=!1;if(r.zoomingEnabled||(o=!0),dt(e)?s=e:Dr(e)&&(s=e.level,e.position!=null?a=Z6(e.position,i,n):e.renderedPosition!=null&&(a=e.renderedPosition),a!=null&&!r.panningEnabled&&(o=!0)),s=s>r.maxZoom?r.maxZoom:s,s=sr.maxZoom||!r.zoomingEnabled?s=!0:(r.zoom=l,a.push("zoom"))}if(i&&(!s||!e.cancelOnFailedZoom)&&r.panningEnabled){var u=e.pan;dt(u.x)&&(r.pan.x=u.x,o=!1),dt(u.y)&&(r.pan.y=u.y,o=!1),o||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},center:function(e){var r=this.getCenterPan(e);return r&&(this._private.pan=r,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,r){if(this._private.panningEnabled){if(Wt(e)){var n=e;e=this.mutableElements().filter(n)}else co(e)||(e=this.mutableElements());if(e.length!==0){var i=e.boundingBox(),a=this.width(),s=this.height();r=r===void 0?this._private.zoom:r;var o={x:(a-r*(i.x1+i.x2))/2,y:(s-r*(i.y1+i.y2))/2};return o}}},reset:function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e=this._private,r=e.container,n=this;return e.sizeCache=e.sizeCache||(r?function(){var i=n.window().getComputedStyle(r),a=function(o){return parseFloat(i.getPropertyValue(o))};return{width:r.clientWidth-a("padding-left")-a("padding-right"),height:r.clientHeight-a("padding-top")-a("padding-bottom")}}():{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,r=this._private.zoom,n=this.renderedExtent(),i={x1:(n.x1-e.x)/r,x2:(n.x2-e.x)/r,y1:(n.y1-e.y)/r,y2:(n.y2-e.y)/r};return i.w=i.x2-i.x1,i.h=i.y2-i.y1,i},renderedExtent:function(){var e=this.width(),r=this.height();return{x1:0,y1:0,x2:e,y2:r,w:e,h:r}},multiClickDebounceTime:function(e){if(e)this._private.multiClickDebounceTime=e;else return this._private.multiClickDebounceTime;return this}};B0.centre=B0.center;B0.autolockNodes=B0.autolock;B0.autoungrabifyNodes=B0.autoungrabify;Mx={data:Qr.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:Qr.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:Qr.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Qr.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Mx.attr=Mx.data;Mx.removeAttr=Mx.removeData;Dx=function(e){var r=this;e=Kt({},e);var n=e.container;n&&!P6(n)&&P6(n[0])&&(n=n[0]);var i=n?n._cyreg:null;i=i||{},i&&i.cy&&(i.cy.destroy(),i={});var a=i.readies=i.readies||[];n&&(n._cyreg=i),i.cy=r;var s=Mi!==void 0&&n!==void 0&&!e.headless,o=e;o.layout=Kt({name:s?"grid":"null"},o.layout),o.renderer=Kt({name:s?"canvas":"null"},o.renderer);var l=function(g,m,y){return m!==void 0?m:y!==void 0?y:g},u=this._private={container:n,ready:!1,options:o,elements:new xa(this),listeners:[],aniEles:new xa(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:l(!0,o.zoomingEnabled),userZoomingEnabled:l(!0,o.userZoomingEnabled),panningEnabled:l(!0,o.panningEnabled),userPanningEnabled:l(!0,o.userPanningEnabled),boxSelectionEnabled:l(!0,o.boxSelectionEnabled),autolock:l(!1,o.autolock,o.autolockNodes),autoungrabify:l(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:l(!1,o.autounselectify),styleEnabled:o.styleEnabled===void 0?s:o.styleEnabled,zoom:dt(o.zoom)?o.zoom:1,pan:{x:Dr(o.pan)&&dt(o.pan.x)?o.pan.x:0,y:Dr(o.pan)&&dt(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:l(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});var h=function(g,m){var y=g.some(uGe);if(y)return Jm.all(g).then(m);m(g)};u.styleEnabled&&r.setStyle([]);var f=Kt({},o,o.renderer);r.initRenderer(f);var d=function(g,m,y){r.notifications(!1);var x=r.mutableElements();x.length>0&&x.remove(),g!=null&&(Dr(g)||vn(g))&&r.add(g),r.one("layoutready",function(w){r.notifications(!0),r.emit(w),r.one("load",m),r.emitAndNotify("load")}).one("layoutstop",function(){r.one("done",y),r.emit("done")});var b=Kt({},r._private.options.layout);b.eles=r.elements(),r.layout(b).run()};h([o.style,o.elements],function(p){var g=p[0],m=p[1];u.styleEnabled&&r.style().append(g),d(m,function(){r.startAnimationLoop(),u.ready=!0,jn(o.ready)&&r.on("ready",o.ready);for(var y=0;y0,l=Fs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),u;if(co(e.roots))u=e.roots;else if(vn(e.roots)){for(var h=[],f=0;f0;){var D=A(),N=M(D,T);if(N)D.outgoers().filter(function(ue){return ue.isNode()&&n.has(ue)}).forEach(I);else if(N===null){Jr("Detected double maximal shift for node `"+D.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}C();var O=0;if(e.avoidOverlap)for(var B=0;B0&&x[0].length<=3?De/2:0),Pe=2*Math.PI/x[ae].length*we;return ae===0&&x[0].length===1&&(Re=1),{x:Z.x+Re*Math.cos(Pe),y:Z.y+Re*Math.sin(Pe)}}else{var We={x:Z.x+(we+1-(Ie+1)/2)*Ee,y:(ae+1)*Oe};return We}};return n.nodes().layoutPositions(this,e,ce),this};uYe={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};M0e.prototype.run=function(){var t=this.options,e=t,r=t.cy,n=e.eles,i=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,a=n.nodes().not(":parent");e.sort&&(a=a.sort(e.sort));for(var s=Fs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),o={x:s.x1+s.w/2,y:s.y1+s.h/2},l=e.sweep===void 0?2*Math.PI-2*Math.PI/a.length:e.sweep,u=l/Math.max(1,a.length-1),h,f=0,d=0;d1&&e.avoidOverlap){f*=1.75;var x=Math.cos(u)-Math.cos(0),b=Math.sin(u)-Math.sin(0),w=Math.sqrt(f*f/(x*x+b*b));h=Math.max(w,h)}var _=function(E,L){var S=e.startAngle+L*u*(i?1:-1),C=h*Math.cos(S),M=h*Math.sin(S),R={x:o.x+C,y:o.y+M};return R};return n.nodes().layoutPositions(this,e,_),this};hYe={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};D0e.prototype.run=function(){for(var t=this.options,e=t,r=e.counterclockwise!==void 0?!e.counterclockwise:e.clockwise,n=t.cy,i=e.eles,a=i.nodes().not(":parent"),s=Fs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),o={x:s.x1+s.w/2,y:s.y1+s.h/2},l=[],u=0,h=0;h0){var k=Math.abs(b[0].value-_.value);k>=y&&(b=[],x.push(b))}b.push(_)}var E=u+e.minNodeSpacing;if(!e.avoidOverlap){var L=x.length>0&&x[0].length>1,S=Math.min(s.w,s.h)/2-E,C=S/(x.length+L?1:0);E=Math.min(E,C)}for(var M=0,R=0;R1&&e.avoidOverlap){var D=Math.cos(A)-Math.cos(0),N=Math.sin(A)-Math.sin(0),O=Math.sqrt(E*E/(D*D+N*N));M=Math.max(O,M)}T.r=M,M+=E}if(e.equidistant){for(var B=0,P=0,$=0;$=t.numIter||(xYe(n,t),n.temperature=n.temperature*t.coolingFactor,n.temperature=t.animationThreshold&&a(),B6(f)}};h()}else{for(;u;)u=s(l),l++;sde(n,t),o()}return this};lE.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this};lE.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};dYe=function(e,r,n){for(var i=n.eles.edges(),a=n.eles.nodes(),s=Fs(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),o={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:i.size(),temperature:n.initialTemp,clientWidth:s.w,clientHeight:s.h,boundingBox:s},l=n.eles.components(),u={},h=0;h0){o.graphSet.push(S);for(var h=0;hi.count?0:i.graph},gYe=function t(e,r,n,i){var a=i.graphSet[n];if(-10)var f=i.nodeOverlap*h,d=Math.sqrt(o*o+l*l),p=f*o/d,g=f*l/d;else var m=W6(e,o,l),y=W6(r,-1*o,-1*l),x=y.x-m.x,b=y.y-m.y,w=x*x+b*b,d=Math.sqrt(w),f=(e.nodeRepulsion+r.nodeRepulsion)/w,p=f*x/d,g=f*b/d;e.isLocked||(e.offsetX-=p,e.offsetY-=g),r.isLocked||(r.offsetX+=p,r.offsetY+=g)}},kYe=function(e,r,n,i){if(n>0)var a=e.maxX-r.minX;else var a=r.maxX-e.minX;if(i>0)var s=e.maxY-r.minY;else var s=r.maxY-e.minY;return a>=0&&s>=0?Math.sqrt(a*a+s*s):0},W6=function(e,r,n){var i=e.positionX,a=e.positionY,s=e.height||1,o=e.width||1,l=n/r,u=s/o,h={};return r===0&&0n?(h.x=i,h.y=a+s/2,h):0r&&-1*u<=l&&l<=u?(h.x=i-o/2,h.y=a-o*n/2/r,h):0=u)?(h.x=i+s*r/2/n,h.y=a+s/2,h):(0>n&&(l<=-1*u||l>=u)&&(h.x=i-s*r/2/n,h.y=a-s/2),h)},TYe=function(e,r){for(var n=0;nn){var y=r.gravity*p/m,x=r.gravity*g/m;d.offsetX+=y,d.offsetY+=x}}}}},SYe=function(e,r){var n=[],i=0,a=-1;for(n.push.apply(n,e.graphSet[0]),a+=e.graphSet[0].length;i<=a;){var s=n[i++],o=e.idToIndex[s],l=e.layoutNodes[o],u=l.children;if(0n)var a={x:n*e/i,y:n*r/i};else var a={x:e,y:r};return a},_Ye=function t(e,r){var n=e.parentId;if(n!=null){var i=r.layoutNodes[r.idToIndex[n]],a=!1;if((i.maxX==null||e.maxX+i.padRight>i.maxX)&&(i.maxX=e.maxX+i.padRight,a=!0),(i.minX==null||e.minX-i.padLefti.maxY)&&(i.maxY=e.maxY+i.padBottom,a=!0),(i.minY==null||e.minY-i.padTopx&&(g+=y+r.componentSpacing,p=0,m=0,y=0)}}},LYe={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,r){return!0},ready:void 0,stop:void 0,transform:function(e,r){return r}};P0e.prototype.run=function(){var t=this.options,e=t,r=t.cy,n=e.eles,i=n.nodes().not(":parent");e.sort&&(i=i.sort(e.sort));var a=Fs(e.boundingBox?e.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(a.h===0||a.w===0)n.nodes().layoutPositions(this,e,function(J){return{x:a.x1,y:a.y1}});else{var s=i.size(),o=Math.sqrt(s*a.h/a.w),l=Math.round(o),u=Math.round(a.w/a.h*o),h=function(X){if(X==null)return Math.min(l,u);var oe=Math.min(l,u);oe==l?l=X:u=X},f=function(X){if(X==null)return Math.max(l,u);var oe=Math.max(l,u);oe==l?l=X:u=X},d=e.rows,p=e.cols!=null?e.cols:e.columns;if(d!=null&&p!=null)l=d,u=p;else if(d!=null&&p==null)l=d,u=Math.ceil(s/l);else if(d==null&&p!=null)u=p,l=Math.ceil(s/u);else if(u*l>s){var g=h(),m=f();(g-1)*m>=s?h(g-1):(m-1)*g>=s&&f(m-1)}else for(;u*l=s?f(x+1):h(y+1)}var b=a.w/u,w=a.h/l;if(e.condense&&(b=0,w=0),e.avoidOverlap)for(var _=0;_=u&&(D=0,A++)},O={},B=0;B(D=JUe(t,e,N[O],N[O+1],N[O+2],N[O+3])))return y(L,D),!0}else if(C.edgeType==="bezier"||C.edgeType==="multibezier"||C.edgeType==="self"||C.edgeType==="compound"){for(var N=C.allpts,O=0;O+5(D=QUe(t,e,N[O],N[O+1],N[O+2],N[O+3],N[O+4],N[O+5])))return y(L,D),!0}for(var B=B||S.source,P=P||S.target,$=i.getArrowWidth(M,R),z=[{name:"source",x:C.arrowStartX,y:C.arrowStartY,angle:C.srcArrowAngle},{name:"target",x:C.arrowEndX,y:C.arrowEndY,angle:C.tgtArrowAngle},{name:"mid-source",x:C.midX,y:C.midY,angle:C.midsrcArrowAngle},{name:"mid-target",x:C.midX,y:C.midY,angle:C.midtgtArrowAngle}],O=0;O0&&(x(B),x(P))}function w(L,S,C){return Bl(L,S,C)}function _(L,S){var C=L._private,M=d,R;S?R=S+"-":R="",L.boundingBox();var T=C.labelBounds[S||"main"],I=L.pstyle(R+"label").value,A=L.pstyle("text-events").strValue==="yes";if(!(!A||!I)){var D=w(C.rscratch,"labelX",S),N=w(C.rscratch,"labelY",S),O=w(C.rscratch,"labelAngle",S),B=L.pstyle(R+"text-margin-x").pfValue,P=L.pstyle(R+"text-margin-y").pfValue,$=T.x1-M-B,z=T.x2+M-B,H=T.y1-M-P,J=T.y2+M-P;if(O){var X=Math.cos(O),oe=Math.sin(O),K=function(ce,ue){return ce=ce-D,ue=ue-N,{x:ce*X-ue*oe+D,y:ce*oe+ue*X+N}},ee=K($,H),Q=K($,J),W=K(z,H),Y=K(z,J),Z=[ee.x+B,ee.y+P,W.x+B,W.y+P,Y.x+B,Y.y+P,Q.x+B,Q.y+P];if(Bs(t,e,Z))return y(L),!0}else if(jm(T,t,e))return y(L),!0}}for(var k=s.length-1;k>=0;k--){var E=s[k];E.isNode()?x(E)||_(E):b(E)||_(E)||_(E,"source")||_(E,"target")}return o};z0.getAllInBox=function(t,e,r,n){var i=this.getCachedZSortedEles().interactive,a=[],s=Math.min(t,r),o=Math.max(t,r),l=Math.min(e,n),u=Math.max(e,n);t=s,r=o,e=l,n=u;for(var h=Fs({x1:t,y1:e,x2:r,y2:n}),f=0;f0?-(Math.PI-e.ang):Math.PI+e.ang},OYe=function(e,r,n,i,a){if(e!==hde?fde(r,e,Gc):DYe(Ko,Gc),fde(r,n,Ko),cde=Gc.nx*Ko.ny-Gc.ny*Ko.nx,ude=Gc.nx*Ko.nx-Gc.ny*-Ko.ny,Zu=Math.asin(Math.max(-1,Math.min(1,cde))),Math.abs(Zu)<1e-6){xD=r.x,bD=r.y,L0=$m=0;return}R0=1,D6=!1,ude<0?Zu<0?Zu=Math.PI+Zu:(Zu=Math.PI-Zu,R0=-1,D6=!0):Zu>0&&(R0=-1,D6=!0),r.radius!==void 0?$m=r.radius:$m=i,S0=Zu/2,S6=Math.min(Gc.len/2,Ko.len/2),a?($c=Math.abs(Math.cos(S0)*$m/Math.sin(S0)),$c>S6?($c=S6,L0=Math.abs($c*Math.sin(S0)/Math.cos(S0))):L0=$m):($c=Math.min(S6,$m),L0=Math.abs($c*Math.sin(S0)/Math.cos(S0))),wD=r.x+Ko.nx*$c,kD=r.y+Ko.ny*$c,xD=wD-Ko.ny*L0*R0,bD=kD+Ko.nx*L0*R0,$0e=r.x+Gc.nx*$c,G0e=r.y+Gc.ny*$c,hde=r};Pa={};Pa.findMidptPtsEtc=function(t,e){var r=e.posPts,n=e.intersectionPts,i=e.vectorNormInverse,a,s=t.pstyle("source-endpoint"),o=t.pstyle("target-endpoint"),l=s.units!=null&&o.units!=null,u=function(k,E,L,S){var C=S-E,M=L-k,R=Math.sqrt(M*M+C*C);return{x:-C/R,y:M/R}},h=t.pstyle("edge-distances").value;switch(h){case"node-position":a=r;break;case"intersection":a=n;break;case"endpoints":{if(l){var f=this.manualEndptToPx(t.source()[0],s),d=Ol(f,2),p=d[0],g=d[1],m=this.manualEndptToPx(t.target()[0],o),y=Ol(m,2),x=y[0],b=y[1],w={x1:p,y1:g,x2:x,y2:b};i=u(p,g,x,b),a=w}else Jr("Edge ".concat(t.id()," has edge-distances:endpoints specified without manual endpoints specified via source-endpoint and target-endpoint. Falling back on edge-distances:intersection (default).")),a=n;break}}return{midptPts:a,vectorNormInverse:i}};Pa.findHaystackPoints=function(t){for(var e=0;e0?Math.max(j-ye,0):Math.min(j+ye,0)},I=T(M,S),A=T(R,C),D=!1;b===u?x=Math.abs(I)>Math.abs(A)?i:n:b===l||b===o?(x=n,D=!0):(b===a||b===s)&&(x=i,D=!0);var N=x===n,O=N?A:I,B=N?R:M,P=qde(B),$=!1;!(D&&(_||E))&&(b===o&&B<0||b===l&&B>0||b===a&&B>0||b===s&&B<0)&&(P*=-1,O=P*Math.abs(O),$=!0);var z;if(_){var H=k<0?1+k:k;z=H*O}else{var J=k<0?O:0;z=J+k*P}var X=function(j){return Math.abs(j)=Math.abs(O)},oe=X(z),K=X(Math.abs(O)-Math.abs(z)),ee=oe||K;if(ee&&!$)if(N){var Q=Math.abs(B)<=d/2,W=Math.abs(M)<=p/2;if(Q){var Y=(h.x1+h.x2)/2,Z=h.y1,se=h.y2;r.segpts=[Y,Z,Y,se]}else if(W){var ce=(h.y1+h.y2)/2,ue=h.x1,te=h.x2;r.segpts=[ue,ce,te,ce]}else r.segpts=[h.x1,h.y2]}else{var Ne=Math.abs(B)<=f/2,ae=Math.abs(R)<=g/2;if(Ne){var we=(h.y1+h.y2)/2,Ie=h.x1,Ee=h.x2;r.segpts=[Ie,we,Ee,we]}else if(ae){var Oe=(h.x1+h.x2)/2,De=h.y1,We=h.y2;r.segpts=[Oe,De,Oe,We]}else r.segpts=[h.x2,h.y1]}else if(N){var Re=h.y1+z+(y?d/2*P:0),Pe=h.x1,xe=h.x2;r.segpts=[Pe,Re,xe,Re]}else{var q=h.x1+z+(y?f/2*P:0),de=h.y1,ie=h.y2;r.segpts=[q,de,q,ie]}if(r.isRound){var he=t.pstyle("taxi-radius").value,U=t.pstyle("radius-type").value[0]==="arc-radius";r.radii=new Array(r.segpts.length/2).fill(he),r.isArcRadius=new Array(r.segpts.length/2).fill(U)}};Pa.tryToCorrectInvalidPoints=function(t,e){var r=t._private.rscratch;if(r.edgeType==="bezier"){var n=e.srcPos,i=e.tgtPos,a=e.srcW,s=e.srcH,o=e.tgtW,l=e.tgtH,u=e.srcShape,h=e.tgtShape,f=e.srcCornerRadius,d=e.tgtCornerRadius,p=e.srcRs,g=e.tgtRs,m=!dt(r.startX)||!dt(r.startY),y=!dt(r.arrowStartX)||!dt(r.arrowStartY),x=!dt(r.endX)||!dt(r.endY),b=!dt(r.arrowEndX)||!dt(r.arrowEndY),w=3,_=this.getArrowWidth(t.pstyle("width").pfValue,t.pstyle("arrow-scale").value)*this.arrowShapeWidth,k=w*_,E=D0({x:r.ctrlpts[0],y:r.ctrlpts[1]},{x:r.startX,y:r.startY}),L=EA.poolIndex()){var D=I;I=A,A=D}var N=C.srcPos=I.position(),O=C.tgtPos=A.position(),B=C.srcW=I.outerWidth(),P=C.srcH=I.outerHeight(),$=C.tgtW=A.outerWidth(),z=C.tgtH=A.outerHeight(),H=C.srcShape=r.nodeShapes[e.getNodeShape(I)],J=C.tgtShape=r.nodeShapes[e.getNodeShape(A)],X=C.srcCornerRadius=I.pstyle("corner-radius").value==="auto"?"auto":I.pstyle("corner-radius").pfValue,oe=C.tgtCornerRadius=A.pstyle("corner-radius").value==="auto"?"auto":A.pstyle("corner-radius").pfValue,K=C.tgtRs=A._private.rscratch,ee=C.srcRs=I._private.rscratch;C.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var Q=0;Q0){var se=a,ce=A0(se,Um(r)),ue=A0(se,Um(Z)),te=ce;if(ue2){var Ne=A0(se,{x:Z[2],y:Z[3]});Ne0){var ie=s,he=A0(ie,Um(r)),U=A0(ie,Um(de)),ke=he;if(U2){var j=A0(ie,{x:de[2],y:de[3]});j=g||L){y={cp:_,segment:E};break}}if(y)break}var S=y.cp,C=y.segment,M=(g-x)/C.length,R=C.t1-C.t0,T=p?C.t0+R*M:C.t1-R*M;T=_x(0,T,1),e=Wm(S.p0,S.p1,S.p2,T),d=BYe(S.p0,S.p1,S.p2,T);break}case"straight":case"segments":case"haystack":{for(var I=0,A,D,N,O,B=n.allpts.length,P=0;P+3=g));P+=2);var $=g-D,z=$/A;z=_x(0,z,1),e=UUe(N,O,z),d=H0e(N,O);break}}s("labelX",f,e.x),s("labelY",f,e.y),s("labelAutoAngle",f,d)}};u("source"),u("target"),this.applyLabelDimensions(t)}};Hc.applyLabelDimensions=function(t){this.applyPrefixedLabelDimensions(t),t.isEdge()&&(this.applyPrefixedLabelDimensions(t,"source"),this.applyPrefixedLabelDimensions(t,"target"))};Hc.applyPrefixedLabelDimensions=function(t,e){var r=t._private,n=this.getLabelText(t,e),i=this.calculateLabelDimensions(t,n),a=t.pstyle("line-height").pfValue,s=t.pstyle("text-wrap").strValue,o=Bl(r.rscratch,"labelWrapCachedLines",e)||[],l=s!=="wrap"?1:Math.max(o.length,1),u=i.height/l,h=u*a,f=i.width,d=i.height+(l-1)*(a-1)*u;mf(r.rstyle,"labelWidth",e,f),mf(r.rscratch,"labelWidth",e,f),mf(r.rstyle,"labelHeight",e,d),mf(r.rscratch,"labelHeight",e,d),mf(r.rscratch,"labelLineHeight",e,h)};Hc.getLabelText=function(t,e){var r=t._private,n=e?e+"-":"",i=t.pstyle(n+"label").strValue,a=t.pstyle("text-transform").value,s=function(J,X){return X?(mf(r.rscratch,J,e,X),X):Bl(r.rscratch,J,e)};if(!i)return"";a=="none"||(a=="uppercase"?i=i.toUpperCase():a=="lowercase"&&(i=i.toLowerCase()));var o=t.pstyle("text-wrap").value;if(o==="wrap"){var l=s("labelKey");if(l!=null&&s("labelWrapKey")===l)return s("labelWrapCachedText");for(var u="\u200B",h=i.split(` `),f=t.pstyle("text-max-width").pfValue,d=t.pstyle("text-overflow-wrap").value,p=d==="anywhere",g=[],m=/[\s\u200b]+|$/g,y=0;yf){var k=x.matchAll(m),E="",L=0,S=Ade(k),C;try{for(S.s();!(C=S.n()).done;){var M=C.value,R=M[0],T=x.substring(L,M.index);L=M.index+R.length;var I=E.length===0?T:E+T+R,A=this.calculateLabelDimensions(t,I),D=A.width;D<=f?E+=T+R:(E&&g.push(E),E=T+R)}}catch(H){S.e(H)}finally{S.f()}E.match(/^[\s\u200b]+$/)||g.push(E)}else g.push(x)}s("labelWrapCachedLines",g),i=s("labelWrapCachedText",g.join(` `)),s("labelWrapKey",l)}else if(o==="ellipsis"){var N=t.pstyle("text-max-width").pfValue,O="",B="\u2026",P=!1;if(this.calculateLabelDimensions(t,i).widthN)break;O+=i[$],$===i.length-1&&(P=!0)}return P||(O+=B),O}return i};Hc.getLabelJustification=function(t){var e=t.pstyle("text-justification").strValue,r=t.pstyle("text-halign").strValue;if(e==="auto")if(t.isNode())switch(r){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return e};Hc.calculateLabelDimensions=function(t,e){var r=this,n=r.cy.window(),i=n.document,a=M0(e,t._private.labelDimsKey),s=r.labelDimCache||(r.labelDimCache=[]),o=s[a];if(o!=null)return o;var l=0,u=t.pstyle("font-style").strValue,h=t.pstyle("font-size").pfValue,f=t.pstyle("font-family").strValue,d=t.pstyle("font-weight").strValue,p=this.labelCalcCanvas,g=this.labelCalcCanvasContext;if(!p){p=this.labelCalcCanvas=i.createElement("canvas"),g=this.labelCalcCanvasContext=p.getContext("2d");var m=p.style;m.position="absolute",m.left="-9999px",m.top="-9999px",m.zIndex="-1",m.visibility="hidden",m.pointerEvents="none"}g.font="".concat(u," ").concat(d," ").concat(h,"px ").concat(f);for(var y=0,x=0,b=e.split(` `),w=0;w1&&arguments[1]!==void 0?arguments[1]:!0;if(e.merge(s),o)for(var l=0;l=t.desktopTapThreshold2}var Ke=a(q);lt&&(t.hoverData.tapholdCancelled=!0);var it=function(){var Qt=t.hoverData.dragDelta=t.hoverData.dragDelta||[];Qt.length===0?(Qt.push(Ce[0]),Qt.push(Ce[1])):(Qt[0]+=Ce[0],Qt[1]+=Ce[1])};ie=!0,i(Fe,["mousemove","vmousemove","tapdrag"],q,{x:j[0],y:j[1]});var mt=function(){t.data.bgActivePosistion=void 0,t.hoverData.selecting||he.emit({originalEvent:q,type:"boxstart",position:{x:j[0],y:j[1]}}),Ge[4]=1,t.hoverData.selecting=!0,t.redrawHint("select",!0),t.redraw()};if(t.hoverData.which===3){if(lt){var Ht={originalEvent:q,type:"cxtdrag",position:{x:j[0],y:j[1]}};$e?$e.emit(Ht):he.emit(Ht),t.hoverData.cxtDragged=!0,(!t.hoverData.cxtOver||Fe!==t.hoverData.cxtOver)&&(t.hoverData.cxtOver&&t.hoverData.cxtOver.emit({originalEvent:q,type:"cxtdragout",position:{x:j[0],y:j[1]}}),t.hoverData.cxtOver=Fe,Fe&&Fe.emit({originalEvent:q,type:"cxtdragover",position:{x:j[0],y:j[1]}}))}}else if(t.hoverData.dragging){if(ie=!0,he.panningEnabled()&&he.userPanningEnabled()){var ot;if(t.hoverData.justStartedPan){var et=t.hoverData.mdownPos;ot={x:(j[0]-et[0])*U,y:(j[1]-et[1])*U},t.hoverData.justStartedPan=!1}else ot={x:Ce[0]*U,y:Ce[1]*U};he.panBy(ot),he.emit("dragpan"),t.hoverData.dragged=!0}j=t.projectIntoViewport(q.clientX,q.clientY)}else if(Ge[4]==1&&($e==null||$e.pannable())){if(lt){if(!t.hoverData.dragging&&he.boxSelectionEnabled()&&(Ke||!he.panningEnabled()||!he.userPanningEnabled()))mt();else if(!t.hoverData.selecting&&he.panningEnabled()&&he.userPanningEnabled()){var ht=s($e,t.hoverData.downs);ht&&(t.hoverData.dragging=!0,t.hoverData.justStartedPan=!0,Ge[4]=0,t.data.bgActivePosistion=Um(ye),t.redrawHint("select",!0),t.redraw())}$e&&$e.pannable()&&$e.active()&&$e.unactivate()}}else{if($e&&$e.pannable()&&$e.active()&&$e.unactivate(),(!$e||!$e.grabbed())&&Fe!=ge&&(ge&&i(ge,["mouseout","tapdragout"],q,{x:j[0],y:j[1]}),Fe&&i(Fe,["mouseover","tapdragover"],q,{x:j[0],y:j[1]}),t.hoverData.last=Fe),$e)if(lt){if(he.boxSelectionEnabled()&&Ke)$e&&$e.grabbed()&&(x(qe),$e.emit("freeon"),qe.emit("free"),t.dragData.didDrag&&($e.emit("dragfreeon"),qe.emit("dragfree"))),mt();else if($e&&$e.grabbed()&&t.nodeIsDraggable($e)){var bt=!t.dragData.didDrag;bt&&t.redrawHint("eles",!0),t.dragData.didDrag=!0,t.hoverData.draggingEles||m(qe,{inDragLayer:!0});var tt={x:0,y:0};if(dt(Ce[0])&&dt(Ce[1])&&(tt.x+=Ce[0],tt.y+=Ce[1],bt)){var _t=t.hoverData.dragDelta;_t&&dt(_t[0])&&dt(_t[1])&&(tt.x+=_t[0],tt.y+=_t[1])}t.hoverData.draggingEles=!0,qe.silentShift(tt).emit("position drag"),t.redrawHint("drag",!0),t.redraw()}}else it();ie=!0}if(Ge[2]=j[0],Ge[3]=j[1],ie)return q.stopPropagation&&q.stopPropagation(),q.preventDefault&&q.preventDefault(),!1}},!1);var T,I,A;t.registerBinding(e,"mouseup",function(q){if(!(t.hoverData.which===1&&q.which!==1&&t.hoverData.capture)){var de=t.hoverData.capture;if(de){t.hoverData.capture=!1;var ie=t.cy,he=t.projectIntoViewport(q.clientX,q.clientY),U=t.selection,ke=t.findNearestElement(he[0],he[1],!0,!1),j=t.dragData.possibleDragElements,ye=t.hoverData.down,Ae=a(q);if(t.data.bgActivePosistion&&(t.redrawHint("select",!0),t.redraw()),t.hoverData.tapholdCancelled=!0,t.data.bgActivePosistion=void 0,ye&&ye.unactivate(),t.hoverData.which===3){var Ge={originalEvent:q,type:"cxttapend",position:{x:he[0],y:he[1]}};if(ye?ye.emit(Ge):ie.emit(Ge),!t.hoverData.cxtDragged){var Fe={originalEvent:q,type:"cxttap",position:{x:he[0],y:he[1]}};ye?ye.emit(Fe):ie.emit(Fe)}t.hoverData.cxtDragged=!1,t.hoverData.which=null}else if(t.hoverData.which===1){if(i(ke,["mouseup","tapend","vmouseup"],q,{x:he[0],y:he[1]}),!t.dragData.didDrag&&!t.hoverData.dragged&&!t.hoverData.selecting&&!t.hoverData.isOverThresholdDrag&&(i(ye,["click","tap","vclick"],q,{x:he[0],y:he[1]}),I=!1,q.timeStamp-A<=ie.multiClickDebounceTime()?(T&&clearTimeout(T),I=!0,A=null,i(ye,["dblclick","dbltap","vdblclick"],q,{x:he[0],y:he[1]})):(T=setTimeout(function(){I||i(ye,["oneclick","onetap","voneclick"],q,{x:he[0],y:he[1]})},ie.multiClickDebounceTime()),A=q.timeStamp)),ye==null&&!t.dragData.didDrag&&!t.hoverData.selecting&&!t.hoverData.dragged&&!a(q)&&(ie.$(r).unselect(["tapunselect"]),j.length>0&&t.redrawHint("eles",!0),t.dragData.possibleDragElements=j=ie.collection()),ke==ye&&!t.dragData.didDrag&&!t.hoverData.selecting&&ke!=null&&ke._private.selectable&&(t.hoverData.dragging||(ie.selectionType()==="additive"||Ae?ke.selected()?ke.unselect(["tapunselect"]):ke.select(["tapselect"]):Ae||(ie.$(r).unmerge(ke).unselect(["tapunselect"]),ke.select(["tapselect"]))),t.redrawHint("eles",!0)),t.hoverData.selecting){var ge=ie.collection(t.getAllInBox(U[0],U[1],U[2],U[3]));t.redrawHint("select",!0),ge.length>0&&t.redrawHint("eles",!0),ie.emit({type:"boxend",originalEvent:q,position:{x:he[0],y:he[1]}});var $e=function(lt){return lt.selectable()&&!lt.selected()};ie.selectionType()==="additive"||Ae||ie.$(r).unmerge(ge).unselect(),ge.emit("box").stdFilter($e).select().emit("boxselect"),t.redraw()}if(t.hoverData.dragging&&(t.hoverData.dragging=!1,t.redrawHint("select",!0),t.redrawHint("eles",!0),t.redraw()),!U[4]){t.redrawHint("drag",!0),t.redrawHint("eles",!0);var Ce=ye&&ye.grabbed();x(j),Ce&&(ye.emit("freeon"),j.emit("free"),t.dragData.didDrag&&(ye.emit("dragfreeon"),j.emit("dragfree")))}}U[4]=0,t.hoverData.down=null,t.hoverData.cxtStarted=!1,t.hoverData.draggingEles=!1,t.hoverData.selecting=!1,t.hoverData.isOverThresholdDrag=!1,t.dragData.didDrag=!1,t.hoverData.dragged=!1,t.hoverData.dragDelta=[],t.hoverData.mdownPos=null,t.hoverData.mdownGPos=null,t.hoverData.which=null}}},!1);var D=function(q){if(!t.scrollingPage){var de=t.cy,ie=de.zoom(),he=de.pan(),U=t.projectIntoViewport(q.clientX,q.clientY),ke=[U[0]*ie+he.x,U[1]*ie+he.y];if(t.hoverData.draggingEles||t.hoverData.dragging||t.hoverData.cxtStarted||C()){q.preventDefault();return}if(de.panningEnabled()&&de.userPanningEnabled()&&de.zoomingEnabled()&&de.userZoomingEnabled()){q.preventDefault(),t.data.wheelZooming=!0,clearTimeout(t.data.wheelTimeout),t.data.wheelTimeout=setTimeout(function(){t.data.wheelZooming=!1,t.redrawHint("eles",!0),t.redraw()},150);var j;q.deltaY!=null?j=q.deltaY/-250:q.wheelDeltaY!=null?j=q.wheelDeltaY/1e3:j=q.wheelDelta/1e3,j=j*t.wheelSensitivity;var ye=q.deltaMode===1;ye&&(j*=33);var Ae=de.zoom()*Math.pow(10,j);q.type==="gesturechange"&&(Ae=t.gestureStartZoom*q.scale),de.zoom({level:Ae,renderedPosition:{x:ke[0],y:ke[1]}}),de.emit(q.type==="gesturechange"?"pinchzoom":"scrollzoom")}}};t.registerBinding(t.container,"wheel",D,!0),t.registerBinding(e,"scroll",function(q){t.scrollingPage=!0,clearTimeout(t.scrollingPageTimeout),t.scrollingPageTimeout=setTimeout(function(){t.scrollingPage=!1},250)},!0),t.registerBinding(t.container,"gesturestart",function(q){t.gestureStartZoom=t.cy.zoom(),t.hasTouchStarted||q.preventDefault()},!0),t.registerBinding(t.container,"gesturechange",function(xe){t.hasTouchStarted||D(xe)},!0),t.registerBinding(t.container,"mouseout",function(q){var de=t.projectIntoViewport(q.clientX,q.clientY);t.cy.emit({originalEvent:q,type:"mouseout",position:{x:de[0],y:de[1]}})},!1),t.registerBinding(t.container,"mouseover",function(q){var de=t.projectIntoViewport(q.clientX,q.clientY);t.cy.emit({originalEvent:q,type:"mouseover",position:{x:de[0],y:de[1]}})},!1);var N,O,B,P,$,z,H,J,X,oe,K,ee,Q,W=function(q,de,ie,he){return Math.sqrt((ie-q)*(ie-q)+(he-de)*(he-de))},Y=function(q,de,ie,he){return(ie-q)*(ie-q)+(he-de)*(he-de)},Z;t.registerBinding(t.container,"touchstart",Z=function(q){if(t.hasTouchStarted=!0,!!M(q)){w(),t.touchData.capture=!0,t.data.bgActivePosistion=void 0;var de=t.cy,ie=t.touchData.now,he=t.touchData.earlier;if(q.touches[0]){var U=t.projectIntoViewport(q.touches[0].clientX,q.touches[0].clientY);ie[0]=U[0],ie[1]=U[1]}if(q.touches[1]){var U=t.projectIntoViewport(q.touches[1].clientX,q.touches[1].clientY);ie[2]=U[0],ie[3]=U[1]}if(q.touches[2]){var U=t.projectIntoViewport(q.touches[2].clientX,q.touches[2].clientY);ie[4]=U[0],ie[5]=U[1]}if(q.touches[1]){t.touchData.singleTouchMoved=!0,x(t.dragData.touchDragEles);var ke=t.findContainerClientCoords();X=ke[0],oe=ke[1],K=ke[2],ee=ke[3],N=q.touches[0].clientX-X,O=q.touches[0].clientY-oe,B=q.touches[1].clientX-X,P=q.touches[1].clientY-oe,Q=0<=N&&N<=K&&0<=B&&B<=K&&0<=O&&O<=ee&&0<=P&&P<=ee;var j=de.pan(),ye=de.zoom();$=W(N,O,B,P),z=Y(N,O,B,P),H=[(N+B)/2,(O+P)/2],J=[(H[0]-j.x)/ye,(H[1]-j.y)/ye];var Ae=200,Ge=Ae*Ae;if(z=1){for(var ft=t.touchData.startPosition=[null,null,null,null,null,null],Ze=0;Ze=t.touchTapThreshold2}if(de&&t.touchData.cxt){q.preventDefault();var ft=q.touches[0].clientX-X,Ze=q.touches[0].clientY-oe,st=q.touches[1].clientX-X,Ue=q.touches[1].clientY-oe,Ke=Y(ft,Ze,st,Ue),it=Ke/z,mt=150,Ht=mt*mt,ot=1.5,et=ot*ot;if(it>=et||Ke>=Ht){t.touchData.cxt=!1,t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var ht={originalEvent:q,type:"cxttapend",position:{x:U[0],y:U[1]}};t.touchData.start?(t.touchData.start.unactivate().emit(ht),t.touchData.start=null):he.emit(ht)}}if(de&&t.touchData.cxt){var ht={originalEvent:q,type:"cxtdrag",position:{x:U[0],y:U[1]}};t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.touchData.start?t.touchData.start.emit(ht):he.emit(ht),t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxtDragged=!0;var bt=t.findNearestElement(U[0],U[1],!0,!0);(!t.touchData.cxtOver||bt!==t.touchData.cxtOver)&&(t.touchData.cxtOver&&t.touchData.cxtOver.emit({originalEvent:q,type:"cxtdragout",position:{x:U[0],y:U[1]}}),t.touchData.cxtOver=bt,bt&&bt.emit({originalEvent:q,type:"cxtdragover",position:{x:U[0],y:U[1]}}))}else if(de&&q.touches[2]&&he.boxSelectionEnabled())q.preventDefault(),t.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,t.touchData.selecting||he.emit({originalEvent:q,type:"boxstart",position:{x:U[0],y:U[1]}}),t.touchData.selecting=!0,t.touchData.didSelect=!0,ie[4]=1,!ie||ie.length===0||ie[0]===void 0?(ie[0]=(U[0]+U[2]+U[4])/3,ie[1]=(U[1]+U[3]+U[5])/3,ie[2]=(U[0]+U[2]+U[4])/3+1,ie[3]=(U[1]+U[3]+U[5])/3+1):(ie[2]=(U[0]+U[2]+U[4])/3,ie[3]=(U[1]+U[3]+U[5])/3),t.redrawHint("select",!0),t.redraw();else if(de&&q.touches[1]&&!t.touchData.didSelect&&he.zoomingEnabled()&&he.panningEnabled()&&he.userZoomingEnabled()&&he.userPanningEnabled()){q.preventDefault(),t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var tt=t.dragData.touchDragEles;if(tt){t.redrawHint("drag",!0);for(var _t=0;_t0&&!t.hoverData.draggingEles&&!t.swipePanning&&t.data.bgActivePosistion!=null&&(t.data.bgActivePosistion=void 0,t.redrawHint("select",!0),t.redraw())}},!1);var ce;t.registerBinding(e,"touchcancel",ce=function(q){var de=t.touchData.start;t.touchData.capture=!1,de&&de.unactivate()});var ue,te,Ne,ae;if(t.registerBinding(e,"touchend",ue=function(q){var de=t.touchData.start,ie=t.touchData.capture;if(ie)q.touches.length===0&&(t.touchData.capture=!1),q.preventDefault();else return;var he=t.selection;t.swipePanning=!1,t.hoverData.draggingEles=!1;var U=t.cy,ke=U.zoom(),j=t.touchData.now,ye=t.touchData.earlier;if(q.touches[0]){var Ae=t.projectIntoViewport(q.touches[0].clientX,q.touches[0].clientY);j[0]=Ae[0],j[1]=Ae[1]}if(q.touches[1]){var Ae=t.projectIntoViewport(q.touches[1].clientX,q.touches[1].clientY);j[2]=Ae[0],j[3]=Ae[1]}if(q.touches[2]){var Ae=t.projectIntoViewport(q.touches[2].clientX,q.touches[2].clientY);j[4]=Ae[0],j[5]=Ae[1]}de&&de.unactivate();var Ge;if(t.touchData.cxt){if(Ge={originalEvent:q,type:"cxttapend",position:{x:j[0],y:j[1]}},de?de.emit(Ge):U.emit(Ge),!t.touchData.cxtDragged){var Fe={originalEvent:q,type:"cxttap",position:{x:j[0],y:j[1]}};de?de.emit(Fe):U.emit(Fe)}t.touchData.start&&(t.touchData.start._private.grabbed=!1),t.touchData.cxt=!1,t.touchData.start=null,t.redraw();return}if(!q.touches[2]&&U.boxSelectionEnabled()&&t.touchData.selecting){t.touchData.selecting=!1;var ge=U.collection(t.getAllInBox(he[0],he[1],he[2],he[3]));he[0]=void 0,he[1]=void 0,he[2]=void 0,he[3]=void 0,he[4]=0,t.redrawHint("select",!0),U.emit({type:"boxend",originalEvent:q,position:{x:j[0],y:j[1]}});var $e=function(Ht){return Ht.selectable()&&!Ht.selected()};ge.emit("box").stdFilter($e).select().emit("boxselect"),ge.nonempty()&&t.redrawHint("eles",!0),t.redraw()}if(de?.unactivate(),q.touches[2])t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);else if(!q.touches[1]){if(!q.touches[0]){if(!q.touches[0]){t.data.bgActivePosistion=void 0,t.redrawHint("select",!0);var Ce=t.dragData.touchDragEles;if(de!=null){var qe=de._private.grabbed;x(Ce),t.redrawHint("drag",!0),t.redrawHint("eles",!0),qe&&(de.emit("freeon"),Ce.emit("free"),t.dragData.didDrag&&(de.emit("dragfreeon"),Ce.emit("dragfree"))),i(de,["touchend","tapend","vmouseup","tapdragout"],q,{x:j[0],y:j[1]}),de.unactivate(),t.touchData.start=null}else{var lt=t.findNearestElement(j[0],j[1],!0,!0);i(lt,["touchend","tapend","vmouseup","tapdragout"],q,{x:j[0],y:j[1]})}var xt=t.touchData.startPosition[0]-j[0],ft=xt*xt,Ze=t.touchData.startPosition[1]-j[1],st=Ze*Ze,Ue=ft+st,Ke=Ue*ke*ke;t.touchData.singleTouchMoved||(de||U.$(":selected").unselect(["tapunselect"]),i(de,["tap","vclick"],q,{x:j[0],y:j[1]}),te=!1,q.timeStamp-ae<=U.multiClickDebounceTime()?(Ne&&clearTimeout(Ne),te=!0,ae=null,i(de,["dbltap","vdblclick"],q,{x:j[0],y:j[1]})):(Ne=setTimeout(function(){te||i(de,["onetap","voneclick"],q,{x:j[0],y:j[1]})},U.multiClickDebounceTime()),ae=q.timeStamp)),de!=null&&!t.dragData.didDrag&&de._private.selectable&&Ke"u"){var we=[],Ie=function(q){return{clientX:q.clientX,clientY:q.clientY,force:1,identifier:q.pointerId,pageX:q.pageX,pageY:q.pageY,radiusX:q.width/2,radiusY:q.height/2,screenX:q.screenX,screenY:q.screenY,target:q.target}},Ee=function(q){return{event:q,touch:Ie(q)}},Oe=function(q){we.push(Ee(q))},De=function(q){for(var de=0;de0)return H[0]}return null},g=Object.keys(d),m=0;m0?p:jde(a,s,e,r,n,i,o,l)},checkPoint:function(e,r,n,i,a,s,o,l){l=l==="auto"?O0(i,a):l;var u=2*l;if(Ju(e,r,this.points,s,o,i,a-u,[0,-1],n)||Ju(e,r,this.points,s,o,i-u,a,[0,-1],n))return!0;var h=i/2+2*n,f=a/2+2*n,d=[s-h,o-f,s-h,o,s+h,o,s+h,o-f];return!!(Bs(e,r,d)||N0(e,r,u,u,s+i/2-l,o+a/2-l,n)||N0(e,r,u,u,s-i/2+l,o+a/2-l,n))}}};th.registerNodeShapes=function(){var t=this.nodeShapes={},e=this;this.generateEllipse(),this.generatePolygon("triangle",ss(3,0)),this.generateRoundPolygon("round-triangle",ss(3,0)),this.generatePolygon("rectangle",ss(4,0)),t.square=t.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var r=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",r),this.generateRoundPolygon("round-diamond",r)}this.generatePolygon("pentagon",ss(5,0)),this.generateRoundPolygon("round-pentagon",ss(5,0)),this.generatePolygon("hexagon",ss(6,0)),this.generateRoundPolygon("round-hexagon",ss(6,0)),this.generatePolygon("heptagon",ss(7,0)),this.generateRoundPolygon("round-heptagon",ss(7,0)),this.generatePolygon("octagon",ss(8,0)),this.generateRoundPolygon("round-octagon",ss(8,0));var n=new Array(20);{var i=hD(5,0),a=hD(5,Math.PI/5),s=.5*(3-Math.sqrt(5));s*=1.57;for(var o=0;o=e.deqFastCost*_)break}else if(u){if(b>=e.deqCost*p||b>=e.deqAvgCost*d)break}else if(w>=e.deqNoDrawCost*lD)break;var k=e.deq(n,y,m);if(k.length>0)for(var E=0;E0&&(e.onDeqd(n,g),!u&&e.shouldRedraw(n,g,y,m)&&a())},o=e.priority||ID;i.beforeRender(s,o(n))}}}},zYe=function(){function t(e){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:F6;AD(this,t),this.idsByKey=new Vc,this.keyForId=new Vc,this.cachesByLvl=new Vc,this.lvls=[],this.getKey=e,this.doesEleInvalidateKey=r}return _D(t,[{key:"getIdsFor",value:function(r){r==null&&ni("Can not get id list for null key");var n=this.idsByKey,i=this.idsByKey.get(r);return i||(i=new Qm,n.set(r,i)),i}},{key:"addIdForKey",value:function(r,n){r!=null&&this.getIdsFor(r).add(n)}},{key:"deleteIdForKey",value:function(r,n){r!=null&&this.getIdsFor(r).delete(n)}},{key:"getNumberOfIdsForKey",value:function(r){return r==null?0:this.getIdsFor(r).size}},{key:"updateKeyMappingFor",value:function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);this.deleteIdForKey(i,n),this.addIdForKey(a,n),this.keyForId.set(n,a)}},{key:"deleteKeyMappingFor",value:function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteIdForKey(i,n),this.keyForId.delete(n)}},{key:"keyHasChangedFor",value:function(r){var n=r.id(),i=this.keyForId.get(n),a=this.getKey(r);return i!==a}},{key:"isInvalid",value:function(r){return this.keyHasChangedFor(r)||this.doesEleInvalidateKey(r)}},{key:"getCachesAt",value:function(r){var n=this.cachesByLvl,i=this.lvls,a=n.get(r);return a||(a=new Vc,n.set(r,a),i.push(r)),a}},{key:"getCache",value:function(r,n){return this.getCachesAt(n).get(r)}},{key:"get",value:function(r,n){var i=this.getKey(r),a=this.getCache(i,n);return a!=null&&this.updateKeyMappingFor(r),a}},{key:"getForCachedKey",value:function(r,n){var i=this.keyForId.get(r.id()),a=this.getCache(i,n);return a}},{key:"hasCache",value:function(r,n){return this.getCachesAt(n).has(r)}},{key:"has",value:function(r,n){var i=this.getKey(r);return this.hasCache(i,n)}},{key:"setCache",value:function(r,n,i){i.key=r,this.getCachesAt(n).set(r,i)}},{key:"set",value:function(r,n,i){var a=this.getKey(r);this.setCache(a,n,i),this.updateKeyMappingFor(r)}},{key:"deleteCache",value:function(r,n){this.getCachesAt(n).delete(r)}},{key:"delete",value:function(r,n){var i=this.getKey(r);this.deleteCache(i,n)}},{key:"invalidateKey",value:function(r){var n=this;this.lvls.forEach(function(i){return n.deleteCache(r,i)})}},{key:"invalidate",value:function(r){var n=r.id(),i=this.keyForId.get(n);this.deleteKeyMappingFor(r);var a=this.doesEleInvalidateKey(r);return a&&this.invalidateKey(i),a||this.getNumberOfIdsForKey(i)===0}}]),t}(),mde=25,C6=50,O6=-4,TD=3,$Ye=7.99,GYe=8,UYe=1024,VYe=1024,WYe=1024,HYe=.2,qYe=.8,YYe=10,XYe=.15,jYe=.1,KYe=.9,ZYe=.9,QYe=100,JYe=1,Vm={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},eXe=ba({getKey:null,doesEleInvalidateKey:F6,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:Gde,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),wx=function(e,r){var n=this;n.renderer=e,n.onDequeues=[];var i=eXe(r);Kt(n,i),n.lookup=new zYe(i.getKey,i.doesEleInvalidateKey),n.setupDequeueing()},Pi=wx.prototype;Pi.reasons=Vm;Pi.getTextureQueue=function(t){var e=this;return e.eleImgCaches=e.eleImgCaches||{},e.eleImgCaches[t]=e.eleImgCaches[t]||[]};Pi.getRetiredTextureQueue=function(t){var e=this,r=e.eleImgCaches.retired=e.eleImgCaches.retired||{},n=r[t]=r[t]||[];return n};Pi.getElementQueue=function(){var t=this,e=t.eleCacheQueue=t.eleCacheQueue||new Fx(function(r,n){return n.reqs-r.reqs});return e};Pi.getElementKeyToQueue=function(){var t=this,e=t.eleKeyToCacheQueue=t.eleKeyToCacheQueue||{};return e};Pi.getElement=function(t,e,r,n,i){var a=this,s=this.renderer,o=s.cy.zoom(),l=this.lookup;if(!e||e.w===0||e.h===0||isNaN(e.w)||isNaN(e.h)||!t.visible()||t.removed()||!a.allowEdgeTxrCaching&&t.isEdge()||!a.allowParentTxrCaching&&t.isParent())return null;if(n==null&&(n=Math.ceil(DD(o*r))),n=$Ye||n>TD)return null;var u=Math.pow(2,n),h=e.h*u,f=e.w*u,d=s.eleTextBiggerThanMin(t,u);if(!this.isVisible(t,d))return null;var p=l.get(t,n);if(p&&p.invalidated&&(p.invalidated=!1,p.texture.invalidatedWidth-=p.width),p)return p;var g;if(h<=mde?g=mde:h<=C6?g=C6:g=Math.ceil(h/C6)*C6,h>WYe||f>VYe)return null;var m=a.getTextureQueue(g),y=m[m.length-2],x=function(){return a.recycleTexture(g,f)||a.addTexture(g,f)};y||(y=m[m.length-1]),y||(y=x()),y.width-y.usedWidthn;R--)C=a.getElement(t,e,r,R,Vm.downscale);M()}else return a.queueElement(t,E.level-1),E;else{var T;if(!w&&!_&&!k)for(var I=n-1;I>=O6;I--){var A=l.get(t,I);if(A){T=A;break}}if(b(T))return a.queueElement(t,n),T;y.context.translate(y.usedWidth,0),y.context.scale(u,u),this.drawElement(y.context,t,e,d,!1),y.context.scale(1/u,1/u),y.context.translate(-y.usedWidth,0)}return p={x:y.usedWidth,texture:y,level:n,scale:u,width:f,height:h,scaledLabelShown:d},y.usedWidth+=Math.ceil(f+GYe),y.eleCaches.push(p),l.set(t,n,p),a.checkTextureFullness(y),p};Pi.invalidateElements=function(t){for(var e=0;e=HYe*t.width&&this.retireTexture(t)};Pi.checkTextureFullness=function(t){var e=this,r=e.getTextureQueue(t.height);t.usedWidth/t.width>qYe&&t.fullnessChecks>=YYe?wf(r,t):t.fullnessChecks++};Pi.retireTexture=function(t){var e=this,r=t.height,n=e.getTextureQueue(r),i=this.lookup;wf(n,t),t.retired=!0;for(var a=t.eleCaches,s=0;s=e)return s.retired=!1,s.usedWidth=0,s.invalidatedWidth=0,s.fullnessChecks=0,MD(s.eleCaches),s.context.setTransform(1,0,0,1,0,0),s.context.clearRect(0,0,s.width,s.height),wf(i,s),n.push(s),s}};Pi.queueElement=function(t,e){var r=this,n=r.getElementQueue(),i=r.getElementKeyToQueue(),a=this.getKey(t),s=i[a];if(s)s.level=Math.max(s.level,e),s.eles.merge(t),s.reqs++,n.updateItem(s);else{var o={eles:t.spawn().merge(t),level:e,reqs:1,key:a};n.push(o),i[a]=o}};Pi.dequeue=function(t){for(var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=[],a=e.lookup,s=0;s0;s++){var o=r.pop(),l=o.key,u=o.eles[0],h=a.hasCache(u,o.level);if(n[l]=null,h)continue;i.push(o);var f=e.getBoundingBox(u);e.getElement(u,f,t,o.level,Vm.dequeue)}return i};Pi.removeFromQueue=function(t){var e=this,r=e.getElementQueue(),n=e.getElementKeyToQueue(),i=this.getKey(t),a=n[i];a!=null&&(a.eles.length===1?(a.reqs=ND,r.updateItem(a),r.pop(),n[i]=null):a.eles.unmerge(t))};Pi.onDequeue=function(t){this.onDequeues.push(t)};Pi.offDequeue=function(t){wf(this.onDequeues,t)};Pi.setupDequeueing=K0e.setupDequeueing({deqRedrawThreshold:QYe,deqCost:XYe,deqAvgCost:jYe,deqNoDrawCost:KYe,deqFastCost:ZYe,deq:function(e,r,n){return e.dequeue(r,n)},onDeqd:function(e,r){for(var n=0;n=rXe||r>q6)return null}n.validateLayersElesOrdering(r,t);var l=n.layersByLevel,u=Math.pow(2,r),h=l[r]=l[r]||[],f,d=n.levelIsComplete(r,t),p,g=function(){var M=function(D){if(n.validateLayersElesOrdering(D,t),n.levelIsComplete(D,t))return p=l[D],!0},R=function(D){if(!p)for(var N=r+D;Tx<=N&&N<=q6&&!M(N);N+=D);};R(1),R(-1);for(var T=h.length-1;T>=0;T--){var I=h[T];I.invalid&&wf(h,I)}};if(!d)g();else return h;var m=function(){if(!f){f=Fs();for(var M=0;Myde||I>yde)return null;var A=T*I;if(A>uXe)return null;var D=n.makeLayer(f,r);if(R!=null){var N=h.indexOf(R)+1;h.splice(N,0,D)}else(M.insert===void 0||M.insert)&&h.unshift(D);return D};if(n.skipping&&!o)return null;for(var x=null,b=t.length/tXe,w=!o,_=0;_=b||!Xde(x.bb,k.boundingBox()))&&(x=y({insert:!0,after:x}),!x))return null;p||w?n.queueLayer(x,k):n.drawEleInLayer(x,k,r,e),x.eles.push(k),L[r]=x}return p||(w?null:h)};wa.getEleLevelForLayerLevel=function(t,e){return t};wa.drawEleInLayer=function(t,e,r,n){var i=this,a=this.renderer,s=t.context,o=e.boundingBox();o.w===0||o.h===0||!e.visible()||(r=i.getEleLevelForLayerLevel(r,n),a.setImgSmoothing(s,!1),a.drawCachedElement(s,e,null,null,r,hXe),a.setImgSmoothing(s,!0))};wa.levelIsComplete=function(t,e){var r=this,n=r.layersByLevel[t];if(!n||n.length===0)return!1;for(var i=0,a=0;a0||s.invalid)return!1;i+=s.eles.length}return i===e.length};wa.validateLayersElesOrdering=function(t,e){var r=this.layersByLevel[t];if(r)for(var n=0;n0){e=!0;break}}return e};wa.invalidateElements=function(t){var e=this;t.length!==0&&(e.lastInvalidationTime=Qu(),!(t.length===0||!e.haveLayers())&&e.updateElementsInLayers(t,function(n,i,a){e.invalidateLayer(n)}))};wa.invalidateLayer=function(t){if(this.lastInvalidationTime=Qu(),!t.invalid){var e=t.level,r=t.eles,n=this.layersByLevel[e];wf(n,t),t.elesQueue=[],t.invalid=!0,t.replacement&&(t.replacement.invalid=!0);for(var i=0;i3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,o=e._private.rscratch;if(!(a&&!e.visible())&&!(o.badLine||o.allpts==null||isNaN(o.allpts[0]))){var l;r&&(l=r,t.translate(-l.x1,-l.y1));var u=a?e.pstyle("opacity").value:1,h=a?e.pstyle("line-opacity").value:1,f=e.pstyle("curve-style").value,d=e.pstyle("line-style").value,p=e.pstyle("width").pfValue,g=e.pstyle("line-cap").value,m=e.pstyle("line-outline-width").value,y=e.pstyle("line-outline-color").value,x=u*h,b=u*h,w=function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;f==="straight-triangle"?(s.eleStrokeStyle(t,e,D),s.drawEdgeTrianglePath(e,t,o.allpts)):(t.lineWidth=p,t.lineCap=g,s.eleStrokeStyle(t,e,D),s.drawEdgePath(e,t,o.allpts,d),t.lineCap="butt")},_=function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:x;if(t.lineWidth=p+m,t.lineCap=g,m>0)s.colorStrokeStyle(t,y[0],y[1],y[2],D);else{t.lineCap="butt";return}f==="straight-triangle"?s.drawEdgeTrianglePath(e,t,o.allpts):(s.drawEdgePath(e,t,o.allpts,d),t.lineCap="butt")},k=function(){i&&s.drawEdgeOverlay(t,e)},E=function(){i&&s.drawEdgeUnderlay(t,e)},L=function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:b;s.drawArrowheads(t,e,D)},S=function(){s.drawElementText(t,e,null,n)};t.lineJoin="round";var C=e.pstyle("ghost").value==="yes";if(C){var M=e.pstyle("ghost-offset-x").pfValue,R=e.pstyle("ghost-offset-y").pfValue,T=e.pstyle("ghost-opacity").value,I=x*T;t.translate(M,R),w(I),L(I),t.translate(-M,-R)}else _();E(),w(),L(),k(),S(),r&&t.translate(l.x1,l.y1)}};J0e=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(r,n){if(n.visible()){var i=n.pstyle("".concat(e,"-opacity")).value;if(i!==0){var a=this,s=a.usePaths(),o=n._private.rscratch,l=n.pstyle("".concat(e,"-padding")).pfValue,u=2*l,h=n.pstyle("".concat(e,"-color")).value;r.lineWidth=u,o.edgeType==="self"&&!s?r.lineCap="butt":r.lineCap="round",a.colorStrokeStyle(r,h[0],h[1],h[2],i),a.drawEdgePath(n,r,o.allpts,"solid")}}}};rh.drawEdgeOverlay=J0e("overlay");rh.drawEdgeUnderlay=J0e("underlay");rh.drawEdgePath=function(t,e,r,n){var i=t._private.rscratch,a=e,s,o=!1,l=this.usePaths(),u=t.pstyle("line-dash-pattern").pfValue,h=t.pstyle("line-dash-offset").pfValue;if(l){var f=r.join("$"),d=i.pathCacheKey&&i.pathCacheKey===f;d?(s=e=i.pathCache,o=!0):(s=e=new Path2D,i.pathCacheKey=f,i.pathCache=s)}if(a.setLineDash)switch(n){case"dotted":a.setLineDash([1,1]);break;case"dashed":a.setLineDash(u),a.lineDashOffset=h;break;case"solid":a.setLineDash([]);break}if(!o&&!i.badLine)switch(e.beginPath&&e.beginPath(),e.moveTo(r[0],r[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var p=2;p+35&&arguments[5]!==void 0?arguments[5]:!0,s=this;if(n==null){if(a&&!s.eleTextBiggerThanMin(e))return}else if(n===!1)return;if(e.isNode()){var o=e.pstyle("label");if(!o||!o.value)return;var l=s.getLabelJustification(e);t.textAlign=l,t.textBaseline="bottom"}else{var u=e.element()._private.rscratch.badLine,h=e.pstyle("label"),f=e.pstyle("source-label"),d=e.pstyle("target-label");if(u||(!h||!h.value)&&(!f||!f.value)&&(!d||!d.value))return;t.textAlign="center",t.textBaseline="bottom"}var p=!r,g;r&&(g=r,t.translate(-g.x1,-g.y1)),i==null?(s.drawText(t,e,null,p,a),e.isEdge()&&(s.drawText(t,e,"source",p,a),s.drawText(t,e,"target",p,a))):s.drawText(t,e,i,p,a),r&&t.translate(g.x1,g.y1)};$0.getFontCache=function(t){var e;this.fontCaches=this.fontCaches||[];for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!0,n=e.pstyle("font-style").strValue,i=e.pstyle("font-size").pfValue+"px",a=e.pstyle("font-family").strValue,s=e.pstyle("font-weight").strValue,o=r?e.effectiveOpacity()*e.pstyle("text-opacity").value:1,l=e.pstyle("text-outline-opacity").value*o,u=e.pstyle("color").value,h=e.pstyle("text-outline-color").value;t.font=n+" "+s+" "+i+" "+a,t.lineJoin="round",this.colorFillStyle(t,u[0],u[1],u[2],o),this.colorStrokeStyle(t,h[0],h[1],h[2],l)};$0.getTextAngle=function(t,e){var r,n=t._private,i=n.rscratch,a=e?e+"-":"",s=t.pstyle(a+"text-rotation"),o=Bl(i,"labelAngle",e);return s.strValue==="autorotate"?r=t.isEdge()?o:0:s.strValue==="none"?r=0:r=s.pfValue,r};$0.drawText=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=e._private,s=a.rscratch,o=i?e.effectiveOpacity():1;if(!(i&&(o===0||e.pstyle("text-opacity").value===0))){r==="main"&&(r=null);var l=Bl(s,"labelX",r),u=Bl(s,"labelY",r),h,f,d=this.getLabelText(e,r);if(d!=null&&d!==""&&!isNaN(l)&&!isNaN(u)){this.setupTextStyle(t,e,i);var p=r?r+"-":"",g=Bl(s,"labelWidth",r),m=Bl(s,"labelHeight",r),y=e.pstyle(p+"text-margin-x").pfValue,x=e.pstyle(p+"text-margin-y").pfValue,b=e.isEdge(),w=e.pstyle("text-halign").value,_=e.pstyle("text-valign").value;b&&(w="center",_="center"),l+=y,u+=x;var k;switch(n?k=this.getTextAngle(e,r):k=0,k!==0&&(h=l,f=u,t.translate(h,f),t.rotate(k),l=0,u=0),_){case"top":break;case"center":u+=m/2;break;case"bottom":u+=m;break}var E=e.pstyle("text-background-opacity").value,L=e.pstyle("text-border-opacity").value,S=e.pstyle("text-border-width").pfValue,C=e.pstyle("text-background-padding").pfValue,M=e.pstyle("text-background-shape").strValue,R=M.indexOf("round")===0,T=2;if(E>0||S>0&&L>0){var I=l-C;switch(w){case"left":I-=g;break;case"center":I-=g/2;break}var A=u-m-C,D=g+2*C,N=m+2*C;if(E>0){var O=t.fillStyle,B=e.pstyle("text-background-color").value;t.fillStyle="rgba("+B[0]+","+B[1]+","+B[2]+","+E*o+")",R?uD(t,I,A,D,N,T):t.fillRect(I,A,D,N),t.fillStyle=O}if(S>0&&L>0){var P=t.strokeStyle,$=t.lineWidth,z=e.pstyle("text-border-color").value,H=e.pstyle("text-border-style").value;if(t.strokeStyle="rgba("+z[0]+","+z[1]+","+z[2]+","+L*o+")",t.lineWidth=S,t.setLineDash)switch(H){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"double":t.lineWidth=S/4,t.setLineDash([]);break;case"solid":t.setLineDash([]);break}if(R?uD(t,I,A,D,N,T,"stroke"):t.strokeRect(I,A,D,N),H==="double"){var J=S/2;R?uD(t,I+J,A+J,D-J*2,N-J*2,T,"stroke"):t.strokeRect(I+J,A+J,D-J*2,N-J*2)}t.setLineDash&&t.setLineDash([]),t.lineWidth=$,t.strokeStyle=P}}var X=2*e.pstyle("text-outline-width").pfValue;if(X>0&&(t.lineWidth=X),e.pstyle("text-wrap").value==="wrap"){var oe=Bl(s,"labelWrapCachedLines",r),K=Bl(s,"labelLineHeight",r),ee=g/2,Q=this.getLabelJustification(e);switch(Q==="auto"||(w==="left"?Q==="left"?l+=-g:Q==="center"&&(l+=-ee):w==="center"?Q==="left"?l+=-ee:Q==="right"&&(l+=ee):w==="right"&&(Q==="center"?l+=ee:Q==="right"&&(l+=g))),_){case"top":u-=(oe.length-1)*K;break;case"center":case"bottom":u-=(oe.length-1)*K;break}for(var W=0;W0&&t.strokeText(oe[W],l,u),t.fillText(oe[W],l,u),u+=K}else X>0&&t.strokeText(d,l,u),t.fillText(d,l,u);k!==0&&(t.rotate(-k),t.translate(-h,-f))}}};o1={};o1.drawNode=function(t,e,r){var n=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,s=this,o,l,u=e._private,h=u.rscratch,f=e.position();if(!(!dt(f.x)||!dt(f.y))&&!(a&&!e.visible())){var d=a?e.effectiveOpacity():1,p=s.usePaths(),g,m=!1,y=e.padding();o=e.width()+2*y,l=e.height()+2*y;var x;r&&(x=r,t.translate(-x.x1,-x.y1));for(var b=e.pstyle("background-image"),w=b.value,_=new Array(w.length),k=new Array(w.length),E=0,L=0;L0&&arguments[0]!==void 0?arguments[0]:I;s.eleFillStyle(t,e,he)},W=function(){var he=arguments.length>0&&arguments[0]!==void 0?arguments[0]:z;s.colorStrokeStyle(t,A[0],A[1],A[2],he)},Y=function(){var he=arguments.length>0&&arguments[0]!==void 0?arguments[0]:oe;s.colorStrokeStyle(t,J[0],J[1],J[2],he)},Z=function(he,U,ke,j){var ye=s.nodePathCache=s.nodePathCache||[],Ae=$de(ke==="polygon"?ke+","+j.join(","):ke,""+U,""+he,""+ee),Ge=ye[Ae],Fe,ge=!1;return Ge!=null?(Fe=Ge,ge=!0,h.pathCache=Fe):(Fe=new Path2D,ye[Ae]=h.pathCache=Fe),{path:Fe,cacheHit:ge}},se=e.pstyle("shape").strValue,ce=e.pstyle("shape-polygon-points").pfValue;if(p){t.translate(f.x,f.y);var ue=Z(o,l,se,ce);g=ue.path,m=ue.cacheHit}var te=function(){if(!m){var he=f;p&&(he={x:0,y:0}),s.nodeShapes[s.getNodeShape(e)].draw(g||t,he.x,he.y,o,l,ee,h)}p?t.fill(g):t.fill()},Ne=function(){for(var he=arguments.length>0&&arguments[0]!==void 0?arguments[0]:d,U=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,ke=u.backgrounding,j=0,ye=0;ye0&&arguments[0]!==void 0?arguments[0]:!1,U=arguments.length>1&&arguments[1]!==void 0?arguments[1]:d;s.hasPie(e)&&(s.drawPie(t,e,U),he&&(p||s.nodeShapes[s.getNodeShape(e)].draw(t,f.x,f.y,o,l,ee,h)))},we=function(){var he=arguments.length>0&&arguments[0]!==void 0?arguments[0]:d,U=(R>0?R:-R)*he,ke=R>0?0:255;R!==0&&(s.colorFillStyle(t,ke,ke,ke,U),p?t.fill(g):t.fill())},Ie=function(){if(T>0){if(t.lineWidth=T,t.lineCap=O,t.lineJoin=N,t.setLineDash)switch(D){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash(P),t.lineDashOffset=$;break;case"solid":case"double":t.setLineDash([]);break}if(B!=="center"){if(t.save(),t.lineWidth*=2,B==="inside")p?t.clip(g):t.clip();else{var he=new Path2D;he.rect(-o/2-T,-l/2-T,o+2*T,l+2*T),he.addPath(g),t.clip(he,"evenodd")}p?t.stroke(g):t.stroke(),t.restore()}else p?t.stroke(g):t.stroke();if(D==="double"){t.lineWidth=T/3;var U=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",p?t.stroke(g):t.stroke(),t.globalCompositeOperation=U}t.setLineDash&&t.setLineDash([])}},Ee=function(){if(H>0){if(t.lineWidth=H,t.lineCap="butt",t.setLineDash)switch(X){case"dotted":t.setLineDash([1,1]);break;case"dashed":t.setLineDash([4,2]);break;case"solid":case"double":t.setLineDash([]);break}var he=f;p&&(he={x:0,y:0});var U=s.getNodeShape(e),ke=T;B==="inside"&&(ke=0),B==="outside"&&(ke*=2);var j=(o+ke+(H+K))/o,ye=(l+ke+(H+K))/l,Ae=o*j,Ge=l*ye,Fe=s.nodeShapes[U].points,ge;if(p){var $e=Z(Ae,Ge,U,Fe);ge=$e.path}if(U==="ellipse")s.drawEllipsePath(ge||t,he.x,he.y,Ae,Ge);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(U)){var Ce=0,qe=0,lt=0;U==="round-diamond"?Ce=(ke+K+H)*1.4:U==="round-heptagon"?(Ce=(ke+K+H)*1.075,lt=-(ke/2+K+H)/35):U==="round-hexagon"?Ce=(ke+K+H)*1.12:U==="round-pentagon"?(Ce=(ke+K+H)*1.13,lt=-(ke/2+K+H)/15):U==="round-tag"?(Ce=(ke+K+H)*1.12,qe=(ke/2+H+K)*.07):U==="round-triangle"&&(Ce=(ke+K+H)*(Math.PI/2),lt=-(ke+K/2+H)/Math.PI),Ce!==0&&(j=(o+Ce)/o,Ae=o*j,["round-hexagon","round-tag"].includes(U)||(ye=(l+Ce)/l,Ge=l*ye)),ee=ee==="auto"?Zde(Ae,Ge):ee;for(var xt=Ae/2,ft=Ge/2,Ze=ee+(ke+H+K)/2,st=new Array(Fe.length/2),Ue=new Array(Fe.length/2),Ke=0;Ke0){if(i=i||n.position(),a==null||s==null){var p=n.padding();a=n.width()+2*p,s=n.height()+2*p}o.colorFillStyle(r,h[0],h[1],h[2],u),o.nodeShapes[f].draw(r,i.x,i.y,a+l*2,s+l*2,d),r.fill()}}}};o1.drawNodeOverlay=epe("overlay");o1.drawNodeUnderlay=epe("underlay");o1.hasPie=function(t){return t=t[0],t._private.hasPie};o1.drawPie=function(t,e,r,n){e=e[0],n=n||e.position();var i=e.cy().style(),a=e.pstyle("pie-size"),s=n.x,o=n.y,l=e.width(),u=e.height(),h=Math.min(l,u)/2,f=0,d=this.usePaths();d&&(s=0,o=0),a.units==="%"?h=h*a.pfValue:a.pfValue!==void 0&&(h=a.pfValue/2);for(var p=1;p<=i.pieBackgroundN;p++){var g=e.pstyle("pie-"+p+"-background-size").value,m=e.pstyle("pie-"+p+"-background-color").value,y=e.pstyle("pie-"+p+"-background-opacity").value*r,x=g/100;x+f>1&&(x=1-f);var b=1.5*Math.PI+2*Math.PI*f,w=2*Math.PI*x,_=b+w;g===0||f>=1||f+x>1||(t.beginPath(),t.moveTo(s,o),t.arc(s,o,h,b,_),t.closePath(),this.colorFillStyle(t,m[0],m[1],m[2],y),t.fill(),f+=x)}};uo={},kXe=100;uo.getPixelRatio=function(){var t=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var e=this.cy.window(),r=t.backingStorePixelRatio||t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1;return(e.devicePixelRatio||1)/r};uo.paintCache=function(t){for(var e=this.paintCaches=this.paintCaches||[],r=!0,n,i=0;is.minMbLowQualFrames&&(s.motionBlurPxRatio=s.mbPxRBlurry)),s.clearingMotionBlur&&(s.motionBlurPxRatio=1),s.textureDrawLastFrame&&!f&&(h[s.NODE]=!0,h[s.SELECT_BOX]=!0);var b=l.style(),w=l.zoom(),_=i!==void 0?i:w,k=l.pan(),E={x:k.x,y:k.y},L={zoom:w,pan:{x:k.x,y:k.y}},S=s.prevViewport,C=S===void 0||L.zoom!==S.zoom||L.pan.x!==S.pan.x||L.pan.y!==S.pan.y;!C&&!(m&&!g)&&(s.motionBlurPxRatio=1),a&&(E=a),_*=o,E.x*=o,E.y*=o;var M=s.getCachedZSortedEles();function R(ue,te,Ne,ae,we){var Ie=ue.globalCompositeOperation;ue.globalCompositeOperation="destination-out",s.colorFillStyle(ue,255,255,255,s.motionBlurTransparency),ue.fillRect(te,Ne,ae,we),ue.globalCompositeOperation=Ie}function T(ue,te){var Ne,ae,we,Ie;!s.clearingMotionBlur&&(ue===u.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]||ue===u.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG])?(Ne={x:k.x*p,y:k.y*p},ae=w*p,we=s.canvasWidth*p,Ie=s.canvasHeight*p):(Ne=E,ae=_,we=s.canvasWidth,Ie=s.canvasHeight),ue.setTransform(1,0,0,1,0,0),te==="motionBlur"?R(ue,0,0,we,Ie):!e&&(te===void 0||te)&&ue.clearRect(0,0,we,Ie),r||(ue.translate(Ne.x,Ne.y),ue.scale(ae,ae)),a&&ue.translate(a.x,a.y),i&&ue.scale(i,i)}if(f||(s.textureDrawLastFrame=!1),f){if(s.textureDrawLastFrame=!0,!s.textureCache){s.textureCache={},s.textureCache.bb=l.mutableElements().boundingBox(),s.textureCache.texture=s.data.bufferCanvases[s.TEXTURE_BUFFER];var I=s.data.bufferContexts[s.TEXTURE_BUFFER];I.setTransform(1,0,0,1,0,0),I.clearRect(0,0,s.canvasWidth*s.textureMult,s.canvasHeight*s.textureMult),s.render({forcedContext:I,drawOnlyNodeLayer:!0,forcedPxRatio:o*s.textureMult});var L=s.textureCache.viewport={zoom:l.zoom(),pan:l.pan(),width:s.canvasWidth,height:s.canvasHeight};L.mpan={x:(0-L.pan.x)/L.zoom,y:(0-L.pan.y)/L.zoom}}h[s.DRAG]=!1,h[s.NODE]=!1;var A=u.contexts[s.NODE],D=s.textureCache.texture,L=s.textureCache.viewport;A.setTransform(1,0,0,1,0,0),d?R(A,0,0,L.width,L.height):A.clearRect(0,0,L.width,L.height);var N=b.core("outside-texture-bg-color").value,O=b.core("outside-texture-bg-opacity").value;s.colorFillStyle(A,N[0],N[1],N[2],O),A.fillRect(0,0,L.width,L.height);var w=l.zoom();T(A,!1),A.clearRect(L.mpan.x,L.mpan.y,L.width/L.zoom/o,L.height/L.zoom/o),A.drawImage(D,L.mpan.x,L.mpan.y,L.width/L.zoom/o,L.height/L.zoom/o)}else s.textureOnViewport&&!e&&(s.textureCache=null);var B=l.extent(),P=s.pinching||s.hoverData.dragging||s.swipePanning||s.data.wheelZooming||s.hoverData.draggingEles||s.cy.animated(),$=s.hideEdgesOnViewport&&P,z=[];if(z[s.NODE]=!h[s.NODE]&&d&&!s.clearedForMotionBlur[s.NODE]||s.clearingMotionBlur,z[s.NODE]&&(s.clearedForMotionBlur[s.NODE]=!0),z[s.DRAG]=!h[s.DRAG]&&d&&!s.clearedForMotionBlur[s.DRAG]||s.clearingMotionBlur,z[s.DRAG]&&(s.clearedForMotionBlur[s.DRAG]=!0),h[s.NODE]||r||n||z[s.NODE]){var H=d&&!z[s.NODE]&&p!==1,A=e||(H?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_NODE]:u.contexts[s.NODE]),J=d&&!H?"motionBlur":void 0;T(A,J),$?s.drawCachedNodes(A,M.nondrag,o,B):s.drawLayeredElements(A,M.nondrag,o,B),s.debug&&s.drawDebugPoints(A,M.nondrag),!r&&!d&&(h[s.NODE]=!1)}if(!n&&(h[s.DRAG]||r||z[s.DRAG])){var H=d&&!z[s.DRAG]&&p!==1,A=e||(H?s.data.bufferContexts[s.MOTIONBLUR_BUFFER_DRAG]:u.contexts[s.DRAG]);T(A,d&&!H?"motionBlur":void 0),$?s.drawCachedNodes(A,M.drag,o,B):s.drawCachedElements(A,M.drag,o,B),s.debug&&s.drawDebugPoints(A,M.drag),!r&&!d&&(h[s.DRAG]=!1)}if(s.showFps||!n&&h[s.SELECT_BOX]&&!r){var A=e||u.contexts[s.SELECT_BOX];if(T(A),s.selection[4]==1&&(s.hoverData.selecting||s.touchData.selecting)){var w=s.cy.zoom(),X=b.core("selection-box-border-width").value/w;A.lineWidth=X,A.fillStyle="rgba("+b.core("selection-box-color").value[0]+","+b.core("selection-box-color").value[1]+","+b.core("selection-box-color").value[2]+","+b.core("selection-box-opacity").value+")",A.fillRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]),X>0&&(A.strokeStyle="rgba("+b.core("selection-box-border-color").value[0]+","+b.core("selection-box-border-color").value[1]+","+b.core("selection-box-border-color").value[2]+","+b.core("selection-box-opacity").value+")",A.strokeRect(s.selection[0],s.selection[1],s.selection[2]-s.selection[0],s.selection[3]-s.selection[1]))}if(u.bgActivePosistion&&!s.hoverData.selecting){var w=s.cy.zoom(),oe=u.bgActivePosistion;A.fillStyle="rgba("+b.core("active-bg-color").value[0]+","+b.core("active-bg-color").value[1]+","+b.core("active-bg-color").value[2]+","+b.core("active-bg-opacity").value+")",A.beginPath(),A.arc(oe.x,oe.y,b.core("active-bg-size").pfValue/w,0,2*Math.PI),A.fill()}var K=s.lastRedrawTime;if(s.showFps&&K){K=Math.round(K);var ee=Math.round(1e3/K);A.setTransform(1,0,0,1,0,0),A.fillStyle="rgba(255, 0, 0, 0.75)",A.strokeStyle="rgba(255, 0, 0, 0.75)",A.lineWidth=1,A.fillText("1 frame = "+K+" ms = "+ee+" fps",0,20);var Q=60;A.strokeRect(0,30,250,20),A.fillRect(0,30,250*Math.min(ee/Q,1),20)}r||(h[s.SELECT_BOX]=!1)}if(d&&p!==1){var W=u.contexts[s.NODE],Y=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_NODE],Z=u.contexts[s.DRAG],se=s.data.bufferCanvases[s.MOTIONBLUR_BUFFER_DRAG],ce=function(te,Ne,ae){te.setTransform(1,0,0,1,0,0),ae||!x?te.clearRect(0,0,s.canvasWidth,s.canvasHeight):R(te,0,0,s.canvasWidth,s.canvasHeight);var we=p;te.drawImage(Ne,0,0,s.canvasWidth*we,s.canvasHeight*we,0,0,s.canvasWidth,s.canvasHeight)};(h[s.NODE]||z[s.NODE])&&(ce(W,Y,z[s.NODE]),h[s.NODE]=!1),(h[s.DRAG]||z[s.DRAG])&&(ce(Z,se,z[s.DRAG]),h[s.DRAG]=!1)}s.prevViewport=L,s.clearingMotionBlur&&(s.clearingMotionBlur=!1,s.motionBlurCleared=!0,s.motionBlur=!0),d&&(s.motionBlurTimeout=setTimeout(function(){s.motionBlurTimeout=null,s.clearedForMotionBlur[s.NODE]=!1,s.clearedForMotionBlur[s.DRAG]=!1,s.motionBlur=!1,s.clearingMotionBlur=!f,s.mbFrames=0,h[s.NODE]=!0,h[s.DRAG]=!0,s.redraw()},kXe)),e||l.emit("render")};Cf={};Cf.drawPolygonPath=function(t,e,r,n,i,a){var s=n/2,o=i/2;t.beginPath&&t.beginPath(),t.moveTo(e+s*a[0],r+o*a[1]);for(var l=1;l0&&s>0){p.clearRect(0,0,a,s),p.globalCompositeOperation="source-over";var g=this.getCachedZSortedEles();if(t.full)p.translate(-n.x1*u,-n.y1*u),p.scale(u,u),this.drawElements(p,g),p.scale(1/u,1/u),p.translate(n.x1*u,n.y1*u);else{var m=e.pan(),y={x:m.x*u,y:m.y*u};u*=e.zoom(),p.translate(y.x,y.y),p.scale(u,u),this.drawElements(p,g),p.scale(1/u,1/u),p.translate(-y.x,-y.y)}t.bg&&(p.globalCompositeOperation="destination-over",p.fillStyle=t.bg,p.rect(0,0,a,s),p.fill())}return d};Vx.png=function(t){return rpe(t,this.bufferCanvasImage(t),"image/png")};Vx.jpg=function(t){return rpe(t,this.bufferCanvasImage(t),"image/jpeg")};npe={};npe.nodeShapeImpl=function(t,e,r,n,i,a,s,o){switch(t){case"ellipse":return this.drawEllipsePath(e,r,n,i,a);case"polygon":return this.drawPolygonPath(e,r,n,i,a,s);case"round-polygon":return this.drawRoundPolygonPath(e,r,n,i,a,s,o);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(e,r,n,i,a,o);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(e,r,n,i,a,s,o);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(e,r,n,i,a,o);case"barrel":return this.drawBarrelPath(e,r,n,i,a)}};EXe=ipe,Gr=ipe.prototype;Gr.CANVAS_LAYERS=3;Gr.SELECT_BOX=0;Gr.DRAG=1;Gr.NODE=2;Gr.BUFFER_COUNT=3;Gr.TEXTURE_BUFFER=0;Gr.MOTIONBLUR_BUFFER_NODE=1;Gr.MOTIONBLUR_BUFFER_DRAG=2;Gr.redrawHint=function(t,e){var r=this;switch(t){case"eles":r.data.canvasNeedsRedraw[Gr.NODE]=e;break;case"drag":r.data.canvasNeedsRedraw[Gr.DRAG]=e;break;case"select":r.data.canvasNeedsRedraw[Gr.SELECT_BOX]=e;break}};SXe=typeof Path2D<"u";Gr.path2dEnabled=function(t){if(t===void 0)return this.pathsEnabled;this.pathsEnabled=!!t};Gr.usePaths=function(){return SXe&&this.pathsEnabled};Gr.setImgSmoothing=function(t,e){t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled=e:(t.webkitImageSmoothingEnabled=e,t.mozImageSmoothingEnabled=e,t.msImageSmoothingEnabled=e)};Gr.getImgSmoothing=function(t){return t.imageSmoothingEnabled!=null?t.imageSmoothingEnabled:t.webkitImageSmoothingEnabled||t.mozImageSmoothingEnabled||t.msImageSmoothingEnabled};Gr.makeOffscreenCanvas=function(t,e){var r;if((typeof OffscreenCanvas>"u"?"undefined":Oi(OffscreenCanvas))!=="undefined")r=new OffscreenCanvas(t,e);else{var n=this.cy.window(),i=n.document;r=i.createElement("canvas"),r.width=t,r.height=e}return r};[Q0e,qc,rh,KD,$0,o1,uo,Cf,Vx,npe].forEach(function(t){Kt(Gr,t)});CXe=[{name:"null",impl:z0e},{name:"base",impl:j0e},{name:"canvas",impl:EXe}],AXe=[{type:"layout",extensions:MYe},{type:"renderer",extensions:CXe}],ape={},spe={};CD=function(){if(arguments.length===2)return lpe.apply(null,arguments);if(arguments.length===3)return ope.apply(null,arguments);if(arguments.length===4)return LXe.apply(null,arguments);if(arguments.length===5)return _Xe.apply(null,arguments);ni("Invalid extension access syntax")};Dx.prototype.extension=CD;AXe.forEach(function(t){t.extensions.forEach(function(e){ope(t.type,e.name,e.impl)})});cpe=function t(){if(!(this instanceof t))return new t;this.length=0},F0=cpe.prototype;F0.instanceString=function(){return"stylesheet"};F0.selector=function(t){var e=this.length++;return this[e]={selector:t,properties:[]},this};F0.css=function(t,e){var r=this.length-1;if(Wt(t))this[r].properties.push({name:t,value:e});else if(Dr(t))for(var n=t,i=Object.keys(n),a=0;a{(function(e,r){typeof Wx=="object"&&typeof QD=="object"?QD.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Wx=="object"?Wx.layoutBase=r():e.layoutBase=r()})(Wx,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=26)}([function(t,e,r){"use strict";function n(){}n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(l,u,h){n.call(this,h),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=h,this.bendpoints=[],this.source=l,this.target=u}s.prototype=Object.create(n.prototype);for(var o in n)s[o]=n[o];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(l){if(this.source===l)return this.target;if(this.target===l)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(l,u){for(var h=this.getOtherEnd(l),f=u.getGraphManager().getRoot();;){if(h.getOwner()==u)return h;if(h.getOwner()==f)break;h=h.getOwner().getParent()}return null},s.prototype.updateLength=function(){var l=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),l),this.isOverlapingSourceAndTarget||(this.lengthX=l[0]-l[2],this.lengthY=l[1]-l[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,r){"use strict";function n(i){this.vGraphObject=i}t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),o=r(16),l=r(4);function u(f,d,p,g){p==null&&g==null&&(g=d),n.call(this,g),f.graphManager!=null&&(f=f.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=f,p!=null&&d!=null?this.rect=new a(d.x,d.y,p.width,p.height):this.rect=new a}u.prototype=Object.create(n.prototype);for(var h in n)u[h]=n[h];u.prototype.getEdges=function(){return this.edges},u.prototype.getChild=function(){return this.child},u.prototype.getOwner=function(){return this.owner},u.prototype.getWidth=function(){return this.rect.width},u.prototype.setWidth=function(f){this.rect.width=f},u.prototype.getHeight=function(){return this.rect.height},u.prototype.setHeight=function(f){this.rect.height=f},u.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},u.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},u.prototype.getCenter=function(){return new l(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},u.prototype.getLocation=function(){return new l(this.rect.x,this.rect.y)},u.prototype.getRect=function(){return this.rect},u.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},u.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},u.prototype.setRect=function(f,d){this.rect.x=f.x,this.rect.y=f.y,this.rect.width=d.width,this.rect.height=d.height},u.prototype.setCenter=function(f,d){this.rect.x=f-this.rect.width/2,this.rect.y=d-this.rect.height/2},u.prototype.setLocation=function(f,d){this.rect.x=f,this.rect.y=d},u.prototype.moveBy=function(f,d){this.rect.x+=f,this.rect.y+=d},u.prototype.getEdgeListToNode=function(f){var d=[],p,g=this;return g.edges.forEach(function(m){if(m.target==f){if(m.source!=g)throw"Incorrect edge source!";d.push(m)}}),d},u.prototype.getEdgesBetween=function(f){var d=[],p,g=this;return g.edges.forEach(function(m){if(!(m.source==g||m.target==g))throw"Incorrect edge source and/or target";(m.target==f||m.source==f)&&d.push(m)}),d},u.prototype.getNeighborsList=function(){var f=new Set,d=this;return d.edges.forEach(function(p){if(p.source==d)f.add(p.target);else{if(p.target!=d)throw"Incorrect incidency!";f.add(p.source)}}),f},u.prototype.withChildren=function(){var f=new Set,d,p;if(f.add(this),this.child!=null)for(var g=this.child.getNodes(),m=0;md&&(this.rect.x-=(this.labelWidth-d)/2,this.setWidth(this.labelWidth)),this.labelHeight>p&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-p)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-p),this.setHeight(this.labelHeight))}}},u.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},u.prototype.transform=function(f){var d=this.rect.x;d>s.WORLD_BOUNDARY?d=s.WORLD_BOUNDARY:d<-s.WORLD_BOUNDARY&&(d=-s.WORLD_BOUNDARY);var p=this.rect.y;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var g=new l(d,p),m=f.inverseTransformPoint(g);this.setLocation(m.x,m.y)},u.prototype.getLeft=function(){return this.rect.x},u.prototype.getRight=function(){return this.rect.x+this.rect.width},u.prototype.getTop=function(){return this.rect.y},u.prototype.getBottom=function(){return this.rect.y+this.rect.height},u.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},t.exports=u},function(t,e,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(6),o=r(3),l=r(1),u=r(13),h=r(12),f=r(11);function d(g,m,y){n.call(this,y),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,m!=null&&m instanceof s?this.graphManager=m:m!=null&&m instanceof Layout&&(this.graphManager=m.graphManager)}d.prototype=Object.create(n.prototype);for(var p in n)d[p]=n[p];d.prototype.getNodes=function(){return this.nodes},d.prototype.getEdges=function(){return this.edges},d.prototype.getGraphManager=function(){return this.graphManager},d.prototype.getParent=function(){return this.parent},d.prototype.getLeft=function(){return this.left},d.prototype.getRight=function(){return this.right},d.prototype.getTop=function(){return this.top},d.prototype.getBottom=function(){return this.bottom},d.prototype.isConnected=function(){return this.isConnected},d.prototype.add=function(g,m,y){if(m==null&&y==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(m)>-1&&this.getNodes().indexOf(y)>-1))throw"Source or target not in graph!";if(!(m.owner==y.owner&&m.owner==this))throw"Both owners must be this graph!";return m.owner!=y.owner?null:(b.source=m,b.target=y,b.isInterGraph=!1,this.getEdges().push(b),m.edges.push(b),y!=m&&y.edges.push(b),b)}},d.prototype.remove=function(g){var m=g;if(g instanceof o){if(m==null)throw"Node is null!";if(!(m.owner!=null&&m.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var y=m.edges.slice(),x,b=y.length,w=0;w-1&&E>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(k,1),x.target!=x.source&&x.target.edges.splice(E,1);var _=x.source.owner.getEdges().indexOf(x);if(_==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(_,1)}},d.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,m=i.MAX_VALUE,y,x,b,w=this.getNodes(),_=w.length,k=0;k<_;k++){var E=w[k];y=E.getTop(),x=E.getLeft(),g>y&&(g=y),m>x&&(m=x)}return g==i.MAX_VALUE?null:(w[0].getParent().paddingLeft!=null?b=w[0].getParent().paddingLeft:b=this.margin,this.left=m-b,this.top=g-b,new h(this.left,this.top))},d.prototype.updateBounds=function(g){for(var m=i.MAX_VALUE,y=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,w,_,k,E,L,S=this.nodes,C=S.length,M=0;Mw&&(m=w),y<_&&(y=_),x>k&&(x=k),bw&&(m=w),y<_&&(y=_),x>k&&(x=k),b=this.nodes.length){var C=0;y.forEach(function(M){M.owner==g&&C++}),C==this.nodes.length&&(this.isConnected=!0)}},t.exports=d},function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(5),this.layout=s,this.graphs=[],this.edges=[]}a.prototype.addRoot=function(){var s=this.layout.newGraph(),o=this.layout.newNode(null),l=this.add(s,o);return this.setRootGraph(l),this.rootGraph},a.prototype.add=function(s,o,l,u,h){if(l==null&&u==null&&h==null){if(s==null)throw"Graph is null!";if(o==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(o.child!=null)throw"Already has a child!";return s.parent=o,o.child=s,s}else{h=l,u=o,l=s;var f=u.getOwner(),d=h.getOwner();if(!(f!=null&&f.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(d!=null&&d.getGraphManager()==this))throw"Target not in this graph mgr!";if(f==d)return l.isInterGraph=!1,f.add(l,u,h);if(l.isInterGraph=!0,l.source=u,l.target=h,this.edges.indexOf(l)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(l),!(l.source!=null&&l.target!=null))throw"Edge source and/or target is null!";if(!(l.source.edges.indexOf(l)==-1&&l.target.edges.indexOf(l)==-1))throw"Edge already in source and/or target incidency list!";return l.source.edges.push(l),l.target.edges.push(l),l}},a.prototype.remove=function(s){if(s instanceof n){var o=s;if(o.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(o==this.rootGraph||o.parent!=null&&o.parent.graphManager==this))throw"Invalid parent node!";var l=[];l=l.concat(o.getEdges());for(var u,h=l.length,f=0;f=s.getRight()?o[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(o[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?o[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(o[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var h=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(h=1);var f=h*o[0],d=o[1]/h;o[0]f)return o[0]=l,o[1]=p,o[2]=h,o[3]=S,!1;if(uh)return o[0]=d,o[1]=u,o[2]=E,o[3]=f,!1;if(lh?(o[0]=m,o[1]=y,T=!0):(o[0]=g,o[1]=p,T=!0):A===N&&(l>h?(o[0]=d,o[1]=p,T=!0):(o[0]=x,o[1]=y,T=!0)),-D===N?h>l?(o[2]=L,o[3]=S,I=!0):(o[2]=E,o[3]=k,I=!0):D===N&&(h>l?(o[2]=_,o[3]=k,I=!0):(o[2]=C,o[3]=S,I=!0)),T&&I)return!1;if(l>h?u>f?(O=this.getCardinalDirection(A,N,4),B=this.getCardinalDirection(D,N,2)):(O=this.getCardinalDirection(-A,N,3),B=this.getCardinalDirection(-D,N,1)):u>f?(O=this.getCardinalDirection(-A,N,1),B=this.getCardinalDirection(-D,N,3)):(O=this.getCardinalDirection(A,N,2),B=this.getCardinalDirection(D,N,4)),!T)switch(O){case 1:$=p,P=l+-w/N,o[0]=P,o[1]=$;break;case 2:P=x,$=u+b*N,o[0]=P,o[1]=$;break;case 3:$=y,P=l+w/N,o[0]=P,o[1]=$;break;case 4:P=m,$=u+-b*N,o[0]=P,o[1]=$;break}if(!I)switch(B){case 1:H=k,z=h+-R/N,o[2]=z,o[3]=H;break;case 2:z=C,H=f+M*N,o[2]=z,o[3]=H;break;case 3:H=S,z=h+R/N,o[2]=z,o[3]=H;break;case 4:z=L,H=f+-M*N,o[2]=z,o[3]=H;break}}return!1},i.getCardinalDirection=function(a,s,o){return a>s?o:1+o%4},i.getIntersection=function(a,s,o,l){if(l==null)return this.getIntersection2(a,s,o);var u=a.x,h=a.y,f=s.x,d=s.y,p=o.x,g=o.y,m=l.x,y=l.y,x=void 0,b=void 0,w=void 0,_=void 0,k=void 0,E=void 0,L=void 0,S=void 0,C=void 0;return w=d-h,k=u-f,L=f*h-u*d,_=y-g,E=p-m,S=m*g-p*y,C=w*E-_*k,C===0?null:(x=(k*S-E*L)/C,b=(_*L-w*S)/C,new n(x,b))},i.angleOfVector=function(a,s,o,l){var u=void 0;return a!==o?(u=Math.atan((l-s)/(o-a)),o0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},t.exports=n},function(t,e,r){"use strict";function n(){}n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,r){"use strict";var n=function(){function u(h,f){for(var d=0;d"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i},function(t,e,r){"use strict";function n(p){if(Array.isArray(p)){for(var g=0,m=Array(p.length);g0&&g;){for(w.push(k[0]);w.length>0&&g;){var E=w[0];w.splice(0,1),b.add(E);for(var L=E.getEdges(),x=0;x-1&&k.splice(R,1)}b=new Set,_=new Map}}return p},d.prototype.createDummyNodesForBendpoints=function(p){for(var g=[],m=p.source,y=this.graphManager.calcLowestCommonAncestor(p.source,p.target),x=0;x0){for(var y=this.edgeToDummyNodes.get(m),x=0;x=0&&g.splice(S,1);var C=_.getNeighborsList();C.forEach(function(T){if(m.indexOf(T)<0){var I=y.get(T),A=I-1;A==1&&E.push(T),y.set(T,A)}})}m=m.concat(E),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},d.prototype.setGraphManager=function(p){this.graphManager=p},t.exports=d},function(t,e,r){"use strict";function n(){}n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},t.exports=n},function(t,e,r){"use strict";var n=r(4);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,o=this.lworldExtX;return o!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/o),s},i.prototype.transformY=function(a){var s=0,o=this.lworldExtY;return o!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/o),s},i.prototype.inverseTransformX=function(a){var s=0,o=this.ldeviceExtX;return o!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/o),s},i.prototype.inverseTransformY=function(a){var s=0,o=this.ldeviceExtY;return o!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/o),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},t.exports=i},function(t,e,r){"use strict";function n(f){if(Array.isArray(f)){for(var d=0,p=Array(f.length);da.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(f>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},u.prototype.calcSpringForces=function(){for(var f=this.getAllEdges(),d,p=0;p0&&arguments[0]!==void 0?arguments[0]:!0,d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,p,g,m,y,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&f&&this.updateGrid(),b=new Set,p=0;pw||b>w)&&(f.gravitationForceX=-this.gravityConstant*m,f.gravitationForceY=-this.gravityConstant*y)):(w=d.getEstimatedSize()*this.compoundGravityRangeFactor,(x>w||b>w)&&(f.gravitationForceX=-this.gravityConstant*m*this.compoundGravityConstant,f.gravitationForceY=-this.gravityConstant*y*this.compoundGravityConstant))},u.prototype.isConverged=function(){var f,d=!1;return this.totalIterations>this.maxIterations/3&&(d=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),f=this.totalDisplacement=x.length||w>=x[0].length)){for(var _=0;_u}}]),o}();t.exports=s},function(t,e,r){"use strict";var n=function(){function s(o,l){for(var u=0;u2&&arguments[2]!==void 0?arguments[2]:1,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,f=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=o,this.sequence2=l,this.match_score=u,this.mismatch_penalty=h,this.gap_penalty=f,this.iMax=o.length+1,this.jMax=l.length+1,this.grid=new Array(this.iMax);for(var d=0;d=0;o--){var l=this.listeners[o];l.event===a&&l.callback===s&&this.listeners.splice(o,1)}},i.emit=function(a,s){for(var o=0;o{(function(e,r){typeof Hx=="object"&&typeof eO=="object"?eO.exports=r(JD()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof Hx=="object"?Hx.coseBase=r(JD()):e.coseBase=r(e.layoutBase)})(Hx,function(t){return function(e){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?function(){return i.default}:function(){return i};return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=7)}([function(e,r){e.exports=t},function(e,r,n){"use strict";var i=n(0).FDLayoutConstants;function a(){}for(var s in i)a[s]=i[s];a.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,a.DEFAULT_RADIAL_SEPARATION=i.DEFAULT_EDGE_LENGTH,a.DEFAULT_COMPONENT_SEPERATION=60,a.TILE=!0,a.TILING_PADDING_VERTICAL=10,a.TILING_PADDING_HORIZONTAL=10,a.TREE_REDUCTION_ON_INCREMENTAL=!1,e.exports=a},function(e,r,n){"use strict";var i=n(0).FDLayoutEdge;function a(o,l,u){i.call(this,o,l,u)}a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).LGraph;function a(o,l,u){i.call(this,o,l,u)}a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).LGraphManager;function a(o){i.call(this,o)}a.prototype=Object.create(i.prototype);for(var s in i)a[s]=i[s];e.exports=a},function(e,r,n){"use strict";var i=n(0).FDLayoutNode,a=n(0).IMath;function s(l,u,h,f){i.call(this,l,u,h,f)}s.prototype=Object.create(i.prototype);for(var o in i)s[o]=i[o];s.prototype.move=function(){var l=this.graphManager.getLayout();this.displacementX=l.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=l.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>l.coolingFactor*l.maxNodeDisplacement&&(this.displacementX=l.coolingFactor*l.maxNodeDisplacement*a.sign(this.displacementX)),Math.abs(this.displacementY)>l.coolingFactor*l.maxNodeDisplacement&&(this.displacementY=l.coolingFactor*l.maxNodeDisplacement*a.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),l.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},s.prototype.propogateDisplacementToChildren=function(l,u){for(var h=this.getChild().getNodes(),f,d=0;d0)this.positionNodesRadially(k);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var E=new Set(this.getAllNodes()),L=this.nodesWithGravity.filter(function(S){return E.has(S)});this.graphManager.setAllNodesToApplyGravitation(L),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},w.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%h.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var k=new Set(this.getAllNodes()),E=this.nodesWithGravity.filter(function(C){return k.has(C)});this.graphManager.setAllNodesToApplyGravitation(E),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=h.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=h.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var L=!this.isTreeGrowing&&!this.isGrowthFinished,S=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(L,S),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},w.prototype.getPositionsData=function(){for(var k=this.graphManager.getAllNodes(),E={},L=0;L1){var T;for(T=0;TS&&(S=Math.floor(R.y)),M=Math.floor(R.x+u.DEFAULT_COMPONENT_SEPERATION)}this.transform(new p(f.WORLD_CENTER_X-R.x/2,f.WORLD_CENTER_Y-R.y/2))},w.radialLayout=function(k,E,L){var S=Math.max(this.maxDiagonalInTree(k),u.DEFAULT_RADIAL_SEPARATION);w.branchRadialLayout(E,null,0,359,0,S);var C=x.calculateBounds(k),M=new b;M.setDeviceOrgX(C.getMinX()),M.setDeviceOrgY(C.getMinY()),M.setWorldOrgX(L.x),M.setWorldOrgY(L.y);for(var R=0;R1;){var J=H[0];H.splice(0,1);var X=O.indexOf(J);X>=0&&O.splice(X,1),$--,B--}E!=null?z=(O.indexOf(H[0])+1)%$:z=0;for(var oe=Math.abs(S-L)/B,K=z;P!=B;K=++K%$){var ee=O[K].getOtherEnd(k);if(ee!=E){var Q=(L+P*oe)%360,W=(Q+oe)%360;w.branchRadialLayout(ee,k,Q,W,C+M,M),P++}}},w.maxDiagonalInTree=function(k){for(var E=m.MIN_VALUE,L=0;LE&&(E=C)}return E},w.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},w.prototype.groupZeroDegreeMembers=function(){var k=this,E={};this.memberGroups={},this.idToDummyNode={};for(var L=[],S=this.graphManager.getAllNodes(),C=0;C"u"&&(E[T]=[]),E[T]=E[T].concat(M)}Object.keys(E).forEach(function(I){if(E[I].length>1){var A="DummyCompound_"+I;k.memberGroups[A]=E[I];var D=E[I][0].getParent(),N=new o(k.graphManager);N.id=A,N.paddingLeft=D.paddingLeft||0,N.paddingRight=D.paddingRight||0,N.paddingBottom=D.paddingBottom||0,N.paddingTop=D.paddingTop||0,k.idToDummyNode[A]=N;var O=k.getGraphManager().add(k.newGraph(),N),B=D.getChild();B.add(N);for(var P=0;P=0;k--){var E=this.compoundOrder[k],L=E.id,S=E.paddingLeft,C=E.paddingTop;this.adjustLocations(this.tiledMemberPack[L],E.rect.x,E.rect.y,S,C)}},w.prototype.repopulateZeroDegreeMembers=function(){var k=this,E=this.tiledZeroDegreePack;Object.keys(E).forEach(function(L){var S=k.idToDummyNode[L],C=S.paddingLeft,M=S.paddingTop;k.adjustLocations(E[L],S.rect.x,S.rect.y,C,M)})},w.prototype.getToBeTiled=function(k){var E=k.id;if(this.toBeTiled[E]!=null)return this.toBeTiled[E];var L=k.getChild();if(L==null)return this.toBeTiled[E]=!1,!1;for(var S=L.getNodes(),C=0;C0)return this.toBeTiled[E]=!1,!1;if(M.getChild()==null){this.toBeTiled[M.id]=!1;continue}if(!this.getToBeTiled(M))return this.toBeTiled[E]=!1,!1}return this.toBeTiled[E]=!0,!0},w.prototype.getNodeDegree=function(k){for(var E=k.id,L=k.getEdges(),S=0,C=0;CI&&(I=D.rect.height)}L+=I+k.verticalPadding}},w.prototype.tileCompoundMembers=function(k,E){var L=this;this.tiledMemberPack=[],Object.keys(k).forEach(function(S){var C=E[S];L.tiledMemberPack[S]=L.tileNodes(k[S],C.paddingLeft+C.paddingRight),C.rect.width=L.tiledMemberPack[S].width,C.rect.height=L.tiledMemberPack[S].height})},w.prototype.tileNodes=function(k,E){var L=u.TILING_PADDING_VERTICAL,S=u.TILING_PADDING_HORIZONTAL,C={rows:[],rowWidth:[],rowHeight:[],width:0,height:E,verticalPadding:L,horizontalPadding:S};k.sort(function(T,I){return T.rect.width*T.rect.height>I.rect.width*I.rect.height?-1:T.rect.width*T.rect.height0&&(R+=k.horizontalPadding),k.rowWidth[L]=R,k.width0&&(T+=k.verticalPadding);var I=0;T>k.rowHeight[L]&&(I=k.rowHeight[L],k.rowHeight[L]=T,I=k.rowHeight[L]-I),k.height+=I,k.rows[L].push(E)},w.prototype.getShortestRowIndex=function(k){for(var E=-1,L=Number.MAX_VALUE,S=0;SL&&(E=S,L=k.rowWidth[S]);return E},w.prototype.canAddHorizontal=function(k,E,L){var S=this.getShortestRowIndex(k);if(S<0)return!0;var C=k.rowWidth[S];if(C+k.horizontalPadding+E<=k.width)return!0;var M=0;k.rowHeight[S]0&&(M=L+k.verticalPadding-k.rowHeight[S]);var R;k.width-C>=E+k.horizontalPadding?R=(k.height+M)/(C+E+k.horizontalPadding):R=(k.height+M)/k.width,M=L+k.verticalPadding;var T;return k.widthM&&E!=L){S.splice(-1,1),k.rows[L].push(C),k.rowWidth[E]=k.rowWidth[E]-M,k.rowWidth[L]=k.rowWidth[L]+M,k.width=k.rowWidth[instance.getLongestRowIndex(k)];for(var R=Number.MIN_VALUE,T=0;TR&&(R=S[T].height);E>0&&(R+=k.verticalPadding);var I=k.rowHeight[E]+k.rowHeight[L];k.rowHeight[E]=R,k.rowHeight[L]0)for(var B=C;B<=M;B++)O[0]+=this.grid[B][R-1].length+this.grid[B][R].length-1;if(M0)for(var B=R;B<=T;B++)O[3]+=this.grid[C-1][B].length+this.grid[C][B].length-1;for(var P=m.MAX_VALUE,$,z,H=0;H{(function(e,r){typeof qx=="object"&&typeof rO=="object"?rO.exports=r(tO()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof qx=="object"?qx.cytoscapeCoseBilkent=r(tO()):e.cytoscapeCoseBilkent=r(e.coseBase)})(qx,function(t){return function(e){var r={};function n(i){if(r[i])return r[i].exports;var a=r[i]={i,l:!1,exports:{}};return e[i].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=r,n.i=function(i){return i},n.d=function(i,a,s){n.o(i,a)||Object.defineProperty(i,a,{configurable:!1,enumerable:!0,get:s})},n.n=function(i){var a=i&&i.__esModule?function(){return i.default}:function(){return i};return n.d(a,"a",a),a},n.o=function(i,a){return Object.prototype.hasOwnProperty.call(i,a)},n.p="",n(n.s=1)}([function(e,r){e.exports=t},function(e,r,n){"use strict";var i=n(0).layoutBase.LayoutConstants,a=n(0).layoutBase.FDLayoutConstants,s=n(0).CoSEConstants,o=n(0).CoSELayout,l=n(0).CoSENode,u=n(0).layoutBase.PointD,h=n(0).layoutBase.DimensionD,f={ready:function(){},stop:function(){},quality:"default",nodeDimensionsIncludeLabels:!1,refresh:30,fit:!0,padding:10,randomize:!0,nodeRepulsion:4500,idealEdgeLength:50,edgeElasticity:.45,nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,animate:"end",animationDuration:500,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.5};function d(y,x){var b={};for(var w in y)b[w]=y[w];for(var w in x)b[w]=x[w];return b}function p(y){this.options=d(f,y),g(this.options)}var g=function(x){x.nodeRepulsion!=null&&(s.DEFAULT_REPULSION_STRENGTH=a.DEFAULT_REPULSION_STRENGTH=x.nodeRepulsion),x.idealEdgeLength!=null&&(s.DEFAULT_EDGE_LENGTH=a.DEFAULT_EDGE_LENGTH=x.idealEdgeLength),x.edgeElasticity!=null&&(s.DEFAULT_SPRING_STRENGTH=a.DEFAULT_SPRING_STRENGTH=x.edgeElasticity),x.nestingFactor!=null&&(s.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=a.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=x.nestingFactor),x.gravity!=null&&(s.DEFAULT_GRAVITY_STRENGTH=a.DEFAULT_GRAVITY_STRENGTH=x.gravity),x.numIter!=null&&(s.MAX_ITERATIONS=a.MAX_ITERATIONS=x.numIter),x.gravityRange!=null&&(s.DEFAULT_GRAVITY_RANGE_FACTOR=a.DEFAULT_GRAVITY_RANGE_FACTOR=x.gravityRange),x.gravityCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_STRENGTH=a.DEFAULT_COMPOUND_GRAVITY_STRENGTH=x.gravityCompound),x.gravityRangeCompound!=null&&(s.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=a.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=x.gravityRangeCompound),x.initialEnergyOnIncremental!=null&&(s.DEFAULT_COOLING_FACTOR_INCREMENTAL=a.DEFAULT_COOLING_FACTOR_INCREMENTAL=x.initialEnergyOnIncremental),x.quality=="draft"?i.QUALITY=0:x.quality=="proof"?i.QUALITY=2:i.QUALITY=1,s.NODE_DIMENSIONS_INCLUDE_LABELS=a.NODE_DIMENSIONS_INCLUDE_LABELS=i.NODE_DIMENSIONS_INCLUDE_LABELS=x.nodeDimensionsIncludeLabels,s.DEFAULT_INCREMENTAL=a.DEFAULT_INCREMENTAL=i.DEFAULT_INCREMENTAL=!x.randomize,s.ANIMATE=a.ANIMATE=i.ANIMATE=x.animate,s.TILE=x.tile,s.TILING_PADDING_VERTICAL=typeof x.tilingPaddingVertical=="function"?x.tilingPaddingVertical.call():x.tilingPaddingVertical,s.TILING_PADDING_HORIZONTAL=typeof x.tilingPaddingHorizontal=="function"?x.tilingPaddingHorizontal.call():x.tilingPaddingHorizontal};p.prototype.run=function(){var y,x,b=this.options,w=this.idToLNode={},_=this.layout=new o,k=this;k.stopped=!1,this.cy=this.options.cy,this.cy.trigger({type:"layoutstart",layout:this});var E=_.newGraphManager();this.gm=E;var L=this.options.eles.nodes(),S=this.options.eles.edges();this.root=E.addRoot(),this.processChildrenList(this.root,this.getTopMostNodes(L),_);for(var C=0;C0){var T;T=b.getGraphManager().add(b.newGraph(),L),this.processChildrenList(T,E,b)}}},p.prototype.stop=function(){return this.stopped=!0,this};var m=function(x){x("layout","cose-bilkent",p)};typeof cytoscape<"u"&&m(cytoscape),e.exports=m}])})});var vpe={};vr(vpe,{diagram:()=>aje});function dpe(t,e,r,n,i){return t.insert("polygon",":first-child").attr("points",n.map(function(a){return a.x+","+a.y}).join(" ")).attr("transform","translate("+(i.width-e)/2+", "+r+")")}async function aO(t,e,r,n,i){await QXe(t,e,r,n,i),r.children&&await Promise.all(r.children.map((a,s)=>aO(t,e,a,n<0?s:n,i)))}function ppe(t,e){e.edges().map((r,n)=>{let i=r.data();if(r[0]._private.bodyBounds){let a=r[0]._private.rscratch;re.trace("Edge: ",n,i),t.insert("path").attr("d",`M ${a.startX},${a.startY} L ${a.midX},${a.midY} L${a.endX},${a.endY} `).attr("class","edge section-edge-"+i.section+" edge-depth-"+i.depth)}})}function sO(t,e,r,n){e.add({group:"nodes",data:{id:t.id.toString(),labelText:t.descr,height:t.height,width:t.width,level:n,nodeId:t.id,padding:t.padding,type:t.type},position:{x:t.x,y:t.y}}),t.children&&t.children.forEach(i=>{sO(i,e,r,n+1),e.add({group:"edges",data:{id:`${t.id}_${i.id}`,source:t.id,target:i.id,depth:n,section:i.section}})})}function gpe(t,e){return new Promise(r=>{let n=Ve("body").append("div").attr("id","cy").attr("style","display:none"),i=Jo({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});n.remove(),sO(t,i,e,0),i.nodes().forEach(function(a){a.layoutDimensions=()=>{let s=a.data();return{w:s.width,h:s.height}}}),i.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),i.ready(a=>{re.info("Ready",a),r(i)})})}function mpe(t,e){e.nodes().map((r,n)=>{let i=r.data();i.x=r.position().x,i.y=r.position().y,JXe(t,i);let a=t.getElementById(i.nodeId);re.info("Id:",n,"Position: (",r.position().x,", ",r.position().y,")",i),a.attr("transform",`translate(${r.position().x-i.width/2}, ${r.position().y-i.height/2})`),a.attr("attr",`apa-${n})`)})}var fpe,nO,NXe,zl,hpe,iO,IXe,MXe,DXe,OXe,Bi,PXe,BXe,FXe,zXe,$Xe,GXe,UXe,VXe,WXe,HXe,qXe,YXe,XXe,jXe,KXe,ZXe,QXe,JXe,eje,tje,rje,nje,ije,aje,ype=F(()=>{Ya();kn();Iu();or();ZD();fpe=Gi(upe(),1);lr();go();nO=function(){var t=v(function(_,k,E,L){for(E=E||{},L=_.length;L--;E[_[L]]=k);return E},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],o=[1,19],l=[6,7,8],u=[1,26],h=[1,24],f=[1,25],d=[6,7,11],p=[1,6,13,15,16,19,22],g=[1,33],m=[1,34],y=[1,6,7,11,13,15,16,19,22],x={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:v(function(k,E,L,S,C,M,R){var T=M.length-1;switch(C){case 6:case 7:return S;case 8:S.getLogger().trace("Stop NL ");break;case 9:S.getLogger().trace("Stop EOF ");break;case 11:S.getLogger().trace("Stop NL2 ");break;case 12:S.getLogger().trace("Stop EOF2 ");break;case 15:S.getLogger().info("Node: ",M[T].id),S.addNode(M[T-1].length,M[T].id,M[T].descr,M[T].type);break;case 16:S.getLogger().trace("Icon: ",M[T]),S.decorateNode({icon:M[T]});break;case 17:case 21:S.decorateNode({class:M[T]});break;case 18:S.getLogger().trace("SPACELIST");break;case 19:S.getLogger().trace("Node: ",M[T].id),S.addNode(0,M[T].id,M[T].descr,M[T].type);break;case 20:S.decorateNode({icon:M[T]});break;case 25:S.getLogger().trace("node found ..",M[T-2]),this.$={id:M[T-1],descr:M[T-1],type:S.getType(M[T-2],M[T])};break;case 26:this.$={id:M[T],descr:M[T],type:S.nodeType.DEFAULT};break;case 27:S.getLogger().trace("node found ..",M[T-3]),this.$={id:M[T-3],descr:M[T-1],type:S.getType(M[T-2],M[T])};break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:r,7:[1,10],9:9,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:o},t(l,[2,3]),{1:[2,2]},t(l,[2,4]),t(l,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:o},{6:r,9:22,12:11,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:o},{6:u,7:h,10:23,11:f},t(d,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:s,22:o}),t(d,[2,18]),t(d,[2,19]),t(d,[2,20]),t(d,[2,21]),t(d,[2,23]),t(d,[2,24]),t(d,[2,26],{19:[1,30]}),{20:[1,31]},{6:u,7:h,10:32,11:f},{1:[2,7],6:r,12:21,13:n,14:14,15:i,16:a,17:17,18:18,19:s,22:o},t(p,[2,14],{7:g,11:m}),t(y,[2,8]),t(y,[2,9]),t(y,[2,10]),t(d,[2,15]),t(d,[2,16]),t(d,[2,17]),{20:[1,35]},{21:[1,36]},t(p,[2,13],{7:g,11:m}),t(y,[2,11]),t(y,[2,12]),{21:[1,37]},t(d,[2,25]),t(d,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:v(function(k,E){if(E.recoverable)this.trace(k);else{var L=new Error(k);throw L.hash=E,L}},"parseError"),parse:v(function(k){var E=this,L=[0],S=[],C=[null],M=[],R=this.table,T="",I=0,A=0,D=0,N=2,O=1,B=M.slice.call(arguments,1),P=Object.create(this.lexer),$={yy:{}};for(var z in this.yy)Object.prototype.hasOwnProperty.call(this.yy,z)&&($.yy[z]=this.yy[z]);P.setInput(k,$.yy),$.yy.lexer=P,$.yy.parser=this,typeof P.yylloc>"u"&&(P.yylloc={});var H=P.yylloc;M.push(H);var J=P.options&&P.options.ranges;typeof $.yy.parseError=="function"?this.parseError=$.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function X(we){L.length=L.length-2*we,C.length=C.length-we,M.length=M.length-we}v(X,"popStack");function oe(){var we;return we=S.pop()||P.lex()||O,typeof we!="number"&&(we instanceof Array&&(S=we,we=S.pop()),we=E.symbols_[we]||we),we}v(oe,"lex");for(var K,ee,Q,W,Y,Z,se={},ce,ue,te,Ne;;){if(Q=L[L.length-1],this.defaultActions[Q]?W=this.defaultActions[Q]:((K===null||typeof K>"u")&&(K=oe()),W=R[Q]&&R[Q][K]),typeof W>"u"||!W.length||!W[0]){var ae="";Ne=[];for(ce in R[Q])this.terminals_[ce]&&ce>N&&Ne.push("'"+this.terminals_[ce]+"'");P.showPosition?ae="Parse error on line "+(I+1)+`: `+P.showPosition()+` Expecting `+Ne.join(", ")+", got '"+(this.terminals_[K]||K)+"'":ae="Parse error on line "+(I+1)+": Unexpected "+(K==O?"end of input":"'"+(this.terminals_[K]||K)+"'"),this.parseError(ae,{text:P.match,token:this.terminals_[K]||K,line:P.yylineno,loc:H,expected:Ne})}if(W[0]instanceof Array&&W.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Q+", token: "+K);switch(W[0]){case 1:L.push(K),C.push(P.yytext),M.push(P.yylloc),L.push(W[1]),K=null,ee?(K=ee,ee=null):(A=P.yyleng,T=P.yytext,I=P.yylineno,H=P.yylloc,D>0&&D--);break;case 2:if(ue=this.productions_[W[1]][1],se.$=C[C.length-ue],se._$={first_line:M[M.length-(ue||1)].first_line,last_line:M[M.length-1].last_line,first_column:M[M.length-(ue||1)].first_column,last_column:M[M.length-1].last_column},J&&(se._$.range=[M[M.length-(ue||1)].range[0],M[M.length-1].range[1]]),Z=this.performAction.apply(se,[T,A,I,$.yy,W[1],C,M].concat(B)),typeof Z<"u")return Z;ue&&(L=L.slice(0,-1*ue*2),C=C.slice(0,-1*ue),M=M.slice(0,-1*ue)),L.push(this.productions_[W[1]][0]),C.push(se.$),M.push(se._$),te=R[L[L.length-2]][L[L.length-1]],L.push(te);break;case 3:return!0}}return!0},"parse")},b=function(){var _={EOF:1,parseError:v(function(E,L){if(this.yy.parser)this.yy.parser.parseError(E,L);else throw new Error(E)},"parseError"),setInput:v(function(k,E){return this.yy=E||this.yy||{},this._input=k,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var k=this._input[0];this.yytext+=k,this.yyleng++,this.offset++,this.match+=k,this.matched+=k;var E=k.match(/(?:\r\n?|\n).*/g);return E?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),k},"input"),unput:v(function(k){var E=k.length,L=k.split(/(?:\r\n?|\n)/g);this._input=k+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-E),this.offset-=E;var S=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),L.length-1&&(this.yylineno-=L.length-1);var C=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:L?(L.length===S.length?this.yylloc.first_column:0)+S[S.length-L.length].length-L[0].length:this.yylloc.first_column-E},this.options.ranges&&(this.yylloc.range=[C[0],C[0]+this.yyleng-E]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(k){this.unput(this.match.slice(k))},"less"),pastInput:v(function(){var k=this.matched.substr(0,this.matched.length-this.match.length);return(k.length>20?"...":"")+k.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var k=this.match;return k.length<20&&(k+=this._input.substr(0,20-k.length)),(k.substr(0,20)+(k.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var k=this.pastInput(),E=new Array(k.length+1).join("-");return k+this.upcomingInput()+` `+E+"^"},"showPosition"),test_match:v(function(k,E){var L,S,C;if(this.options.backtrack_lexer&&(C={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(C.yylloc.range=this.yylloc.range.slice(0))),S=k[0].match(/(?:\r\n?|\n).*/g),S&&(this.yylineno+=S.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:S?S[S.length-1].length-S[S.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+k[0].length},this.yytext+=k[0],this.match+=k[0],this.matches=k,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(k[0].length),this.matched+=k[0],L=this.performAction.call(this,this.yy,this,E,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),L)return L;if(this._backtrack){for(var M in C)this[M]=C[M];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var k,E,L,S;this._more||(this.yytext="",this.match="");for(var C=this._currentRules(),M=0;ME[0].length)){if(E=L,S=M,this.options.backtrack_lexer){if(k=this.test_match(L,C[M]),k!==!1)return k;if(this._backtrack){E=!1;continue}else return!1}else if(!this.options.flex)break}return E?(k=this.test_match(E,C[S]),k!==!1?k:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var E=this.next();return E||this.lex()},"lex"),begin:v(function(E){this.conditionStack.push(E)},"begin"),popState:v(function(){var E=this.conditionStack.length-1;return E>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(E){return E=this.conditionStack.length-1-Math.abs(E||0),E>=0?this.conditionStack[E]:"INITIAL"},"topState"),pushState:v(function(E){this.begin(E)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:v(function(E,L,S,C){var M=C;switch(S){case 0:return E.getLogger().trace("Found comment",L.yytext),6;break;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;break;case 4:this.popState();break;case 5:E.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return E.getLogger().trace("SPACELINE"),6;break;case 7:return 7;case 8:return 15;case 9:E.getLogger().trace("end icon"),this.popState();break;case 10:return E.getLogger().trace("Exploding node"),this.begin("NODE"),19;break;case 11:return E.getLogger().trace("Cloud"),this.begin("NODE"),19;break;case 12:return E.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;break;case 13:return E.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;break;case 14:return this.begin("NODE"),19;break;case 15:return this.begin("NODE"),19;break;case 16:return this.begin("NODE"),19;break;case 17:return this.begin("NODE"),19;break;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:E.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return E.getLogger().trace("description:",L.yytext),"NODE_DESCR";break;case 26:this.popState();break;case 27:return this.popState(),E.getLogger().trace("node end ))"),"NODE_DEND";break;case 28:return this.popState(),E.getLogger().trace("node end )"),"NODE_DEND";break;case 29:return this.popState(),E.getLogger().trace("node end ...",L.yytext),"NODE_DEND";break;case 30:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 31:return this.popState(),E.getLogger().trace("node end (-"),"NODE_DEND";break;case 32:return this.popState(),E.getLogger().trace("node end (-"),"NODE_DEND";break;case 33:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 34:return this.popState(),E.getLogger().trace("node end (("),"NODE_DEND";break;case 35:return E.getLogger().trace("Long description:",L.yytext),20;break;case 36:return E.getLogger().trace("Long description:",L.yytext),20;break}},"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return _}();x.lexer=b;function w(){this.yy={}}return v(w,"Parser"),w.prototype=x,x.Parser=w,new w}();nO.parser=nO;NXe=nO,zl=[],hpe=0,iO={},IXe=v(()=>{zl=[],hpe=0,iO={}},"clear"),MXe=v(function(t){for(let e=zl.length-1;e>=0;e--)if(zl[e].levelzl.length>0?zl[0]:null,"getMindmap"),OXe=v((t,e,r,n)=>{re.info("addNode",t,e,r,n);let i=pe(),a=i.mindmap?.padding??sr.mindmap.padding;switch(n){case Bi.ROUNDED_RECT:case Bi.RECT:case Bi.HEXAGON:a*=2}let s={id:hpe++,nodeId:yr(e,i),level:t,descr:yr(r,i),type:n,children:[],width:i.mindmap?.maxNodeWidth??sr.mindmap.maxNodeWidth,padding:a},o=MXe(t);if(o)o.children.push(s),zl.push(s);else if(zl.length===0)zl.push(s);else throw new Error('There can be only one root. No parent could be found for ("'+s.descr+'")')},"addNode"),Bi={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},PXe=v((t,e)=>{switch(re.debug("In get type",t,e),t){case"[":return Bi.RECT;case"(":return e===")"?Bi.ROUNDED_RECT:Bi.CLOUD;case"((":return Bi.CIRCLE;case")":return Bi.CLOUD;case"))":return Bi.BANG;case"{{":return Bi.HEXAGON;default:return Bi.DEFAULT}},"getType"),BXe=v((t,e)=>{iO[t]=e},"setElementForId"),FXe=v(t=>{if(!t)return;let e=pe(),r=zl[zl.length-1];t.icon&&(r.icon=yr(t.icon,e)),t.class&&(r.class=yr(t.class,e))},"decorateNode"),zXe=v(t=>{switch(t){case Bi.DEFAULT:return"no-border";case Bi.RECT:return"rect";case Bi.ROUNDED_RECT:return"rounded-rect";case Bi.CIRCLE:return"circle";case Bi.CLOUD:return"cloud";case Bi.BANG:return"bang";case Bi.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),$Xe=v(()=>re,"getLogger"),GXe=v(t=>iO[t],"getElementById"),UXe={clear:IXe,addNode:OXe,getMindmap:DXe,nodeType:Bi,getType:PXe,setElementForId:BXe,decorateNode:FXe,type2Str:zXe,getLogger:$Xe,getElementById:GXe},VXe=UXe,WXe=12,HXe=v(function(t,e,r,n){e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 ${r.height-5} v${-r.height+2*5} q0,-5 5,-5 h${r.width-2*5} q5,0 5,5 v${r.height-5} H0 Z`),e.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",r.height).attr("x2",r.width).attr("y2",r.height)},"defaultBkg"),qXe=v(function(t,e,r){e.append("rect").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("height",r.height).attr("width",r.width)},"rectBkg"),YXe=v(function(t,e,r){let n=r.width,i=r.height,a=.15*n,s=.25*n,o=.35*n,l=.2*n;e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 0 a${a},${a} 0 0,1 ${n*.25},${-1*n*.1} a${o},${o} 1 0,1 ${n*.4},${-1*n*.1} a${s},${s} 1 0,1 ${n*.35},${1*n*.2} a${a},${a} 1 0,1 ${n*.15},${1*i*.35} a${l},${l} 1 0,1 ${-1*n*.15},${1*i*.65} a${s},${a} 1 0,1 ${-1*n*.25},${n*.15} a${o},${o} 1 0,1 ${-1*n*.5},0 a${a},${a} 1 0,1 ${-1*n*.25},${-1*n*.15} a${a},${a} 1 0,1 ${-1*n*.1},${-1*i*.35} a${l},${l} 1 0,1 ${n*.1},${-1*i*.65} H0 V0 Z`)},"cloudBkg"),XXe=v(function(t,e,r){let n=r.width,i=r.height,a=.15*n;e.append("path").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("d",`M0 0 a${a},${a} 1 0,0 ${n*.25},${-1*i*.1} a${a},${a} 1 0,0 ${n*.25},0 a${a},${a} 1 0,0 ${n*.25},0 a${a},${a} 1 0,0 ${n*.25},${1*i*.1} a${a},${a} 1 0,0 ${n*.15},${1*i*.33} a${a*.8},${a*.8} 1 0,0 0,${1*i*.34} a${a},${a} 1 0,0 ${-1*n*.15},${1*i*.33} a${a},${a} 1 0,0 ${-1*n*.25},${i*.15} a${a},${a} 1 0,0 ${-1*n*.25},0 a${a},${a} 1 0,0 ${-1*n*.25},0 a${a},${a} 1 0,0 ${-1*n*.25},${-1*i*.15} a${a},${a} 1 0,0 ${-1*n*.1},${-1*i*.33} a${a*.8},${a*.8} 1 0,0 0,${-1*i*.34} a${a},${a} 1 0,0 ${n*.1},${-1*i*.33} H0 V0 Z`)},"bangBkg"),jXe=v(function(t,e,r){e.append("circle").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("r",r.width/2)},"circleBkg");v(dpe,"insertPolygonShape");KXe=v(function(t,e,r){let n=r.height,a=n/4,s=r.width-r.padding+2*a,o=[{x:a,y:0},{x:s-a,y:0},{x:s,y:-n/2},{x:s-a,y:-n},{x:a,y:-n},{x:0,y:-n/2}];dpe(e,s,n,o,r)},"hexagonBkg"),ZXe=v(function(t,e,r){e.append("rect").attr("id","node-"+r.id).attr("class","node-bkg node-"+t.type2Str(r.type)).attr("height",r.height).attr("rx",r.padding).attr("ry",r.padding).attr("width",r.width)},"roundedRectBkg"),QXe=v(async function(t,e,r,n,i){let a=i.htmlLabels,s=n%(WXe-1),o=e.append("g");r.section=s;let l="section-"+s;s<0&&(l+=" section-root"),o.attr("class",(r.class?r.class+" ":"")+"mindmap-node "+l);let u=o.append("g"),h=o.append("g"),f=r.descr.replace(/()/g,` `);await oa(h,f,{useHtmlLabels:a,width:r.width,classes:"mindmap-node-label"},i),a||h.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");let d=h.node().getBBox(),[p]=Ro(i.fontSize);if(r.height=d.height+p*1.1*.5+r.padding,r.width=d.width+2*r.padding,r.icon)if(r.type===t.nodeType.CIRCLE)r.height+=50,r.width+=50,o.append("foreignObject").attr("height","50px").attr("width",r.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+s+" "+r.icon),h.attr("transform","translate("+r.width/2+", "+(r.height/2-1.5*r.padding)+")");else{r.width+=50;let g=r.height;r.height=Math.max(g,60);let m=Math.abs(r.height-g);o.append("foreignObject").attr("width","60px").attr("height",r.height).attr("style","text-align: center;margin-top:"+m/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+s+" "+r.icon),h.attr("transform","translate("+(25+r.width/2)+", "+(m/2+r.padding/2)+")")}else if(a){let g=(r.width-d.width)/2,m=(r.height-d.height)/2;h.attr("transform","translate("+g+", "+m+")")}else{let g=r.width/2,m=r.padding/2;h.attr("transform","translate("+g+", "+m+")")}switch(r.type){case t.nodeType.DEFAULT:HXe(t,u,r,s);break;case t.nodeType.ROUNDED_RECT:ZXe(t,u,r,s);break;case t.nodeType.RECT:qXe(t,u,r,s);break;case t.nodeType.CIRCLE:u.attr("transform","translate("+r.width/2+", "+ +r.height/2+")"),jXe(t,u,r,s);break;case t.nodeType.CLOUD:YXe(t,u,r,s);break;case t.nodeType.BANG:XXe(t,u,r,s);break;case t.nodeType.HEXAGON:KXe(t,u,r,s);break}return t.setElementForId(r.id,o),r.height},"drawNode"),JXe=v(function(t,e){let r=t.getElementById(e.id),n=e.x||0,i=e.y||0;r.attr("transform","translate("+n+","+i+")")},"positionNode");Jo.use(fpe.default);v(aO,"drawNodes");v(ppe,"drawEdges");v(sO,"addNodes");v(gpe,"layoutMindmap");v(mpe,"positionNodes");eje=v(async(t,e,r,n)=>{re.debug(`Rendering mindmap diagram `+t);let i=n.db,a=i.getMindmap();if(!a)return;let s=pe();s.htmlLabels=!1;let o=La(e),l=o.append("g");l.attr("class","mindmap-edges");let u=o.append("g");u.attr("class","mindmap-nodes"),await aO(i,u,a,-1,s);let h=await gpe(a,s);ppe(l,h),mpe(i,h),il(void 0,o,s.mindmap?.padding??sr.mindmap.padding,s.mindmap?.useMaxWidth??sr.mindmap.useMaxWidth)},"draw"),tje={draw:eje},rje=v(t=>{let e="";for(let r=0;r` .edge { stroke-width: 3; } ${rje(t)} .section-root rect, .section-root path, .section-root circle, .section-root polygon { fill: ${t.git0}; } .section-root text { fill: ${t.gitBranchLabel0}; } .icon-container { height:100%; display: flex; justify-content: center; align-items: center; } .edge { fill: none; } .mindmap-node-label { dy: 1em; alignment-baseline: middle; text-anchor: middle; dominant-baseline: middle; text-align: center; } `,"getStyles"),ije=nje,aje={db:VXe,renderer:tje,parser:NXe,styles:ije}});var bpe={};vr(bpe,{diagram:()=>Eje});var oO,sje,el,cO,lO,uO,oje,lje,xpe,cje,uje,Fi,hje,fje,dje,pje,gje,mje,vje,yje,xje,bje,wje,kje,Tje,Eje,wpe=F(()=>{r4();yl();sl();bo();Ya();kn();Iu();or();go();oO=function(){var t=v(function(L,S,C,M){for(C=C||{},M=L.length;M--;C[L[M]]=S);return C},"o"),e=[1,4],r=[1,13],n=[1,12],i=[1,15],a=[1,16],s=[1,20],o=[1,19],l=[6,7,8],u=[1,26],h=[1,24],f=[1,25],d=[6,7,11],p=[1,31],g=[6,7,11,24],m=[1,6,13,16,17,20,23],y=[1,35],x=[1,36],b=[1,6,7,11,13,16,17,20,23],w=[1,38],_={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:v(function(S,C,M,R,T,I,A){var D=I.length-1;switch(T){case 6:case 7:return R;case 8:R.getLogger().trace("Stop NL ");break;case 9:R.getLogger().trace("Stop EOF ");break;case 11:R.getLogger().trace("Stop NL2 ");break;case 12:R.getLogger().trace("Stop EOF2 ");break;case 15:R.getLogger().info("Node: ",I[D-1].id),R.addNode(I[D-2].length,I[D-1].id,I[D-1].descr,I[D-1].type,I[D]);break;case 16:R.getLogger().info("Node: ",I[D].id),R.addNode(I[D-1].length,I[D].id,I[D].descr,I[D].type);break;case 17:R.getLogger().trace("Icon: ",I[D]),R.decorateNode({icon:I[D]});break;case 18:case 23:R.decorateNode({class:I[D]});break;case 19:R.getLogger().trace("SPACELIST");break;case 20:R.getLogger().trace("Node: ",I[D-1].id),R.addNode(0,I[D-1].id,I[D-1].descr,I[D-1].type,I[D]);break;case 21:R.getLogger().trace("Node: ",I[D].id),R.addNode(0,I[D].id,I[D].descr,I[D].type);break;case 22:R.decorateNode({icon:I[D]});break;case 27:R.getLogger().trace("node found ..",I[D-2]),this.$={id:I[D-1],descr:I[D-1],type:R.getType(I[D-2],I[D])};break;case 28:this.$={id:I[D],descr:I[D],type:0};break;case 29:R.getLogger().trace("node found ..",I[D-3]),this.$={id:I[D-3],descr:I[D-1],type:R.getType(I[D-2],I[D])};break;case 30:this.$=I[D-1]+I[D];break;case 31:this.$=I[D];break}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:r,7:[1,10],9:9,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:o},t(l,[2,3]),{1:[2,2]},t(l,[2,4]),t(l,[2,5]),{1:[2,6],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:o},{6:r,9:22,12:11,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:o},{6:u,7:h,10:23,11:f},t(d,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:s,23:o}),t(d,[2,19]),t(d,[2,21],{15:30,24:p}),t(d,[2,22]),t(d,[2,23]),t(g,[2,25]),t(g,[2,26]),t(g,[2,28],{20:[1,32]}),{21:[1,33]},{6:u,7:h,10:34,11:f},{1:[2,7],6:r,12:21,13:n,14:14,16:i,17:a,18:17,19:18,20:s,23:o},t(m,[2,14],{7:y,11:x}),t(b,[2,8]),t(b,[2,9]),t(b,[2,10]),t(d,[2,16],{15:37,24:p}),t(d,[2,17]),t(d,[2,18]),t(d,[2,20],{24:w}),t(g,[2,31]),{21:[1,39]},{22:[1,40]},t(m,[2,13],{7:y,11:x}),t(b,[2,11]),t(b,[2,12]),t(d,[2,15],{24:w}),t(g,[2,30]),{22:[1,41]},t(g,[2,27]),t(g,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:v(function(S,C){if(C.recoverable)this.trace(S);else{var M=new Error(S);throw M.hash=C,M}},"parseError"),parse:v(function(S){var C=this,M=[0],R=[],T=[null],I=[],A=this.table,D="",N=0,O=0,B=0,P=2,$=1,z=I.slice.call(arguments,1),H=Object.create(this.lexer),J={yy:{}};for(var X in this.yy)Object.prototype.hasOwnProperty.call(this.yy,X)&&(J.yy[X]=this.yy[X]);H.setInput(S,J.yy),J.yy.lexer=H,J.yy.parser=this,typeof H.yylloc>"u"&&(H.yylloc={});var oe=H.yylloc;I.push(oe);var K=H.options&&H.options.ranges;typeof J.yy.parseError=="function"?this.parseError=J.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ee(Oe){M.length=M.length-2*Oe,T.length=T.length-Oe,I.length=I.length-Oe}v(ee,"popStack");function Q(){var Oe;return Oe=R.pop()||H.lex()||$,typeof Oe!="number"&&(Oe instanceof Array&&(R=Oe,Oe=R.pop()),Oe=C.symbols_[Oe]||Oe),Oe}v(Q,"lex");for(var W,Y,Z,se,ce,ue,te={},Ne,ae,we,Ie;;){if(Z=M[M.length-1],this.defaultActions[Z]?se=this.defaultActions[Z]:((W===null||typeof W>"u")&&(W=Q()),se=A[Z]&&A[Z][W]),typeof se>"u"||!se.length||!se[0]){var Ee="";Ie=[];for(Ne in A[Z])this.terminals_[Ne]&&Ne>P&&Ie.push("'"+this.terminals_[Ne]+"'");H.showPosition?Ee="Parse error on line "+(N+1)+`: `+H.showPosition()+` Expecting `+Ie.join(", ")+", got '"+(this.terminals_[W]||W)+"'":Ee="Parse error on line "+(N+1)+": Unexpected "+(W==$?"end of input":"'"+(this.terminals_[W]||W)+"'"),this.parseError(Ee,{text:H.match,token:this.terminals_[W]||W,line:H.yylineno,loc:oe,expected:Ie})}if(se[0]instanceof Array&&se.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Z+", token: "+W);switch(se[0]){case 1:M.push(W),T.push(H.yytext),I.push(H.yylloc),M.push(se[1]),W=null,Y?(W=Y,Y=null):(O=H.yyleng,D=H.yytext,N=H.yylineno,oe=H.yylloc,B>0&&B--);break;case 2:if(ae=this.productions_[se[1]][1],te.$=T[T.length-ae],te._$={first_line:I[I.length-(ae||1)].first_line,last_line:I[I.length-1].last_line,first_column:I[I.length-(ae||1)].first_column,last_column:I[I.length-1].last_column},K&&(te._$.range=[I[I.length-(ae||1)].range[0],I[I.length-1].range[1]]),ue=this.performAction.apply(te,[D,O,N,J.yy,se[1],T,I].concat(z)),typeof ue<"u")return ue;ae&&(M=M.slice(0,-1*ae*2),T=T.slice(0,-1*ae),I=I.slice(0,-1*ae)),M.push(this.productions_[se[1]][0]),T.push(te.$),I.push(te._$),we=A[M[M.length-2]][M[M.length-1]],M.push(we);break;case 3:return!0}}return!0},"parse")},k=function(){var L={EOF:1,parseError:v(function(C,M){if(this.yy.parser)this.yy.parser.parseError(C,M);else throw new Error(C)},"parseError"),setInput:v(function(S,C){return this.yy=C||this.yy||{},this._input=S,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var S=this._input[0];this.yytext+=S,this.yyleng++,this.offset++,this.match+=S,this.matched+=S;var C=S.match(/(?:\r\n?|\n).*/g);return C?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),S},"input"),unput:v(function(S){var C=S.length,M=S.split(/(?:\r\n?|\n)/g);this._input=S+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-C),this.offset-=C;var R=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),M.length-1&&(this.yylineno-=M.length-1);var T=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:M?(M.length===R.length?this.yylloc.first_column:0)+R[R.length-M.length].length-M[0].length:this.yylloc.first_column-C},this.options.ranges&&(this.yylloc.range=[T[0],T[0]+this.yyleng-C]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(S){this.unput(this.match.slice(S))},"less"),pastInput:v(function(){var S=this.matched.substr(0,this.matched.length-this.match.length);return(S.length>20?"...":"")+S.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var S=this.match;return S.length<20&&(S+=this._input.substr(0,20-S.length)),(S.substr(0,20)+(S.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var S=this.pastInput(),C=new Array(S.length+1).join("-");return S+this.upcomingInput()+` `+C+"^"},"showPosition"),test_match:v(function(S,C){var M,R,T;if(this.options.backtrack_lexer&&(T={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(T.yylloc.range=this.yylloc.range.slice(0))),R=S[0].match(/(?:\r\n?|\n).*/g),R&&(this.yylineno+=R.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:R?R[R.length-1].length-R[R.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+S[0].length},this.yytext+=S[0],this.match+=S[0],this.matches=S,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(S[0].length),this.matched+=S[0],M=this.performAction.call(this,this.yy,this,C,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),M)return M;if(this._backtrack){for(var I in T)this[I]=T[I];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var S,C,M,R;this._more||(this.yytext="",this.match="");for(var T=this._currentRules(),I=0;IC[0].length)){if(C=M,R=I,this.options.backtrack_lexer){if(S=this.test_match(M,T[I]),S!==!1)return S;if(this._backtrack){C=!1;continue}else return!1}else if(!this.options.flex)break}return C?(S=this.test_match(C,T[R]),S!==!1?S:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var C=this.next();return C||this.lex()},"lex"),begin:v(function(C){this.conditionStack.push(C)},"begin"),popState:v(function(){var C=this.conditionStack.length-1;return C>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(C){return C=this.conditionStack.length-1-Math.abs(C||0),C>=0?this.conditionStack[C]:"INITIAL"},"topState"),pushState:v(function(C){this.begin(C)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:v(function(C,M,R,T){var I=T;switch(R){case 0:return this.pushState("shapeData"),M.yytext="",24;break;case 1:return this.pushState("shapeDataStr"),24;break;case 2:return this.popState(),24;break;case 3:let A=/\n\s*/g;return M.yytext=M.yytext.replace(A,"
    "),24;break;case 4:return 24;case 5:this.popState();break;case 6:return C.getLogger().trace("Found comment",M.yytext),6;break;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;break;case 10:this.popState();break;case 11:C.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return C.getLogger().trace("SPACELINE"),6;break;case 13:return 7;case 14:return 16;case 15:C.getLogger().trace("end icon"),this.popState();break;case 16:return C.getLogger().trace("Exploding node"),this.begin("NODE"),20;break;case 17:return C.getLogger().trace("Cloud"),this.begin("NODE"),20;break;case 18:return C.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;break;case 19:return C.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;break;case 20:return this.begin("NODE"),20;break;case 21:return this.begin("NODE"),20;break;case 22:return this.begin("NODE"),20;break;case 23:return this.begin("NODE"),20;break;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 29:this.popState();break;case 30:C.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return C.getLogger().trace("description:",M.yytext),"NODE_DESCR";break;case 32:this.popState();break;case 33:return this.popState(),C.getLogger().trace("node end ))"),"NODE_DEND";break;case 34:return this.popState(),C.getLogger().trace("node end )"),"NODE_DEND";break;case 35:return this.popState(),C.getLogger().trace("node end ...",M.yytext),"NODE_DEND";break;case 36:return this.popState(),C.getLogger().trace("node end (("),"NODE_DEND";break;case 37:return this.popState(),C.getLogger().trace("node end (-"),"NODE_DEND";break;case 38:return this.popState(),C.getLogger().trace("node end (-"),"NODE_DEND";break;case 39:return this.popState(),C.getLogger().trace("node end (("),"NODE_DEND";break;case 40:return this.popState(),C.getLogger().trace("node end (("),"NODE_DEND";break;case 41:return C.getLogger().trace("Long description:",M.yytext),21;break;case 42:return C.getLogger().trace("Long description:",M.yytext),21;break}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}};return L}();_.lexer=k;function E(){this.yy={}}return v(E,"Parser"),E.prototype=_,_.Parser=E,new E}();oO.parser=oO;sje=oO,el=[],cO=[],lO=0,uO={},oje=v(()=>{el=[],cO=[],lO=0,uO={}},"clear"),lje=v(t=>{if(el.length===0)return null;let e=el[0].level,r=null;for(let n=el.length-1;n>=0;n--)if(el[n].level===e&&!r&&(r=el[n]),el[n].levelo.parentId===i.id);for(let o of s){let l={id:o.id,parentId:i.id,label:yr(o.label??"",n),isGroup:!1,ticket:o?.ticket,priority:o?.priority,assigned:o?.assigned,icon:o?.icon,shape:"kanbanItem",level:o.level,rx:5,ry:5,cssStyles:["text-align: left"]};e.push(l)}}return{nodes:e,edges:t,other:{},config:pe()}},"getData"),uje=v((t,e,r,n,i)=>{let a=pe(),s=a.mindmap?.padding??sr.mindmap.padding;switch(n){case Fi.ROUNDED_RECT:case Fi.RECT:case Fi.HEXAGON:s*=2}let o={id:yr(e,a)||"kbn"+lO++,level:t,label:yr(r,a),width:a.mindmap?.maxNodeWidth??sr.mindmap.maxNodeWidth,padding:s,isGroup:!1};if(i!==void 0){let u;i.includes(` `)?u=i+` `:u=`{ `+i+` }`;let h=sp(u,{schema:ap});if(h.shape&&(h.shape!==h.shape.toLowerCase()||h.shape.includes("_")))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);h?.shape&&h.shape==="kanbanItem"&&(o.shape=h?.shape),h?.label&&(o.label=h?.label),h?.icon&&(o.icon=h?.icon),h?.assigned&&(o.assigned=h?.assigned),h?.ticket&&(o.ticket=h?.ticket),h?.priority&&(o.priority=h?.priority)}let l=lje(t);l?o.parentId=l.id||"kbn"+lO++:cO.push(o),el.push(o)},"addNode"),Fi={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},hje=v((t,e)=>{switch(re.debug("In get type",t,e),t){case"[":return Fi.RECT;case"(":return e===")"?Fi.ROUNDED_RECT:Fi.CLOUD;case"((":return Fi.CIRCLE;case")":return Fi.CLOUD;case"))":return Fi.BANG;case"{{":return Fi.HEXAGON;default:return Fi.DEFAULT}},"getType"),fje=v((t,e)=>{uO[t]=e},"setElementForId"),dje=v(t=>{if(!t)return;let e=pe(),r=el[el.length-1];t.icon&&(r.icon=yr(t.icon,e)),t.class&&(r.cssClasses=yr(t.class,e))},"decorateNode"),pje=v(t=>{switch(t){case Fi.DEFAULT:return"no-border";case Fi.RECT:return"rect";case Fi.ROUNDED_RECT:return"rounded-rect";case Fi.CIRCLE:return"circle";case Fi.CLOUD:return"cloud";case Fi.BANG:return"bang";case Fi.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),gje=v(()=>re,"getLogger"),mje=v(t=>uO[t],"getElementById"),vje={clear:oje,addNode:uje,getSections:xpe,getData:cje,nodeType:Fi,getType:hje,setElementForId:fje,decorateNode:dje,type2Str:pje,getLogger:gje,getElementById:mje},yje=vje,xje=v(async(t,e,r,n)=>{re.debug(`Rendering kanban diagram `+t);let a=n.db.getData(),s=pe();s.htmlLabels=!1;let o=La(e),l=o.append("g");l.attr("class","sections");let u=o.append("g");u.attr("class","items");let h=a.nodes.filter(y=>y.isGroup),f=0,d=10,p=[],g=25;for(let y of h){let x=s?.kanban?.sectionWidth||200;f=f+1,y.x=x*f+(f-1)*d/2,y.width=x,y.y=0,y.height=x*3,y.rx=5,y.ry=5,y.cssClasses=y.cssClasses+" section-"+f;let b=await tg(l,y);g=Math.max(g,b?.labelBBox?.height),p.push(b)}let m=0;for(let y of h){let x=p[m];m=m+1;let b=s?.kanban?.sectionWidth||200,w=-b*3/2+g,_=w,k=a.nodes.filter(S=>S.parentId===y.id);for(let S of k){if(S.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");S.x=y.x,S.width=b-1.5*d;let M=(await wd(u,S,{config:s})).node().getBBox();S.y=_+M.height/2,await Jv(S),_=S.y+M.height/2+d/2}let E=x.cluster.select("rect"),L=Math.max(_-w+3*d,50)+(g-25);E.attr("height",L)}il(void 0,o,s.mindmap?.padding??sr.kanban.padding,s.mindmap?.useMaxWidth??sr.kanban.useMaxWidth)},"draw"),bje={draw:xje},wje=v(t=>{let e="";for(let n=0;nt.darkMode?Lt(n,i):kt(n,i),"adjuster");for(let n=0;n` .edge { stroke-width: 3; } ${wje(t)} .section-root rect, .section-root path, .section-root circle, .section-root polygon { fill: ${t.git0}; } .section-root text { fill: ${t.gitBranchLabel0}; } .icon-container { height:100%; display: flex; justify-content: center; align-items: center; } .edge { fill: none; } .cluster-label, .label { color: ${t.textColor}; fill: ${t.textColor}; } .kanban-label { dy: 1em; alignment-baseline: middle; text-anchor: middle; dominant-baseline: middle; text-align: center; } `,"getStyles"),Tje=kje,Eje={db:yje,renderer:bje,parser:sje,styles:Tje}});function Yx(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r=i)&&(r=i)}return r}var kpe=F(()=>{});function l1(t,e){let r;if(e===void 0)for(let n of t)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of t)(i=e(i,++n,t))!=null&&(r>i||r===void 0&&i>=i)&&(r=i)}return r}var Tpe=F(()=>{});function c1(t,e){let r=0;if(e===void 0)for(let n of t)(n=+n)&&(r+=n);else{let n=-1;for(let i of t)(i=+e(i,++n,t))&&(r+=i)}return r}var Epe=F(()=>{});var hO=F(()=>{kpe();Tpe();Epe()});function Sje(t){return t.target.depth}function fO(t){return t.depth}function dO(t,e){return e-1-t.height}function Xx(t,e){return t.sourceLinks.length?t.depth:e-1}function pO(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?l1(t.sourceLinks,Sje)-1:0}var gO=F(()=>{hO()});function u1(t){return function(){return t}}var Spe=F(()=>{});function Cpe(t,e){return hE(t.source,e.source)||t.index-e.index}function Ape(t,e){return hE(t.target,e.target)||t.index-e.index}function hE(t,e){return t.y0-e.y0}function mO(t){return t.value}function Cje(t){return t.index}function Aje(t){return t.nodes}function _je(t){return t.links}function _pe(t,e){let r=t.get(e);if(!r)throw new Error("missing: "+e);return r}function Lpe({nodes:t}){for(let e of t){let r=e.y0,n=r;for(let i of e.sourceLinks)i.y0=r+i.width/2,r+=i.width;for(let i of e.targetLinks)i.y1=n+i.width/2,n+=i.width}}function fE(){let t=0,e=0,r=1,n=1,i=24,a=8,s,o=Cje,l=Xx,u,h,f=Aje,d=_je,p=6;function g(){let D={nodes:f.apply(null,arguments),links:d.apply(null,arguments)};return m(D),y(D),x(D),b(D),k(D),Lpe(D),D}g.update=function(D){return Lpe(D),D},g.nodeId=function(D){return arguments.length?(o=typeof D=="function"?D:u1(D),g):o},g.nodeAlign=function(D){return arguments.length?(l=typeof D=="function"?D:u1(D),g):l},g.nodeSort=function(D){return arguments.length?(u=D,g):u},g.nodeWidth=function(D){return arguments.length?(i=+D,g):i},g.nodePadding=function(D){return arguments.length?(a=s=+D,g):a},g.nodes=function(D){return arguments.length?(f=typeof D=="function"?D:u1(D),g):f},g.links=function(D){return arguments.length?(d=typeof D=="function"?D:u1(D),g):d},g.linkSort=function(D){return arguments.length?(h=D,g):h},g.size=function(D){return arguments.length?(t=e=0,r=+D[0],n=+D[1],g):[r-t,n-e]},g.extent=function(D){return arguments.length?(t=+D[0][0],r=+D[1][0],e=+D[0][1],n=+D[1][1],g):[[t,e],[r,n]]},g.iterations=function(D){return arguments.length?(p=+D,g):p};function m({nodes:D,links:N}){for(let[B,P]of D.entries())P.index=B,P.sourceLinks=[],P.targetLinks=[];let O=new Map(D.map((B,P)=>[o(B,P,D),B]));for(let[B,P]of N.entries()){P.index=B;let{source:$,target:z}=P;typeof $!="object"&&($=P.source=_pe(O,$)),typeof z!="object"&&(z=P.target=_pe(O,z)),$.sourceLinks.push(P),z.targetLinks.push(P)}if(h!=null)for(let{sourceLinks:B,targetLinks:P}of D)B.sort(h),P.sort(h)}function y({nodes:D}){for(let N of D)N.value=N.fixedValue===void 0?Math.max(c1(N.sourceLinks,mO),c1(N.targetLinks,mO)):N.fixedValue}function x({nodes:D}){let N=D.length,O=new Set(D),B=new Set,P=0;for(;O.size;){for(let $ of O){$.depth=P;for(let{target:z}of $.sourceLinks)B.add(z)}if(++P>N)throw new Error("circular link");O=B,B=new Set}}function b({nodes:D}){let N=D.length,O=new Set(D),B=new Set,P=0;for(;O.size;){for(let $ of O){$.height=P;for(let{source:z}of $.targetLinks)B.add(z)}if(++P>N)throw new Error("circular link");O=B,B=new Set}}function w({nodes:D}){let N=Yx(D,P=>P.depth)+1,O=(r-t-i)/(N-1),B=new Array(N);for(let P of D){let $=Math.max(0,Math.min(N-1,Math.floor(l.call(null,P,N))));P.layer=$,P.x0=t+$*O,P.x1=P.x0+i,B[$]?B[$].push(P):B[$]=[P]}if(u)for(let P of B)P.sort(u);return B}function _(D){let N=l1(D,O=>(n-e-(O.length-1)*s)/c1(O,mO));for(let O of D){let B=e;for(let P of O){P.y0=B,P.y1=B+P.value*N,B=P.y1+s;for(let $ of P.sourceLinks)$.width=$.value*N}B=(n-B+s)/(O.length+1);for(let P=0;PO.length)-1)),_(N);for(let O=0;O0))continue;let X=(H/J-z.y0)*N;z.y0+=X,z.y1+=X,R(z)}u===void 0&&$.sort(hE),S($,O)}}function L(D,N,O){for(let B=D.length,P=B-2;P>=0;--P){let $=D[P];for(let z of $){let H=0,J=0;for(let{target:oe,value:K}of z.sourceLinks){let ee=K*(oe.layer-z.layer);H+=A(z,oe)*ee,J+=ee}if(!(J>0))continue;let X=(H/J-z.y0)*N;z.y0+=X,z.y1+=X,R(z)}u===void 0&&$.sort(hE),S($,O)}}function S(D,N){let O=D.length>>1,B=D[O];M(D,B.y0-s,O-1,N),C(D,B.y1+s,O+1,N),M(D,n,D.length-1,N),C(D,e,0,N)}function C(D,N,O,B){for(;O1e-6&&(P.y0+=$,P.y1+=$),N=P.y1+s}}function M(D,N,O,B){for(;O>=0;--O){let P=D[O],$=(P.y1-N)*B;$>1e-6&&(P.y0-=$,P.y1-=$),N=P.y0-s}}function R({sourceLinks:D,targetLinks:N}){if(h===void 0){for(let{source:{sourceLinks:O}}of N)O.sort(Ape);for(let{target:{targetLinks:O}}of D)O.sort(Cpe)}}function T(D){if(h===void 0)for(let{sourceLinks:N,targetLinks:O}of D)N.sort(Ape),O.sort(Cpe)}function I(D,N){let O=D.y0-(D.sourceLinks.length-1)*s/2;for(let{target:B,width:P}of D.sourceLinks){if(B===N)break;O+=P+s}for(let{source:B,width:P}of N.targetLinks){if(B===D)break;O-=P}return O}function A(D,N){let O=N.y0-(N.targetLinks.length-1)*s/2;for(let{source:B,width:P}of N.targetLinks){if(B===D)break;O+=P+s}for(let{target:B,width:P}of D.sourceLinks){if(B===N)break;O-=P}return O}return g}var Rpe=F(()=>{hO();gO();Spe()});function xO(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Npe(){return new xO}var vO,yO,G0,Lje,bO,Ipe=F(()=>{vO=Math.PI,yO=2*vO,G0=1e-6,Lje=yO-G0;xO.prototype=Npe.prototype={constructor:xO,moveTo:function(t,e){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,e){this._+="L"+(this._x1=+t)+","+(this._y1=+e)},quadraticCurveTo:function(t,e,r,n){this._+="Q"+ +t+","+ +e+","+(this._x1=+r)+","+(this._y1=+n)},bezierCurveTo:function(t,e,r,n,i,a){this._+="C"+ +t+","+ +e+","+ +r+","+ +n+","+(this._x1=+i)+","+(this._y1=+a)},arcTo:function(t,e,r,n,i){t=+t,e=+e,r=+r,n=+n,i=+i;var a=this._x1,s=this._y1,o=r-t,l=n-e,u=a-t,h=s-e,f=u*u+h*h;if(i<0)throw new Error("negative radius: "+i);if(this._x1===null)this._+="M"+(this._x1=t)+","+(this._y1=e);else if(f>G0)if(!(Math.abs(h*o-l*u)>G0)||!i)this._+="L"+(this._x1=t)+","+(this._y1=e);else{var d=r-a,p=n-s,g=o*o+l*l,m=d*d+p*p,y=Math.sqrt(g),x=Math.sqrt(f),b=i*Math.tan((vO-Math.acos((g+f-m)/(2*y*x)))/2),w=b/x,_=b/y;Math.abs(w-1)>G0&&(this._+="L"+(t+w*u)+","+(e+w*h)),this._+="A"+i+","+i+",0,0,"+ +(h*d>u*p)+","+(this._x1=t+_*o)+","+(this._y1=e+_*l)}},arc:function(t,e,r,n,i,a){t=+t,e=+e,r=+r,a=!!a;var s=r*Math.cos(n),o=r*Math.sin(n),l=t+s,u=e+o,h=1^a,f=a?n-i:i-n;if(r<0)throw new Error("negative radius: "+r);this._x1===null?this._+="M"+l+","+u:(Math.abs(this._x1-l)>G0||Math.abs(this._y1-u)>G0)&&(this._+="L"+l+","+u),r&&(f<0&&(f=f%yO+yO),f>Lje?this._+="A"+r+","+r+",0,1,"+h+","+(t-s)+","+(e-o)+"A"+r+","+r+",0,1,"+h+","+(this._x1=l)+","+(this._y1=u):f>G0&&(this._+="A"+r+","+r+",0,"+ +(f>=vO)+","+h+","+(this._x1=t+r*Math.cos(i))+","+(this._y1=e+r*Math.sin(i))))},rect:function(t,e,r,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +r+"v"+ +n+"h"+-r+"Z"},toString:function(){return this._}};bO=Npe});var Mpe=F(()=>{Ipe()});function wO(t){return function(){return t}}var Dpe=F(()=>{});function Ope(t){return t[0]}function Ppe(t){return t[1]}var Bpe=F(()=>{});var Fpe,zpe=F(()=>{Fpe=Array.prototype.slice});function Rje(t){return t.source}function Nje(t){return t.target}function Ije(t){var e=Rje,r=Nje,n=Ope,i=Ppe,a=null;function s(){var o,l=Fpe.call(arguments),u=e.apply(this,l),h=r.apply(this,l);if(a||(a=o=bO()),t(a,+n.apply(this,(l[0]=u,l)),+i.apply(this,l),+n.apply(this,(l[0]=h,l)),+i.apply(this,l)),o)return a=null,o+""||null}return s.source=function(o){return arguments.length?(e=o,s):e},s.target=function(o){return arguments.length?(r=o,s):r},s.x=function(o){return arguments.length?(n=typeof o=="function"?o:wO(+o),s):n},s.y=function(o){return arguments.length?(i=typeof o=="function"?o:wO(+o),s):i},s.context=function(o){return arguments.length?(a=o??null,s):a},s}function Mje(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function kO(){return Ije(Mje)}var $pe=F(()=>{Mpe();zpe();Dpe();Bpe()});var Gpe=F(()=>{$pe()});function Dje(t){return[t.source.x1,t.y0]}function Oje(t){return[t.target.x0,t.y1]}function TO(){return kO().source(Dje).target(Oje)}var Upe=F(()=>{Gpe()});var Vpe=F(()=>{Rpe();gO();Upe()});var Hpe={};vr(Hpe,{diagram:()=>Kje});var EO,dE,gE,mE,pE,Pje,Bje,Fje,zje,$je,Gje,Uje,Vje,Wje,Wpe,Hje,qje,Yje,Xje,jje,Kje,qpe=F(()=>{or();lr();Vpe();EO=function(){var t=v(function(o,l,u,h){for(u=u||{},h=o.length;h--;u[o[h]]=l);return u},"o"),e=[1,9],r=[1,10],n=[1,5,10,12],i={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:v(function(l,u,h,f,d,p,g){var m=p.length-1;switch(d){case 7:let y=f.findOrCreateNode(p[m-4].trim().replaceAll('""','"')),x=f.findOrCreateNode(p[m-2].trim().replaceAll('""','"')),b=parseFloat(p[m].trim());f.addLink(y,x,b);break;case 8:case 9:case 11:this.$=p[m];break;case 10:this.$=p[m-1];break}},"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:e,20:r},{1:[2,6],7:11,10:[1,12]},t(r,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(n,[2,8]),t(n,[2,9]),{19:[1,16]},t(n,[2,11]),{1:[2,1]},{1:[2,5]},t(r,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:e,20:r},{15:18,16:7,17:8,18:e,20:r},{18:[1,19]},t(r,[2,3]),{12:[1,20]},t(n,[2,10]),{15:21,16:7,17:8,18:e,20:r},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:v(function(l,u){if(u.recoverable)this.trace(l);else{var h=new Error(l);throw h.hash=u,h}},"parseError"),parse:v(function(l){var u=this,h=[0],f=[],d=[null],p=[],g=this.table,m="",y=0,x=0,b=0,w=2,_=1,k=p.slice.call(arguments,1),E=Object.create(this.lexer),L={yy:{}};for(var S in this.yy)Object.prototype.hasOwnProperty.call(this.yy,S)&&(L.yy[S]=this.yy[S]);E.setInput(l,L.yy),L.yy.lexer=E,L.yy.parser=this,typeof E.yylloc>"u"&&(E.yylloc={});var C=E.yylloc;p.push(C);var M=E.options&&E.options.ranges;typeof L.yy.parseError=="function"?this.parseError=L.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function R(oe){h.length=h.length-2*oe,d.length=d.length-oe,p.length=p.length-oe}v(R,"popStack");function T(){var oe;return oe=f.pop()||E.lex()||_,typeof oe!="number"&&(oe instanceof Array&&(f=oe,oe=f.pop()),oe=u.symbols_[oe]||oe),oe}v(T,"lex");for(var I,A,D,N,O,B,P={},$,z,H,J;;){if(D=h[h.length-1],this.defaultActions[D]?N=this.defaultActions[D]:((I===null||typeof I>"u")&&(I=T()),N=g[D]&&g[D][I]),typeof N>"u"||!N.length||!N[0]){var X="";J=[];for($ in g[D])this.terminals_[$]&&$>w&&J.push("'"+this.terminals_[$]+"'");E.showPosition?X="Parse error on line "+(y+1)+`: `+E.showPosition()+` Expecting `+J.join(", ")+", got '"+(this.terminals_[I]||I)+"'":X="Parse error on line "+(y+1)+": Unexpected "+(I==_?"end of input":"'"+(this.terminals_[I]||I)+"'"),this.parseError(X,{text:E.match,token:this.terminals_[I]||I,line:E.yylineno,loc:C,expected:J})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+D+", token: "+I);switch(N[0]){case 1:h.push(I),d.push(E.yytext),p.push(E.yylloc),h.push(N[1]),I=null,A?(I=A,A=null):(x=E.yyleng,m=E.yytext,y=E.yylineno,C=E.yylloc,b>0&&b--);break;case 2:if(z=this.productions_[N[1]][1],P.$=d[d.length-z],P._$={first_line:p[p.length-(z||1)].first_line,last_line:p[p.length-1].last_line,first_column:p[p.length-(z||1)].first_column,last_column:p[p.length-1].last_column},M&&(P._$.range=[p[p.length-(z||1)].range[0],p[p.length-1].range[1]]),B=this.performAction.apply(P,[m,x,y,L.yy,N[1],d,p].concat(k)),typeof B<"u")return B;z&&(h=h.slice(0,-1*z*2),d=d.slice(0,-1*z),p=p.slice(0,-1*z)),h.push(this.productions_[N[1]][0]),d.push(P.$),p.push(P._$),H=g[h[h.length-2]][h[h.length-1]],h.push(H);break;case 3:return!0}}return!0},"parse")},a=function(){var o={EOF:1,parseError:v(function(u,h){if(this.yy.parser)this.yy.parser.parseError(u,h);else throw new Error(u)},"parseError"),setInput:v(function(l,u){return this.yy=u||this.yy||{},this._input=l,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var l=this._input[0];this.yytext+=l,this.yyleng++,this.offset++,this.match+=l,this.matched+=l;var u=l.match(/(?:\r\n?|\n).*/g);return u?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),l},"input"),unput:v(function(l){var u=l.length,h=l.split(/(?:\r\n?|\n)/g);this._input=l+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-u),this.offset-=u;var f=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),h.length-1&&(this.yylineno-=h.length-1);var d=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:h?(h.length===f.length?this.yylloc.first_column:0)+f[f.length-h.length].length-h[0].length:this.yylloc.first_column-u},this.options.ranges&&(this.yylloc.range=[d[0],d[0]+this.yyleng-u]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(l){this.unput(this.match.slice(l))},"less"),pastInput:v(function(){var l=this.matched.substr(0,this.matched.length-this.match.length);return(l.length>20?"...":"")+l.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var l=this.match;return l.length<20&&(l+=this._input.substr(0,20-l.length)),(l.substr(0,20)+(l.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var l=this.pastInput(),u=new Array(l.length+1).join("-");return l+this.upcomingInput()+` `+u+"^"},"showPosition"),test_match:v(function(l,u){var h,f,d;if(this.options.backtrack_lexer&&(d={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(d.yylloc.range=this.yylloc.range.slice(0))),f=l[0].match(/(?:\r\n?|\n).*/g),f&&(this.yylineno+=f.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:f?f[f.length-1].length-f[f.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+l[0].length},this.yytext+=l[0],this.match+=l[0],this.matches=l,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(l[0].length),this.matched+=l[0],h=this.performAction.call(this,this.yy,this,u,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),h)return h;if(this._backtrack){for(var p in d)this[p]=d[p];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var l,u,h,f;this._more||(this.yytext="",this.match="");for(var d=this._currentRules(),p=0;pu[0].length)){if(u=h,f=p,this.options.backtrack_lexer){if(l=this.test_match(h,d[p]),l!==!1)return l;if(this._backtrack){u=!1;continue}else return!1}else if(!this.options.flex)break}return u?(l=this.test_match(u,d[f]),l!==!1?l:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var u=this.next();return u||this.lex()},"lex"),begin:v(function(u){this.conditionStack.push(u)},"begin"),popState:v(function(){var u=this.conditionStack.length-1;return u>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(u){return u=this.conditionStack.length-1-Math.abs(u||0),u>=0?this.conditionStack[u]:"INITIAL"},"topState"),pushState:v(function(u){this.begin(u)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:v(function(u,h,f,d){var p=d;switch(f){case 0:return this.pushState("csv"),4;break;case 1:return 10;case 2:return 5;case 3:return 12;case 4:return this.pushState("escaped_text"),18;break;case 5:return 20;case 6:return this.popState("escaped_text"),18;break;case 7:return 19}},"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[1,2,3,4,5,6,7],inclusive:!1},escaped_text:{rules:[6,7],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return o}();i.lexer=a;function s(){this.yy={}}return v(s,"Parser"),s.prototype=i,i.Parser=s,new s}();EO.parser=EO;dE=EO,gE=[],mE=[],pE=new Map,Pje=v(()=>{gE=[],mE=[],pE=new Map,xr()},"clear"),Bje=class{constructor(t,e,r=0){this.source=t,this.target=e,this.value=r}static{v(this,"SankeyLink")}},Fje=v((t,e,r)=>{gE.push(new Bje(t,e,r))},"addLink"),zje=class{constructor(t){this.ID=t}static{v(this,"SankeyNode")}},$je=v(t=>{t=Xe.sanitizeText(t,pe());let e=pE.get(t);return e===void 0&&(e=new zje(t),pE.set(t,e),mE.push(e)),e},"findOrCreateNode"),Gje=v(()=>mE,"getNodes"),Uje=v(()=>gE,"getLinks"),Vje=v(()=>({nodes:mE.map(t=>({id:t.ID})),links:gE.map(t=>({source:t.source.ID,target:t.target.ID,value:t.value}))}),"getGraph"),Wje={nodesMap:pE,getConfig:v(()=>pe().sankey,"getConfig"),getNodes:Gje,getLinks:Uje,getGraph:Vje,addLink:Fje,findOrCreateNode:$je,getAccTitle:_r,setAccTitle:Tr,getAccDescription:Rr,setAccDescription:Lr,getDiagramTitle:qr,setDiagramTitle:tn,clear:Pje},Wpe=class SO{static{v(this,"Uid")}static{this.count=0}static next(e){return new SO(e+ ++SO.count)}constructor(e){this.id=e,this.href=`#${e}`}toString(){return"url("+this.href+")"}},Hje={left:fO,right:dO,center:pO,justify:Xx},qje=v(function(t,e,r,n){let{securityLevel:i,sankey:a}=pe(),s=Vb.sankey,o;i==="sandbox"&&(o=Ve("#i"+e));let l=i==="sandbox"?Ve(o.nodes()[0].contentDocument.body):Ve("body"),u=i==="sandbox"?l.select(`[id="${e}"]`):Ve(`[id="${e}"]`),h=a?.width??s.width,f=a?.height??s.width,d=a?.useMaxWidth??s.useMaxWidth,p=a?.nodeAlignment??s.nodeAlignment,g=a?.prefix??s.prefix,m=a?.suffix??s.suffix,y=a?.showValues??s.showValues,x=n.db.getGraph(),b=Hje[p];fE().nodeId(M=>M.id).nodeWidth(10).nodePadding(10+(y?15:0)).nodeAlign(b).extent([[0,0],[h,f]])(x);let k=du(a8);u.append("g").attr("class","nodes").selectAll(".node").data(x.nodes).join("g").attr("class","node").attr("id",M=>(M.uid=Wpe.next("node-")).id).attr("transform",function(M){return"translate("+M.x0+","+M.y0+")"}).attr("x",M=>M.x0).attr("y",M=>M.y0).append("rect").attr("height",M=>M.y1-M.y0).attr("width",M=>M.x1-M.x0).attr("fill",M=>k(M.id));let E=v(({id:M,value:R})=>y?`${M} ${g}${Math.round(R*100)/100}${m}`:M,"getText");u.append("g").attr("class","node-labels").attr("font-family","sans-serif").attr("font-size",14).selectAll("text").data(x.nodes).join("text").attr("x",M=>M.x0(M.y1+M.y0)/2).attr("dy",`${y?"0":"0.35"}em`).attr("text-anchor",M=>M.x0(R.uid=Wpe.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",R=>R.source.x1).attr("x2",R=>R.target.x0);M.append("stop").attr("offset","0%").attr("stop-color",R=>k(R.source.id)),M.append("stop").attr("offset","100%").attr("stop-color",R=>k(R.target.id))}let C;switch(S){case"gradient":C=v(M=>M.uid,"coloring");break;case"source":C=v(M=>k(M.source.id),"coloring");break;case"target":C=v(M=>k(M.target.id),"coloring");break;default:C=S}L.append("path").attr("d",TO()).attr("stroke",C).attr("stroke-width",M=>Math.max(1,M.width)),il(void 0,u,0,d)},"draw"),Yje={draw:qje},Xje=v(t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` `).trim(),"prepareTextForParsing"),jje=dE.parse.bind(dE);dE.parse=t=>jje(Xje(t));Kje={parser:dE,db:Wje,renderer:Yje}});var Xpe={};vr(Xpe,{diagram:()=>hKe});var Ype,CO,Zje,Qje,Jje,eKe,tKe,h1,rKe,nKe,iKe,aKe,sKe,oKe,lKe,cKe,uKe,hKe,jpe=F(()=>{ky();kn();Iu();or();km();Ype={packet:[]},CO=structuredClone(Ype),Zje=sr.packet,Qje=v(()=>{let t=ws({...Zje,...Or().packet});return t.showBits&&(t.paddingY+=10),t},"getConfig"),Jje=v(()=>CO.packet,"getPacket"),eKe=v(t=>{t.length>0&&CO.packet.push(t)},"pushWord"),tKe=v(()=>{xr(),CO=structuredClone(Ype)},"clear"),h1={pushWord:eKe,getPacket:Jje,getConfig:Qje,clear:tKe,setAccTitle:Tr,getAccTitle:_r,setDiagramTitle:tn,getDiagramTitle:qr,getAccDescription:Rr,setAccDescription:Lr},rKe=1e4,nKe=v(t=>{Pu(t,h1);let e=-1,r=[],n=1,{bitsPerRow:i}=h1.getConfig();for(let{start:a,end:s,label:o}of t.blocks){if(s&&s{if(t.end===void 0&&(t.end=t.start),t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);return t.end+1<=e*r?[t,void 0]:[{start:t.start,end:e*r-1,label:t.label},{start:e*r,end:t.end,label:t.label}]},"getNextFittingBlock"),aKe={parse:v(async t=>{let e=await Nl("packet",t);re.debug(e),nKe(e)},"parse")},sKe=v((t,e,r,n)=>{let i=n.db,a=i.getConfig(),{rowHeight:s,paddingY:o,bitWidth:l,bitsPerRow:u}=a,h=i.getPacket(),f=i.getDiagramTitle(),d=s+o,p=d*(h.length+1)-(f?0:s),g=l*u+2,m=La(e);m.attr("viewbox",`0 0 ${g} ${p}`),Hr(m,p,g,a.useMaxWidth);for(let[y,x]of h.entries())oKe(m,x,y,a);m.append("text").text(f).attr("x",g/2).attr("y",p-d/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")},"draw"),oKe=v((t,e,r,{rowHeight:n,paddingX:i,paddingY:a,bitWidth:s,bitsPerRow:o,showBits:l})=>{let u=t.append("g"),h=r*(n+a)+a;for(let f of e){let d=f.start%o*s+1,p=(f.end-f.start+1)*s-i;if(u.append("rect").attr("x",d).attr("y",h).attr("width",p).attr("height",n).attr("class","packetBlock"),u.append("text").attr("x",d+p/2).attr("y",h+n/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(f.label),!l)continue;let g=f.end===f.start,m=h-2;u.append("text").attr("x",d+(g?p/2:0)).attr("y",m).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",g?"middle":"start").text(f.start),g||u.append("text").attr("x",d+p).attr("y",m).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(f.end)}},"drawWord"),lKe={draw:sKe},cKe={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},uKe=v(({packet:t}={})=>{let e=ws(cKe,t);return` .packetByte { font-size: ${e.byteFontSize}; } .packetByte.start { fill: ${e.startByteColor}; } .packetByte.end { fill: ${e.endByteColor}; } .packetLabel { fill: ${e.labelColor}; font-size: ${e.labelFontSize}; } .packetTitle { fill: ${e.titleColor}; font-size: ${e.titleFontSize}; } .packetBlock { stroke: ${e.blockStrokeColor}; stroke-width: ${e.blockStrokeWidth}; fill: ${e.blockFillColor}; } `},"styles"),hKe={parser:aKe,db:h1,renderer:lKe,styles:uKe}});var Sge={};vr(Sge,{diagram:()=>PZe});function oge(t){switch(re.debug("typeStr2Type",t),t){case"[]":return"square";case"()":return re.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function lge(t){switch(re.debug("typeStr2Type",t),t){case"==":return"thick";default:return"normal"}}function cge(t){switch(t.trim()){case"--x":return"arrow_cross";case"--o":return"arrow_circle";default:return"arrow_point"}}function uge(t,e){if(t===0||!Number.isInteger(t))throw new Error("Columns must be an integer !== 0.");if(e<0||!Number.isInteger(e))throw new Error("Position must be a non-negative integer."+e);if(t<0)return{px:e,py:0};if(t===1)return{px:0,py:e};let r=e%t,n=Math.floor(e/t);return{px:r,py:n}}function bE(t,e,r=0,n=0){re.debug("setBlockSizes abc95 (start)",t.id,t?.size?.x,"block width =",t?.size,"sieblingWidth",r),t?.size?.width||(t.size={width:r,height:n,x:0,y:0});let i=0,a=0;if(t.children?.length>0){for(let p of t.children)bE(p,e);let s=qKe(t);i=s.width,a=s.height,re.debug("setBlockSizes abc95 maxWidth of",t.id,":s children is ",i,a);for(let p of t.children)p.size&&(re.debug(`abc95 Setting size of children of ${t.id} id=${p.id} ${i} ${a} ${JSON.stringify(p.size)}`),p.size.width=i*(p.widthInColumns??1)+fi*((p.widthInColumns??1)-1),p.size.height=a,p.size.x=0,p.size.y=0,re.debug(`abc95 updating size of ${t.id} children child:${p.id} maxWidth:${i} maxHeight:${a}`));for(let p of t.children)bE(p,e,i,a);let o=t.columns??-1,l=0;for(let p of t.children)l+=p.widthInColumns??1;let u=t.children.length;o>0&&o0?Math.min(t.children.length,o):t.children.length;if(p>0){let g=(f-p*fi-fi)/p;re.debug("abc95 (growing to fit) width",t.id,f,t.size?.width,g);for(let m of t.children)m.size&&(m.size.width=g)}}t.size={width:f,height:d,x:0,y:0}}re.debug("setBlockSizes abc94 (done)",t.id,t?.size?.x,t?.size?.width,t?.size?.y,t?.size?.height)}function DO(t,e){re.debug(`abc85 layout blocks (=>layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`);let r=t.columns??-1;if(re.debug("layoutBlocks columns abc95",t.id,"=>",r,t),t.children&&t.children.length>0){let n=t?.children[0]?.size?.width??0,i=t.children.length*n+(t.children.length-1)*fi;re.debug("widthOfChildren 88",i,"posX");let a=0;re.debug("abc91 block?.size?.x",t.id,t?.size?.x);let s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-fi,o=0;for(let l of t.children){let u=t;if(!l.size)continue;let{width:h,height:f}=l.size,{px:d,py:p}=uge(r,a);if(p!=o&&(o=p,s=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-fi,re.debug("New row in layout for block",t.id," and child ",l.id,o)),re.debug(`abc89 layout blocks (child) id: ${l.id} Pos: ${a} (px, py) ${d},${p} (${u?.size?.x},${u?.size?.y}) parent: ${u.id} width: ${h}${fi}`),u.size){let g=h/2;l.size.x=s+fi+g,re.debug(`abc91 layout blocks (calc) px, pyid:${l.id} startingPos=X${s} new startingPosX${l.size.x} ${g} padding=${fi} width=${h} halfWidth=${g} => x:${l.size.x} y:${l.size.y} ${l.widthInColumns} (width * (child?.w || 1)) / 2 ${h*(l?.widthInColumns??1)/2}`),s=l.size.x+g,l.size.y=u.size.y-u.size.height/2+p*(f+fi)+f/2+fi,re.debug(`abc88 layout blocks (calc) px, pyid:${l.id}startingPosX${s}${fi}${g}=>x:${l.size.x}y:${l.size.y}${l.widthInColumns}(width * (child?.w || 1)) / 2${h*(l?.widthInColumns??1)/2}`)}l.children&&DO(l,e),a+=l?.widthInColumns??1,re.debug("abc88 columnsPos",l,a)}}re.debug(`layout blocks (<==layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)}function OO(t,{minX:e,minY:r,maxX:n,maxY:i}={minX:0,minY:0,maxX:0,maxY:0}){if(t.size&&t.id!=="root"){let{x:a,y:s,width:o,height:l}=t.size;a-o/2n&&(n=a+o/2),s+l/2>i&&(i=s+l/2)}if(t.children)for(let a of t.children)({minX:e,minY:r,maxX:n,maxY:i}=OO(a,{minX:e,minY:r,maxX:n,maxY:i}));return{minX:e,minY:r,maxX:n,maxY:i}}function hge(t){let e=t.getBlock("root");if(!e)return;bE(e,t,0,0),DO(e,t),re.debug("getBlocks",JSON.stringify(e,null,2));let{minX:r,minY:n,maxX:i,maxY:a}=OO(e),s=a-n,o=i-r;return{x:r,y:n,width:o,height:s}}function LO(t,e){e&&t.attr("style",e)}function fge(t){let e=Ve(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),n=t.label,i=t.isNode?"nodeLabel":"edgeLabel",a=r.append("span");return a.html(n),LO(a,t.labelStyle),a.attr("class",i),LO(r,t.labelStyle),r.style("display","inline-block"),r.style("white-space","nowrap"),r.attr("xmlns","http://www.w3.org/1999/xhtml"),e.node()}function jx(t,e){pe().flowchart.htmlLabels&&t&&(t.style.width=e.length*9+"px",t.style.height="12px")}function dge(t,e){return t.intersect(e)}function pge(t,e,r,n){var i=t.x,a=t.y,s=i-n.x,o=a-n.y,l=Math.sqrt(e*e*o*o+r*r*s*s),u=Math.abs(e*r*s/l);n.x0}function yge(t,e,r){var n=t.x,i=t.y,a=[],s=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;typeof e.forEach=="function"?e.forEach(function(g){s=Math.min(s,g.x),o=Math.min(o,g.y)}):(s=Math.min(s,e.x),o=Math.min(o,e.y));for(var l=n-t.width/2-s,u=i-t.height/2-o,h=0;h1&&a.sort(function(g,m){var y=g.x-r.x,x=g.y-r.y,b=Math.sqrt(y*y+x*x),w=m.x-r.x,_=m.y-r.y,k=Math.sqrt(w*w+_*_);return b{i.push(o,0)},"addBorder"),s=v(o=>{i.push(0,o)},"skipBorder");e.includes("t")?(re.debug("add top border"),a(r)):s(r),e.includes("r")?(re.debug("add right border"),a(n)):s(n),e.includes("b")?(re.debug("add bottom border"),a(r)):s(r),e.includes("l")?(re.debug("add left border"),a(n)):s(n),t.attr("stroke-dasharray",i.join(" "))}function PO(t,e,r=!1){let n=t,i="default";(n?.classes?.length||0)>0&&(i=(n?.classes??[]).join(" ")),i=i+" flowchart-label";let a=0,s="",o;switch(n.type){case"round":a=5,s="rect";break;case"composite":a=0,s="composite",o=0;break;case"square":s="rect";break;case"diamond":s="question";break;case"hexagon":s="hexagon";break;case"block_arrow":s="block_arrow";break;case"odd":s="rect_left_inv_arrow";break;case"lean_right":s="lean_right";break;case"lean_left":s="lean_left";break;case"trapezoid":s="trapezoid";break;case"inv_trapezoid":s="inv_trapezoid";break;case"rect_left_inv_arrow":s="rect_left_inv_arrow";break;case"circle":s="circle";break;case"ellipse":s="ellipse";break;case"stadium":s="stadium";break;case"subroutine":s="subroutine";break;case"cylinder":s="cylinder";break;case"group":s="rect";break;case"doublecircle":s="doublecircle";break;default:s="rect"}let l=G3(n?.styles??[]),u=n.label,h=n.size??{width:0,height:0,x:0,y:0};return{labelStyle:l.labelStyle,shape:s,labelText:u,rx:a,ry:a,class:i,style:l.style,id:n.id,directions:n.directions,width:h.width,height:h.height,x:h.x,y:h.y,positioned:r,intersect:void 0,type:n.type,padding:o??Or()?.block?.padding??0}}async function bge(t,e,r){let n=PO(e,r,!1);if(n.type==="group")return;let i=Or(),a=await xge(t,n,{config:i}),s=a.node().getBBox(),o=r.getBlock(n.id);o.size={width:s.width,height:s.height,x:0,y:0,node:a},r.setBlock(o),a.remove()}async function wge(t,e,r){let n=PO(e,r,!0);if(r.getBlock(n.id).type!=="space"){let a=Or();await xge(t,n,{config:a}),e.intersect=n?.intersect,IZe(n)}}async function kE(t,e,r,n){for(let i of e)await n(t,i,r),i.children&&await kE(t,i.children,r,n)}async function kge(t,e,r){await kE(t,e,r,bge)}async function Tge(t,e,r){await kE(t,e,r,wge)}async function Ege(t,e,r,n,i){let a=new Sr({multigraph:!0,compound:!0});a.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(let s of r)s.size&&a.setNode(s.id,{width:s.size.width,height:s.size.height,intersect:s.intersect});for(let s of e)if(s.start&&s.end){let o=n.getBlock(s.start),l=n.getBlock(s.end);if(o?.size&&l?.size){let u=o.size,h=l.size,f=[{x:u.x,y:u.y},{x:u.x+(h.x-u.x)/2,y:u.y+(h.y-u.y)/2},{x:h.x,y:h.y}];eZe(t,{v:s.start,w:s.end,name:s.id},{...s,arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:f,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",a,i),s.label&&(await KKe(t,{...s,label:s.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:s.arrowTypeEnd,arrowTypeStart:s.arrowTypeStart,points:f,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),ZKe({...s,x:f[1].x,y:f[1].y},{originalPath:f}))}}}var AO,fKe,$l,IO,_O,Kpe,Zpe,dKe,age,pKe,xE,gKe,mKe,vKe,yKe,sge,MO,Kx,xKe,Qpe,bKe,wKe,kKe,TKe,EKe,SKe,CKe,AKe,_Ke,LKe,RKe,NKe,vE,IKe,MKe,DKe,OKe,PKe,BKe,FKe,zKe,$Ke,GKe,UKe,VKe,WKe,HKe,fi,qKe,YKe,tl,XKe,jKe,Jpe,RO,Ba,KKe,ZKe,QKe,JKe,ege,eZe,tZe,rZe,nZe,gge,iZe,aZe,sZe,oZe,lZe,$n,Ki,ai,cZe,uZe,tge,ho,rge,hZe,fZe,dZe,pZe,gZe,mZe,vZe,yZe,xZe,bZe,wZe,kZe,TZe,EZe,SZe,CZe,AZe,_Ze,LZe,nge,RZe,NZe,ige,yE,xge,IZe,MZe,DZe,OZe,PZe,Cge=F(()=>{pc();bo();Ya();kn();or();a_();go();lr();As();lr();lr();lr();lr();AO=function(){var t=v(function(w,_,k,E){for(k=k||{},E=w.length;E--;k[w[E]]=_);return k},"o"),e=[1,7],r=[1,13],n=[1,14],i=[1,15],a=[1,19],s=[1,16],o=[1,17],l=[1,18],u=[8,30],h=[8,21,28,29,30,31,32,40,44,47],f=[1,23],d=[1,24],p=[8,15,16,21,28,29,30,31,32,40,44,47],g=[8,15,16,21,27,28,29,30,31,32,40,44,47],m=[1,49],y={trace:v(function(){},"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:v(function(_,k,E,L,S,C,M){var R=C.length-1;switch(S){case 4:L.getLogger().debug("Rule: separator (NL) ");break;case 5:L.getLogger().debug("Rule: separator (Space) ");break;case 6:L.getLogger().debug("Rule: separator (EOF) ");break;case 7:L.getLogger().debug("Rule: hierarchy: ",C[R-1]),L.setHierarchy(C[R-1]);break;case 8:L.getLogger().debug("Stop NL ");break;case 9:L.getLogger().debug("Stop EOF ");break;case 10:L.getLogger().debug("Stop NL2 ");break;case 11:L.getLogger().debug("Stop EOF2 ");break;case 12:L.getLogger().debug("Rule: statement: ",C[R]),typeof C[R].length=="number"?this.$=C[R]:this.$=[C[R]];break;case 13:L.getLogger().debug("Rule: statement #2: ",C[R-1]),this.$=[C[R-1]].concat(C[R]);break;case 14:L.getLogger().debug("Rule: link: ",C[R],_),this.$={edgeTypeStr:C[R],label:""};break;case 15:L.getLogger().debug("Rule: LABEL link: ",C[R-3],C[R-1],C[R]),this.$={edgeTypeStr:C[R],label:C[R-1]};break;case 18:let T=parseInt(C[R]),I=L.generateId();this.$={id:I,type:"space",label:"",width:T,children:[]};break;case 23:L.getLogger().debug("Rule: (nodeStatement link node) ",C[R-2],C[R-1],C[R]," typestr: ",C[R-1].edgeTypeStr);let A=L.edgeStrToEdgeData(C[R-1].edgeTypeStr);this.$=[{id:C[R-2].id,label:C[R-2].label,type:C[R-2].type,directions:C[R-2].directions},{id:C[R-2].id+"-"+C[R].id,start:C[R-2].id,end:C[R].id,label:C[R-1].label,type:"edge",directions:C[R].directions,arrowTypeEnd:A,arrowTypeStart:"arrow_open"},{id:C[R].id,label:C[R].label,type:L.typeStr2Type(C[R].typeStr),directions:C[R].directions}];break;case 24:L.getLogger().debug("Rule: nodeStatement (abc88 node size) ",C[R-1],C[R]),this.$={id:C[R-1].id,label:C[R-1].label,type:L.typeStr2Type(C[R-1].typeStr),directions:C[R-1].directions,widthInColumns:parseInt(C[R],10)};break;case 25:L.getLogger().debug("Rule: nodeStatement (node) ",C[R]),this.$={id:C[R].id,label:C[R].label,type:L.typeStr2Type(C[R].typeStr),directions:C[R].directions,widthInColumns:1};break;case 26:L.getLogger().debug("APA123",this?this:"na"),L.getLogger().debug("COLUMNS: ",C[R]),this.$={type:"column-setting",columns:C[R]==="auto"?-1:parseInt(C[R])};break;case 27:L.getLogger().debug("Rule: id-block statement : ",C[R-2],C[R-1]);let D=L.generateId();this.$={...C[R-2],type:"composite",children:C[R-1]};break;case 28:L.getLogger().debug("Rule: blockStatement : ",C[R-2],C[R-1],C[R]);let N=L.generateId();this.$={id:N,type:"composite",label:"",children:C[R-1]};break;case 29:L.getLogger().debug("Rule: node (NODE_ID separator): ",C[R]),this.$={id:C[R]};break;case 30:L.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",C[R-1],C[R]),this.$={id:C[R-1],label:C[R].label,typeStr:C[R].typeStr,directions:C[R].directions};break;case 31:L.getLogger().debug("Rule: dirList: ",C[R]),this.$=[C[R]];break;case 32:L.getLogger().debug("Rule: dirList: ",C[R-1],C[R]),this.$=[C[R-1]].concat(C[R]);break;case 33:L.getLogger().debug("Rule: nodeShapeNLabel: ",C[R-2],C[R-1],C[R]),this.$={typeStr:C[R-2]+C[R],label:C[R-1]};break;case 34:L.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",C[R-3],C[R-2]," #3:",C[R-1],C[R]),this.$={typeStr:C[R-3]+C[R],label:C[R-2],directions:C[R-1]};break;case 35:case 36:this.$={type:"classDef",id:C[R-1].trim(),css:C[R].trim()};break;case 37:this.$={type:"applyClass",id:C[R-1].trim(),styleClass:C[R].trim()};break;case 38:this.$={type:"applyStyles",id:C[R-1].trim(),stylesStr:C[R].trim()};break}},"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:o,47:l},{8:[1,20]},t(u,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:e,28:r,29:n,31:i,32:a,40:s,44:o,47:l}),t(h,[2,16],{14:22,15:f,16:d}),t(h,[2,17]),t(h,[2,18]),t(h,[2,19]),t(h,[2,20]),t(h,[2,21]),t(h,[2,22]),t(p,[2,25],{27:[1,25]}),t(h,[2,26]),{19:26,26:12,32:a},{11:27,13:4,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:o,47:l},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},t(g,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},t(u,[2,13]),{26:35,32:a},{32:[2,14]},{17:[1,36]},t(p,[2,24]),{11:37,13:4,14:22,15:f,16:d,19:5,20:6,21:e,22:8,23:9,24:10,25:11,26:12,28:r,29:n,31:i,32:a,40:s,44:o,47:l},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},t(g,[2,30]),{18:[1,43]},{18:[1,44]},t(p,[2,23]),{18:[1,45]},{30:[1,46]},t(h,[2,28]),t(h,[2,35]),t(h,[2,36]),t(h,[2,37]),t(h,[2,38]),{37:[1,47]},{34:48,35:m},{15:[1,50]},t(h,[2,27]),t(g,[2,33]),{39:[1,51]},{34:52,35:m,39:[2,31]},{32:[2,15]},t(g,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:v(function(_,k){if(k.recoverable)this.trace(_);else{var E=new Error(_);throw E.hash=k,E}},"parseError"),parse:v(function(_){var k=this,E=[0],L=[],S=[null],C=[],M=this.table,R="",T=0,I=0,A=0,D=2,N=1,O=C.slice.call(arguments,1),B=Object.create(this.lexer),P={yy:{}};for(var $ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,$)&&(P.yy[$]=this.yy[$]);B.setInput(_,P.yy),P.yy.lexer=B,P.yy.parser=this,typeof B.yylloc>"u"&&(B.yylloc={});var z=B.yylloc;C.push(z);var H=B.options&&B.options.ranges;typeof P.yy.parseError=="function"?this.parseError=P.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function J(ae){E.length=E.length-2*ae,S.length=S.length-ae,C.length=C.length-ae}v(J,"popStack");function X(){var ae;return ae=L.pop()||B.lex()||N,typeof ae!="number"&&(ae instanceof Array&&(L=ae,ae=L.pop()),ae=k.symbols_[ae]||ae),ae}v(X,"lex");for(var oe,K,ee,Q,W,Y,Z={},se,ce,ue,te;;){if(ee=E[E.length-1],this.defaultActions[ee]?Q=this.defaultActions[ee]:((oe===null||typeof oe>"u")&&(oe=X()),Q=M[ee]&&M[ee][oe]),typeof Q>"u"||!Q.length||!Q[0]){var Ne="";te=[];for(se in M[ee])this.terminals_[se]&&se>D&&te.push("'"+this.terminals_[se]+"'");B.showPosition?Ne="Parse error on line "+(T+1)+`: `+B.showPosition()+` Expecting `+te.join(", ")+", got '"+(this.terminals_[oe]||oe)+"'":Ne="Parse error on line "+(T+1)+": Unexpected "+(oe==N?"end of input":"'"+(this.terminals_[oe]||oe)+"'"),this.parseError(Ne,{text:B.match,token:this.terminals_[oe]||oe,line:B.yylineno,loc:z,expected:te})}if(Q[0]instanceof Array&&Q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ee+", token: "+oe);switch(Q[0]){case 1:E.push(oe),S.push(B.yytext),C.push(B.yylloc),E.push(Q[1]),oe=null,K?(oe=K,K=null):(I=B.yyleng,R=B.yytext,T=B.yylineno,z=B.yylloc,A>0&&A--);break;case 2:if(ce=this.productions_[Q[1]][1],Z.$=S[S.length-ce],Z._$={first_line:C[C.length-(ce||1)].first_line,last_line:C[C.length-1].last_line,first_column:C[C.length-(ce||1)].first_column,last_column:C[C.length-1].last_column},H&&(Z._$.range=[C[C.length-(ce||1)].range[0],C[C.length-1].range[1]]),Y=this.performAction.apply(Z,[R,I,T,P.yy,Q[1],S,C].concat(O)),typeof Y<"u")return Y;ce&&(E=E.slice(0,-1*ce*2),S=S.slice(0,-1*ce),C=C.slice(0,-1*ce)),E.push(this.productions_[Q[1]][0]),S.push(Z.$),C.push(Z._$),ue=M[E[E.length-2]][E[E.length-1]],E.push(ue);break;case 3:return!0}}return!0},"parse")},x=function(){var w={EOF:1,parseError:v(function(k,E){if(this.yy.parser)this.yy.parser.parseError(k,E);else throw new Error(k)},"parseError"),setInput:v(function(_,k){return this.yy=k||this.yy||{},this._input=_,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:v(function(){var _=this._input[0];this.yytext+=_,this.yyleng++,this.offset++,this.match+=_,this.matched+=_;var k=_.match(/(?:\r\n?|\n).*/g);return k?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),_},"input"),unput:v(function(_){var k=_.length,E=_.split(/(?:\r\n?|\n)/g);this._input=_+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-k),this.offset-=k;var L=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),E.length-1&&(this.yylineno-=E.length-1);var S=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:E?(E.length===L.length?this.yylloc.first_column:0)+L[L.length-E.length].length-E[0].length:this.yylloc.first_column-k},this.options.ranges&&(this.yylloc.range=[S[0],S[0]+this.yyleng-k]),this.yyleng=this.yytext.length,this},"unput"),more:v(function(){return this._more=!0,this},"more"),reject:v(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). `+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:v(function(_){this.unput(this.match.slice(_))},"less"),pastInput:v(function(){var _=this.matched.substr(0,this.matched.length-this.match.length);return(_.length>20?"...":"")+_.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:v(function(){var _=this.match;return _.length<20&&(_+=this._input.substr(0,20-_.length)),(_.substr(0,20)+(_.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:v(function(){var _=this.pastInput(),k=new Array(_.length+1).join("-");return _+this.upcomingInput()+` `+k+"^"},"showPosition"),test_match:v(function(_,k){var E,L,S;if(this.options.backtrack_lexer&&(S={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(S.yylloc.range=this.yylloc.range.slice(0))),L=_[0].match(/(?:\r\n?|\n).*/g),L&&(this.yylineno+=L.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:L?L[L.length-1].length-L[L.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+_[0].length},this.yytext+=_[0],this.match+=_[0],this.matches=_,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(_[0].length),this.matched+=_[0],E=this.performAction.call(this,this.yy,this,k,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),E)return E;if(this._backtrack){for(var C in S)this[C]=S[C];return!1}return!1},"test_match"),next:v(function(){if(this.done)return this.EOF;this._input||(this.done=!0);var _,k,E,L;this._more||(this.yytext="",this.match="");for(var S=this._currentRules(),C=0;Ck[0].length)){if(k=E,L=C,this.options.backtrack_lexer){if(_=this.test_match(E,S[C]),_!==!1)return _;if(this._backtrack){k=!1;continue}else return!1}else if(!this.options.flex)break}return k?(_=this.test_match(k,S[L]),_!==!1?_:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. `+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:v(function(){var k=this.next();return k||this.lex()},"lex"),begin:v(function(k){this.conditionStack.push(k)},"begin"),popState:v(function(){var k=this.conditionStack.length-1;return k>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:v(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:v(function(k){return k=this.conditionStack.length-1-Math.abs(k||0),k>=0?this.conditionStack[k]:"INITIAL"},"topState"),pushState:v(function(k){this.begin(k)},"pushState"),stateStackSize:v(function(){return this.conditionStack.length},"stateStackSize"),options:{},performAction:v(function(k,E,L,S){var C=S;switch(L){case 0:return 10;case 1:return k.getLogger().debug("Found space-block"),31;break;case 2:return k.getLogger().debug("Found nl-block"),31;break;case 3:return k.getLogger().debug("Found space-block"),29;break;case 4:k.getLogger().debug(".",E.yytext);break;case 5:k.getLogger().debug("_",E.yytext);break;case 6:return 5;case 7:return E.yytext=-1,28;break;case 8:return E.yytext=E.yytext.replace(/columns\s+/,""),k.getLogger().debug("COLUMNS (LEX)",E.yytext),28;break;case 9:this.pushState("md_string");break;case 10:return"MD_STR";case 11:this.popState();break;case 12:this.pushState("string");break;case 13:k.getLogger().debug("LEX: POPPING STR:",E.yytext),this.popState();break;case 14:return k.getLogger().debug("LEX: STR end:",E.yytext),"STR";break;case 15:return E.yytext=E.yytext.replace(/space\:/,""),k.getLogger().debug("SPACE NUM (LEX)",E.yytext),21;break;case 16:return E.yytext="1",k.getLogger().debug("COLUMNS (LEX)",E.yytext),21;break;case 17:return 43;case 18:return"LINKSTYLE";case 19:return"INTERPOLATE";case 20:return this.pushState("CLASSDEF"),40;break;case 21:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";break;case 22:return this.popState(),this.pushState("CLASSDEFID"),41;break;case 23:return this.popState(),42;break;case 24:return this.pushState("CLASS"),44;break;case 25:return this.popState(),this.pushState("CLASS_STYLE"),45;break;case 26:return this.popState(),46;break;case 27:return this.pushState("STYLE_STMNT"),47;break;case 28:return this.popState(),this.pushState("STYLE_DEFINITION"),48;break;case 29:return this.popState(),49;break;case 30:return this.pushState("acc_title"),"acc_title";break;case 31:return this.popState(),"acc_title_value";break;case 32:return this.pushState("acc_descr"),"acc_descr";break;case 33:return this.popState(),"acc_descr_value";break;case 34:this.pushState("acc_descr_multiline");break;case 35:this.popState();break;case 36:return"acc_descr_multiline_value";case 37:return 30;case 38:return this.popState(),k.getLogger().debug("Lex: (("),"NODE_DEND";break;case 39:return this.popState(),k.getLogger().debug("Lex: (("),"NODE_DEND";break;case 40:return this.popState(),k.getLogger().debug("Lex: ))"),"NODE_DEND";break;case 41:return this.popState(),k.getLogger().debug("Lex: (("),"NODE_DEND";break;case 42:return this.popState(),k.getLogger().debug("Lex: (("),"NODE_DEND";break;case 43:return this.popState(),k.getLogger().debug("Lex: (-"),"NODE_DEND";break;case 44:return this.popState(),k.getLogger().debug("Lex: -)"),"NODE_DEND";break;case 45:return this.popState(),k.getLogger().debug("Lex: (("),"NODE_DEND";break;case 46:return this.popState(),k.getLogger().debug("Lex: ]]"),"NODE_DEND";break;case 47:return this.popState(),k.getLogger().debug("Lex: ("),"NODE_DEND";break;case 48:return this.popState(),k.getLogger().debug("Lex: ])"),"NODE_DEND";break;case 49:return this.popState(),k.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 50:return this.popState(),k.getLogger().debug("Lex: /]"),"NODE_DEND";break;case 51:return this.popState(),k.getLogger().debug("Lex: )]"),"NODE_DEND";break;case 52:return this.popState(),k.getLogger().debug("Lex: )"),"NODE_DEND";break;case 53:return this.popState(),k.getLogger().debug("Lex: ]>"),"NODE_DEND";break;case 54:return this.popState(),k.getLogger().debug("Lex: ]"),"NODE_DEND";break;case 55:return k.getLogger().debug("Lexa: -)"),this.pushState("NODE"),36;break;case 56:return k.getLogger().debug("Lexa: (-"),this.pushState("NODE"),36;break;case 57:return k.getLogger().debug("Lexa: ))"),this.pushState("NODE"),36;break;case 58:return k.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 59:return k.getLogger().debug("Lex: ((("),this.pushState("NODE"),36;break;case 60:return k.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 61:return k.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 62:return k.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 63:return k.getLogger().debug("Lexc: >"),this.pushState("NODE"),36;break;case 64:return k.getLogger().debug("Lexa: (["),this.pushState("NODE"),36;break;case 65:return k.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;break;case 66:return this.pushState("NODE"),36;break;case 67:return this.pushState("NODE"),36;break;case 68:return this.pushState("NODE"),36;break;case 69:return this.pushState("NODE"),36;break;case 70:return this.pushState("NODE"),36;break;case 71:return this.pushState("NODE"),36;break;case 72:return this.pushState("NODE"),36;break;case 73:return k.getLogger().debug("Lexa: ["),this.pushState("NODE"),36;break;case 74:return this.pushState("BLOCK_ARROW"),k.getLogger().debug("LEX ARR START"),38;break;case 75:return k.getLogger().debug("Lex: NODE_ID",E.yytext),32;break;case 76:return k.getLogger().debug("Lex: EOF",E.yytext),8;break;case 77:this.pushState("md_string");break;case 78:this.pushState("md_string");break;case 79:return"NODE_DESCR";case 80:this.popState();break;case 81:k.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 82:k.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 83:return k.getLogger().debug("LEX: NODE_DESCR:",E.yytext),"NODE_DESCR";break;case 84:k.getLogger().debug("LEX POPPING"),this.popState();break;case 85:k.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 86:return E.yytext=E.yytext.replace(/^,\s*/,""),k.getLogger().debug("Lex (right): dir:",E.yytext),"DIR";break;case 87:return E.yytext=E.yytext.replace(/^,\s*/,""),k.getLogger().debug("Lex (left):",E.yytext),"DIR";break;case 88:return E.yytext=E.yytext.replace(/^,\s*/,""),k.getLogger().debug("Lex (x):",E.yytext),"DIR";break;case 89:return E.yytext=E.yytext.replace(/^,\s*/,""),k.getLogger().debug("Lex (y):",E.yytext),"DIR";break;case 90:return E.yytext=E.yytext.replace(/^,\s*/,""),k.getLogger().debug("Lex (up):",E.yytext),"DIR";break;case 91:return E.yytext=E.yytext.replace(/^,\s*/,""),k.getLogger().debug("Lex (down):",E.yytext),"DIR";break;case 92:return E.yytext="]>",k.getLogger().debug("Lex (ARROW_DIR end):",E.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";break;case 93:return k.getLogger().debug("Lex: LINK","#"+E.yytext+"#"),15;break;case 94:return k.getLogger().debug("Lex: LINK",E.yytext),15;break;case 95:return k.getLogger().debug("Lex: LINK",E.yytext),15;break;case 96:return k.getLogger().debug("Lex: LINK",E.yytext),15;break;case 97:return k.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 98:return k.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 99:return k.getLogger().debug("Lex: START_LINK",E.yytext),this.pushState("LLABEL"),16;break;case 100:this.pushState("md_string");break;case 101:return k.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";break;case 102:return this.popState(),k.getLogger().debug("Lex: LINK","#"+E.yytext+"#"),15;break;case 103:return this.popState(),k.getLogger().debug("Lex: LINK",E.yytext),15;break;case 104:return this.popState(),k.getLogger().debug("Lex: LINK",E.yytext),15;break;case 105:return k.getLogger().debug("Lex: COLON",E.yytext),E.yytext=E.yytext.slice(1),27;break}},"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block\s+)/,/^(?:block\n+)/,/^(?:block:)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[29],inclusive:!1},STYLE_STMNT:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[23],inclusive:!1},CLASSDEF:{rules:[21,22],inclusive:!1},CLASS_STYLE:{rules:[26],inclusive:!1},CLASS:{rules:[25],inclusive:!1},LLABEL:{rules:[100,101,102,103,104],inclusive:!1},ARROW_DIR:{rules:[86,87,88,89,90,91,92],inclusive:!1},BLOCK_ARROW:{rules:[77,82,85],inclusive:!1},NODE:{rules:[38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,78,81],inclusive:!1},md_string:{rules:[10,11,79,80],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[13,14,83,84],inclusive:!1},acc_descr_multiline:{rules:[35,36],inclusive:!1},acc_descr:{rules:[33],inclusive:!1},acc_title:{rules:[31],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,12,15,16,17,18,19,20,24,27,30,32,34,37,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,93,94,95,96,97,98,99,105],inclusive:!0}}};return w}();y.lexer=x;function b(){this.yy={}}return v(b,"Parser"),b.prototype=y,y.Parser=b,new b}();AO.parser=AO;fKe=AO,$l=new Map,IO=[],_O=new Map,Kpe="color",Zpe="fill",dKe="bgFill",age=",",pKe=pe(),xE=new Map,gKe=v(t=>Xe.sanitizeText(t,pKe),"sanitizeText"),mKe=v(function(t,e=""){let r=xE.get(t);r||(r={id:t,styles:[],textStyles:[]},xE.set(t,r)),e?.split(age).forEach(n=>{let i=n.replace(/([^;]*);/,"$1").trim();if(RegExp(Kpe).exec(n)){let s=i.replace(Zpe,dKe).replace(Kpe,Zpe);r.textStyles.push(s)}r.styles.push(i)})},"addStyleClass"),vKe=v(function(t,e=""){let r=$l.get(t);e!=null&&(r.styles=e.split(age))},"addStyle2Node"),yKe=v(function(t,e){t.split(",").forEach(function(r){let n=$l.get(r);if(n===void 0){let i=r.trim();n={id:i,type:"na",children:[]},$l.set(i,n)}n.classes||(n.classes=[]),n.classes.push(e)})},"setCssClass"),sge=v((t,e)=>{let r=t.flat(),n=[];for(let i of r){if(i.label&&(i.label=gKe(i.label)),i.type==="classDef"){mKe(i.id,i.css);continue}if(i.type==="applyClass"){yKe(i.id,i?.styleClass??"");continue}if(i.type==="applyStyles"){i?.stylesStr&&vKe(i.id,i?.stylesStr);continue}if(i.type==="column-setting")e.columns=i.columns??-1;else if(i.type==="edge"){let a=(_O.get(i.id)??0)+1;_O.set(i.id,a),i.id=a+"-"+i.id,IO.push(i)}else{i.label||(i.type==="composite"?i.label="":i.label=i.id);let a=$l.get(i.id);if(a===void 0?$l.set(i.id,i):(i.type!=="na"&&(a.type=i.type),i.label!==i.id&&(a.label=i.label)),i.children&&sge(i.children,i),i.type==="space"){let s=i.width??1;for(let o=0;o{re.debug("Clear called"),xr(),Kx={id:"root",type:"composite",children:[],columns:-1},$l=new Map([["root",Kx]]),MO=[],xE=new Map,IO=[],_O=new Map},"clear");v(oge,"typeStr2Type");v(lge,"edgeTypeStr2Type");v(cge,"edgeStrToEdgeData");Qpe=0,bKe=v(()=>(Qpe++,"id-"+Math.random().toString(36).substr(2,12)+"-"+Qpe),"generateId"),wKe=v(t=>{Kx.children=t,sge(t,Kx),MO=Kx.children},"setHierarchy"),kKe=v(t=>{let e=$l.get(t);return e?e.columns?e.columns:e.children?e.children.length:-1:-1},"getColumns"),TKe=v(()=>[...$l.values()],"getBlocksFlat"),EKe=v(()=>MO||[],"getBlocks"),SKe=v(()=>IO,"getEdges"),CKe=v(t=>$l.get(t),"getBlock"),AKe=v(t=>{$l.set(t.id,t)},"setBlock"),_Ke=v(()=>console,"getLogger"),LKe=v(function(){return xE},"getClasses"),RKe={getConfig:v(()=>Or().block,"getConfig"),typeStr2Type:oge,edgeTypeStr2Type:lge,edgeStrToEdgeData:cge,getLogger:_Ke,getBlocksFlat:TKe,getBlocks:EKe,getEdges:SKe,setHierarchy:wKe,getBlock:CKe,setBlock:AKe,getColumns:kKe,getClasses:LKe,clear:xKe,generateId:bKe},NKe=RKe,vE=v((t,e)=>{let r=S1,n=r(t,"r"),i=r(t,"g"),a=r(t,"b");return $s(n,i,a,e)},"fade"),IKe=v(t=>`.label { font-family: ${t.fontFamily}; color: ${t.nodeTextColor||t.textColor}; } .cluster-label text { fill: ${t.titleColor}; } .cluster-label span,p { color: ${t.titleColor}; } .label text,span,p { fill: ${t.nodeTextColor||t.textColor}; color: ${t.nodeTextColor||t.textColor}; } .node rect, .node circle, .node ellipse, .node polygon, .node path { fill: ${t.mainBkg}; stroke: ${t.nodeBorder}; stroke-width: 1px; } .flowchart-label text { text-anchor: middle; } // .flowchart-label .text-outer-tspan { // text-anchor: middle; // } // .flowchart-label .text-inner-tspan { // text-anchor: start; // } .node .label { text-align: center; } .node.clickable { cursor: pointer; } .arrowheadPath { fill: ${t.arrowheadColor}; } .edgePath .path { stroke: ${t.lineColor}; stroke-width: 2.0px; } .flowchart-link { stroke: ${t.lineColor}; fill: none; } .edgeLabel { background-color: ${t.edgeLabelBackground}; rect { opacity: 0.5; background-color: ${t.edgeLabelBackground}; fill: ${t.edgeLabelBackground}; } text-align: center; } /* For html labels only */ .labelBkg { background-color: ${vE(t.edgeLabelBackground,.5)}; // background-color: } .node .cluster { // fill: ${vE(t.mainBkg,.5)}; fill: ${vE(t.clusterBkg,.5)}; stroke: ${vE(t.clusterBorder,.2)}; box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; stroke-width: 1px; } .cluster text { fill: ${t.titleColor}; } .cluster span,p { color: ${t.titleColor}; } /* .cluster div { color: ${t.titleColor}; } */ div.mermaidTooltip { position: absolute; text-align: center; max-width: 200px; padding: 2px; font-family: ${t.fontFamily}; font-size: 12px; background: ${t.tertiaryColor}; border: 1px solid ${t.border2}; border-radius: 2px; pointer-events: none; z-index: 100; } .flowchartTitleText { text-anchor: middle; font-size: 18px; fill: ${t.textColor}; } `,"getStyles"),MKe=IKe,DKe=v((t,e,r,n)=>{e.forEach(i=>{WKe[i](t,r,n)})},"insertMarkers"),OKe=v((t,e,r)=>{re.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},"extension"),PKe=v((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"composition"),BKe=v((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},"aggregation"),FKe=v((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},"dependency"),zKe=v((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},"lollipop"),$Ke=v((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"point"),GKe=v((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},"circle"),UKe=v((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},"cross"),VKe=v((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},"barb"),WKe={extension:OKe,composition:PKe,aggregation:BKe,dependency:FKe,lollipop:zKe,point:$Ke,circle:GKe,cross:UKe,barb:VKe},HKe=DKe,fi=pe()?.block?.padding??8;v(uge,"calculateBlockPosition");qKe=v(t=>{let e=0,r=0;for(let n of t.children){let{width:i,height:a,x:s,y:o}=n.size??{width:0,height:0,x:0,y:0};re.debug("getMaxChildSize abc95 child:",n.id,"width:",i,"height:",a,"x:",s,"y:",o,n.type),n.type!=="space"&&(i>e&&(e=i/(t.widthInColumns??1)),a>r&&(r=a))}return{width:e,height:r}},"getMaxChildSize");v(bE,"setBlockSizes");v(DO,"layoutBlocks");v(OO,"findBounds");v(hge,"layout");v(LO,"applyStyle");v(fge,"addHtmlLabel");YKe=v((t,e,r,n)=>{let i=t||"";if(typeof i=="object"&&(i=i[0]),Wr(pe().flowchart.htmlLabels)){i=i.replace(/\\n|\n/g,"
    "),re.debug("vertexText"+i);let a={isNode:n,label:Z3(Xs(i)),labelStyle:e.replace("fill:","color:")};return fge(a)}else{let a=document.createElementNS("http://www.w3.org/2000/svg","text");a.setAttribute("style",e.replace("color:","fill:"));let s=[];typeof i=="string"?s=i.split(/\\n|\n|/gi):Array.isArray(i)?s=i:s=[];for(let o of s){let l=document.createElementNS("http://www.w3.org/2000/svg","tspan");l.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),l.setAttribute("dy","1em"),l.setAttribute("x","0"),r?l.setAttribute("class","title-row"):l.setAttribute("class","row"),l.textContent=o.trim(),a.appendChild(l)}return a}},"createLabel"),tl=YKe,XKe=v((t,e,r,n,i)=>{e.arrowTypeStart&&Jpe(t,"start",e.arrowTypeStart,r,n,i),e.arrowTypeEnd&&Jpe(t,"end",e.arrowTypeEnd,r,n,i)},"addEdgeMarkers"),jKe={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},Jpe=v((t,e,r,n,i,a)=>{let s=jKe[r];if(!s){re.warn(`Unknown arrow type: ${r}`);return}let o=e==="start"?"Start":"End";t.attr(`marker-${e}`,`url(${n}#${i}_${a}-${s}${o})`)},"addEdgeMarker"),RO={},Ba={},KKe=v((t,e)=>{let r=pe(),n=Wr(r.flowchart.htmlLabels),i=e.labelType==="markdown"?oa(t,e.label,{style:e.labelStyle,useHtmlLabels:n,addSvgBackground:!0},r):tl(e.label,e.labelStyle),a=t.insert("g").attr("class","edgeLabel"),s=a.insert("g").attr("class","label");s.node().appendChild(i);let o=i.getBBox();if(n){let u=i.children[0],h=Ve(i);o=u.getBoundingClientRect(),h.attr("width",o.width),h.attr("height",o.height)}s.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),RO[e.id]=a,e.width=o.width,e.height=o.height;let l;if(e.startLabelLeft){let u=tl(e.startLabelLeft,e.labelStyle),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),Ba[e.id]||(Ba[e.id]={}),Ba[e.id].startLeft=h,jx(l,e.startLabelLeft)}if(e.startLabelRight){let u=tl(e.startLabelRight,e.labelStyle),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=h.node().appendChild(u),f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),Ba[e.id]||(Ba[e.id]={}),Ba[e.id].startRight=h,jx(l,e.startLabelRight)}if(e.endLabelLeft){let u=tl(e.endLabelLeft,e.labelStyle),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),h.node().appendChild(u),Ba[e.id]||(Ba[e.id]={}),Ba[e.id].endLeft=h,jx(l,e.endLabelLeft)}if(e.endLabelRight){let u=tl(e.endLabelRight,e.labelStyle),h=t.insert("g").attr("class","edgeTerminals"),f=h.insert("g").attr("class","inner");l=f.node().appendChild(u);let d=u.getBBox();f.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),h.node().appendChild(u),Ba[e.id]||(Ba[e.id]={}),Ba[e.id].endRight=h,jx(l,e.endLabelRight)}return i},"insertEdgeLabel");v(jx,"setTerminalWidth");ZKe=v((t,e)=>{re.debug("Moving label abc88 ",t.id,t.label,RO[t.id],e);let r=e.updatedPath?e.updatedPath:e.originalPath,n=pe(),{subGraphTitleTotalMargin:i}=ou(n);if(t.label){let a=RO[t.id],s=t.x,o=t.y;if(r){let l=Ut.calcLabelPosition(r);re.debug("Moving label "+t.label+" from (",s,",",o,") to (",l.x,",",l.y,") abc88"),e.updatedPath&&(s=l.x,o=l.y)}a.attr("transform",`translate(${s}, ${o+i/2})`)}if(t.startLabelLeft){let a=Ba[t.id].startLeft,s=t.x,o=t.y;if(r){let l=Ut.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);s=l.x,o=l.y}a.attr("transform",`translate(${s}, ${o})`)}if(t.startLabelRight){let a=Ba[t.id].startRight,s=t.x,o=t.y;if(r){let l=Ut.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);s=l.x,o=l.y}a.attr("transform",`translate(${s}, ${o})`)}if(t.endLabelLeft){let a=Ba[t.id].endLeft,s=t.x,o=t.y;if(r){let l=Ut.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);s=l.x,o=l.y}a.attr("transform",`translate(${s}, ${o})`)}if(t.endLabelRight){let a=Ba[t.id].endRight,s=t.x,o=t.y;if(r){let l=Ut.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);s=l.x,o=l.y}a.attr("transform",`translate(${s}, ${o})`)}},"positionEdgeLabel"),QKe=v((t,e)=>{let r=t.x,n=t.y,i=Math.abs(e.x-r),a=Math.abs(e.y-n),s=t.width/2,o=t.height/2;return i>=s||a>=o},"outsideNode"),JKe=v((t,e,r)=>{re.debug(`intersection calc abc89: outsidePoint: ${JSON.stringify(e)} insidePoint : ${JSON.stringify(r)} node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);let n=t.x,i=t.y,a=Math.abs(n-r.x),s=t.width/2,o=r.xMath.abs(n-e.x)*l){let f=r.y{re.debug("abc88 cutPathAtIntersect",t,e);let r=[],n=t[0],i=!1;return t.forEach(a=>{if(!QKe(e,a)&&!i){let s=JKe(e,n,a),o=!1;r.forEach(l=>{o=o||l.x===s.x&&l.y===s.y}),r.some(l=>l.x===s.x&&l.y===s.y)||r.push(s),i=!0}else n=a,i||r.push(a)}),r},"cutPathAtIntersect"),eZe=v(function(t,e,r,n,i,a,s){let o=r.points;re.debug("abc88 InsertEdge: edge=",r,"e=",e);let l=!1,u=a.node(e.v);var h=a.node(e.w);h?.intersect&&u?.intersect&&(o=o.slice(1,r.points.length-1),o.unshift(u.intersect(o[0])),o.push(h.intersect(o[o.length-1]))),r.toCluster&&(re.debug("to cluster abc88",n[r.toCluster]),o=ege(r.points,n[r.toCluster].node),l=!0),r.fromCluster&&(re.debug("from cluster abc88",n[r.fromCluster]),o=ege(o.reverse(),n[r.fromCluster].node).reverse(),l=!0);let f=o.filter(_=>!Number.isNaN(_.y)),d=gl;r.curve&&(i==="graph"||i==="flowchart")&&(d=r.curve);let{x:p,y:g}=c5(r),m=ms().x(p).y(g).curve(d),y;switch(r.thickness){case"normal":y="edge-thickness-normal";break;case"thick":y="edge-thickness-thick";break;case"invisible":y="edge-thickness-thick";break;default:y=""}switch(r.pattern){case"solid":y+=" edge-pattern-solid";break;case"dotted":y+=" edge-pattern-dotted";break;case"dashed":y+=" edge-pattern-dashed";break}let x=t.append("path").attr("d",m(f)).attr("id",r.id).attr("class"," "+y+(r.classes?" "+r.classes:"")).attr("style",r.style),b="";(pe().flowchart.arrowMarkerAbsolute||pe().state.arrowMarkerAbsolute)&&(b=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,b=b.replace(/\(/g,"\\("),b=b.replace(/\)/g,"\\)")),XKe(x,r,b,s,i);let w={};return l&&(w.updatedPath=o),w.originalPath=r.points,w},"insertEdge"),tZe=v(t=>{let e=new Set;for(let r of t)switch(r){case"x":e.add("right"),e.add("left");break;case"y":e.add("up"),e.add("down");break;default:e.add(r);break}return e},"expandAndDeduplicateDirections"),rZe=v((t,e,r)=>{let n=tZe(t),i=2,a=e.height+2*r.padding,s=a/i,o=e.width+2*s+r.padding,l=r.padding/2;return n.has("right")&&n.has("left")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:s,y:0},{x:o/2,y:2*l},{x:o-s,y:0},{x:o,y:0},{x:o,y:-a/3},{x:o+2*l,y:-a/2},{x:o,y:-2*a/3},{x:o,y:-a},{x:o-s,y:-a},{x:o/2,y:-a-2*l},{x:s,y:-a},{x:0,y:-a},{x:0,y:-2*a/3},{x:-2*l,y:-a/2},{x:0,y:-a/3}]:n.has("right")&&n.has("left")&&n.has("up")?[{x:s,y:0},{x:o-s,y:0},{x:o,y:-a/2},{x:o-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}]:n.has("right")&&n.has("left")&&n.has("down")?[{x:0,y:0},{x:s,y:-a},{x:o-s,y:-a},{x:o,y:0}]:n.has("right")&&n.has("up")&&n.has("down")?[{x:0,y:0},{x:o,y:-s},{x:o,y:-a+s},{x:0,y:-a}]:n.has("left")&&n.has("up")&&n.has("down")?[{x:o,y:0},{x:0,y:-s},{x:0,y:-a+s},{x:o,y:-a}]:n.has("right")&&n.has("left")?[{x:s,y:0},{x:s,y:-l},{x:o-s,y:-l},{x:o-s,y:0},{x:o,y:-a/2},{x:o-s,y:-a},{x:o-s,y:-a+l},{x:s,y:-a+l},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")&&n.has("down")?[{x:o/2,y:0},{x:0,y:-l},{x:s,y:-l},{x:s,y:-a+l},{x:0,y:-a+l},{x:o/2,y:-a},{x:o,y:-a+l},{x:o-s,y:-a+l},{x:o-s,y:-l},{x:o,y:-l}]:n.has("right")&&n.has("up")?[{x:0,y:0},{x:o,y:-s},{x:0,y:-a}]:n.has("right")&&n.has("down")?[{x:0,y:0},{x:o,y:0},{x:0,y:-a}]:n.has("left")&&n.has("up")?[{x:o,y:0},{x:0,y:-s},{x:o,y:-a}]:n.has("left")&&n.has("down")?[{x:o,y:0},{x:0,y:0},{x:o,y:-a}]:n.has("right")?[{x:s,y:-l},{x:s,y:-l},{x:o-s,y:-l},{x:o-s,y:0},{x:o,y:-a/2},{x:o-s,y:-a},{x:o-s,y:-a+l},{x:s,y:-a+l},{x:s,y:-a+l}]:n.has("left")?[{x:s,y:0},{x:s,y:-l},{x:o-s,y:-l},{x:o-s,y:-a+l},{x:s,y:-a+l},{x:s,y:-a},{x:0,y:-a/2}]:n.has("up")?[{x:s,y:-l},{x:s,y:-a+l},{x:0,y:-a+l},{x:o/2,y:-a},{x:o,y:-a+l},{x:o-s,y:-a+l},{x:o-s,y:-l}]:n.has("down")?[{x:o/2,y:0},{x:0,y:-l},{x:s,y:-l},{x:s,y:-a+l},{x:o-s,y:-a+l},{x:o-s,y:-l},{x:o,y:-l}]:[{x:0,y:0}]},"getArrowPoints");v(dge,"intersectNode");nZe=dge;v(pge,"intersectEllipse");gge=pge;v(mge,"intersectCircle");iZe=mge;v(vge,"intersectLine");v(NO,"sameSign");aZe=vge,sZe=yge;v(yge,"intersectPolygon");oZe=v((t,e)=>{var r=t.x,n=t.y,i=e.x-r,a=e.y-n,s=t.width/2,o=t.height/2,l,u;return Math.abs(a)*s>Math.abs(i)*o?(a<0&&(o=-o),l=a===0?0:o*i/a,u=o):(i<0&&(s=-s),l=s,u=i===0?0:s*a/i),{x:r+l,y:n+u}},"intersectRect"),lZe=oZe,$n={node:nZe,circle:iZe,ellipse:gge,polygon:sZe,rect:lZe},Ki=v(async(t,e,r,n)=>{let i=pe(),a,s=e.useHtmlLabels||Wr(i.flowchart.htmlLabels);r?a=r:a="node default";let o=t.insert("g").attr("class",a).attr("id",e.domId||e.id),l=o.insert("g").attr("class","label").attr("style",e.labelStyle),u;e.labelText===void 0?u="":u=typeof e.labelText=="string"?e.labelText:e.labelText[0];let h=l.node(),f;e.labelType==="markdown"?f=oa(l,yr(Xs(u),i),{useHtmlLabels:s,width:e.width||i.flowchart.wrappingWidth,classes:"markdown-node-label"},i):f=h.appendChild(tl(yr(Xs(u),i),e.labelStyle,!1,n));let d=f.getBBox(),p=e.padding/2;if(Wr(i.flowchart.htmlLabels)){let g=f.children[0],m=Ve(f),y=g.getElementsByTagName("img");if(y){let x=u.replace(/]*>/g,"").trim()==="";await Promise.all([...y].map(b=>new Promise(w=>{function _(){if(b.style.display="flex",b.style.flexDirection="column",x){let k=i.fontSize?i.fontSize:window.getComputedStyle(document.body).fontSize,L=parseInt(k,10)*5+"px";b.style.minWidth=L,b.style.maxWidth=L}else b.style.width="100%";w(b)}v(_,"setupImage"),setTimeout(()=>{b.complete&&_()}),b.addEventListener("error",_),b.addEventListener("load",_)})))}d=g.getBoundingClientRect(),m.attr("width",d.width),m.attr("height",d.height)}return s?l.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"):l.attr("transform","translate(0, "+-d.height/2+")"),e.centerLabel&&l.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),l.insert("rect",":first-child"),{shapeSvg:o,bbox:d,halfPadding:p,label:l}},"labelHelper"),ai=v((t,e)=>{let r=e.node().getBBox();t.width=r.width,t.height=r.height},"updateNodeBounds");v(Gl,"insertPolygonShape");cZe=v(async(t,e)=>{e.useHtmlLabels||pe().flowchart.htmlLabels||(e.centerLabel=!0);let{shapeSvg:n,bbox:i,halfPadding:a}=await Ki(t,e,"node "+e.classes,!0);re.info("Classes = ",e.classes);let s=n.insert("rect",":first-child");return s.attr("rx",e.rx).attr("ry",e.ry).attr("x",-i.width/2-a).attr("y",-i.height/2-a).attr("width",i.width+e.padding).attr("height",i.height+e.padding),ai(e,s),e.intersect=function(o){return $n.rect(e,o)},n},"note"),uZe=cZe,tge=v(t=>t?" "+t:"","formatClass"),ho=v((t,e)=>`${e||"node default"}${tge(t.classes)} ${tge(t.class)}`,"getClassesFromNode"),rge=v(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Ki(t,e,ho(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=i+a,o=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];re.info("Question main (Circle)");let l=Gl(r,s,s,o);return l.attr("style",e.style),ai(e,l),e.intersect=function(u){return re.warn("Intersect called"),$n.polygon(e,o,u)},r},"question"),hZe=v((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=28,i=[{x:0,y:n/2},{x:n/2,y:0},{x:0,y:-n/2},{x:-n/2,y:0}];return r.insert("polygon",":first-child").attr("points",i.map(function(s){return s.x+","+s.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(s){return $n.circle(e,14,s)},r},"choice"),fZe=v(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Ki(t,e,ho(e,void 0),!0),i=4,a=n.height+e.padding,s=a/i,o=n.width+2*s+e.padding,l=[{x:s,y:0},{x:o-s,y:0},{x:o,y:-a/2},{x:o-s,y:-a},{x:s,y:-a},{x:0,y:-a/2}],u=Gl(r,o,a,l);return u.attr("style",e.style),ai(e,u),e.intersect=function(h){return $n.polygon(e,l,h)},r},"hexagon"),dZe=v(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Ki(t,e,void 0,!0),i=2,a=n.height+2*e.padding,s=a/i,o=n.width+2*s+e.padding,l=rZe(e.directions,n,e),u=Gl(r,o,a,l);return u.attr("style",e.style),ai(e,u),e.intersect=function(h){return $n.polygon(e,l,h)},r},"block_arrow"),pZe=v(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Ki(t,e,ho(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-a/2,y:0},{x:i,y:0},{x:i,y:-a},{x:-a/2,y:-a},{x:0,y:-a/2}];return Gl(r,i,a,s).attr("style",e.style),e.width=i+a,e.height=a,e.intersect=function(l){return $n.polygon(e,s,l)},r},"rect_left_inv_arrow"),gZe=v(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Ki(t,e,ho(e),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-2*a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:a/6,y:-a}],o=Gl(r,i,a,s);return o.attr("style",e.style),ai(e,o),e.intersect=function(l){return $n.polygon(e,s,l)},r},"lean_right"),mZe=v(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Ki(t,e,ho(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:2*a/6,y:0},{x:i+a/6,y:0},{x:i-2*a/6,y:-a},{x:-a/6,y:-a}],o=Gl(r,i,a,s);return o.attr("style",e.style),ai(e,o),e.intersect=function(l){return $n.polygon(e,s,l)},r},"lean_left"),vZe=v(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Ki(t,e,ho(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:-2*a/6,y:0},{x:i+2*a/6,y:0},{x:i-a/6,y:-a},{x:a/6,y:-a}],o=Gl(r,i,a,s);return o.attr("style",e.style),ai(e,o),e.intersect=function(l){return $n.polygon(e,s,l)},r},"trapezoid"),yZe=v(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Ki(t,e,ho(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:a/6,y:0},{x:i-a/6,y:0},{x:i+2*a/6,y:-a},{x:-2*a/6,y:-a}],o=Gl(r,i,a,s);return o.attr("style",e.style),ai(e,o),e.intersect=function(l){return $n.polygon(e,s,l)},r},"inv_trapezoid"),xZe=v(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Ki(t,e,ho(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:0,y:0},{x:i+a/2,y:0},{x:i,y:-a/2},{x:i+a/2,y:-a},{x:0,y:-a}],o=Gl(r,i,a,s);return o.attr("style",e.style),ai(e,o),e.intersect=function(l){return $n.polygon(e,s,l)},r},"rect_right_inv_arrow"),bZe=v(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Ki(t,e,ho(e,void 0),!0),i=n.width+e.padding,a=i/2,s=a/(2.5+i/50),o=n.height+s+e.padding,l="M 0,"+s+" a "+a+","+s+" 0,0,0 "+i+" 0 a "+a+","+s+" 0,0,0 "+-i+" 0 l 0,"+o+" a "+a+","+s+" 0,0,0 "+i+" 0 l 0,"+-o,u=r.attr("label-offset-y",s).insert("path",":first-child").attr("style",e.style).attr("d",l).attr("transform","translate("+-i/2+","+-(o/2+s)+")");return ai(e,u),e.intersect=function(h){let f=$n.rect(e,h),d=f.x-e.x;if(a!=0&&(Math.abs(d)e.height/2-s)){let p=s*s*(1-d*d/(a*a));p!=0&&(p=Math.sqrt(p)),p=s-p,h.y-e.y>0&&(p=-p),f.y+=p}return f},r},"cylinder"),wZe=v(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ki(t,e,"node "+e.classes+" "+e.class,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,o=e.positioned?e.height:n.height+e.padding,l=e.positioned?-s/2:-n.width/2-i,u=e.positioned?-o/2:-n.height/2-i;if(a.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",l).attr("y",u).attr("width",s).attr("height",o),e.props){let h=new Set(Object.keys(e.props));e.props.borders&&(wE(a,e.props.borders,s,o),h.delete("borders")),h.forEach(f=>{re.warn(`Unknown node property ${f}`)})}return ai(e,a),e.intersect=function(h){return $n.rect(e,h)},r},"rect"),kZe=v(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ki(t,e,"node "+e.classes,!0),a=r.insert("rect",":first-child"),s=e.positioned?e.width:n.width+e.padding,o=e.positioned?e.height:n.height+e.padding,l=e.positioned?-s/2:-n.width/2-i,u=e.positioned?-o/2:-n.height/2-i;if(a.attr("class","basic cluster composite label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",l).attr("y",u).attr("width",s).attr("height",o),e.props){let h=new Set(Object.keys(e.props));e.props.borders&&(wE(a,e.props.borders,s,o),h.delete("borders")),h.forEach(f=>{re.warn(`Unknown node property ${f}`)})}return ai(e,a),e.intersect=function(h){return $n.rect(e,h)},r},"composite"),TZe=v(async(t,e)=>{let{shapeSvg:r}=await Ki(t,e,"label",!0);re.trace("Classes = ",e.class);let n=r.insert("rect",":first-child"),i=0,a=0;if(n.attr("width",i).attr("height",a),r.attr("class","label edgeLabel"),e.props){let s=new Set(Object.keys(e.props));e.props.borders&&(wE(n,e.props.borders,i,a),s.delete("borders")),s.forEach(o=>{re.warn(`Unknown node property ${o}`)})}return ai(e,n),e.intersect=function(s){return $n.rect(e,s)},r},"labelRect");v(wE,"applyNodePropertyBorders");EZe=v((t,e)=>{let r;e.classes?r="node "+e.classes:r="node default";let n=t.insert("g").attr("class",r).attr("id",e.domId||e.id),i=n.insert("rect",":first-child"),a=n.insert("line"),s=n.insert("g").attr("class","label"),o=e.labelText.flat?e.labelText.flat():e.labelText,l="";typeof o=="object"?l=o[0]:l=o,re.info("Label text abc79",l,o,typeof o=="object");let u=s.node().appendChild(tl(l,e.labelStyle,!0,!0)),h={width:0,height:0};if(Wr(pe().flowchart.htmlLabels)){let m=u.children[0],y=Ve(u);h=m.getBoundingClientRect(),y.attr("width",h.width),y.attr("height",h.height)}re.info("Text 2",o);let f=o.slice(1,o.length),d=u.getBBox(),p=s.node().appendChild(tl(f.join?f.join("
    "):f,e.labelStyle,!0,!0));if(Wr(pe().flowchart.htmlLabels)){let m=p.children[0],y=Ve(p);h=m.getBoundingClientRect(),y.attr("width",h.width),y.attr("height",h.height)}let g=e.padding/2;return Ve(p).attr("transform","translate( "+(h.width>d.width?0:(d.width-h.width)/2)+", "+(d.height+g+5)+")"),Ve(u).attr("transform","translate( "+(h.width{let{shapeSvg:r,bbox:n}=await Ki(t,e,ho(e,void 0),!0),i=n.height+e.padding,a=n.width+i/4+e.padding,s=r.insert("rect",":first-child").attr("style",e.style).attr("rx",i/2).attr("ry",i/2).attr("x",-a/2).attr("y",-i/2).attr("width",a).attr("height",i);return ai(e,s),e.intersect=function(o){return $n.rect(e,o)},r},"stadium"),CZe=v(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ki(t,e,ho(e,void 0),!0),a=r.insert("circle",":first-child");return a.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i).attr("width",n.width+e.padding).attr("height",n.height+e.padding),re.info("Circle main"),ai(e,a),e.intersect=function(s){return re.info("Circle intersect",e,n.width/2+i,s),$n.circle(e,n.width/2+i,s)},r},"circle"),AZe=v(async(t,e)=>{let{shapeSvg:r,bbox:n,halfPadding:i}=await Ki(t,e,ho(e,void 0),!0),a=5,s=r.insert("g",":first-child"),o=s.insert("circle"),l=s.insert("circle");return s.attr("class",e.class),o.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i+a).attr("width",n.width+e.padding+a*2).attr("height",n.height+e.padding+a*2),l.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",n.width/2+i).attr("width",n.width+e.padding).attr("height",n.height+e.padding),re.info("DoubleCircle main"),ai(e,o),e.intersect=function(u){return re.info("DoubleCircle intersect",e,n.width/2+i+a,u),$n.circle(e,n.width/2+i+a,u)},r},"doublecircle"),_Ze=v(async(t,e)=>{let{shapeSvg:r,bbox:n}=await Ki(t,e,ho(e,void 0),!0),i=n.width+e.padding,a=n.height+e.padding,s=[{x:0,y:0},{x:i,y:0},{x:i,y:-a},{x:0,y:-a},{x:0,y:0},{x:-8,y:0},{x:i+8,y:0},{x:i+8,y:-a},{x:-8,y:-a},{x:-8,y:0}],o=Gl(r,i,a,s);return o.attr("style",e.style),ai(e,o),e.intersect=function(l){return $n.polygon(e,s,l)},r},"subroutine"),LZe=v((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=r.insert("circle",":first-child");return n.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),ai(e,n),e.intersect=function(i){return $n.circle(e,7,i)},r},"start"),nge=v((t,e,r)=>{let n=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),i=70,a=10;r==="LR"&&(i=10,a=70);let s=n.append("rect").attr("x",-1*i/2).attr("y",-1*a/2).attr("width",i).attr("height",a).attr("class","fork-join");return ai(e,s),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(o){return $n.rect(e,o)},n},"forkJoin"),RZe=v((t,e)=>{let r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),n=r.insert("circle",":first-child"),i=r.insert("circle",":first-child");return i.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),n.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),ai(e,i),e.intersect=function(a){return $n.circle(e,7,a)},r},"end"),NZe=v((t,e)=>{let r=e.padding/2,n=4,i=8,a;e.classes?a="node "+e.classes:a="node default";let s=t.insert("g").attr("class",a).attr("id",e.domId||e.id),o=s.insert("rect",":first-child"),l=s.insert("line"),u=s.insert("line"),h=0,f=n,d=s.insert("g").attr("class","label"),p=0,g=e.classData.annotations?.[0],m=e.classData.annotations[0]?"\xAB"+e.classData.annotations[0]+"\xBB":"",y=d.node().appendChild(tl(m,e.labelStyle,!0,!0)),x=y.getBBox();if(Wr(pe().flowchart.htmlLabels)){let S=y.children[0],C=Ve(y);x=S.getBoundingClientRect(),C.attr("width",x.width),C.attr("height",x.height)}e.classData.annotations[0]&&(f+=x.height+n,h+=x.width);let b=e.classData.label;e.classData.type!==void 0&&e.classData.type!==""&&(pe().flowchart.htmlLabels?b+="<"+e.classData.type+">":b+="<"+e.classData.type+">");let w=d.node().appendChild(tl(b,e.labelStyle,!0,!0));Ve(w).attr("class","classTitle");let _=w.getBBox();if(Wr(pe().flowchart.htmlLabels)){let S=w.children[0],C=Ve(w);_=S.getBoundingClientRect(),C.attr("width",_.width),C.attr("height",_.height)}f+=_.height+n,_.width>h&&(h=_.width);let k=[];e.classData.members.forEach(S=>{let C=S.getDisplayDetails(),M=C.displayText;pe().flowchart.htmlLabels&&(M=M.replace(//g,">"));let R=d.node().appendChild(tl(M,C.cssStyle?C.cssStyle:e.labelStyle,!0,!0)),T=R.getBBox();if(Wr(pe().flowchart.htmlLabels)){let I=R.children[0],A=Ve(R);T=I.getBoundingClientRect(),A.attr("width",T.width),A.attr("height",T.height)}T.width>h&&(h=T.width),f+=T.height+n,k.push(R)}),f+=i;let E=[];if(e.classData.methods.forEach(S=>{let C=S.getDisplayDetails(),M=C.displayText;pe().flowchart.htmlLabels&&(M=M.replace(//g,">"));let R=d.node().appendChild(tl(M,C.cssStyle?C.cssStyle:e.labelStyle,!0,!0)),T=R.getBBox();if(Wr(pe().flowchart.htmlLabels)){let I=R.children[0],A=Ve(R);T=I.getBoundingClientRect(),A.attr("width",T.width),A.attr("height",T.height)}T.width>h&&(h=T.width),f+=T.height+n,E.push(R)}),f+=i,g){let S=(h-x.width)/2;Ve(y).attr("transform","translate( "+(-1*h/2+S)+", "+-1*f/2+")"),p=x.height+n}let L=(h-_.width)/2;return Ve(w).attr("transform","translate( "+(-1*h/2+L)+", "+(-1*f/2+p)+")"),p+=_.height+n,l.attr("class","divider").attr("x1",-h/2-r).attr("x2",h/2+r).attr("y1",-f/2-r+i+p).attr("y2",-f/2-r+i+p),p+=i,k.forEach(S=>{Ve(S).attr("transform","translate( "+-h/2+", "+(-1*f/2+p+i/2)+")");let C=S?.getBBox();p+=(C?.height??0)+n}),p+=i,u.attr("class","divider").attr("x1",-h/2-r).attr("x2",h/2+r).attr("y1",-f/2-r+i+p).attr("y2",-f/2-r+i+p),p+=i,E.forEach(S=>{Ve(S).attr("transform","translate( "+-h/2+", "+(-1*f/2+p)+")");let C=S?.getBBox();p+=(C?.height??0)+n}),o.attr("style",e.style).attr("class","outer title-state").attr("x",-h/2-r).attr("y",-(f/2)-r).attr("width",h+e.padding).attr("height",f+e.padding),ai(e,o),e.intersect=function(S){return $n.rect(e,S)},s},"class_box"),ige={rhombus:rge,composite:kZe,question:rge,rect:wZe,labelRect:TZe,rectWithTitle:EZe,choice:hZe,circle:CZe,doublecircle:AZe,stadium:SZe,hexagon:fZe,block_arrow:dZe,rect_left_inv_arrow:pZe,lean_right:gZe,lean_left:mZe,trapezoid:vZe,inv_trapezoid:yZe,rect_right_inv_arrow:xZe,cylinder:bZe,start:LZe,end:RZe,note:uZe,subroutine:_Ze,fork:nge,join:nge,class_box:NZe},yE={},xge=v(async(t,e,r)=>{let n,i;if(e.link){let a;pe().securityLevel==="sandbox"?a="_top":e.linkTarget&&(a=e.linkTarget||"_blank"),n=t.insert("svg:a").attr("xlink:href",e.link).attr("target",a),i=await ige[e.shape](n,e,r)}else i=await ige[e.shape](t,e,r),n=i;return e.tooltip&&i.attr("title",e.tooltip),e.class&&i.attr("class","node default "+e.class),yE[e.id]=n,e.haveCallback&&yE[e.id].attr("class",yE[e.id].attr("class")+" clickable"),n},"insertNode"),IZe=v(t=>{let e=yE[t.id];re.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");let r=8,n=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+n-t.width/2)+", "+(t.y-t.height/2-r)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),n},"positionNode");v(PO,"getNodeFromBlock");v(bge,"calculateBlockSize");v(wge,"insertBlockPositioned");v(kE,"performOperations");v(kge,"calculateBlockSizes");v(Tge,"insertBlocks");v(Ege,"insertEdges");MZe=v(function(t,e){return e.db.getClasses()},"getClasses"),DZe=v(async function(t,e,r,n){let{securityLevel:i,block:a}=Or(),s=n.db,o;i==="sandbox"&&(o=Ve("#i"+e));let l=i==="sandbox"?Ve(o.nodes()[0].contentDocument.body):Ve("body"),u=i==="sandbox"?l.select(`[id="${e}"]`):Ve(`[id="${e}"]`);HKe(u,["point","circle","cross"],n.type,e);let f=s.getBlocks(),d=s.getBlocksFlat(),p=s.getEdges(),g=u.insert("g").attr("class","block");await kge(g,f,s);let m=hge(s);if(await Tge(g,f,s),await Ege(g,p,d,s,e),m){let y=m,x=Math.max(1,Math.round(.125*(y.width/y.height))),b=y.height+x+10,w=y.width+10,{useMaxWidth:_}=a;Hr(u,b,w,!!_),re.debug("Here Bounds",m,y),u.attr("viewBox",`${y.x-5} ${y.y-5} ${y.width+10} ${y.height+10}`)}},"draw"),OZe={draw:DZe,getClasses:MZe},PZe={parser:fKe,db:NKe,renderer:OZe,styles:MKe}});var FO=di((Zx,BO)=>{(function(e,r){typeof Zx=="object"&&typeof BO=="object"?BO.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Zx=="object"?Zx.layoutBase=r():e.layoutBase=r()})(Zx,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.i=function(n){return n},r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{configurable:!1,enumerable:!0,get:a})},r.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="",r(r.s=28)}([function(t,e,r){"use strict";function n(){}n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(8),a=r(9);function s(l,u,h){n.call(this,h),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=h,this.bendpoints=[],this.source=l,this.target=u}s.prototype=Object.create(n.prototype);for(var o in n)s[o]=n[o];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(l){if(this.source===l)return this.target;if(this.target===l)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(l,u){for(var h=this.getOtherEnd(l),f=u.getGraphManager().getRoot();;){if(h.getOwner()==u)return h;if(h.getOwner()==f)break;h=h.getOwner().getParent()}return null},s.prototype.updateLength=function(){var l=new Array(4);this.isOverlapingSourceAndTarget=i.getIntersection(this.target.getRect(),this.source.getRect(),l),this.isOverlapingSourceAndTarget||(this.lengthX=l[0]-l[2],this.lengthY=l[1]-l[3],Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=a.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=a.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,r){"use strict";function n(i){this.vGraphObject=i}t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(13),s=r(0),o=r(16),l=r(5);function u(f,d,p,g){p==null&&g==null&&(g=d),n.call(this,g),f.graphManager!=null&&(f=f.graphManager),this.estimatedSize=i.MIN_VALUE,this.inclusionTreeDepth=i.MAX_VALUE,this.vGraphObject=g,this.edges=[],this.graphManager=f,p!=null&&d!=null?this.rect=new a(d.x,d.y,p.width,p.height):this.rect=new a}u.prototype=Object.create(n.prototype);for(var h in n)u[h]=n[h];u.prototype.getEdges=function(){return this.edges},u.prototype.getChild=function(){return this.child},u.prototype.getOwner=function(){return this.owner},u.prototype.getWidth=function(){return this.rect.width},u.prototype.setWidth=function(f){this.rect.width=f},u.prototype.getHeight=function(){return this.rect.height},u.prototype.setHeight=function(f){this.rect.height=f},u.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},u.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},u.prototype.getCenter=function(){return new l(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},u.prototype.getLocation=function(){return new l(this.rect.x,this.rect.y)},u.prototype.getRect=function(){return this.rect},u.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},u.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},u.prototype.setRect=function(f,d){this.rect.x=f.x,this.rect.y=f.y,this.rect.width=d.width,this.rect.height=d.height},u.prototype.setCenter=function(f,d){this.rect.x=f-this.rect.width/2,this.rect.y=d-this.rect.height/2},u.prototype.setLocation=function(f,d){this.rect.x=f,this.rect.y=d},u.prototype.moveBy=function(f,d){this.rect.x+=f,this.rect.y+=d},u.prototype.getEdgeListToNode=function(f){var d=[],p,g=this;return g.edges.forEach(function(m){if(m.target==f){if(m.source!=g)throw"Incorrect edge source!";d.push(m)}}),d},u.prototype.getEdgesBetween=function(f){var d=[],p,g=this;return g.edges.forEach(function(m){if(!(m.source==g||m.target==g))throw"Incorrect edge source and/or target";(m.target==f||m.source==f)&&d.push(m)}),d},u.prototype.getNeighborsList=function(){var f=new Set,d=this;return d.edges.forEach(function(p){if(p.source==d)f.add(p.target);else{if(p.target!=d)throw"Incorrect incidency!";f.add(p.source)}}),f},u.prototype.withChildren=function(){var f=new Set,d,p;if(f.add(this),this.child!=null)for(var g=this.child.getNodes(),m=0;md?(this.rect.x-=(this.labelWidth-d)/2,this.setWidth(this.labelWidth)):this.labelPosHorizontal=="right"&&this.setWidth(d+this.labelWidth)),this.labelHeight&&(this.labelPosVertical=="top"?(this.rect.y-=this.labelHeight,this.setHeight(p+this.labelHeight)):this.labelPosVertical=="center"&&this.labelHeight>p?(this.rect.y-=(this.labelHeight-p)/2,this.setHeight(this.labelHeight)):this.labelPosVertical=="bottom"&&this.setHeight(p+this.labelHeight))}}},u.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},u.prototype.transform=function(f){var d=this.rect.x;d>s.WORLD_BOUNDARY?d=s.WORLD_BOUNDARY:d<-s.WORLD_BOUNDARY&&(d=-s.WORLD_BOUNDARY);var p=this.rect.y;p>s.WORLD_BOUNDARY?p=s.WORLD_BOUNDARY:p<-s.WORLD_BOUNDARY&&(p=-s.WORLD_BOUNDARY);var g=new l(d,p),m=f.inverseTransformPoint(g);this.setLocation(m.x,m.y)},u.prototype.getLeft=function(){return this.rect.x},u.prototype.getRight=function(){return this.rect.x+this.rect.width},u.prototype.getTop=function(){return this.rect.y},u.prototype.getBottom=function(){return this.rect.y+this.rect.height},u.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},t.exports=u},function(t,e,r){"use strict";var n=r(0);function i(){}for(var a in n)i[a]=n[a];i.MAX_ITERATIONS=2500,i.DEFAULT_EDGE_LENGTH=50,i.DEFAULT_SPRING_STRENGTH=.45,i.DEFAULT_REPULSION_STRENGTH=4500,i.DEFAULT_GRAVITY_STRENGTH=.4,i.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,i.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,i.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,i.COOLING_ADAPTATION_FACTOR=.33,i.ADAPTATION_LOWER_NODE_LIMIT=1e3,i.ADAPTATION_UPPER_NODE_LIMIT=5e3,i.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,i.MAX_NODE_DISPLACEMENT=i.MAX_NODE_DISPLACEMENT_INCREMENTAL*3,i.MIN_REPULSION_DIST=i.DEFAULT_EDGE_LENGTH/10,i.CONVERGENCE_CHECK_PERIOD=100,i.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,i.MIN_EDGE_LENGTH=1,i.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=i},function(t,e,r){"use strict";function n(i,a){i==null&&a==null?(this.x=0,this.y=0):(this.x=i,this.y=a)}n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(i){this.x=i},n.prototype.setY=function(i){this.y=i},n.prototype.getDifference=function(i){return new DimensionD(this.x-i.x,this.y-i.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(i){return this.x+=i.width,this.y+=i.height,this},t.exports=n},function(t,e,r){"use strict";var n=r(2),i=r(10),a=r(0),s=r(7),o=r(3),l=r(1),u=r(13),h=r(12),f=r(11);function d(g,m,y){n.call(this,y),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=g,m!=null&&m instanceof s?this.graphManager=m:m!=null&&m instanceof Layout&&(this.graphManager=m.graphManager)}d.prototype=Object.create(n.prototype);for(var p in n)d[p]=n[p];d.prototype.getNodes=function(){return this.nodes},d.prototype.getEdges=function(){return this.edges},d.prototype.getGraphManager=function(){return this.graphManager},d.prototype.getParent=function(){return this.parent},d.prototype.getLeft=function(){return this.left},d.prototype.getRight=function(){return this.right},d.prototype.getTop=function(){return this.top},d.prototype.getBottom=function(){return this.bottom},d.prototype.isConnected=function(){return this.isConnected},d.prototype.add=function(g,m,y){if(m==null&&y==null){var x=g;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(x)>-1)throw"Node already in graph!";return x.owner=this,this.getNodes().push(x),x}else{var b=g;if(!(this.getNodes().indexOf(m)>-1&&this.getNodes().indexOf(y)>-1))throw"Source or target not in graph!";if(!(m.owner==y.owner&&m.owner==this))throw"Both owners must be this graph!";return m.owner!=y.owner?null:(b.source=m,b.target=y,b.isInterGraph=!1,this.getEdges().push(b),m.edges.push(b),y!=m&&y.edges.push(b),b)}},d.prototype.remove=function(g){var m=g;if(g instanceof o){if(m==null)throw"Node is null!";if(!(m.owner!=null&&m.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var y=m.edges.slice(),x,b=y.length,w=0;w-1&&E>-1))throw"Source and/or target doesn't know this edge!";x.source.edges.splice(k,1),x.target!=x.source&&x.target.edges.splice(E,1);var _=x.source.owner.getEdges().indexOf(x);if(_==-1)throw"Not in owner's edge list!";x.source.owner.getEdges().splice(_,1)}},d.prototype.updateLeftTop=function(){for(var g=i.MAX_VALUE,m=i.MAX_VALUE,y,x,b,w=this.getNodes(),_=w.length,k=0;k<_;k++){var E=w[k];y=E.getTop(),x=E.getLeft(),g>y&&(g=y),m>x&&(m=x)}return g==i.MAX_VALUE?null:(w[0].getParent().paddingLeft!=null?b=w[0].getParent().paddingLeft:b=this.margin,this.left=m-b,this.top=g-b,new h(this.left,this.top))},d.prototype.updateBounds=function(g){for(var m=i.MAX_VALUE,y=-i.MAX_VALUE,x=i.MAX_VALUE,b=-i.MAX_VALUE,w,_,k,E,L,S=this.nodes,C=S.length,M=0;Mw&&(m=w),y<_&&(y=_),x>k&&(x=k),bw&&(m=w),y<_&&(y=_),x>k&&(x=k),b=this.nodes.length){var C=0;y.forEach(function(M){M.owner==g&&C++}),C==this.nodes.length&&(this.isConnected=!0)}},t.exports=d},function(t,e,r){"use strict";var n,i=r(1);function a(s){n=r(6),this.layout=s,this.graphs=[],this.edges=[]}a.prototype.addRoot=function(){var s=this.layout.newGraph(),o=this.layout.newNode(null),l=this.add(s,o);return this.setRootGraph(l),this.rootGraph},a.prototype.add=function(s,o,l,u,h){if(l==null&&u==null&&h==null){if(s==null)throw"Graph is null!";if(o==null)throw"Parent node is null!";if(this.graphs.indexOf(s)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(s),s.parent!=null)throw"Already has a parent!";if(o.child!=null)throw"Already has a child!";return s.parent=o,o.child=s,s}else{h=l,u=o,l=s;var f=u.getOwner(),d=h.getOwner();if(!(f!=null&&f.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(d!=null&&d.getGraphManager()==this))throw"Target not in this graph mgr!";if(f==d)return l.isInterGraph=!1,f.add(l,u,h);if(l.isInterGraph=!0,l.source=u,l.target=h,this.edges.indexOf(l)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(l),!(l.source!=null&&l.target!=null))throw"Edge source and/or target is null!";if(!(l.source.edges.indexOf(l)==-1&&l.target.edges.indexOf(l)==-1))throw"Edge already in source and/or target incidency list!";return l.source.edges.push(l),l.target.edges.push(l),l}},a.prototype.remove=function(s){if(s instanceof n){var o=s;if(o.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(o==this.rootGraph||o.parent!=null&&o.parent.graphManager==this))throw"Invalid parent node!";var l=[];l=l.concat(o.getEdges());for(var u,h=l.length,f=0;f=s.getRight()?o[0]+=Math.min(s.getX()-a.getX(),a.getRight()-s.getRight()):s.getX()<=a.getX()&&s.getRight()>=a.getRight()&&(o[0]+=Math.min(a.getX()-s.getX(),s.getRight()-a.getRight())),a.getY()<=s.getY()&&a.getBottom()>=s.getBottom()?o[1]+=Math.min(s.getY()-a.getY(),a.getBottom()-s.getBottom()):s.getY()<=a.getY()&&s.getBottom()>=a.getBottom()&&(o[1]+=Math.min(a.getY()-s.getY(),s.getBottom()-a.getBottom()));var h=Math.abs((s.getCenterY()-a.getCenterY())/(s.getCenterX()-a.getCenterX()));s.getCenterY()===a.getCenterY()&&s.getCenterX()===a.getCenterX()&&(h=1);var f=h*o[0],d=o[1]/h;o[0]f)return o[0]=l,o[1]=p,o[2]=h,o[3]=S,!1;if(uh)return o[0]=d,o[1]=u,o[2]=E,o[3]=f,!1;if(lh?(o[0]=m,o[1]=y,T=!0):(o[0]=g,o[1]=p,T=!0):A===N&&(l>h?(o[0]=d,o[1]=p,T=!0):(o[0]=x,o[1]=y,T=!0)),-D===N?h>l?(o[2]=L,o[3]=S,I=!0):(o[2]=E,o[3]=k,I=!0):D===N&&(h>l?(o[2]=_,o[3]=k,I=!0):(o[2]=C,o[3]=S,I=!0)),T&&I)return!1;if(l>h?u>f?(O=this.getCardinalDirection(A,N,4),B=this.getCardinalDirection(D,N,2)):(O=this.getCardinalDirection(-A,N,3),B=this.getCardinalDirection(-D,N,1)):u>f?(O=this.getCardinalDirection(-A,N,1),B=this.getCardinalDirection(-D,N,3)):(O=this.getCardinalDirection(A,N,2),B=this.getCardinalDirection(D,N,4)),!T)switch(O){case 1:$=p,P=l+-w/N,o[0]=P,o[1]=$;break;case 2:P=x,$=u+b*N,o[0]=P,o[1]=$;break;case 3:$=y,P=l+w/N,o[0]=P,o[1]=$;break;case 4:P=m,$=u+-b*N,o[0]=P,o[1]=$;break}if(!I)switch(B){case 1:H=k,z=h+-R/N,o[2]=z,o[3]=H;break;case 2:z=C,H=f+M*N,o[2]=z,o[3]=H;break;case 3:H=S,z=h+R/N,o[2]=z,o[3]=H;break;case 4:z=L,H=f+-M*N,o[2]=z,o[3]=H;break}}return!1},i.getCardinalDirection=function(a,s,o){return a>s?o:1+o%4},i.getIntersection=function(a,s,o,l){if(l==null)return this.getIntersection2(a,s,o);var u=a.x,h=a.y,f=s.x,d=s.y,p=o.x,g=o.y,m=l.x,y=l.y,x=void 0,b=void 0,w=void 0,_=void 0,k=void 0,E=void 0,L=void 0,S=void 0,C=void 0;return w=d-h,k=u-f,L=f*h-u*d,_=y-g,E=p-m,S=m*g-p*y,C=w*E-_*k,C===0?null:(x=(k*S-E*L)/C,b=(_*L-w*S)/C,new n(x,b))},i.angleOfVector=function(a,s,o,l){var u=void 0;return a!==o?(u=Math.atan((l-s)/(o-a)),o=0){var y=(-p+Math.sqrt(p*p-4*d*g))/(2*d),x=(-p-Math.sqrt(p*p-4*d*g))/(2*d),b=null;return y>=0&&y<=1?[y]:x>=0&&x<=1?[x]:b}else return null},i.HALF_PI=.5*Math.PI,i.ONE_AND_HALF_PI=1.5*Math.PI,i.TWO_PI=2*Math.PI,i.THREE_PI=3*Math.PI,t.exports=i},function(t,e,r){"use strict";function n(){}n.sign=function(i){return i>0?1:i<0?-1:0},n.floor=function(i){return i<0?Math.ceil(i):Math.floor(i)},n.ceil=function(i){return i<0?Math.floor(i):Math.ceil(i)},t.exports=n},function(t,e,r){"use strict";function n(){}n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,r){"use strict";var n=function(){function u(h,f){for(var d=0;d"u"?"undefined":n(a);return a==null||s!="object"&&s!="function"},t.exports=i},function(t,e,r){"use strict";function n(p){if(Array.isArray(p)){for(var g=0,m=Array(p.length);g0&&g;){for(w.push(k[0]);w.length>0&&g;){var E=w[0];w.splice(0,1),b.add(E);for(var L=E.getEdges(),x=0;x-1&&k.splice(R,1)}b=new Set,_=new Map}}return p},d.prototype.createDummyNodesForBendpoints=function(p){for(var g=[],m=p.source,y=this.graphManager.calcLowestCommonAncestor(p.source,p.target),x=0;x0){for(var y=this.edgeToDummyNodes.get(m),x=0;x=0&&g.splice(S,1);var C=_.getNeighborsList();C.forEach(function(T){if(m.indexOf(T)<0){var I=y.get(T),A=I-1;A==1&&E.push(T),y.set(T,A)}})}m=m.concat(E),(g.length==1||g.length==2)&&(x=!0,b=g[0])}return b},d.prototype.setGraphManager=function(p){this.graphManager=p},t.exports=d},function(t,e,r){"use strict";function n(){}n.seed=1,n.x=0,n.nextDouble=function(){return n.x=Math.sin(n.seed++)*1e4,n.x-Math.floor(n.x)},t.exports=n},function(t,e,r){"use strict";var n=r(5);function i(a,s){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(a){this.lworldOrgX=a},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(a){this.lworldOrgY=a},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(a){this.lworldExtX=a},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(a){this.lworldExtY=a},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(a){this.ldeviceOrgX=a},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(a){this.ldeviceOrgY=a},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(a){this.ldeviceExtX=a},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(a){this.ldeviceExtY=a},i.prototype.transformX=function(a){var s=0,o=this.lworldExtX;return o!=0&&(s=this.ldeviceOrgX+(a-this.lworldOrgX)*this.ldeviceExtX/o),s},i.prototype.transformY=function(a){var s=0,o=this.lworldExtY;return o!=0&&(s=this.ldeviceOrgY+(a-this.lworldOrgY)*this.ldeviceExtY/o),s},i.prototype.inverseTransformX=function(a){var s=0,o=this.ldeviceExtX;return o!=0&&(s=this.lworldOrgX+(a-this.ldeviceOrgX)*this.lworldExtX/o),s},i.prototype.inverseTransformY=function(a){var s=0,o=this.ldeviceExtY;return o!=0&&(s=this.lworldOrgY+(a-this.ldeviceOrgY)*this.lworldExtY/o),s},i.prototype.inverseTransformPoint=function(a){var s=new n(this.inverseTransformX(a.x),this.inverseTransformY(a.y));return s},t.exports=i},function(t,e,r){"use strict";function n(f){if(Array.isArray(f)){for(var d=0,p=Array(f.length);da.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*a.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-a.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT_INCREMENTAL):(f>a.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(a.COOLING_ADAPTATION_FACTOR,1-(f-a.ADAPTATION_LOWER_NODE_LIMIT)/(a.ADAPTATION_UPPER_NODE_LIMIT-a.ADAPTATION_LOWER_NODE_LIMIT)*(1-a.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=a.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.displacementThresholdPerNode=3*a.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},u.prototype.calcSpringForces=function(){for(var f=this.getAllEdges(),d,p=0;p0&&arguments[0]!==void 0?arguments[0]:!0,d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,p,g,m,y,x=this.getAllNodes(),b;if(this.useFRGridVariant)for(this.totalIterations%a.GRID_CALCULATION_CHECK_PERIOD==1&&f&&this.updateGrid(),b=new Set,p=0;pw||b>w)&&(f.gravitationForceX=-this.gravityConstant*m,f.gravitationForceY=-this.gravityConstant*y)):(w=d.getEstimatedSize()*this.compoundGravityRangeFactor,(x>w||b>w)&&(f.gravitationForceX=-this.gravityConstant*m*this.compoundGravityConstant,f.gravitationForceY=-this.gravityConstant*y*this.compoundGravityConstant))},u.prototype.isConverged=function(){var f,d=!1;return this.totalIterations>this.maxIterations/3&&(d=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),f=this.totalDisplacement=x.length||w>=x[0].length)){for(var _=0;_u}}]),o}();t.exports=s},function(t,e,r){"use strict";function n(){}n.svd=function(i){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=i.length,this.n=i[0].length;var a=Math.min(this.m,this.n);this.s=function(ot){for(var et=[];ot-- >0;)et.push(0);return et}(Math.min(this.m+1,this.n)),this.U=function(ot){var et=function ht(bt){if(bt.length==0)return 0;for(var tt=[],_t=0;_t0;)et.push(0);return et}(this.n),o=function(ot){for(var et=[];ot-- >0;)et.push(0);return et}(this.m),l=!0,u=!0,h=Math.min(this.m-1,this.n),f=Math.max(0,Math.min(this.n-2,this.m)),d=0;d=0;N--)if(this.s[N]!==0){for(var O=N+1;O=0;X--){if(function(ot,et){return ot&&et}(X0;){var ue=void 0,te=void 0;for(ue=I-2;ue>=-1&&ue!==-1;ue--)if(Math.abs(s[ue])<=ce+se*(Math.abs(this.s[ue])+Math.abs(this.s[ue+1]))){s[ue]=0;break}if(ue===I-2)te=4;else{var Ne=void 0;for(Ne=I-1;Ne>=ue&&Ne!==ue;Ne--){var ae=(Ne!==I?Math.abs(s[Ne]):0)+(Ne!==ue+1?Math.abs(s[Ne-1]):0);if(Math.abs(this.s[Ne])<=ce+se*ae){this.s[Ne]=0;break}}Ne===ue?te=3:Ne===I-1?te=1:(te=2,ue=Ne)}switch(ue++,te){case 1:{var we=s[I-2];s[I-2]=0;for(var Ie=I-2;Ie>=ue;Ie--){var Ee=n.hypot(this.s[Ie],we),Oe=this.s[Ie]/Ee,De=we/Ee;if(this.s[Ie]=Ee,Ie!==ue&&(we=-De*s[Ie-1],s[Ie-1]=Oe*s[Ie-1]),u)for(var We=0;We=this.s[ue+1]);){var Ke=this.s[ue];if(this.s[ue]=this.s[ue+1],this.s[ue+1]=Ke,u&&ueMath.abs(a)?(s=a/i,s=Math.abs(i)*Math.sqrt(1+s*s)):a!=0?(s=i/a,s=Math.abs(a)*Math.sqrt(1+s*s)):s=0,s},t.exports=n},function(t,e,r){"use strict";var n=function(){function s(o,l){for(var u=0;u2&&arguments[2]!==void 0?arguments[2]:1,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,f=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;i(this,s),this.sequence1=o,this.sequence2=l,this.match_score=u,this.mismatch_penalty=h,this.gap_penalty=f,this.iMax=o.length+1,this.jMax=l.length+1,this.grid=new Array(this.iMax);for(var d=0;d=0;o--){var l=this.listeners[o];l.event===a&&l.callback===s&&this.listeners.splice(o,1)}},i.emit=function(a,s){for(var o=0;o{(function(e,r){typeof Qx=="object"&&typeof zO=="object"?zO.exports=r(FO()):typeof define=="function"&&define.amd?define(["layout-base"],r):typeof Qx=="object"?Qx.coseBase=r(FO()):e.coseBase=r(e.layoutBase)})(Qx,function(t){return(()=>{"use strict";var e={45:(a,s,o)=>{var l={};l.layoutBase=o(551),l.CoSEConstants=o(806),l.CoSEEdge=o(767),l.CoSEGraph=o(880),l.CoSEGraphManager=o(578),l.CoSELayout=o(765),l.CoSENode=o(991),l.ConstraintHandler=o(902),a.exports=l},806:(a,s,o)=>{var l=o(551).FDLayoutConstants;function u(){}for(var h in l)u[h]=l[h];u.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,u.DEFAULT_RADIAL_SEPARATION=l.DEFAULT_EDGE_LENGTH,u.DEFAULT_COMPONENT_SEPERATION=60,u.TILE=!0,u.TILING_PADDING_VERTICAL=10,u.TILING_PADDING_HORIZONTAL=10,u.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,u.ENFORCE_CONSTRAINTS=!0,u.APPLY_LAYOUT=!0,u.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,u.TREE_REDUCTION_ON_INCREMENTAL=!0,u.PURE_INCREMENTAL=u.DEFAULT_INCREMENTAL,a.exports=u},767:(a,s,o)=>{var l=o(551).FDLayoutEdge;function u(f,d,p){l.call(this,f,d,p)}u.prototype=Object.create(l.prototype);for(var h in l)u[h]=l[h];a.exports=u},880:(a,s,o)=>{var l=o(551).LGraph;function u(f,d,p){l.call(this,f,d,p)}u.prototype=Object.create(l.prototype);for(var h in l)u[h]=l[h];a.exports=u},578:(a,s,o)=>{var l=o(551).LGraphManager;function u(f){l.call(this,f)}u.prototype=Object.create(l.prototype);for(var h in l)u[h]=l[h];a.exports=u},765:(a,s,o)=>{var l=o(551).FDLayout,u=o(578),h=o(880),f=o(991),d=o(767),p=o(806),g=o(902),m=o(551).FDLayoutConstants,y=o(551).LayoutConstants,x=o(551).Point,b=o(551).PointD,w=o(551).DimensionD,_=o(551).Layout,k=o(551).Integer,E=o(551).IGeometry,L=o(551).LGraph,S=o(551).Transform,C=o(551).LinkedList;function M(){l.call(this),this.toBeTiled={},this.constraints={}}M.prototype=Object.create(l.prototype);for(var R in l)M[R]=l[R];M.prototype.newGraphManager=function(){var T=new u(this);return this.graphManager=T,T},M.prototype.newGraph=function(T){return new h(null,this.graphManager,T)},M.prototype.newNode=function(T){return new f(this.graphManager,T)},M.prototype.newEdge=function(T){return new d(null,null,T)},M.prototype.initParameters=function(){l.prototype.initParameters.call(this,arguments),this.isSubLayout||(p.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=p.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=p.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=m.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=m.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=m.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=m.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},M.prototype.initSpringEmbedder=function(){l.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/m.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},M.prototype.layout=function(){var T=y.DEFAULT_CREATE_BENDS_AS_NEEDED;return T&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},M.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental){if(p.TREE_REDUCTION_ON_INCREMENTAL){this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var I=new Set(this.getAllNodes()),A=this.nodesWithGravity.filter(function(O){return I.has(O)});this.graphManager.setAllNodesToApplyGravitation(A)}}else{var T=this.getFlatForest();if(T.length>0)this.positionNodesRadially(T);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var I=new Set(this.getAllNodes()),A=this.nodesWithGravity.filter(function(D){return I.has(D)});this.graphManager.setAllNodesToApplyGravitation(A),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(g.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),p.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},M.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%m.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var T=new Set(this.getAllNodes()),I=this.nodesWithGravity.filter(function(N){return T.has(N)});this.graphManager.setAllNodesToApplyGravitation(I),this.graphManager.updateBounds(),this.updateGrid(),p.PURE_INCREMENTAL?this.coolingFactor=m.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=m.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),p.PURE_INCREMENTAL?this.coolingFactor=m.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=m.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var A=!this.isTreeGrowing&&!this.isGrowthFinished,D=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(A,D),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},M.prototype.getPositionsData=function(){for(var T=this.graphManager.getAllNodes(),I={},A=0;A0&&this.updateDisplacements();for(var A=0;A0&&(D.fixedNodeWeight=O)}}if(this.constraints.relativePlacementConstraint){var B=new Map,P=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach(function(ee){T.fixedNodesOnHorizontal.add(ee),T.fixedNodesOnVertical.add(ee)}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var $=this.constraints.alignmentConstraint.vertical,A=0;A<$.length;A++)this.dummyToNodeForVerticalAlignment.set("dummy"+A,[]),$[A].forEach(function(Q){B.set(Q,"dummy"+A),T.dummyToNodeForVerticalAlignment.get("dummy"+A).push(Q),T.fixedNodeSet.has(Q)&&T.fixedNodesOnHorizontal.add("dummy"+A)});if(this.constraints.alignmentConstraint.horizontal)for(var z=this.constraints.alignmentConstraint.horizontal,A=0;A=2*ee.length/3;Y--)Q=Math.floor(Math.random()*(Y+1)),W=ee[Y],ee[Y]=ee[Q],ee[Q]=W;return ee},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach(function(ee){if(ee.left){var Q=B.has(ee.left)?B.get(ee.left):ee.left,W=B.has(ee.right)?B.get(ee.right):ee.right;T.nodesInRelativeHorizontal.includes(Q)||(T.nodesInRelativeHorizontal.push(Q),T.nodeToRelativeConstraintMapHorizontal.set(Q,[]),T.dummyToNodeForVerticalAlignment.has(Q)?T.nodeToTempPositionMapHorizontal.set(Q,T.idToNodeMap.get(T.dummyToNodeForVerticalAlignment.get(Q)[0]).getCenterX()):T.nodeToTempPositionMapHorizontal.set(Q,T.idToNodeMap.get(Q).getCenterX())),T.nodesInRelativeHorizontal.includes(W)||(T.nodesInRelativeHorizontal.push(W),T.nodeToRelativeConstraintMapHorizontal.set(W,[]),T.dummyToNodeForVerticalAlignment.has(W)?T.nodeToTempPositionMapHorizontal.set(W,T.idToNodeMap.get(T.dummyToNodeForVerticalAlignment.get(W)[0]).getCenterX()):T.nodeToTempPositionMapHorizontal.set(W,T.idToNodeMap.get(W).getCenterX())),T.nodeToRelativeConstraintMapHorizontal.get(Q).push({right:W,gap:ee.gap}),T.nodeToRelativeConstraintMapHorizontal.get(W).push({left:Q,gap:ee.gap})}else{var Y=P.has(ee.top)?P.get(ee.top):ee.top,Z=P.has(ee.bottom)?P.get(ee.bottom):ee.bottom;T.nodesInRelativeVertical.includes(Y)||(T.nodesInRelativeVertical.push(Y),T.nodeToRelativeConstraintMapVertical.set(Y,[]),T.dummyToNodeForHorizontalAlignment.has(Y)?T.nodeToTempPositionMapVertical.set(Y,T.idToNodeMap.get(T.dummyToNodeForHorizontalAlignment.get(Y)[0]).getCenterY()):T.nodeToTempPositionMapVertical.set(Y,T.idToNodeMap.get(Y).getCenterY())),T.nodesInRelativeVertical.includes(Z)||(T.nodesInRelativeVertical.push(Z),T.nodeToRelativeConstraintMapVertical.set(Z,[]),T.dummyToNodeForHorizontalAlignment.has(Z)?T.nodeToTempPositionMapVertical.set(Z,T.idToNodeMap.get(T.dummyToNodeForHorizontalAlignment.get(Z)[0]).getCenterY()):T.nodeToTempPositionMapVertical.set(Z,T.idToNodeMap.get(Z).getCenterY())),T.nodeToRelativeConstraintMapVertical.get(Y).push({bottom:Z,gap:ee.gap}),T.nodeToRelativeConstraintMapVertical.get(Z).push({top:Y,gap:ee.gap})}});else{var H=new Map,J=new Map;this.constraints.relativePlacementConstraint.forEach(function(ee){if(ee.left){var Q=B.has(ee.left)?B.get(ee.left):ee.left,W=B.has(ee.right)?B.get(ee.right):ee.right;H.has(Q)?H.get(Q).push(W):H.set(Q,[W]),H.has(W)?H.get(W).push(Q):H.set(W,[Q])}else{var Y=P.has(ee.top)?P.get(ee.top):ee.top,Z=P.has(ee.bottom)?P.get(ee.bottom):ee.bottom;J.has(Y)?J.get(Y).push(Z):J.set(Y,[Z]),J.has(Z)?J.get(Z).push(Y):J.set(Z,[Y])}});var X=function(Q,W){var Y=[],Z=[],se=new C,ce=new Set,ue=0;return Q.forEach(function(te,Ne){if(!ce.has(Ne)){Y[ue]=[],Z[ue]=!1;var ae=Ne;for(se.push(ae),ce.add(ae),Y[ue].push(ae);se.length!=0;){ae=se.shift(),W.has(ae)&&(Z[ue]=!0);var we=Q.get(ae);we.forEach(function(Ie){ce.has(Ie)||(se.push(Ie),ce.add(Ie),Y[ue].push(Ie))})}ue++}}),{components:Y,isFixed:Z}},oe=X(H,T.fixedNodesOnHorizontal);this.componentsOnHorizontal=oe.components,this.fixedComponentsOnHorizontal=oe.isFixed;var K=X(J,T.fixedNodesOnVertical);this.componentsOnVertical=K.components,this.fixedComponentsOnVertical=K.isFixed}}},M.prototype.updateDisplacements=function(){var T=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach(function(K){var ee=T.idToNodeMap.get(K.nodeId);ee.displacementX=0,ee.displacementY=0}),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var I=this.constraints.alignmentConstraint.vertical,A=0;A1){var P;for(P=0;PD&&(D=Math.floor(B.y)),O=Math.floor(B.x+p.DEFAULT_COMPONENT_SEPERATION)}this.transform(new b(y.WORLD_CENTER_X-B.x/2,y.WORLD_CENTER_Y-B.y/2))},M.radialLayout=function(T,I,A){var D=Math.max(this.maxDiagonalInTree(T),p.DEFAULT_RADIAL_SEPARATION);M.branchRadialLayout(I,null,0,359,0,D);var N=L.calculateBounds(T),O=new S;O.setDeviceOrgX(N.getMinX()),O.setDeviceOrgY(N.getMinY()),O.setWorldOrgX(A.x),O.setWorldOrgY(A.y);for(var B=0;B1;){var Y=W[0];W.splice(0,1);var Z=X.indexOf(Y);Z>=0&&X.splice(Z,1),ee--,oe--}I!=null?Q=(X.indexOf(W[0])+1)%ee:Q=0;for(var se=Math.abs(D-A)/oe,ce=Q;K!=oe;ce=++ce%ee){var ue=X[ce].getOtherEnd(T);if(ue!=I){var te=(A+K*se)%360,Ne=(te+se)%360;M.branchRadialLayout(ue,T,te,Ne,N+O,O),K++}}},M.maxDiagonalInTree=function(T){for(var I=k.MIN_VALUE,A=0;AI&&(I=N)}return I},M.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},M.prototype.groupZeroDegreeMembers=function(){var T=this,I={};this.memberGroups={},this.idToDummyNode={};for(var A=[],D=this.graphManager.getAllNodes(),N=0;N"u"&&(I[P]=[]),I[P]=I[P].concat(O)}Object.keys(I).forEach(function($){if(I[$].length>1){var z="DummyCompound_"+$;T.memberGroups[z]=I[$];var H=I[$][0].getParent(),J=new f(T.graphManager);J.id=z,J.paddingLeft=H.paddingLeft||0,J.paddingRight=H.paddingRight||0,J.paddingBottom=H.paddingBottom||0,J.paddingTop=H.paddingTop||0,T.idToDummyNode[z]=J;var X=T.getGraphManager().add(T.newGraph(),J),oe=H.getChild();oe.add(J);for(var K=0;KN?(D.rect.x-=(D.labelWidth-N)/2,D.setWidth(D.labelWidth),D.labelMarginLeft=(D.labelWidth-N)/2):D.labelPosHorizontal=="right"&&D.setWidth(N+D.labelWidth)),D.labelHeight&&(D.labelPosVertical=="top"?(D.rect.y-=D.labelHeight,D.setHeight(O+D.labelHeight),D.labelMarginTop=D.labelHeight):D.labelPosVertical=="center"&&D.labelHeight>O?(D.rect.y-=(D.labelHeight-O)/2,D.setHeight(D.labelHeight),D.labelMarginTop=(D.labelHeight-O)/2):D.labelPosVertical=="bottom"&&D.setHeight(O+D.labelHeight))}})},M.prototype.repopulateCompounds=function(){for(var T=this.compoundOrder.length-1;T>=0;T--){var I=this.compoundOrder[T],A=I.id,D=I.paddingLeft,N=I.paddingTop,O=I.labelMarginLeft,B=I.labelMarginTop;this.adjustLocations(this.tiledMemberPack[A],I.rect.x,I.rect.y,D,N,O,B)}},M.prototype.repopulateZeroDegreeMembers=function(){var T=this,I=this.tiledZeroDegreePack;Object.keys(I).forEach(function(A){var D=T.idToDummyNode[A],N=D.paddingLeft,O=D.paddingTop,B=D.labelMarginLeft,P=D.labelMarginTop;T.adjustLocations(I[A],D.rect.x,D.rect.y,N,O,B,P)})},M.prototype.getToBeTiled=function(T){var I=T.id;if(this.toBeTiled[I]!=null)return this.toBeTiled[I];var A=T.getChild();if(A==null)return this.toBeTiled[I]=!1,!1;for(var D=A.getNodes(),N=0;N0)return this.toBeTiled[I]=!1,!1;if(O.getChild()==null){this.toBeTiled[O.id]=!1;continue}if(!this.getToBeTiled(O))return this.toBeTiled[I]=!1,!1}return this.toBeTiled[I]=!0,!0},M.prototype.getNodeDegree=function(T){for(var I=T.id,A=T.getEdges(),D=0,N=0;NH&&(H=X.rect.height)}A+=H+T.verticalPadding}},M.prototype.tileCompoundMembers=function(T,I){var A=this;this.tiledMemberPack=[],Object.keys(T).forEach(function(D){var N=I[D];if(A.tiledMemberPack[D]=A.tileNodes(T[D],N.paddingLeft+N.paddingRight),N.rect.width=A.tiledMemberPack[D].width,N.rect.height=A.tiledMemberPack[D].height,N.setCenter(A.tiledMemberPack[D].centerX,A.tiledMemberPack[D].centerY),N.labelMarginLeft=0,N.labelMarginTop=0,p.NODE_DIMENSIONS_INCLUDE_LABELS){var O=N.rect.width,B=N.rect.height;N.labelWidth&&(N.labelPosHorizontal=="left"?(N.rect.x-=N.labelWidth,N.setWidth(O+N.labelWidth),N.labelMarginLeft=N.labelWidth):N.labelPosHorizontal=="center"&&N.labelWidth>O?(N.rect.x-=(N.labelWidth-O)/2,N.setWidth(N.labelWidth),N.labelMarginLeft=(N.labelWidth-O)/2):N.labelPosHorizontal=="right"&&N.setWidth(O+N.labelWidth)),N.labelHeight&&(N.labelPosVertical=="top"?(N.rect.y-=N.labelHeight,N.setHeight(B+N.labelHeight),N.labelMarginTop=N.labelHeight):N.labelPosVertical=="center"&&N.labelHeight>B?(N.rect.y-=(N.labelHeight-B)/2,N.setHeight(N.labelHeight),N.labelMarginTop=(N.labelHeight-B)/2):N.labelPosVertical=="bottom"&&N.setHeight(B+N.labelHeight))}})},M.prototype.tileNodes=function(T,I){var A=this.tileNodesByFavoringDim(T,I,!0),D=this.tileNodesByFavoringDim(T,I,!1),N=this.getOrgRatio(A),O=this.getOrgRatio(D),B;return OP&&(P=K.getWidth())});var $=O/N,z=B/N,H=Math.pow(A-D,2)+4*($+D)*(z+A)*N,J=(D-A+Math.sqrt(H))/(2*($+D)),X;I?(X=Math.ceil(J),X==J&&X++):X=Math.floor(J);var oe=X*($+D)-D;return P>oe&&(oe=P),oe+=D*2,oe},M.prototype.tileNodesByFavoringDim=function(T,I,A){var D=p.TILING_PADDING_VERTICAL,N=p.TILING_PADDING_HORIZONTAL,O=p.TILING_COMPARE_BY,B={rows:[],rowWidth:[],rowHeight:[],width:0,height:I,verticalPadding:D,horizontalPadding:N,centerX:0,centerY:0};O&&(B.idealRowWidth=this.calcIdealRowWidth(T,A));var P=function(ee){return ee.rect.width*ee.rect.height},$=function(ee,Q){return P(Q)-P(ee)};T.sort(function(K,ee){var Q=$;return B.idealRowWidth?(Q=O,Q(K.id,ee.id)):Q(K,ee)});for(var z=0,H=0,J=0;J0&&(B+=T.horizontalPadding),T.rowWidth[A]=B,T.width0&&(P+=T.verticalPadding);var $=0;P>T.rowHeight[A]&&($=T.rowHeight[A],T.rowHeight[A]=P,$=T.rowHeight[A]-$),T.height+=$,T.rows[A].push(I)},M.prototype.getShortestRowIndex=function(T){for(var I=-1,A=Number.MAX_VALUE,D=0;DA&&(I=D,A=T.rowWidth[D]);return I},M.prototype.canAddHorizontal=function(T,I,A){if(T.idealRowWidth){var D=T.rows.length-1,N=T.rowWidth[D];return N+I+T.horizontalPadding<=T.idealRowWidth}var O=this.getShortestRowIndex(T);if(O<0)return!0;var B=T.rowWidth[O];if(B+T.horizontalPadding+I<=T.width)return!0;var P=0;T.rowHeight[O]0&&(P=A+T.verticalPadding-T.rowHeight[O]);var $;T.width-B>=I+T.horizontalPadding?$=(T.height+P)/(B+I+T.horizontalPadding):$=(T.height+P)/T.width,P=A+T.verticalPadding;var z;return T.widthO&&I!=A){D.splice(-1,1),T.rows[A].push(N),T.rowWidth[I]=T.rowWidth[I]-O,T.rowWidth[A]=T.rowWidth[A]+O,T.width=T.rowWidth[instance.getLongestRowIndex(T)];for(var B=Number.MIN_VALUE,P=0;PB&&(B=D[P].height);I>0&&(B+=T.verticalPadding);var $=T.rowHeight[I]+T.rowHeight[A];T.rowHeight[I]=B,T.rowHeight[A]0)for(var oe=N;oe<=O;oe++)X[0]+=this.grid[oe][B-1].length+this.grid[oe][B].length-1;if(O0)for(var oe=B;oe<=P;oe++)X[3]+=this.grid[N-1][oe].length+this.grid[N][oe].length-1;for(var K=k.MAX_VALUE,ee,Q,W=0;W{var l=o(551).FDLayoutNode,u=o(551).IMath;function h(d,p,g,m){l.call(this,d,p,g,m)}h.prototype=Object.create(l.prototype);for(var f in l)h[f]=l[f];h.prototype.calculateDisplacement=function(){var d=this.graphManager.getLayout();this.getChild()!=null&&this.fixedNodeWeight?(this.displacementX+=d.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=d.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=d.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=d.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>d.coolingFactor*d.maxNodeDisplacement&&(this.displacementX=d.coolingFactor*d.maxNodeDisplacement*u.sign(this.displacementX)),Math.abs(this.displacementY)>d.coolingFactor*d.maxNodeDisplacement&&(this.displacementY=d.coolingFactor*d.maxNodeDisplacement*u.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},h.prototype.propogateDisplacementToChildren=function(d,p){for(var g=this.getChild().getNodes(),m,y=0;y{function l(g){if(Array.isArray(g)){for(var m=0,y=Array(g.length);m0){var st=0;Ze.forEach(function(Ke){ke=="horizontal"?(ge.set(Ke,x.has(Ke)?b[x.get(Ke)]:ye.get(Ke)),st+=ge.get(Ke)):(ge.set(Ke,x.has(Ke)?w[x.get(Ke)]:ye.get(Ke)),st+=ge.get(Ke))}),st=st/Ze.length,ft.forEach(function(Ke){j.has(Ke)||ge.set(Ke,st)})}else{var Ue=0;ft.forEach(function(Ke){ke=="horizontal"?Ue+=x.has(Ke)?b[x.get(Ke)]:ye.get(Ke):Ue+=x.has(Ke)?w[x.get(Ke)]:ye.get(Ke)}),Ue=Ue/ft.length,ft.forEach(function(Ke){ge.set(Ke,Ue)})}});for(var qe=function(){var Ze=Ce.shift(),st=U.get(Ze);st.forEach(function(Ue){if(ge.get(Ue.id)Ke&&(Ke=tt),_tit&&(it=_t)}}catch(Rn){Ht=!0,ot=Rn}finally{try{!mt&&et.return&&et.return()}finally{if(Ht)throw ot}}var ur=(st+Ke)/2-(Ue+it)/2,Qt=!0,Jt=!1,en=void 0;try{for(var Cr=ft[Symbol.iterator](),Kn;!(Qt=(Kn=Cr.next()).done);Qt=!0){var cn=Kn.value;ge.set(cn,ge.get(cn)+ur)}}catch(Rn){Jt=!0,en=Rn}finally{try{!Qt&&Cr.return&&Cr.return()}finally{if(Jt)throw en}}})}return ge},R=function(U){var ke=0,j=0,ye=0,Ae=0;if(U.forEach(function($e){$e.left?b[x.get($e.left)]-b[x.get($e.right)]>=0?ke++:j++:w[x.get($e.top)]-w[x.get($e.bottom)]>=0?ye++:Ae++}),ke>j&&ye>Ae)for(var Ge=0;Gej)for(var Fe=0;FeAe)for(var ge=0;ge1)m.fixedNodeConstraint.forEach(function(he,U){D[U]=[he.position.x,he.position.y],N[U]=[b[x.get(he.nodeId)],w[x.get(he.nodeId)]]}),O=!0;else if(m.alignmentConstraint)(function(){var he=0;if(m.alignmentConstraint.vertical){for(var U=m.alignmentConstraint.vertical,ke=function(ge){var $e=new Set;U[ge].forEach(function(lt){$e.add(lt)});var Ce=new Set([].concat(l($e)).filter(function(lt){return P.has(lt)})),qe=void 0;Ce.size>0?qe=b[x.get(Ce.values().next().value)]:qe=C($e).x,U[ge].forEach(function(lt){D[he]=[qe,w[x.get(lt)]],N[he]=[b[x.get(lt)],w[x.get(lt)]],he++})},j=0;j0?qe=b[x.get(Ce.values().next().value)]:qe=C($e).y,ye[ge].forEach(function(lt){D[he]=[b[x.get(lt)],qe],N[he]=[b[x.get(lt)],w[x.get(lt)]],he++})},Ge=0;GeJ&&(J=H[oe].length,X=oe);if(J0){var Oe={x:0,y:0};m.fixedNodeConstraint.forEach(function(he,U){var ke={x:b[x.get(he.nodeId)],y:w[x.get(he.nodeId)]},j=he.position,ye=S(j,ke);Oe.x+=ye.x,Oe.y+=ye.y}),Oe.x/=m.fixedNodeConstraint.length,Oe.y/=m.fixedNodeConstraint.length,b.forEach(function(he,U){b[U]+=Oe.x}),w.forEach(function(he,U){w[U]+=Oe.y}),m.fixedNodeConstraint.forEach(function(he){b[x.get(he.nodeId)]=he.position.x,w[x.get(he.nodeId)]=he.position.y})}if(m.alignmentConstraint){if(m.alignmentConstraint.vertical)for(var De=m.alignmentConstraint.vertical,We=function(U){var ke=new Set;De[U].forEach(function(Ae){ke.add(Ae)});var j=new Set([].concat(l(ke)).filter(function(Ae){return P.has(Ae)})),ye=void 0;j.size>0?ye=b[x.get(j.values().next().value)]:ye=C(ke).x,ke.forEach(function(Ae){P.has(Ae)||(b[x.get(Ae)]=ye)})},Re=0;Re0?ye=w[x.get(j.values().next().value)]:ye=C(ke).y,ke.forEach(function(Ae){P.has(Ae)||(w[x.get(Ae)]=ye)})},q=0;q{a.exports=t}},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var o=r[a]={exports:{}};return e[a](o,o.exports,n),o.exports}var i=n(45);return i})()})});var Age=di((Jx,GO)=>{(function(e,r){typeof Jx=="object"&&typeof GO=="object"?GO.exports=r($O()):typeof define=="function"&&define.amd?define(["cose-base"],r):typeof Jx=="object"?Jx.cytoscapeFcose=r($O()):e.cytoscapeFcose=r(e.coseBase)})(Jx,function(t){return(()=>{"use strict";var e={658:a=>{a.exports=Object.assign!=null?Object.assign.bind(Object):function(s){for(var o=arguments.length,l=Array(o>1?o-1:0),u=1;u{var l=function(){function f(d,p){var g=[],m=!0,y=!1,x=void 0;try{for(var b=d[Symbol.iterator](),w;!(m=(w=b.next()).done)&&(g.push(w.value),!(p&&g.length===p));m=!0);}catch(_){y=!0,x=_}finally{try{!m&&b.return&&b.return()}finally{if(y)throw x}}return g}return function(d,p){if(Array.isArray(d))return d;if(Symbol.iterator in Object(d))return f(d,p);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=o(140).layoutBase.LinkedList,h={};h.getTopMostNodes=function(f){for(var d={},p=0;p0&&O.merge(z)});for(var B=0;B1){w=x[0],_=w.connectedEdges().length,x.forEach(function(N){N.connectedEdges().length<_&&(_=N.connectedEdges().length,w=N)}),L.push(w.id());var D=f.collection();D.merge(x[0]),x.forEach(function(N){D.merge(N)}),x=[],p=p.difference(D),E++}};do C();while(!k);return g&&L.length>0&&g.set("dummy"+(g.size+1),L),S},h.relocateComponent=function(f,d,p){if(!p.fixedNodeConstraint){var g=Number.POSITIVE_INFINITY,m=Number.NEGATIVE_INFINITY,y=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY;if(p.quality=="draft"){var b=!0,w=!1,_=void 0;try{for(var k=d.nodeIndexes[Symbol.iterator](),E;!(b=(E=k.next()).done);b=!0){var L=E.value,S=l(L,2),C=S[0],M=S[1],R=p.cy.getElementById(C);if(R){var T=R.boundingBox(),I=d.xCoords[M]-T.w/2,A=d.xCoords[M]+T.w/2,D=d.yCoords[M]-T.h/2,N=d.yCoords[M]+T.h/2;Im&&(m=A),Dx&&(x=N)}}}catch(z){w=!0,_=z}finally{try{!b&&k.return&&k.return()}finally{if(w)throw _}}var O=f.x-(m+g)/2,B=f.y-(x+y)/2;d.xCoords=d.xCoords.map(function(z){return z+O}),d.yCoords=d.yCoords.map(function(z){return z+B})}else{Object.keys(d).forEach(function(z){var H=d[z],J=H.getRect().x,X=H.getRect().x+H.getRect().width,oe=H.getRect().y,K=H.getRect().y+H.getRect().height;Jm&&(m=X),oex&&(x=K)});var P=f.x-(m+g)/2,$=f.y-(x+y)/2;Object.keys(d).forEach(function(z){var H=d[z];H.setCenter(H.getCenterX()+P,H.getCenterY()+$)})}}},h.calcBoundingBox=function(f,d,p,g){for(var m=Number.MAX_SAFE_INTEGER,y=Number.MIN_SAFE_INTEGER,x=Number.MAX_SAFE_INTEGER,b=Number.MIN_SAFE_INTEGER,w=void 0,_=void 0,k=void 0,E=void 0,L=f.descendants().not(":parent"),S=L.length,C=0;Cw&&(m=w),y<_&&(y=_),x>k&&(x=k),b{var l=o(548),u=o(140).CoSELayout,h=o(140).CoSENode,f=o(140).layoutBase.PointD,d=o(140).layoutBase.DimensionD,p=o(140).layoutBase.LayoutConstants,g=o(140).layoutBase.FDLayoutConstants,m=o(140).CoSEConstants,y=function(b,w){var _=b.cy,k=b.eles,E=k.nodes(),L=k.edges(),S=void 0,C=void 0,M=void 0,R={};b.randomize&&(S=w.nodeIndexes,C=w.xCoords,M=w.yCoords);var T=function(z){return typeof z=="function"},I=function(z,H){return T(z)?z(H):z},A=l.calcParentsWithoutChildren(_,k),D=function $(z,H,J,X){for(var oe=H.length,K=0;K0){var se=void 0;se=J.getGraphManager().add(J.newGraph(),W),$(se,Q,J,X)}}},N=function(z,H,J){for(var X=0,oe=0,K=0;K0?m.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=X/oe:T(b.idealEdgeLength)?m.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=50:m.DEFAULT_EDGE_LENGTH=g.DEFAULT_EDGE_LENGTH=b.idealEdgeLength,m.MIN_REPULSION_DIST=g.MIN_REPULSION_DIST=g.DEFAULT_EDGE_LENGTH/10,m.DEFAULT_RADIAL_SEPARATION=g.DEFAULT_EDGE_LENGTH)},O=function(z,H){H.fixedNodeConstraint&&(z.constraints.fixedNodeConstraint=H.fixedNodeConstraint),H.alignmentConstraint&&(z.constraints.alignmentConstraint=H.alignmentConstraint),H.relativePlacementConstraint&&(z.constraints.relativePlacementConstraint=H.relativePlacementConstraint)};b.nestingFactor!=null&&(m.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=g.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=b.nestingFactor),b.gravity!=null&&(m.DEFAULT_GRAVITY_STRENGTH=g.DEFAULT_GRAVITY_STRENGTH=b.gravity),b.numIter!=null&&(m.MAX_ITERATIONS=g.MAX_ITERATIONS=b.numIter),b.gravityRange!=null&&(m.DEFAULT_GRAVITY_RANGE_FACTOR=g.DEFAULT_GRAVITY_RANGE_FACTOR=b.gravityRange),b.gravityCompound!=null&&(m.DEFAULT_COMPOUND_GRAVITY_STRENGTH=g.DEFAULT_COMPOUND_GRAVITY_STRENGTH=b.gravityCompound),b.gravityRangeCompound!=null&&(m.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=g.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=b.gravityRangeCompound),b.initialEnergyOnIncremental!=null&&(m.DEFAULT_COOLING_FACTOR_INCREMENTAL=g.DEFAULT_COOLING_FACTOR_INCREMENTAL=b.initialEnergyOnIncremental),b.tilingCompareBy!=null&&(m.TILING_COMPARE_BY=b.tilingCompareBy),b.quality=="proof"?p.QUALITY=2:p.QUALITY=0,m.NODE_DIMENSIONS_INCLUDE_LABELS=g.NODE_DIMENSIONS_INCLUDE_LABELS=p.NODE_DIMENSIONS_INCLUDE_LABELS=b.nodeDimensionsIncludeLabels,m.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=p.DEFAULT_INCREMENTAL=!b.randomize,m.ANIMATE=g.ANIMATE=p.ANIMATE=b.animate,m.TILE=b.tile,m.TILING_PADDING_VERTICAL=typeof b.tilingPaddingVertical=="function"?b.tilingPaddingVertical.call():b.tilingPaddingVertical,m.TILING_PADDING_HORIZONTAL=typeof b.tilingPaddingHorizontal=="function"?b.tilingPaddingHorizontal.call():b.tilingPaddingHorizontal,m.DEFAULT_INCREMENTAL=g.DEFAULT_INCREMENTAL=p.DEFAULT_INCREMENTAL=!0,m.PURE_INCREMENTAL=!b.randomize,p.DEFAULT_UNIFORM_LEAF_NODE_SIZES=b.uniformNodeDimensions,b.step=="transformed"&&(m.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,m.ENFORCE_CONSTRAINTS=!1,m.APPLY_LAYOUT=!1),b.step=="enforced"&&(m.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,m.ENFORCE_CONSTRAINTS=!0,m.APPLY_LAYOUT=!1),b.step=="cose"&&(m.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,m.ENFORCE_CONSTRAINTS=!1,m.APPLY_LAYOUT=!0),b.step=="all"&&(b.randomize?m.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:m.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,m.ENFORCE_CONSTRAINTS=!0,m.APPLY_LAYOUT=!0),b.fixedNodeConstraint||b.alignmentConstraint||b.relativePlacementConstraint?m.TREE_REDUCTION_ON_INCREMENTAL=!1:m.TREE_REDUCTION_ON_INCREMENTAL=!0;var B=new u,P=B.newGraphManager();return D(P.addRoot(),l.getTopMostNodes(E),B,b),N(B,P,L),O(B,b),B.runLayout(),R};a.exports={coseLayout:y}},212:(a,s,o)=>{var l=function(){function b(w,_){for(var k=0;k<_.length;k++){var E=_[k];E.enumerable=E.enumerable||!1,E.configurable=!0,"value"in E&&(E.writable=!0),Object.defineProperty(w,E.key,E)}}return function(w,_,k){return _&&b(w.prototype,_),k&&b(w,k),w}}();function u(b,w){if(!(b instanceof w))throw new TypeError("Cannot call a class as a function")}var h=o(658),f=o(548),d=o(657),p=d.spectralLayout,g=o(816),m=g.coseLayout,y=Object.freeze({quality:"default",randomize:!0,animate:!0,animationDuration:1e3,animationEasing:void 0,fit:!0,padding:30,nodeDimensionsIncludeLabels:!1,uniformNodeDimensions:!1,packComponents:!0,step:"all",samplingType:!0,sampleSize:25,nodeSeparation:75,piTol:1e-7,nodeRepulsion:function(w){return 4500},idealEdgeLength:function(w){return 50},edgeElasticity:function(w){return .45},nestingFactor:.1,gravity:.25,numIter:2500,tile:!0,tilingCompareBy:void 0,tilingPaddingVertical:10,tilingPaddingHorizontal:10,gravityRangeCompound:1.5,gravityCompound:1,gravityRange:3.8,initialEnergyOnIncremental:.3,fixedNodeConstraint:void 0,alignmentConstraint:void 0,relativePlacementConstraint:void 0,ready:function(){},stop:function(){}}),x=function(){function b(w){u(this,b),this.options=h({},y,w)}return l(b,[{key:"run",value:function(){var _=this,k=this.options,E=k.cy,L=k.eles,S=[],C=void 0,M=void 0,R=[],T=void 0,I=[];k.fixedNodeConstraint&&(!Array.isArray(k.fixedNodeConstraint)||k.fixedNodeConstraint.length==0)&&(k.fixedNodeConstraint=void 0),k.alignmentConstraint&&(k.alignmentConstraint.vertical&&(!Array.isArray(k.alignmentConstraint.vertical)||k.alignmentConstraint.vertical.length==0)&&(k.alignmentConstraint.vertical=void 0),k.alignmentConstraint.horizontal&&(!Array.isArray(k.alignmentConstraint.horizontal)||k.alignmentConstraint.horizontal.length==0)&&(k.alignmentConstraint.horizontal=void 0)),k.relativePlacementConstraint&&(!Array.isArray(k.relativePlacementConstraint)||k.relativePlacementConstraint.length==0)&&(k.relativePlacementConstraint=void 0);var A=k.fixedNodeConstraint||k.alignmentConstraint||k.relativePlacementConstraint;A&&(k.tile=!1,k.packComponents=!1);var D=void 0,N=!1;if(E.layoutUtilities&&k.packComponents&&(D=E.layoutUtilities("get"),D||(D=E.layoutUtilities()),N=!0),L.nodes().length>0)if(N){var P=f.getTopMostNodes(k.eles.nodes());if(T=f.connectComponents(E,k.eles,P),T.forEach(function(ae){var we=ae.boundingBox();I.push({x:we.x1+we.w/2,y:we.y1+we.h/2})}),k.randomize&&T.forEach(function(ae){k.eles=ae,S.push(p(k))}),k.quality=="default"||k.quality=="proof"){var $=E.collection();if(k.tile){var z=new Map,H=[],J=[],X=0,oe={nodeIndexes:z,xCoords:H,yCoords:J},K=[];if(T.forEach(function(ae,we){ae.edges().length==0&&(ae.nodes().forEach(function(Ie,Ee){$.merge(ae.nodes()[Ee]),Ie.isParent()||(oe.nodeIndexes.set(ae.nodes()[Ee].id(),X++),oe.xCoords.push(ae.nodes()[0].position().x),oe.yCoords.push(ae.nodes()[0].position().y))}),K.push(we))}),$.length>1){var ee=$.boundingBox();I.push({x:ee.x1+ee.w/2,y:ee.y1+ee.h/2}),T.push($),S.push(oe);for(var Q=K.length-1;Q>=0;Q--)T.splice(K[Q],1),S.splice(K[Q],1),I.splice(K[Q],1)}}T.forEach(function(ae,we){k.eles=ae,R.push(m(k,S[we])),f.relocateComponent(I[we],R[we],k)})}else T.forEach(function(ae,we){f.relocateComponent(I[we],S[we],k)});var W=new Set;if(T.length>1){var Y=[],Z=L.filter(function(ae){return ae.css("display")=="none"});T.forEach(function(ae,we){var Ie=void 0;if(k.quality=="draft"&&(Ie=S[we].nodeIndexes),ae.nodes().not(Z).length>0){var Ee={};Ee.edges=[],Ee.nodes=[];var Oe=void 0;ae.nodes().not(Z).forEach(function(De){if(k.quality=="draft")if(!De.isParent())Oe=Ie.get(De.id()),Ee.nodes.push({x:S[we].xCoords[Oe]-De.boundingbox().w/2,y:S[we].yCoords[Oe]-De.boundingbox().h/2,width:De.boundingbox().w,height:De.boundingbox().h});else{var We=f.calcBoundingBox(De,S[we].xCoords,S[we].yCoords,Ie);Ee.nodes.push({x:We.topLeftX,y:We.topLeftY,width:We.width,height:We.height})}else R[we][De.id()]&&Ee.nodes.push({x:R[we][De.id()].getLeft(),y:R[we][De.id()].getTop(),width:R[we][De.id()].getWidth(),height:R[we][De.id()].getHeight()})}),ae.edges().forEach(function(De){var We=De.source(),Re=De.target();if(We.css("display")!="none"&&Re.css("display")!="none")if(k.quality=="draft"){var Pe=Ie.get(We.id()),xe=Ie.get(Re.id()),q=[],de=[];if(We.isParent()){var ie=f.calcBoundingBox(We,S[we].xCoords,S[we].yCoords,Ie);q.push(ie.topLeftX+ie.width/2),q.push(ie.topLeftY+ie.height/2)}else q.push(S[we].xCoords[Pe]),q.push(S[we].yCoords[Pe]);if(Re.isParent()){var he=f.calcBoundingBox(Re,S[we].xCoords,S[we].yCoords,Ie);de.push(he.topLeftX+he.width/2),de.push(he.topLeftY+he.height/2)}else de.push(S[we].xCoords[xe]),de.push(S[we].yCoords[xe]);Ee.edges.push({startX:q[0],startY:q[1],endX:de[0],endY:de[1]})}else R[we][We.id()]&&R[we][Re.id()]&&Ee.edges.push({startX:R[we][We.id()].getCenterX(),startY:R[we][We.id()].getCenterY(),endX:R[we][Re.id()].getCenterX(),endY:R[we][Re.id()].getCenterY()})}),Ee.nodes.length>0&&(Y.push(Ee),W.add(we))}});var se=D.packComponents(Y,k.randomize).shifts;if(k.quality=="draft")S.forEach(function(ae,we){var Ie=ae.xCoords.map(function(Oe){return Oe+se[we].dx}),Ee=ae.yCoords.map(function(Oe){return Oe+se[we].dy});ae.xCoords=Ie,ae.yCoords=Ee});else{var ce=0;W.forEach(function(ae){Object.keys(R[ae]).forEach(function(we){var Ie=R[ae][we];Ie.setCenter(Ie.getCenterX()+se[ce].dx,Ie.getCenterY()+se[ce].dy)}),ce++})}}}else{var O=k.eles.boundingBox();if(I.push({x:O.x1+O.w/2,y:O.y1+O.h/2}),k.randomize){var B=p(k);S.push(B)}k.quality=="default"||k.quality=="proof"?(R.push(m(k,S[0])),f.relocateComponent(I[0],R[0],k)):f.relocateComponent(I[0],S[0],k)}var ue=function(we,Ie){if(k.quality=="default"||k.quality=="proof"){typeof we=="number"&&(we=Ie);var Ee=void 0,Oe=void 0,De=we.data("id");return R.forEach(function(Re){De in Re&&(Ee={x:Re[De].getRect().getCenterX(),y:Re[De].getRect().getCenterY()},Oe=Re[De])}),k.nodeDimensionsIncludeLabels&&(Oe.labelWidth&&(Oe.labelPosHorizontal=="left"?Ee.x+=Oe.labelWidth/2:Oe.labelPosHorizontal=="right"&&(Ee.x-=Oe.labelWidth/2)),Oe.labelHeight&&(Oe.labelPosVertical=="top"?Ee.y+=Oe.labelHeight/2:Oe.labelPosVertical=="bottom"&&(Ee.y-=Oe.labelHeight/2))),Ee==null&&(Ee={x:we.position("x"),y:we.position("y")}),{x:Ee.x,y:Ee.y}}else{var We=void 0;return S.forEach(function(Re){var Pe=Re.nodeIndexes.get(we.id());Pe!=null&&(We={x:Re.xCoords[Pe],y:Re.yCoords[Pe]})}),We==null&&(We={x:we.position("x"),y:we.position("y")}),{x:We.x,y:We.y}}};if(k.quality=="default"||k.quality=="proof"||k.randomize){var te=f.calcParentsWithoutChildren(E,L),Ne=L.filter(function(ae){return ae.css("display")=="none"});k.eles=L.not(Ne),L.nodes().not(":parent").not(Ne).layoutPositions(_,k,ue),te.length>0&&te.forEach(function(ae){ae.position(ue(ae))})}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")}}]),b}();a.exports=x},657:(a,s,o)=>{var l=o(548),u=o(140).layoutBase.Matrix,h=o(140).layoutBase.SVD,f=function(p){var g=p.cy,m=p.eles,y=m.nodes(),x=m.nodes(":parent"),b=new Map,w=new Map,_=new Map,k=[],E=[],L=[],S=[],C=[],M=[],R=[],T=[],I=void 0,A=void 0,D=1e8,N=1e-9,O=p.piTol,B=p.samplingType,P=p.nodeSeparation,$=void 0,z=function(){for(var ke=0,j=0,ye=!1;j<$;){ke=Math.floor(Math.random()*A),ye=!1;for(var Ae=0;Ae=Ge;){ge=Ae[Ge++];for(var ft=k[ge],Ze=0;Zeqe&&(qe=C[Ue],lt=Ue)}return lt},J=function(ke){var j=void 0;if(ke){j=Math.floor(Math.random()*A),I=j;for(var Ae=0;Ae=1)break;qe=Ce}for(var ft=0;ft=1)break;qe=Ce}for(var st=0;st0&&(j.isParent()?k[ke].push(_.get(j.id())):k[ke].push(j.id()))})});var te=function(ke){var j=w.get(ke),ye=void 0;b.get(ke).forEach(function(Ae){g.getElementById(Ae).isParent()?ye=_.get(Ae):ye=Ae,k[j].push(ye),k[w.get(ye)].push(ke)})},Ne=!0,ae=!1,we=void 0;try{for(var Ie=b.keys()[Symbol.iterator](),Ee;!(Ne=(Ee=Ie.next()).done);Ne=!0){var Oe=Ee.value;te(Oe)}}catch(U){ae=!0,we=U}finally{try{!Ne&&Ie.return&&Ie.return()}finally{if(ae)throw we}}A=w.size;var De=void 0;if(A>2){$=A{var l=o(212),u=function(f){f&&f("layout","fcose",l)};typeof cytoscape<"u"&&u(cytoscape),a.exports=u},140:a=>{a.exports=t}},r={};function n(a){var s=r[a];if(s!==void 0)return s.exports;var o=r[a]={exports:{}};return e[a](o,o.exports,n),o.exports}var i=n(579);return i})()})});var Vge={};vr(Vge,{diagram:()=>pQe});function zi(t){let e=pe().architecture;return e?.[t]?e[t]:Mge[t]}function Oge(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"service",id:r.id,icon:r.icon,label:r.title,parent:r.in,width:zi("iconSize"),height:zi("iconSize")},classes:"node-service"})})}function Pge(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"junction",id:r.id,parent:r.in,width:zi("iconSize"),height:zi("iconSize")},classes:"node-junction"})})}function Bge(t,e){e.nodes().map(r=>{let n=d1(r);if(n.type==="group")return;n.x=r.position().x,n.y=r.position().y,t.getElementById(n.id).attr("transform","translate("+(n.x||0)+","+(n.y||0)+")")})}function Fge(t,e){t.forEach(r=>{e.add({group:"nodes",data:{type:"group",id:r.id,icon:r.icon,label:r.title,parent:r.in},classes:"node-group"})})}function zge(t,e){t.forEach(r=>{let{lhsId:n,rhsId:i,lhsInto:a,lhsGroup:s,rhsInto:o,lhsDir:l,rhsDir:u,rhsGroup:h,title:f}=r,d=Nge(r.lhsDir,r.rhsDir)?"segments":"straight",p={id:`${n}-${i}`,label:f,source:n,sourceDir:l,sourceArrow:a,sourceGroup:s,sourceEndpoint:l==="L"?"0 50%":l==="R"?"100% 50%":l==="T"?"50% 0":"50% 100%",target:i,targetDir:u,targetArrow:o,targetGroup:h,targetEndpoint:u==="L"?"0 50%":u==="R"?"100% 50%":u==="T"?"50% 0":"50% 100%"};e.add({group:"edges",data:p,classes:d})})}function $ge(t){let e=t.map(i=>{let a={},s={};return Object.entries(i).forEach(([o,[l,u]])=>{a[u]||(a[u]=[]),s[l]||(s[l]=[]),a[u].push(o),s[l].push(o)}),{horiz:Object.values(a).filter(o=>o.length>1),vert:Object.values(s).filter(o=>o.length>1)}}),[r,n]=e.reduce(([i,a],{horiz:s,vert:o})=>[[...i,...s],[...a,...o]],[[],[]]);return{horizontal:r,vertical:n}}function Gge(t){let e=[],r=v(i=>`${i[0]},${i[1]}`,"posToStr"),n=v(i=>i.split(",").map(a=>parseInt(a)),"strToPos");return t.forEach(i=>{let a=Object.fromEntries(Object.entries(i).map(([u,h])=>[r(h),u])),s=[r([0,0])],o={},l={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;s.length>0;){let u=s.shift();if(u){o[u]=1;let h=a[u];if(h){let f=n(u);Object.entries(l).forEach(([d,p])=>{let g=r([f[0]+p[0],f[1]+p[1]]),m=a[g];m&&!o[g]&&(s.push(g),e.push({[_ge[d]]:m,[_ge[BZe(d)]]:h,gap:1.5*zi("iconSize")}))})}}}}),e}function Uge(t,e,r,n,{spatialMaps:i}){return new Promise(a=>{let s=Ve("body").append("div").attr("id","cy").attr("style","display:none"),o=Jo({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight",label:"data(label)","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${zi("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${zi("padding")}px`}}]});s.remove(),Fge(r,o),Oge(t,o),Pge(e,o),zge(n,o);let l=$ge(i),u=Gge(i),h=o.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(f){let[d,p]=f.connectedNodes(),{parent:g}=d1(d),{parent:m}=d1(p);return g===m?1.5*zi("iconSize"):.5*zi("iconSize")},edgeElasticity(f){let[d,p]=f.connectedNodes(),{parent:g}=d1(d),{parent:m}=d1(p);return g===m?.45:.001},alignmentConstraint:l,relativePlacementConstraint:u});h.one("layoutstop",()=>{function f(d,p,g,m){let y,x,{x:b,y:w}=d,{x:_,y:k}=p;x=(m-w+(b-g)*(w-k)/(b-_))/Math.sqrt(1+Math.pow((w-k)/(b-_),2)),y=Math.sqrt(Math.pow(m-w,2)+Math.pow(g-b,2)-Math.pow(x,2));let E=Math.sqrt(Math.pow(_-b,2)+Math.pow(k-w,2));y=y/E;let L=(_-b)*(m-w)-(k-w)*(g-b);switch(!0){case L>=0:L=1;break;case L<0:L=-1;break}let S=(_-b)*(g-b)+(k-w)*(m-w);switch(!0){case S>=0:S=1;break;case S<0:S=-1;break}return x=Math.abs(x)*L,y=y*S,{distances:x,weights:y}}v(f,"getSegmentWeights"),o.startBatch();for(let d of Object.values(o.edges()))if(d.data?.()){let{x:p,y:g}=d.source().position(),{x:m,y}=d.target().position();if(p!==m&&g!==y){let x=d.sourceEndpoint(),b=d.targetEndpoint(),{sourceDir:w}=Ige(d),[_,k]=Af(w)?[x.x,b.y]:[b.x,x.y],{weights:E,distances:L}=f(x,b,_,k);d.style("segment-distances",L),d.style("segment-weights",E)}}o.endBatch(),h.run()}),h.run(),o.ready(f=>{re.info("Ready",f),a(o)})})}var Dge,_ge,Lge,TE,BZe,Rge,zs,Af,Nge,FZe,zZe,UO,$Ze,GZe,UZe,VZe,Ige,d1,Mge,cr,WZe,HZe,qZe,YZe,XZe,jZe,KZe,ZZe,QZe,JZe,eQe,tQe,rQe,nQe,EE,iQe,aQe,sQe,oQe,f1,eb,lQe,cQe,uQe,hQe,fQe,dQe,pQe,Wge=F(()=>{sl();Ya();ky();Hw();kn();Iu();or();km();ZD();Dge=Gi(Age(),1);lr();_ge={L:"left",R:"right",T:"top",B:"bottom"},Lge={L:v(t=>`${t},${t/2} 0,${t} 0,0`,"L"),R:v(t=>`0,${t/2} ${t},0 ${t},${t}`,"R"),T:v(t=>`0,0 ${t},0 ${t/2},${t}`,"T"),B:v(t=>`${t/2},0 ${t},${t} 0,${t}`,"B")},TE={L:v((t,e)=>t-e+2,"L"),R:v((t,e)=>t-2,"R"),T:v((t,e)=>t-e+2,"T"),B:v((t,e)=>t-2,"B")},BZe=v(function(t){return zs(t)?t==="L"?"R":"L":t==="T"?"B":"T"},"getOppositeArchitectureDirection"),Rge=v(function(t){let e=t;return e==="L"||e==="R"||e==="T"||e==="B"},"isArchitectureDirection"),zs=v(function(t){let e=t;return e==="L"||e==="R"},"isArchitectureDirectionX"),Af=v(function(t){let e=t;return e==="T"||e==="B"},"isArchitectureDirectionY"),Nge=v(function(t,e){let r=zs(t)&&Af(e),n=Af(t)&&zs(e);return r||n},"isArchitectureDirectionXY"),FZe=v(function(t){let e=t[0],r=t[1],n=zs(e)&&Af(r),i=Af(e)&&zs(r);return n||i},"isArchitecturePairXY"),zZe=v(function(t){return t!=="LL"&&t!=="RR"&&t!=="TT"&&t!=="BB"},"isValidArchitectureDirectionPair"),UO=v(function(t,e){let r=`${t}${e}`;return zZe(r)?r:void 0},"getArchitectureDirectionPair"),$Ze=v(function([t,e],r){let n=r[0],i=r[1];return zs(n)?Af(i)?[t+(n==="L"?-1:1),e+(i==="T"?1:-1)]:[t+(n==="L"?-1:1),e]:zs(i)?[t+(i==="L"?1:-1),e+(n==="T"?1:-1)]:[t,e+(n==="T"?1:-1)]},"shiftPositionByArchitectureDirectionPair"),GZe=v(function(t){return t==="LT"||t==="TL"?[1,1]:t==="BL"||t==="LB"?[1,-1]:t==="BR"||t==="RB"?[-1,-1]:[-1,1]},"getArchitectureDirectionXYFactors"),UZe=v(function(t){return t.type==="service"},"isArchitectureService"),VZe=v(function(t){return t.type==="junction"},"isArchitectureJunction"),Ige=v(t=>t.data(),"edgeData"),d1=v(t=>t.data(),"nodeData"),Mge=sr.architecture,cr=new Rg(()=>({nodes:{},groups:{},edges:[],registeredIds:{},config:Mge,dataStructures:void 0,elements:{}})),WZe=v(()=>{cr.reset(),xr()},"clear"),HZe=v(function({id:t,icon:e,in:r,title:n,iconText:i}){if(cr.records.registeredIds[t]!==void 0)throw new Error(`The service id [${t}] is already in use by another ${cr.records.registeredIds[t]}`);if(r!==void 0){if(t===r)throw new Error(`The service [${t}] cannot be placed within itself`);if(cr.records.registeredIds[r]===void 0)throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if(cr.records.registeredIds[r]==="node")throw new Error(`The service [${t}]'s parent is not a group`)}cr.records.registeredIds[t]="node",cr.records.nodes[t]={id:t,type:"service",icon:e,iconText:i,title:n,edges:[],in:r}},"addService"),qZe=v(()=>Object.values(cr.records.nodes).filter(UZe),"getServices"),YZe=v(function({id:t,in:e}){cr.records.registeredIds[t]="node",cr.records.nodes[t]={id:t,type:"junction",edges:[],in:e}},"addJunction"),XZe=v(()=>Object.values(cr.records.nodes).filter(VZe),"getJunctions"),jZe=v(()=>Object.values(cr.records.nodes),"getNodes"),KZe=v(t=>cr.records.nodes[t],"getNode"),ZZe=v(function({id:t,icon:e,in:r,title:n}){if(cr.records.registeredIds[t]!==void 0)throw new Error(`The group id [${t}] is already in use by another ${cr.records.registeredIds[t]}`);if(r!==void 0){if(t===r)throw new Error(`The group [${t}] cannot be placed within itself`);if(cr.records.registeredIds[r]===void 0)throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if(cr.records.registeredIds[r]==="node")throw new Error(`The group [${t}]'s parent is not a group`)}cr.records.registeredIds[t]="group",cr.records.groups[t]={id:t,icon:e,title:n,in:r}},"addGroup"),QZe=v(()=>Object.values(cr.records.groups),"getGroups"),JZe=v(function({lhsId:t,rhsId:e,lhsDir:r,rhsDir:n,lhsInto:i,rhsInto:a,lhsGroup:s,rhsGroup:o,title:l}){if(!Rge(r))throw new Error(`Invalid direction given for left hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${r}`);if(!Rge(n))throw new Error(`Invalid direction given for right hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${n}`);if(cr.records.nodes[t]===void 0&&cr.records.groups[t]===void 0)throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(cr.records.nodes[e]===void 0&&cr.records.groups[t]===void 0)throw new Error(`The right-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);let u=cr.records.nodes[t].in,h=cr.records.nodes[e].in;if(s&&u&&h&&u==h)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(o&&u&&h&&u==h)throw new Error(`The right-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);let f={lhsId:t,lhsDir:r,lhsInto:i,lhsGroup:s,rhsId:e,rhsDir:n,rhsInto:a,rhsGroup:o,title:l};cr.records.edges.push(f),cr.records.nodes[t]&&cr.records.nodes[e]&&(cr.records.nodes[t].edges.push(cr.records.edges[cr.records.edges.length-1]),cr.records.nodes[e].edges.push(cr.records.edges[cr.records.edges.length-1]))},"addEdge"),eQe=v(()=>cr.records.edges,"getEdges"),tQe=v(()=>{if(cr.records.dataStructures===void 0){let t=Object.entries(cr.records.nodes).reduce((s,[o,l])=>(s[o]=l.edges.reduce((u,h)=>{if(h.lhsId===o){let f=UO(h.lhsDir,h.rhsDir);f&&(u[f]=h.rhsId)}else{let f=UO(h.rhsDir,h.lhsDir);f&&(u[f]=h.lhsId)}return u},{}),s),{}),e=Object.keys(t)[0],r={[e]:1},n=Object.keys(t).reduce((s,o)=>o===e?s:{...s,[o]:1},{}),i=v(s=>{let o={[s]:[0,0]},l=[s];for(;l.length>0;){let u=l.shift();if(u){r[u]=1,delete n[u];let h=t[u],[f,d]=o[u];Object.entries(h).forEach(([p,g])=>{r[g]||(o[g]=$Ze([f,d],p),l.push(g))})}}return o},"BFS"),a=[i(e)];for(;Object.keys(n).length>0;)a.push(i(Object.keys(n)[0]));cr.records.dataStructures={adjList:t,spatialMaps:a}}return cr.records.dataStructures},"getDataStructures"),rQe=v((t,e)=>{cr.records.elements[t]=e},"setElementForId"),nQe=v(t=>cr.records.elements[t],"getElementById"),EE={clear:WZe,setDiagramTitle:tn,getDiagramTitle:qr,setAccTitle:Tr,getAccTitle:_r,setAccDescription:Lr,getAccDescription:Rr,addService:HZe,getServices:qZe,addJunction:YZe,getJunctions:XZe,getNodes:jZe,getNode:KZe,addGroup:ZZe,getGroups:QZe,addEdge:JZe,getEdges:eQe,setElementForId:rQe,getElementById:nQe,getDataStructures:tQe};v(zi,"getConfigField");iQe=v((t,e)=>{Pu(t,e),t.groups.map(e.addGroup),t.services.map(r=>e.addService({...r,type:"service"})),t.junctions.map(r=>e.addJunction({...r,type:"junction"})),t.edges.map(e.addEdge)},"populateDb"),aQe={parse:v(async t=>{let e=await Nl("architecture",t);re.debug(e),iQe(e,EE)},"parse")},sQe=v(t=>` .edge { stroke-width: ${t.archEdgeWidth}; stroke: ${t.archEdgeColor}; fill: none; } .arrow { fill: ${t.archEdgeArrowColor}; } .node-bkg { fill: none; stroke: ${t.archGroupBorderColor}; stroke-width: ${t.archGroupBorderWidth}; stroke-dasharray: 8; } .node-icon-text { display: flex; align-items: center; } .node-icon-text > div { color: #fff; margin: 1px; height: fit-content; text-align: center; overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; } `,"getStyles"),oQe=sQe,f1=v(t=>`${t}`,"wrapIcon"),eb={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:f1('')},server:{body:f1('')},disk:{body:f1('')},internet:{body:f1('')},cloud:{body:f1('')},unknown:EC,blank:{body:f1("")}}},lQe=v(async function(t,e){let r=zi("padding"),n=zi("iconSize"),i=n/2,a=n/6,s=a/2;await Promise.all(e.edges().map(async o=>{let{source:l,sourceDir:u,sourceArrow:h,sourceGroup:f,target:d,targetDir:p,targetArrow:g,targetGroup:m,label:y}=Ige(o),{x,y:b}=o[0].sourceEndpoint(),{x:w,y:_}=o[0].midpoint(),{x:k,y:E}=o[0].targetEndpoint(),L=r+4;if(f&&(zs(u)?x+=u==="L"?-L:L:b+=u==="T"?-L:L+18),m&&(zs(p)?k+=p==="L"?-L:L:E+=p==="T"?-L:L+18),!f&&EE.getNode(l)?.type==="junction"&&(zs(u)?x+=u==="L"?i:-i:b+=u==="T"?i:-i),!m&&EE.getNode(d)?.type==="junction"&&(zs(p)?k+=p==="L"?i:-i:E+=p==="T"?i:-i),o[0]._private.rscratch){let S=t.insert("g");if(S.insert("path").attr("d",`M ${x},${b} L ${w},${_} L${k},${E} `).attr("class","edge"),h){let C=zs(u)?TE[u](x,a):x-s,M=Af(u)?TE[u](b,a):b-s;S.insert("polygon").attr("points",Lge[u](a)).attr("transform",`translate(${C},${M})`).attr("class","arrow")}if(g){let C=zs(p)?TE[p](k,a):k-s,M=Af(p)?TE[p](E,a):E-s;S.insert("polygon").attr("points",Lge[p](a)).attr("transform",`translate(${C},${M})`).attr("class","arrow")}if(y){let C=Nge(u,p)?"XY":zs(u)?"X":"Y",M=0;C==="X"?M=Math.abs(x-k):C==="Y"?M=Math.abs(b-E)/1.5:M=Math.abs(x-k)/2;let R=S.append("g");if(await oa(R,y,{useHtmlLabels:!1,width:M,classes:"architecture-service-label"},pe()),R.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),C==="X")R.attr("transform","translate("+w+", "+_+")");else if(C==="Y")R.attr("transform","translate("+w+", "+_+") rotate(-90)");else if(C==="XY"){let T=UO(u,p);if(T&&FZe(T)){let I=R.node().getBoundingClientRect(),[A,D]=GZe(T);R.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*A*D*45})`);let N=R.node().getBoundingClientRect();R.attr("transform",` translate(${w}, ${_-I.height/2}) translate(${A*N.width/2}, ${D*N.height/2}) rotate(${-1*A*D*45}, 0, ${I.height/2}) `)}}}}}))},"drawEdges"),cQe=v(async function(t,e){let n=zi("padding")*.75,i=zi("fontSize"),s=zi("iconSize")/2;await Promise.all(e.nodes().map(async o=>{let l=d1(o);if(l.type==="group"){let{h:u,w:h,x1:f,y1:d}=o.boundingBox();t.append("rect").attr("x",f+s).attr("y",d+s).attr("width",h).attr("height",u).attr("class","node-bkg");let p=t.append("g"),g=f,m=d;if(l.icon){let y=p.append("g");y.html(`${await su(l.icon,{height:n,width:n,fallbackPrefix:eb.prefix})}`),y.attr("transform","translate("+(g+s+1)+", "+(m+s+1)+")"),g+=n,m+=i/2-1-2}if(l.label){let y=p.append("g");await oa(y,l.label,{useHtmlLabels:!1,width:h,classes:"architecture-service-label"},pe()),y.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),y.attr("transform","translate("+(g+s+4)+", "+(m+s+2)+")")}}}))},"drawGroups"),uQe=v(async function(t,e,r){for(let n of r){let i=e.append("g"),a=zi("iconSize");if(n.title){let u=i.append("g");await oa(u,n.title,{useHtmlLabels:!1,width:a*1.5,classes:"architecture-service-label"},pe()),u.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),u.attr("transform","translate("+a/2+", "+a+")")}let s=i.append("g");if(n.icon)s.html(`${await su(n.icon,{height:a,width:a,fallbackPrefix:eb.prefix})}`);else if(n.iconText){s.html(`${await su("blank",{height:a,width:a,fallbackPrefix:eb.prefix})}`);let f=s.append("g").append("foreignObject").attr("width",a).attr("height",a).append("div").attr("class","node-icon-text").attr("style",`height: ${a}px;`).append("div").html(n.iconText),d=parseInt(window.getComputedStyle(f.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;f.attr("style",`-webkit-line-clamp: ${Math.floor((a-2)/d)};`)}else s.append("path").attr("class","node-bkg").attr("id","node-"+n.id).attr("d",`M0 ${a} v${-a} q0,-5 5,-5 h${a} q5,0 5,5 v${a} H0 Z`);i.attr("class","architecture-service");let{width:o,height:l}=i._groups[0][0].getBBox();n.width=o,n.height=l,t.setElementForId(n.id,i)}return 0},"drawServices"),hQe=v(function(t,e,r){r.forEach(n=>{let i=e.append("g"),a=zi("iconSize");i.append("g").append("rect").attr("id","node-"+n.id).attr("fill-opacity","0").attr("width",a).attr("height",a),i.attr("class","architecture-junction");let{width:o,height:l}=i._groups[0][0].getBBox();i.width=o,i.height=l,t.setElementForId(n.id,i)})},"drawJunctions");l4([{name:eb.prefix,icons:eb}]);Jo.use(Dge.default);v(Oge,"addServices");v(Pge,"addJunctions");v(Bge,"positionNodes");v(Fge,"addGroups");v(zge,"addEdges");v($ge,"getAlignments");v(Gge,"getRelativeConstraints");v(Uge,"layoutArchitecture");fQe=v(async(t,e,r,n)=>{let i=n.db,a=i.getServices(),s=i.getJunctions(),o=i.getGroups(),l=i.getEdges(),u=i.getDataStructures(),h=La(e),f=h.append("g");f.attr("class","architecture-edges");let d=h.append("g");d.attr("class","architecture-services");let p=h.append("g");p.attr("class","architecture-groups"),await uQe(i,d,a),hQe(i,d,s);let g=await Uge(a,s,o,l,u);await lQe(f,g),await cQe(p,g),Bge(i,g),il(void 0,h,zi("padding"),zi("useMaxWidth"))},"draw"),dQe={draw:fQe},pQe={parser:aQe,db:EE,renderer:dQe,styles:oQe}});function oP(t){for(;t.firstChild;)t.removeChild(t.firstChild)}r4();Nu();_u();yl();sl();pc();bo();Ya();kn();o9();Iu();or();xA();lr();var yw="comm",xw="rule",bw="decl";var Pre="@import";var Bre="@keyframes";var Fre="@layer";var l9=Math.abs,py=String.fromCharCode;function ww(t){return t.trim()}function gy(t,e,r){return t.replace(e,r)}function zre(t,e,r){return t.indexOf(e,r)}function Md(t,e){return t.charCodeAt(e)|0}function Yh(t,e,r){return t.slice(e,r)}function Js(t){return t.length}function $re(t){return t.length}function Tg(t,e){return e.push(t),t}var kw=1,Eg=1,Gre=0,Oo=0,mi=0,Cg="";function Tw(t,e,r,n,i,a,s,o){return{value:t,root:e,parent:r,type:n,props:i,children:a,line:kw,column:Eg,length:s,return:"",siblings:o}}function Ure(){return mi}function Vre(){return mi=Oo>0?Md(Cg,--Oo):0,Eg--,mi===10&&(Eg=1,kw--),mi}function Po(){return mi=Oo2||Sg(mi)>3?"":" "}function Yre(t,e){for(;--e&&Po()&&!(mi<48||mi>102||mi>57&&mi<65||mi>70&&mi<97););return Ew(t,my()+(e<6&&Mu()==32&&Po()==32))}function c9(t){for(;Po();)switch(mi){case t:return Oo;case 34:case 39:t!==34&&t!==39&&c9(mi);break;case 40:t===41&&c9(t);break;case 92:Po();break}return Oo}function Xre(t,e){for(;Po()&&t+mi!==57;)if(t+mi===84&&Mu()===47)break;return"/*"+Ew(e,Oo-1)+"*"+py(t===47?t:Po())}function jre(t){for(;!Sg(Mu());)Po();return Ew(t,Oo)}function Qre(t){return Hre(Cw("",null,null,null,[""],t=Wre(t),0,[0],t))}function Cw(t,e,r,n,i,a,s,o,l){for(var u=0,h=0,f=s,d=0,p=0,g=0,m=1,y=1,x=1,b=0,w="",_=i,k=a,E=n,L=w;y;)switch(g=b,b=Po()){case 40:if(g!=108&&Md(L,f-1)==58){zre(L+=gy(Sw(b),"&","&\f"),"&\f",l9(u?o[u-1]:0))!=-1&&(x=-1);break}case 34:case 39:case 91:L+=Sw(b);break;case 9:case 10:case 13:case 32:L+=qre(g);break;case 92:L+=Yre(my()-1,7);continue;case 47:switch(Mu()){case 42:case 47:Tg(A9e(Xre(Po(),my()),e,r,l),l),(Sg(g||1)==5||Sg(Mu()||1)==5)&&Js(L)&&Yh(L,-1,void 0)!==" "&&(L+=" ");break;default:L+="/"}break;case 123*m:o[u++]=Js(L)*x;case 125*m:case 59:case 0:switch(b){case 0:case 125:y=0;case 59+h:x==-1&&(L=gy(L,/\f/g,"")),p>0&&(Js(L)-f||m===0&&g===47)&&Tg(p>32?Zre(L+";",n,r,f-1,l):Zre(gy(L," ","")+";",n,r,f-2,l),l);break;case 59:L+=";";default:if(Tg(E=Kre(L,e,r,u,h,i,o,w,_=[],k=[],f,a),a),b===123)if(h===0)Cw(L,e,E,E,_,a,f,o,k);else switch(d===99&&Md(L,3)===110?100:d){case 100:case 108:case 109:case 115:Cw(t,E,E,n&&Tg(Kre(t,E,E,0,0,i,o,w,i,_=[],f,k),k),i,k,f,o,n?_:k);break;default:Cw(L,E,E,E,[""],k,0,o,k)}}u=h=p=0,m=x=1,w=L="",f=s;break;case 58:f=1+Js(L),p=g;default:if(m<1){if(b==123)--m;else if(b==125&&m++==0&&Vre()==125)continue}switch(L+=py(b),b*m){case 38:x=h>0?1:(L+="\f",-1);break;case 44:o[u++]=(Js(L)-1)*x,x=1;break;case 64:Mu()===45&&(L+=Sw(Po())),d=Mu(),h=f=Js(w=L+=jre(my())),b++;break;case 45:g===45&&Js(L)==2&&(m=0)}}return a}function Kre(t,e,r,n,i,a,s,o,l,u,h,f){for(var d=i-1,p=i===0?a:[""],g=$re(p),m=0,y=0,x=0;m0?p[b]+" "+w:gy(w,/&\f/g,p[b])))&&(l[x++]=_);return Tw(t,e,r,i===0?xw:o,l,u,h,f)}function A9e(t,e,r,n){return Tw(t,e,r,yw,py(Ure()),Yh(t,2,-2),0,n)}function Zre(t,e,r,n,i){return Tw(t,e,r,bw,Yh(t,0,n),Yh(t,n+1,-1),n,i)}function Aw(t,e){for(var r="",n=0;n/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t),"detector"),mQe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(gne(),pne));return{id:jge,diagram:t}},"loader"),vQe={id:jge,detector:gQe,loader:mQe},yQe=vQe,Kge="flowchart",xQe=v((t,e)=>e?.flowchart?.defaultRenderer==="dagre-wrapper"||e?.flowchart?.defaultRenderer==="elk"?!1:/^\s*graph/.test(t),"detector"),bQe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Ww(),Vw));return{id:Kge,diagram:t}},"loader"),wQe={id:Kge,detector:xQe,loader:bQe},kQe=wQe,Zge="flowchart-v2",TQe=v((t,e)=>e?.flowchart?.defaultRenderer==="dagre-d3"?!1:(e?.flowchart?.defaultRenderer==="elk"&&(e.layout="elk"),/^\s*graph/.test(t)&&e?.flowchart?.defaultRenderer==="dagre-wrapper"?!0:/^\s*flowchart/.test(t)),"detector"),EQe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Ww(),Vw));return{id:Zge,diagram:t}},"loader"),SQe={id:Zge,detector:TQe,loader:EQe},CQe=SQe,Qge="er",AQe=v(t=>/^\s*erDiagram/.test(t),"detector"),_Qe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Hne(),Wne));return{id:Qge,diagram:t}},"loader"),LQe={id:Qge,detector:AQe,loader:_Qe},RQe=LQe,Jge="gitGraph",NQe=v(t=>/^\s*gitGraph/.test(t),"detector"),IQe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Xle(),Yle));return{id:Jge,diagram:t}},"loader"),MQe={id:Jge,detector:NQe,loader:IQe},DQe=MQe,eme="gantt",OQe=v(t=>/^\s*gantt/.test(t),"detector"),PQe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(pce(),dce));return{id:eme,diagram:t}},"loader"),BQe={id:eme,detector:OQe,loader:PQe},FQe=BQe,tme="info",zQe=v(t=>/^\s*info/.test(t),"detector"),$Qe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(mce(),gce));return{id:tme,diagram:t}},"loader"),GQe={id:tme,detector:zQe,loader:$Qe},rme="pie",UQe=v(t=>/^\s*pie/.test(t),"detector"),VQe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(bce(),xce));return{id:rme,diagram:t}},"loader"),WQe={id:rme,detector:UQe,loader:VQe},nme="quadrantChart",HQe=v(t=>/^\s*quadrantChart/.test(t),"detector"),qQe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Bce(),Pce));return{id:nme,diagram:t}},"loader"),YQe={id:nme,detector:HQe,loader:qQe},XQe=YQe,ime="xychart",jQe=v(t=>/^\s*xychart-beta/.test(t),"detector"),KQe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(iue(),nue));return{id:ime,diagram:t}},"loader"),ZQe={id:ime,detector:jQe,loader:KQe},QQe=ZQe,ame="requirement",JQe=v(t=>/^\s*requirement(Diagram)?/.test(t),"detector"),eJe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(hue(),uue));return{id:ame,diagram:t}},"loader"),tJe={id:ame,detector:JQe,loader:eJe},rJe=tJe,sme="sequence",nJe=v(t=>/^\s*sequenceDiagram/.test(t),"detector"),iJe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Oue(),Due));return{id:sme,diagram:t}},"loader"),aJe={id:sme,detector:nJe,loader:iJe},sJe=aJe,ome="class",oJe=v((t,e)=>e?.class?.defaultRenderer==="dagre-wrapper"?!1:/^\s*classDiagram/.test(t),"detector"),lJe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(que(),Hue));return{id:ome,diagram:t}},"loader"),cJe={id:ome,detector:oJe,loader:lJe},uJe=cJe,lme="classDiagram",hJe=v((t,e)=>/^\s*classDiagram/.test(t)&&e?.class?.defaultRenderer==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(t),"detector"),fJe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Xue(),Yue));return{id:lme,diagram:t}},"loader"),dJe={id:lme,detector:hJe,loader:fJe},pJe=dJe,cme="state",gJe=v((t,e)=>e?.state?.defaultRenderer==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(t),"detector"),mJe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Mhe(),Ihe));return{id:cme,diagram:t}},"loader"),vJe={id:cme,detector:gJe,loader:mJe},yJe=vJe,ume="stateDiagram",xJe=v((t,e)=>!!(/^\s*stateDiagram-v2/.test(t)||/^\s*stateDiagram/.test(t)&&e?.state?.defaultRenderer==="dagre-wrapper"),"detector"),bJe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Ohe(),Dhe));return{id:ume,diagram:t}},"loader"),wJe={id:ume,detector:xJe,loader:bJe},kJe=wJe,hme="journey",TJe=v(t=>/^\s*journey/.test(t),"detector"),EJe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(qhe(),Hhe));return{id:hme,diagram:t}},"loader"),SJe={id:hme,detector:TJe,loader:EJe},CJe=SJe,AJe=v((t,e,r)=>{re.debug(`rendering svg for syntax error `);let n=La(e),i=n.append("g");n.attr("viewBox","0 0 2412 512"),Hr(n,100,512,!0),i.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),i.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),i.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),i.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),i.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),i.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),i.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),i.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)},"draw"),fme={draw:AJe},_Je=fme,LJe={db:{},renderer:fme,parser:{parse:v(()=>{},"parse")}},RJe=LJe,dme="flowchart-elk",NJe=v((t,e={})=>/^\s*flowchart-elk/.test(t)||/^\s*flowchart|graph/.test(t)&&e?.flowchart?.defaultRenderer==="elk"?(e.layout="elk",!0):!1,"detector"),IJe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Ww(),Vw));return{id:dme,diagram:t}},"loader"),MJe={id:dme,detector:NJe,loader:IJe},DJe=MJe,pme="timeline",OJe=v(t=>/^\s*timeline/.test(t),"detector"),PJe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(cfe(),lfe));return{id:pme,diagram:t}},"loader"),BJe={id:pme,detector:OJe,loader:PJe},FJe=BJe,gme="mindmap",zJe=v(t=>/^\s*mindmap/.test(t),"detector"),$Je=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(ype(),vpe));return{id:gme,diagram:t}},"loader"),GJe={id:gme,detector:zJe,loader:$Je},UJe=GJe,mme="kanban",VJe=v(t=>/^\s*kanban/.test(t),"detector"),WJe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(wpe(),bpe));return{id:mme,diagram:t}},"loader"),HJe={id:mme,detector:VJe,loader:WJe},qJe=HJe,vme="sankey",YJe=v(t=>/^\s*sankey-beta/.test(t),"detector"),XJe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(qpe(),Hpe));return{id:vme,diagram:t}},"loader"),jJe={id:vme,detector:YJe,loader:XJe},KJe=jJe,yme="packet",ZJe=v(t=>/^\s*packet-beta/.test(t),"detector"),QJe=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(jpe(),Xpe));return{id:yme,diagram:t}},"loader"),JJe={id:yme,detector:ZJe,loader:QJe},xme="block",eet=v(t=>/^\s*block-beta/.test(t),"detector"),tet=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Cge(),Sge));return{id:xme,diagram:t}},"loader"),ret={id:xme,detector:eet,loader:tet},net=ret,bme="architecture",iet=v(t=>/^\s*architecture/.test(t),"detector"),aet=v(async()=>{let{diagram:t}=await Promise.resolve().then(()=>(Wge(),Vge));return{id:bme,diagram:t}},"loader"),set={id:bme,detector:iet,loader:aet},oet=set,Hge=!1,CE=v(()=>{Hge||(Hge=!0,G1("error",RJe,t=>t.toLowerCase().trim()==="error"),G1("---",{db:{clear:v(()=>{},"clear")},styles:{},renderer:{draw:v(()=>{},"draw")},parser:{parse:v(()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")},"parse")},init:v(()=>null,"init")},t=>t.toLowerCase().trimStart().startsWith("---")),PS(yQe,qJe,pJe,uJe,RQe,FQe,GQe,WQe,rJe,sJe,DJe,CQe,kQe,UJe,FJe,DQe,kJe,yJe,CJe,XQe,KJe,JJe,QQe,net,oet))},"addDiagrams"),cet=v(async()=>{re.debug("Loading registered diagrams");let e=(await Promise.allSettled(Object.entries(Bf).map(async([r,{detector:n,loader:i}])=>{if(i)try{Wb(r)}catch{try{let{diagram:a,id:s}=await i();G1(s,a,n)}catch(a){throw re.error(`Failed to load external diagram with key ${r}. Removing from detectors.`),delete Bf[r],a}}}))).filter(r=>r.status==="rejected");if(e.length>0){re.error(`Failed to load ${e.length} external diagrams`);for(let r of e)re.error(r);throw new Error(`Failed to load ${e.length} external diagrams`)}},"loadRegisteredDiagrams"),uet="graphics-document document";function kme(t,e){t.attr("role",uet),e!==""&&t.attr("aria-roledescription",e)}v(kme,"setA11yDiagramInfo");function Tme(t,e,r,n){if(t.insert!==void 0){if(r){let i=`chart-desc-${n}`;t.attr("aria-describedby",i),t.insert("desc",":first-child").attr("id",i).text(r)}if(e){let i=`chart-title-${n}`;t.attr("aria-labelledby",i),t.insert("title",":first-child").attr("id",i).text(e)}}}v(Tme,"addSVGa11yTitleDescription");var WO=class Eme{constructor(e,r,n,i,a){this.type=e,this.text=r,this.db=n,this.parser=i,this.renderer=a}static{v(this,"Diagram")}static async fromText(e,r={}){let n=Or(),i=F1(e,n);e=jX(e)+` `;try{Wb(i)}catch{let u=yF(i);if(!u)throw new OS(`Diagram ${i} not found.`);let{id:h,diagram:f}=await u();G1(h,f)}let{db:a,parser:s,renderer:o,init:l}=Wb(i);return s.parser&&(s.parser.yy=a),a.clear?.(),l?.(n),r.title&&a.setDiagramTitle?.(r.title),await s.parse(e),new Eme(i,e,a,s,o)}async render(e,r){await this.renderer.draw(this.text,e,r,this)}getParser(){return this.parser}getType(){return this.type}},qge=[],het=v(()=>{qge.forEach(t=>{t()}),qge=[]},"attachFunctions"),fet=v(t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart(),"cleanupComments");function Sme(t){let e=t.match(DS);if(!e)return{text:t,metadata:{}};let r=sp(e[1],{schema:ap})??{};r=typeof r=="object"&&!Array.isArray(r)?r:{};let n={};return r.displayMode&&(n.displayMode=r.displayMode.toString()),r.title&&(n.title=r.title.toString()),r.config&&(n.config=r.config),{text:t.slice(e[0].length),metadata:n}}v(Sme,"extractFrontMatter");var det=v(t=>t.replace(/\r\n?/g,` `).replace(/<(\w+)([^>]*)>/g,(e,r,n)=>"<"+r+n.replace(/="([^"]*)"/g,"='$1'")+">"),"cleanupText"),pet=v(t=>{let{text:e,metadata:r}=Sme(t),{displayMode:n,title:i,config:a={}}=r;return n&&(a.gantt||(a.gantt={}),a.gantt.displayMode=n),{title:i,config:a,text:e}},"processFrontmatter"),get=v(t=>{let e=Ut.detectInit(t)??{},r=Ut.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some(({type:n})=>n==="wrap"):r?.type==="wrap"&&(e.wrap=!0),{text:VX(t),directive:e}},"processDirectives");function qO(t){let e=det(t),r=pet(e),n=get(r.text),i=ws(r.config,n.directive);return t=fet(n.text),{code:t,title:r.title,config:i}}v(qO,"preprocessDiagram");function Cme(t){let e=new TextEncoder().encode(t),r=Array.from(e,n=>String.fromCodePoint(n)).join("");return btoa(r)}v(Cme,"toBase64");var met=5e4,vet="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",yet="sandbox",xet="loose",bet="http://www.w3.org/2000/svg",wet="http://www.w3.org/1999/xlink",ket="http://www.w3.org/1999/xhtml",Tet="100%",Eet="100%",Cet="border:0;margin:0;",Aet="margin:0",_et="allow-top-navigation-by-user-activation allow-popups",Let='The "iframe" tag is not supported by your browser.',Ret=["foreignobject"],Net=["dominant-baseline"];function YO(t){let e=qO(t);return $1(),CF(e.config??{}),e}v(YO,"processAndSetConfigs");async function Ame(t,e){CE();try{let{code:r,config:n}=YO(t);return{diagramType:(await Lme(r)).type,config:n}}catch(r){if(e?.suppressErrors)return!1;throw r}}v(Ame,"parse");var Yge=v((t,e,r=[])=>` .${t} ${e} { ${r.join(" !important; ")} !important; }`,"cssImportantStyles"),Iet=v((t,e=new Map)=>{let r="";if(t.themeCSS!==void 0&&(r+=` ${t.themeCSS}`),t.fontFamily!==void 0&&(r+=` :root { --mermaid-font-family: ${t.fontFamily}}`),t.altFontFamily!==void 0&&(r+=` :root { --mermaid-alt-font-family: ${t.altFontFamily}}`),e instanceof Map){let s=t.htmlLabels??t.flowchart?.htmlLabels?["> *","span"]:["rect","polygon","ellipse","circle","path"];e.forEach(o=>{ir(o.styles)||s.forEach(l=>{r+=Yge(o.id,l,o.styles)}),ir(o.textStyles)||(r+=Yge(o.id,"tspan",(o?.textStyles||[]).map(l=>l.replace("color","fill"))))})}return r},"createCssStyles"),Met=v((t,e,r,n)=>{let i=Iet(t,r),a=NF(e,i,t.themeVariables);return Aw(Qre(`${n}{${a}}`),Jre)},"createUserStyles"),Det=v((t="",e,r)=>{let n=t;return!r&&!e&&(n=n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),n=Xs(n),n=n.replace(/
    /g,"
    "),n},"cleanUpSvgCode"),Oet=v((t="",e)=>{let r=e?.viewBox?.baseVal?.height?e.viewBox.baseVal.height+"px":Eet,n=Cme(`${t}`);return``},"putIntoIFrame"),Xge=v((t,e,r,n,i)=>{let a=t.append("div");a.attr("id",r),n&&a.attr("style",n);let s=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns",bet);return i&&s.attr("xmlns:xlink",i),s.append("g"),t},"appendDivSvgG");function HO(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}v(HO,"sandboxedIframe");var Pet=v((t,e,r,n)=>{t.getElementById(e)?.remove(),t.getElementById(r)?.remove(),t.getElementById(n)?.remove()},"removeExistingElements"),Bet=v(async function(t,e,r){CE();let n=YO(e);e=n.code;let i=Or();re.debug(i),e.length>(i?.maxTextSize??met)&&(e=vet);let a="#"+t,s="i"+t,o="#"+s,l="d"+t,u="#"+l,h=v(()=>{let I=Ve(d?o:u).node();I&&"remove"in I&&I.remove()},"removeTempElements"),f=Ve("body"),d=i.securityLevel===yet,p=i.securityLevel===xet,g=i.fontFamily;if(r!==void 0){if(r&&(r.innerHTML=""),d){let T=HO(Ve(r),s);f=Ve(T.nodes()[0].contentDocument.body),f.node().style.margin=0}else f=Ve(r);Xge(f,t,l,`font-family: ${g}`,wet)}else{if(Pet(document,t,l,s),d){let T=HO(Ve("body"),s);f=Ve(T.nodes()[0].contentDocument.body),f.node().style.margin=0}else f=Ve("body");Xge(f,t,l)}let m,y;try{m=await WO.fromText(e,{title:n.title})}catch(T){if(i.suppressErrorRendering)throw h(),T;m=await WO.fromText("error"),y=T}let x=f.select(u).node(),b=m.type,w=x.firstChild,_=w.firstChild,k=m.renderer.getClasses?.(e,m),E=Met(i,b,k,a),L=document.createElement("style");L.innerHTML=E,w.insertBefore(L,_);try{await m.renderer.draw(e,t,dy,m)}catch(T){throw i.suppressErrorRendering?h():_Je.draw(e,t,dy),T}let S=f.select(`${u} svg`),C=m.db.getAccTitle?.(),M=m.db.getAccDescription?.();Rme(b,S,C,M),f.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns",ket);let R=f.select(u).node().innerHTML;if(re.debug("config.arrowMarkerAbsolute",i.arrowMarkerAbsolute),R=Det(R,d,Wr(i.arrowMarkerAbsolute)),d){let T=f.select(u+" svg").node();R=Oet(R,T)}else p||(R=wme.default.sanitize(R,{ADD_TAGS:Ret,ADD_ATTR:Net}));if(het(),y)throw y;return h(),{diagramType:b,svg:R,bindFunctions:m.db.bindFunctions}},"render");function _me(t={}){let e=Hn({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),TF(e),e?.theme&&e.theme in ec?e.themeVariables=ec[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=ec.default.getThemeVariables(e.themeVariables));let r=typeof e=="object"?kF(e):BS();Fb(r.logLevel),CE()}v(_me,"initialize");var Lme=v((t,e={})=>{let{code:r}=qO(t);return WO.fromText(r,e)},"getDiagramFromText");function Rme(t,e,r,n){kme(e,t),Tme(e,r,n,e.attr("id"))}v(Rme,"addA11yInfo");var U0=Object.freeze({render:Bet,parse:Ame,getDiagramFromText:Lme,initialize:_me,getConfig:Or,setConfig:FS,getSiteConfig:BS,updateSiteConfig:EF,reset:v(()=>{$1()},"reset"),globalReset:v(()=>{$1(Ff)},"globalReset"),defaultConfig:Ff});Fb(Or().logLevel);$1(Or());var Fet=v((t,e,r)=>{re.warn(t),U3(t)?(r&&r(t.str,t.hash),e.push({...t,message:t.str,error:t})):(r&&r(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))},"handleError"),Nme=v(async function(t={querySelector:".mermaid"}){try{await zet(t)}catch(e){if(U3(e)&&re.error(e.str),nh.parseError&&nh.parseError(e),!t.suppressErrors)throw re.error("Use the suppressErrors option to suppress these errors"),e}},"run"),zet=v(async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){let n=U0.getConfig();re.debug(`${t?"":"No "}Callback function found`);let i;if(r)i=r;else if(e)i=document.querySelectorAll(e);else throw new Error("Nodes and querySelector are both undefined");re.debug(`Found ${i.length} diagrams`),n?.startOnLoad!==void 0&&(re.debug("Start On Load: "+n?.startOnLoad),U0.updateSiteConfig({startOnLoad:n?.startOnLoad}));let a=new Ut.InitIDGenerator(n.deterministicIds,n.deterministicIDSeed),s,o=[];for(let l of Array.from(i)){if(re.info("Rendering diagram: "+l.id),l.getAttribute("data-processed"))continue;l.setAttribute("data-processed","true");let u=`mermaid-${a.next()}`;s=l.innerHTML,s=Y3(Ut.entityDecode(s)).trim().replace(//gi,"
    ");let h=Ut.detectInit(s);h&&re.debug("Detected early reinit: ",h);try{let{svg:f,bindFunctions:d}=await Ome(u,s,l);l.innerHTML=f,t&&await t(u),d&&d(l)}catch(f){Fet(f,o,nh.parseError)}}if(o.length>0)throw o[0]},"runThrowsErrors"),Ime=v(function(t){U0.initialize(t)},"initialize"),$et=v(async function(t,e,r){re.warn("mermaid.init is deprecated. Please use run instead."),t&&Ime(t);let n={postRenderCallback:r,querySelector:".mermaid"};typeof e=="string"?n.querySelector=e:e&&(e instanceof HTMLElement?n.nodes=[e]:n.nodes=e),await Nme(n)},"init"),Get=v(async(t,{lazyLoad:e=!0}={})=>{CE(),PS(...t),e===!1&&await cet()},"registerExternalDiagrams"),Mme=v(function(){if(nh.startOnLoad){let{startOnLoad:t}=U0.getConfig();t&&nh.run().catch(e=>re.error("Mermaid failed to initialize",e))}},"contentLoaded");typeof document<"u"&&window.addEventListener("load",Mme,!1);var Uet=v(function(t){nh.parseError=t},"setParseErrorHandler"),SE=[],VO=!1,Dme=v(async()=>{if(!VO){for(VO=!0;SE.length>0;){let t=SE.shift();if(t)try{await t()}catch(e){re.error("Error executing queue",e)}}VO=!1}},"executeQueue"),Vet=v(async(t,e)=>new Promise((r,n)=>{let i=v(()=>new Promise((a,s)=>{U0.parse(t,e).then(o=>{a(o),r(o)},o=>{re.error("Error parsing",o),nh.parseError?.(o),s(o),n(o)})}),"performCall");SE.push(i),Dme().catch(n)}),"parse"),Ome=v((t,e,r)=>new Promise((n,i)=>{let a=v(()=>new Promise((s,o)=>{U0.render(t,e,r).then(l=>{s(l),n(l)},l=>{re.error("Error parsing",l),nh.parseError?.(l),o(l),i(l)})}),"performCall");SE.push(a),Dme().catch(i)}),"render"),nh={startOnLoad:!0,mermaidAPI:U0,parse:Vet,render:Ome,init:$et,run:Nme,registerExternalDiagrams:Get,registerLayoutLoaders:s9,initialize:Ime,parseError:void 0,contentLoaded:Mme,setParseErrorHandler:Uet,detectType:F1,registerIconPacks:l4},XO=nh;var jO=class{constructor(e,r){this.container=e;this.content=r;this.setupEventListeners(),this.setupNavigationControls()}isDragging=!1;startPan={x:0,y:0};currentPan={x:0,y:0};scale=1;MIN_SCALE=.5;MAX_SCALE=3;ZOOM_SENSITIVITY=.001;setupEventListeners(){this.container.addEventListener("mousedown",this.onMouseDown.bind(this)),document.addEventListener("mousemove",this.onMouseMove.bind(this)),document.addEventListener("mouseup",this.onMouseUp.bind(this)),this.container.addEventListener("wheel",this.onWheel.bind(this),{passive:!1}),window.addEventListener("resize",this.resetTransform.bind(this))}setupNavigationControls(){let e=document.createElement("div");e.className="mermaid-controls";let r=this.createButton("+",()=>this.zoom(.1)),n=this.createButton("-",()=>this.zoom(-.1)),i=this.createButton("Reset",()=>this.resetTransform());e.appendChild(n),e.appendChild(i),e.appendChild(r),this.container.appendChild(e)}createButton(e,r){let n=document.createElement("button");return n.textContent=e,n.className="mermaid-control-button",n.addEventListener("click",r),window.addCleanup(()=>n.removeEventListener("click",r)),n}onMouseDown(e){e.button===0&&(this.isDragging=!0,this.startPan={x:e.clientX-this.currentPan.x,y:e.clientY-this.currentPan.y},this.container.style.cursor="grabbing")}onMouseMove(e){this.isDragging&&(e.preventDefault(),this.currentPan={x:e.clientX-this.startPan.x,y:e.clientY-this.startPan.y},this.updateTransform())}onMouseUp(){this.isDragging=!1,this.container.style.cursor="grab"}onWheel(e){e.preventDefault();let r=-e.deltaY*this.ZOOM_SENSITIVITY,n=Math.min(Math.max(this.scale+r,this.MIN_SCALE),this.MAX_SCALE),i=this.content.getBoundingClientRect(),a=e.clientX-i.left,s=e.clientY-i.top,o=n-this.scale;this.currentPan.x-=a*o,this.currentPan.y-=s*o,this.scale=n,this.updateTransform()}zoom(e){let r=Math.min(Math.max(this.scale+e,this.MIN_SCALE),this.MAX_SCALE),n=this.content.getBoundingClientRect(),i=n.width/2,a=n.height/2,s=r-this.scale;this.currentPan.x-=i*s,this.currentPan.y-=a*s,this.scale=r,this.updateTransform()}updateTransform(){this.content.style.transform=`translate(${this.currentPan.x}px, ${this.currentPan.y}px) scale(${this.scale})`}resetTransform(){this.scale=1,this.currentPan={x:0,y:0},this.updateTransform()}},Wet=["--secondary","--tertiary","--gray","--light","--lightgray","--highlight","--dark","--darkgray","--codeFont"];document.addEventListener("nav",async()=>{let e=document.querySelector(".center").querySelectorAll("code.mermaid");if(e.length===0)return;let r=Wet.reduce((i,a)=>(i[a]=getComputedStyle(document.documentElement).getPropertyValue(a),i),{}),n=document.documentElement.getAttribute("saved-theme")==="dark";XO.initialize({startOnLoad:!1,securityLevel:"loose",theme:n?"dark":"base",themeVariables:{fontFamily:r["--codeFont"],primaryColor:r["--light"],primaryTextColor:r["--darkgray"],primaryBorderColor:r["--tertiary"],lineColor:r["--darkgray"],secondaryColor:r["--secondary"],tertiaryColor:r["--tertiary"],clusterBkg:r["--light"],edgeLabelBackground:r["--highlight"]}}),await XO.run({nodes:e});for(let i=0;i{y.removeEventListener("click",g),l.removeEventListener("click",p),document.removeEventListener("keydown",m)})}}); /*! Bundled license information: dompurify/dist/purify.js: (*! @license DOMPurify 3.1.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.1.6/LICENSE *) mermaid/dist/chunks/mermaid.core/chunk-RDESMYQM.mjs: (*! Bundled license information: js-yaml/dist/js-yaml.mjs: (*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *) *) lodash-es/lodash.js: (** * @license * Lodash (Custom Build) * Build: `lodash modularize exports="es" -o ./` * Copyright OpenJS Foundation and other contributors * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors *) cytoscape/dist/cytoscape.esm.mjs: (*! Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) Licensed under The MIT License (http://opensource.org/licenses/MIT) *) (*! Event object based on jQuery events, MIT license https://jquery.org/license/ https://tldrlegal.com/license/mit-license https://github.com/jquery/jquery/blob/master/src/event.js *) (*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License *) (*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License *) mermaid/dist/mermaid.core.mjs: (*! Check if previously processed *) (*! * Wait for document loaded before starting the execution *) */